Darwin: -fpic not so good
[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 Sun Jul 29 20:50:18 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 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchdir=''
357 d_fchmod=''
358 d_fchown=''
359 d_fcntl=''
360 d_fcntl_can_lock=''
361 d_fd_macros=''
362 d_fd_set=''
363 d_fds_bits=''
364 d_fgetpos=''
365 d_flexfnam=''
366 d_flock=''
367 d_flockproto=''
368 d_fork=''
369 d_fpos64_t=''
370 d_frexpl=''
371 d_fs_data_s=''
372 d_fseeko=''
373 d_fsetpos=''
374 d_fstatfs=''
375 d_fsync=''
376 d_ftello=''
377 d_ftime=''
378 d_gettimeod=''
379 d_Gconvert=''
380 d_getcwd=''
381 d_getespwnam=''
382 d_getfsstat=''
383 d_getgrent=''
384 d_getgrps=''
385 d_gethbyaddr=''
386 d_gethbyname=''
387 d_gethent=''
388 aphostname=''
389 d_gethname=''
390 d_phostname=''
391 d_uname=''
392 d_gethostprotos=''
393 d_getitimer=''
394 d_getlogin=''
395 d_getmnt=''
396 d_getmntent=''
397 d_getnbyaddr=''
398 d_getnbyname=''
399 d_getnent=''
400 d_getnetprotos=''
401 d_getpagsz=''
402 d_getpent=''
403 d_getpgid=''
404 d_getpgrp2=''
405 d_bsdgetpgrp=''
406 d_getpgrp=''
407 d_getppid=''
408 d_getprior=''
409 d_getpbyname=''
410 d_getpbynumber=''
411 d_getprotoprotos=''
412 d_getprpwnam=''
413 d_getpwent=''
414 d_getsent=''
415 d_getservprotos=''
416 d_getspnam=''
417 d_getsbyname=''
418 d_getsbyport=''
419 d_gnulibc=''
420 d_hasmntopt=''
421 d_htonl=''
422 d_iconv=''
423 d_inetaton=''
424 d_int64_t=''
425 d_isascii=''
426 d_isnan=''
427 d_isnanl=''
428 d_killpg=''
429 d_lchown=''
430 d_ldbl_dig=''
431 d_link=''
432 d_locconv=''
433 d_lockf=''
434 d_longdbl=''
435 longdblsize=''
436 d_longlong=''
437 longlongsize=''
438 d_lseekproto=''
439 d_lstat=''
440 d_madvise=''
441 d_mblen=''
442 d_mbstowcs=''
443 d_mbtowc=''
444 d_memchr=''
445 d_memcmp=''
446 d_memcpy=''
447 d_memmove=''
448 d_memset=''
449 d_mkdir=''
450 d_mkdtemp=''
451 d_mkfifo=''
452 d_mkstemp=''
453 d_mkstemps=''
454 d_mktime=''
455 d_mmap=''
456 mmaptype=''
457 d_modfl=''
458 d_modfl_pow32_bug=''
459 d_mprotect=''
460 d_msg=''
461 d_msgctl=''
462 d_msgget=''
463 d_msghdr_s=''
464 d_msgrcv=''
465 d_msgsnd=''
466 d_msync=''
467 d_munmap=''
468 d_nice=''
469 d_nl_langinfo=''
470 d_off64_t=''
471 d_open3=''
472 d_fpathconf=''
473 d_pathconf=''
474 d_pause=''
475 d_pipe=''
476 d_poll=''
477 d_portable=''
478 d_old_pthread_create_joinable=''
479 old_pthread_create_joinable=''
480 d_pthread_atfork=''
481 d_pthread_yield=''
482 d_sched_yield=''
483 sched_yield=''
484 d_qgcvt=''
485 d_readdir=''
486 d_rewinddir=''
487 d_seekdir=''
488 d_telldir=''
489 d_readlink=''
490 d_readv=''
491 d_recvmsg=''
492 d_rename=''
493 d_rmdir=''
494 d_safebcpy=''
495 d_safemcpy=''
496 d_sanemcmp=''
497 d_sbrkproto=''
498 d_select=''
499 d_sem=''
500 d_semctl=''
501 d_semget=''
502 d_semop=''
503 d_sendmsg=''
504 d_setegid=''
505 d_seteuid=''
506 d_setgrent=''
507 d_setgrps=''
508 d_sethent=''
509 d_setitimer=''
510 d_setlinebuf=''
511 d_setlocale=''
512 d_setnent=''
513 d_setpent=''
514 d_setpgid=''
515 d_setpgrp2=''
516 d_bsdsetpgrp=''
517 d_setpgrp=''
518 d_setprior=''
519 d_setproctitle=''
520 d_setpwent=''
521 d_setregid=''
522 d_setresgid=''
523 d_setresuid=''
524 d_setreuid=''
525 d_setrgid=''
526 d_setruid=''
527 d_setsent=''
528 d_setsid=''
529 d_setvbuf=''
530 d_sfio=''
531 usesfio=''
532 d_shm=''
533 d_shmat=''
534 d_shmatprototype=''
535 shmattype=''
536 d_shmctl=''
537 d_shmdt=''
538 d_shmget=''
539 d_sigaction=''
540 d_sigprocmask=''
541 d_sigsetjmp=''
542 d_sockatmark=''
543 d_sockatmarkproto=''
544 d_msg_ctrunc=''
545 d_msg_dontroute=''
546 d_msg_oob=''
547 d_msg_peek=''
548 d_msg_proxy=''
549 d_oldsock=''
550 d_scm_rights=''
551 d_socket=''
552 d_sockpair=''
553 sockethdr=''
554 socketlib=''
555 d_socklen_t=''
556 d_socks5_init=''
557 d_sqrtl=''
558 d_sresgproto=''
559 d_sresuproto=''
560 d_statblks=''
561 d_statfs_f_flags=''
562 d_statfs_s=''
563 d_fstatvfs=''
564 d_statvfs=''
565 d_stdio_cnt_lval=''
566 d_stdio_ptr_lval=''
567 d_stdio_ptr_lval_nochange_cnt=''
568 d_stdio_ptr_lval_sets_cnt=''
569 d_stdiobase=''
570 d_stdstdio=''
571 stdio_base=''
572 stdio_bufsiz=''
573 stdio_cnt=''
574 stdio_filbuf=''
575 stdio_ptr=''
576 d_index=''
577 d_strchr=''
578 d_strcoll=''
579 d_strctcpy=''
580 d_strerrm=''
581 d_strerror=''
582 d_sysernlst=''
583 d_syserrlst=''
584 d_strftime=''
585 d_strtod=''
586 d_strtol=''
587 d_strtold=''
588 d_strtoll=''
589 d_strtoq=''
590 d_strtoul=''
591 d_strtoull=''
592 d_strtouq=''
593 d_strxfrm=''
594 d_symlink=''
595 d_syscall=''
596 d_syscallproto=''
597 d_sysconf=''
598 d_system=''
599 d_tcgetpgrp=''
600 d_tcsetpgrp=''
601 d_telldirproto=''
602 d_time=''
603 timetype=''
604 clocktype=''
605 d_times=''
606 d_truncate=''
607 d_tzname=''
608 d_u32align=''
609 d_ualarm=''
610 d_umask=''
611 d_semctl_semid_ds=''
612 d_semctl_semun=''
613 d_union_semun=''
614 d_usleep=''
615 d_usleepproto=''
616 d_ustat=''
617 d_vfork=''
618 usevfork=''
619 d_voidsig=''
620 signal_t=''
621 d_volatile=''
622 d_charvspr=''
623 d_vprintf=''
624 d_wait4=''
625 d_waitpid=''
626 d_wcstombs=''
627 d_wctomb=''
628 d_writev=''
629 dlext=''
630 cccdlflags=''
631 ccdlflags=''
632 dlsrc=''
633 ld=''
634 lddlflags=''
635 usedl=''
636 doublesize=''
637 ebcdic=''
638 fflushNULL=''
639 fflushall=''
640 fpossize=''
641 fpostype=''
642 gccosandvers=''
643 gccversion=''
644 gidformat=''
645 gidsign=''
646 gidsize=''
647 gidtype=''
648 groupstype=''
649 h_fcntl=''
650 h_sysfile=''
651 i_arpainet=''
652 db_hashtype=''
653 db_prefixtype=''
654 db_version_major=''
655 db_version_minor=''
656 db_version_patch=''
657 i_db=''
658 i_dbm=''
659 i_rpcsvcdbm=''
660 d_dirnamlen=''
661 direntrytype=''
662 i_dirent=''
663 i_dld=''
664 i_dlfcn=''
665 i_fcntl=''
666 i_float=''
667 i_gdbm=''
668 d_grpasswd=''
669 i_grp=''
670 i_iconv=''
671 i_ieeefp=''
672 i_inttypes=''
673 i_langinfo=''
674 i_libutil=''
675 i_limits=''
676 i_locale=''
677 i_machcthr=''
678 i_malloc=''
679 i_math=''
680 i_memory=''
681 i_mntent=''
682 i_ndbm=''
683 i_netdb=''
684 i_neterrno=''
685 i_netinettcp=''
686 i_niin=''
687 i_sysin=''
688 i_poll=''
689 i_prot=''
690 i_pthread=''
691 d_pwage=''
692 d_pwchange=''
693 d_pwclass=''
694 d_pwcomment=''
695 d_pwexpire=''
696 d_pwgecos=''
697 d_pwpasswd=''
698 d_pwquota=''
699 i_pwd=''
700 i_sfio=''
701 i_shadow=''
702 i_socks=''
703 i_stddef=''
704 i_stdlib=''
705 i_string=''
706 strings=''
707 i_sunmath=''
708 i_sysaccess=''
709 i_sysdir=''
710 i_sysfile=''
711 d_voidtty=''
712 i_bsdioctl=''
713 i_sysfilio=''
714 i_sysioctl=''
715 i_syssockio=''
716 i_syslog=''
717 i_sysmman=''
718 i_sysmode=''
719 i_sysmount=''
720 i_sysndir=''
721 i_sysparam=''
722 i_sysresrc=''
723 i_syssecrt=''
724 i_sysselct=''
725 i_sysstat=''
726 i_sysstatfs=''
727 i_sysstatvfs=''
728 i_systimes=''
729 i_systypes=''
730 i_sysuio=''
731 i_sysun=''
732 i_sysutsname=''
733 i_sysvfs=''
734 i_syswait=''
735 i_sgtty=''
736 i_termio=''
737 i_termios=''
738 i_systime=''
739 i_systimek=''
740 i_time=''
741 timeincl=''
742 i_unistd=''
743 i_ustat=''
744 i_utime=''
745 i_values=''
746 i_stdarg=''
747 i_varargs=''
748 i_varhdr=''
749 i_vfork=''
750 inc_version_list=''
751 inc_version_list_init=''
752 installprefix=''
753 installprefixexp=''
754 installstyle=''
755 installusrbinperl=''
756 intsize=''
757 longsize=''
758 shortsize=''
759 issymlink=''
760 libc=''
761 ldlibpthname=''
762 libperl=''
763 shrpenv=''
764 useshrplib=''
765 glibpth=''
766 libpth=''
767 loclibpth=''
768 plibpth=''
769 xlibpth=''
770 ignore_versioned_solibs=''
771 libs=''
772 libsdirs=''
773 libsfiles=''
774 libsfound=''
775 libspath=''
776 lns=''
777 d_PRIEUldbl=''
778 d_PRIFUldbl=''
779 d_PRIGUldbl=''
780 d_PRIeldbl=''
781 d_PRIfldbl=''
782 d_PRIgldbl=''
783 d_SCNfldbl=''
784 sPRIEUldbl=''
785 sPRIFUldbl=''
786 sPRIGUldbl=''
787 sPRIeldbl=''
788 sPRIfldbl=''
789 sPRIgldbl=''
790 sSCNfldbl=''
791 lseeksize=''
792 lseektype=''
793 make_set_make=''
794 d_mymalloc=''
795 freetype=''
796 mallocobj=''
797 mallocsrc=''
798 malloctype=''
799 usemymalloc=''
800 installman1dir=''
801 man1dir=''
802 man1direxp=''
803 man1ext=''
804 installman3dir=''
805 man3dir=''
806 man3direxp=''
807 man3ext=''
808 modetype=''
809 multiarch=''
810 mydomain=''
811 myhostname=''
812 phostname=''
813 c=''
814 n=''
815 d_eofnblk=''
816 eagain=''
817 o_nonblock=''
818 rd_nodata=''
819 need_va_copy=''
820 netdb_hlen_type=''
821 netdb_host_type=''
822 netdb_name_type=''
823 netdb_net_type=''
824 groupcat=''
825 hostcat=''
826 passcat=''
827 orderlib=''
828 ranlib=''
829 d_perl_otherlibdirs=''
830 otherlibdirs=''
831 package=''
832 spackage=''
833 pager=''
834 api_revision=''
835 api_subversion=''
836 api_version=''
837 api_versionstring=''
838 patchlevel=''
839 perl_patchlevel=''
840 revision=''
841 subversion=''
842 version=''
843 version_patchlevel_string=''
844 perl5=''
845 perladmin=''
846 perlpath=''
847 d_nv_preserves_uv=''
848 d_nv_preserves_uv_bits=''
849 i16size=''
850 i16type=''
851 i32size=''
852 i32type=''
853 i64size=''
854 i64type=''
855 i8size=''
856 i8type=''
857 ivsize=''
858 ivtype=''
859 nvsize=''
860 nvtype=''
861 u16size=''
862 u16type=''
863 u32size=''
864 u32type=''
865 u64size=''
866 u64type=''
867 u8size=''
868 u8type=''
869 uvsize=''
870 uvtype=''
871 ivdformat=''
872 nvEUformat=''
873 nvFUformat=''
874 nvGUformat=''
875 nveformat=''
876 nvfformat=''
877 nvgformat=''
878 uvXUformat=''
879 uvoformat=''
880 uvuformat=''
881 uvxformat=''
882 pidtype=''
883 prefix=''
884 prefixexp=''
885 installprivlib=''
886 privlib=''
887 privlibexp=''
888 prototype=''
889 ptrsize=''
890 d_PRIXU64=''
891 d_PRId64=''
892 d_PRIi64=''
893 d_PRIo64=''
894 d_PRIu64=''
895 d_PRIx64=''
896 sPRIXU64=''
897 sPRId64=''
898 sPRIi64=''
899 sPRIo64=''
900 sPRIu64=''
901 sPRIx64=''
902 d_quad=''
903 quadkind=''
904 quadtype=''
905 uquadtype=''
906 drand01=''
907 randbits=''
908 randfunc=''
909 randseedtype=''
910 seedfunc=''
911 installscript=''
912 scriptdir=''
913 scriptdirexp=''
914 selectminbits=''
915 selecttype=''
916 sh=''
917 sig_count=''
918 sig_name=''
919 sig_name_init=''
920 sig_num=''
921 sig_num_init=''
922 sig_size=''
923 installsitearch=''
924 sitearch=''
925 sitearchexp=''
926 installsitebin=''
927 sitebin=''
928 sitebinexp=''
929 installsitelib=''
930 sitelib=''
931 sitelib_stem=''
932 sitelibexp=''
933 siteprefix=''
934 siteprefixexp=''
935 sizesize=''
936 sizetype=''
937 so=''
938 socksizetype=''
939 sharpbang=''
940 shsharp=''
941 spitshell=''
942 src=''
943 ssizetype=''
944 startperl=''
945 startsh=''
946 stdchar=''
947 d_stdio_stream_array=''
948 stdio_stream_array=''
949 sysman=''
950 trnl=''
951 uidformat=''
952 uidsign=''
953 uidsize=''
954 uidtype=''
955 archname64=''
956 use64bitall=''
957 use64bitint=''
958 ccflags_uselargefiles=''
959 ldflags_uselargefiles=''
960 libswanted_uselargefiles=''
961 uselargefiles=''
962 uselongdouble=''
963 usemorebits=''
964 usemultiplicity=''
965 nm_opt=''
966 nm_so_opt=''
967 runnm=''
968 usenm=''
969 useperlio=''
970 usesocks=''
971 d_oldpthreads=''
972 use5005threads=''
973 useithreads=''
974 usereentrant=''
975 usethreads=''
976 incpath=''
977 mips_type=''
978 usrinc=''
979 d_vendorarch=''
980 installvendorarch=''
981 vendorarch=''
982 vendorarchexp=''
983 d_vendorbin=''
984 installvendorbin=''
985 vendorbin=''
986 vendorbinexp=''
987 d_vendorlib=''
988 installvendorlib=''
989 vendorlib=''
990 vendorlib_stem=''
991 vendorlibexp=''
992 usevendorprefix=''
993 vendorprefix=''
994 vendorprefixexp=''
995 versiononly=''
996 defvoidused=''
997 voidflags=''
998 pm_apiversion=''
999 xs_apiversion=''
1000 yacc=''
1001 yaccflags=''
1002 CONFIG=''
1003
1004 define='define'
1005 undef='undef'
1006 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1007 rmlist=''
1008
1009 : We must find out about Eunice early
1010 eunicefix=':'
1011 if test -f /etc/unixtovms; then
1012         eunicefix=/etc/unixtovms
1013 fi
1014 if test -f /etc/unixtovms.exe; then
1015         eunicefix=/etc/unixtovms.exe
1016 fi
1017
1018 i_whoami=''
1019 ccname=''
1020 ccversion=''
1021 perllibs=''
1022 : set useposix=false in your hint file to disable the POSIX extension.
1023 useposix=true
1024 : set useopcode=false in your hint file to disable the Opcode extension.
1025 useopcode=true
1026 : Trailing extension.  Override this in a hint file, if needed.
1027 _exe=''
1028 : Extra object files, if any, needed on this platform.
1029 archobjs=''
1030 archname=''
1031 : Possible local include directories to search.
1032 : Set locincpth to "" in a hint file to defeat local include searches.
1033 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1034 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1035 :
1036 : no include file wanted by default
1037 inclwanted=''
1038
1039 groupstype=''
1040 libnames=''
1041 : change the next line if compiling for Xenix/286 on Xenix/386
1042 xlibpth='/usr/lib/386 /lib/386'
1043 : Possible local library directories to search.
1044 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1045 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1046
1047 : general looking path for locating libraries
1048 glibpth="/lib /usr/lib $xlibpth"
1049 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1050 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1051 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1052
1053 : Private path used by Configure to find libraries.  Its value
1054 : is prepended to libpth. This variable takes care of special
1055 : machines, like the mips.  Usually, it should be empty.
1056 plibpth=''
1057
1058 : default library list
1059 libswanted=''
1060 : some systems want to use only the non-versioned libso:s
1061 ignore_versioned_solibs=''
1062 archname64=''
1063 ccflags_uselargefiles=''
1064 ldflags_uselargefiles=''
1065 libswanted_uselargefiles=''
1066 : set usemultiplicity on the Configure command line to enable multiplicity.
1067 : set usesocks on the Configure command line to enable socks.
1068 : set usethreads on the Configure command line to enable threads.
1069 usereentrant='undef'
1070 : full support for void wanted by default
1071 defvoidused=15
1072
1073 : List of libraries we want.
1074 : If anyone needs -lnet, put it in a hint file.
1075 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1076 libswanted="$libswanted dld ld sun m c cposix posix"
1077 libswanted="$libswanted ndir dir crypt sec"
1078 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1079 : We probably want to search /usr/shlib before most other libraries.
1080 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1081 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1082 glibpth="/usr/shlib $glibpth"
1083 : Do not use vfork unless overridden by a hint file.
1084 usevfork=false
1085
1086 : Find the basic shell for Bourne shell scripts
1087 case "$sh" in
1088 '')
1089         case "$SYSTYPE" in
1090         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1091         *) xxx='/bin/sh';;
1092         esac
1093         if test -f "$xxx"; then
1094                 sh="$xxx"
1095         else
1096                 : Build up a list and do a single loop so we can 'break' out.
1097                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1098                 for xxx in sh bash ksh pdksh ash; do
1099                         for p in $pth; do
1100                                 try="$try ${p}/${xxx}"
1101                         done
1102                 done
1103                 for xxx in $try; do
1104                         if test -f "$xxx"; then
1105                                 sh="$xxx";
1106                                 break
1107                         elif test -f "$xxx.exe"; then
1108                                 sh="$xxx";
1109                                 break
1110                         fi
1111                 done
1112         fi
1113         ;;
1114 esac
1115
1116 case "$sh" in
1117 '')     cat <<EOM >&2
1118 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1119
1120 Usually it's in /bin/sh.  How did you even get this far?
1121 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1122 we'll try to straighten this all out.
1123 EOM
1124         exit 1
1125         ;;
1126 esac
1127
1128 : see if sh knows # comments
1129 if `$sh -c '#' >/dev/null 2>&1`; then
1130         shsharp=true
1131         spitshell=cat
1132         xcat=/bin/cat
1133         test -f $xcat || xcat=/usr/bin/cat
1134         echo "#!$xcat" >sharp
1135         $eunicefix sharp
1136         chmod +x sharp
1137         ./sharp > today
1138         if test -s today; then
1139                 sharpbang='#!'
1140         else
1141                 echo "#! $xcat" > sharp
1142                 $eunicefix sharp
1143                 chmod +x sharp
1144                 ./sharp > today
1145                 if test -s today; then
1146                         sharpbang='#! '
1147                 else
1148                         sharpbang=': use '
1149                 fi
1150         fi
1151 else
1152         echo " "
1153         echo "Your $sh doesn't grok # comments--I will strip them later on."
1154         shsharp=false
1155         cd ..
1156         echo "exec grep -v '^[  ]*#'" >spitshell
1157         chmod +x spitshell
1158         $eunicefix spitshell
1159         spitshell=`pwd`/spitshell
1160         cd UU
1161         echo "I presume that if # doesn't work, #! won't work either!"
1162         sharpbang=': use '
1163 fi
1164 rm -f sharp today
1165
1166 : figure out how to guarantee sh startup
1167 case "$startsh" in
1168 '') startsh=${sharpbang}${sh} ;;
1169 *)
1170 esac
1171 cat >sharp <<EOSS
1172 $startsh
1173 set abc
1174 test "$?abc" != 1
1175 EOSS
1176
1177 chmod +x sharp
1178 $eunicefix sharp
1179 if ./sharp; then
1180         : echo "Yup, it does."
1181 else
1182         echo "Hmm... '$startsh' does not guarantee sh startup..."
1183         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1184 fi
1185 rm -f sharp
1186
1187
1188 : Save command line options in file UU/cmdline.opt for later use in
1189 : generating config.sh.
1190 cat > cmdline.opt <<EOSH
1191 # Configure command line arguments.
1192 config_arg0='$0'
1193 config_args='$*'
1194 config_argc=$#
1195 EOSH
1196 argn=1
1197 args_exp=''
1198 args_sep=''
1199 for arg in "$@"; do
1200         cat >>cmdline.opt <<EOSH
1201 config_arg$argn='$arg'
1202 EOSH
1203         # Extreme backslashitis: replace each ' by '"'"'
1204         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1205 $arg
1206 EOC
1207         arg_exp=`cat cmdl.opt`
1208         args_exp="$args_exp$args_sep'$arg_exp'"
1209         argn=`expr $argn + 1`
1210         args_sep=' '
1211 done
1212 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1213 # used by ./hints/os2.sh
1214 rm -f cmdl.opt
1215
1216 : produce awk script to parse command line options
1217 cat >options.awk <<'EOF'
1218 BEGIN {
1219         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1220
1221         len = length(optstr);
1222         for (i = 1; i <= len; i++) {
1223                 c = substr(optstr, i, 1);
1224                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1225                 if (a == ":") {
1226                         arg[c] = 1;
1227                         i++;
1228                 }
1229                 opt[c] = 1;
1230         }
1231 }
1232 {
1233         expect = 0;
1234         str = $0;
1235         if (substr(str, 1, 1) != "-") {
1236                 printf("'%s'\n", str);
1237                 next;
1238         }
1239         len = length($0);
1240         for (i = 2; i <= len; i++) {
1241                 c = substr(str, i, 1);
1242                 if (!opt[c]) {
1243                         printf("-%s\n", substr(str, i));
1244                         next;
1245                 }
1246                 printf("-%s\n", c);
1247                 if (arg[c]) {
1248                         if (i < len)
1249                                 printf("'%s'\n", substr(str, i + 1));
1250                         else
1251                                 expect = 1;
1252                         next;
1253                 }
1254         }
1255 }
1256 END {
1257         if (expect)
1258                 print "?";
1259 }
1260 EOF
1261
1262 : process the command line options
1263 set X `for arg in "$@"; do echo "X$arg"; done |
1264         sed -e s/X// | awk -f options.awk`
1265 eval "set $*"
1266 shift
1267 rm -f options.awk
1268
1269 : set up default values
1270 fastread=''
1271 reuseval=false
1272 config_sh=''
1273 alldone=''
1274 error=''
1275 silent=''
1276 extractsh=''
1277 override=''
1278 knowitall=''
1279 rm -f optdef.sh posthint.sh
1280 cat >optdef.sh <<EOS
1281 $startsh
1282 EOS
1283
1284
1285 : option parsing
1286 while test $# -gt 0; do
1287         case "$1" in
1288         -d) shift; fastread=yes;;
1289         -e) shift; alldone=cont;;
1290         -f)
1291                 shift
1292                 cd ..
1293                 if test -r "$1"; then
1294                         config_sh="$1"
1295                 else
1296                         echo "$me: cannot read config file $1." >&2
1297                         error=true
1298                 fi
1299                 cd UU
1300                 shift;;
1301         -h) shift; error=true;;
1302         -r) shift; reuseval=true;;
1303         -s) shift; silent=true; realsilent=true;;
1304         -E) shift; alldone=exit;;
1305         -K) shift; knowitall=true;;
1306         -O) shift; override=true;;
1307         -S) shift; silent=true; extractsh=true;;
1308         -D)
1309                 shift
1310                 case "$1" in
1311                 *=)
1312                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1313                         echo "$me: ignoring -D $1" >&2
1314                         ;;
1315                 *=*) echo "$1" | \
1316                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1317                 *) echo "$1='define'" >> optdef.sh;;
1318                 esac
1319                 shift
1320                 ;;
1321         -U)
1322                 shift
1323                 case "$1" in
1324                 *=) echo "$1" >> optdef.sh;;
1325                 *=*)
1326                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1327                         echo "$me: ignoring -U $1" >&2
1328                         ;;
1329                 *) echo "$1='undef'" >> optdef.sh;;
1330                 esac
1331                 shift
1332                 ;;
1333         -A)
1334             shift
1335             xxx=''
1336             yyy="$1"
1337             zzz=''
1338             uuu=undef
1339             case "$yyy" in
1340             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1341                  case "$zzz" in
1342                  *:*) zzz='' ;;
1343                  *)   xxx=append
1344                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1345                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1346                  esac
1347                  ;;
1348             esac
1349             case "$xxx" in
1350             '')  case "$yyy" in
1351                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1352                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1353                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1354                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1355                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1356                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1357                  esac
1358                  ;;       
1359             esac
1360             case "$xxx" in
1361             append)
1362                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1363             clear)
1364                 echo "$yyy=''"                  >> posthint.sh ;;
1365             define)
1366                 case "$zzz" in
1367                 '') zzz=define ;;
1368                 esac
1369                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1370             eval)
1371                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1372             prepend)
1373                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1374             undef)
1375                 case "$zzz" in
1376                 '') zzz="$uuu" ;;
1377                 esac
1378                 echo "$yyy=$zzz"                >> posthint.sh ;;
1379             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1380             esac
1381             shift
1382             ;;
1383         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1384             exit 0;;
1385         --) break;;
1386         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1387         *) break;;
1388         esac
1389 done
1390
1391 case "$error" in
1392 true)
1393         cat >&2 <<EOM
1394 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1395                  [-U symbol] [-U symbol=] [-A command:symbol...]
1396   -d : use defaults for all answers.
1397   -e : go on without questioning past the production of config.sh.
1398   -f : specify an alternate default configuration file.
1399   -h : print this help message and exit (with an error status).
1400   -r : reuse C symbols value if possible (skips costly nm extraction).
1401   -s : silent mode, only echoes questions and essential information.
1402   -D : define symbol to have some value:
1403          -D symbol         symbol gets the value 'define'
1404          -D symbol=value   symbol gets the value 'value'
1405   -E : stop at the end of questions, after having produced config.sh.
1406   -K : do not use unless you know what you are doing.
1407   -O : let -D and -U override definitions from loaded configuration file.
1408   -S : perform variable substitutions on all .SH files (can mix with -f)
1409   -U : undefine symbol:
1410          -U symbol    symbol gets the value 'undef'
1411          -U symbol=   symbol gets completely empty
1412   -A : manipulate symbol after the platform specific hints have been applied:
1413          -A symbol=value                append " "value to symbol
1414          -A append:symbol=value         append value to symbol
1415          -A define:symbol=value         define symbol to have value
1416          -A clear:symbol                define symbol to be ''
1417          -A define:symbol               define symbol to be 'define'
1418          -A eval:symbol=value           define symbol to be eval of value
1419          -A prepend:symbol=value        prepend value to symbol
1420          -A undef:symbol                define symbol to be 'undef'
1421          -A undef:symbol=               define symbol to be ''
1422   -V : print version number and exit (with a zero status).
1423 EOM
1424         exit 1
1425         ;;
1426 esac
1427
1428 : Sanity checks
1429 case "$fastread$alldone" in
1430 yescont|yesexit) ;;
1431 *)
1432         case "$extractsh" in
1433         true) ;;
1434         *)
1435                 if test ! -t 0; then
1436                         echo "Say 'sh Configure', not 'sh <Configure'"
1437                         exit 1
1438                 fi
1439                 ;;
1440         esac
1441         ;;
1442 esac
1443
1444 exec 4>&1
1445 case "$silent" in
1446 true) exec 1>/dev/null;;
1447 esac
1448
1449 : run the defines and the undefines, if any, but leave the file out there...
1450 touch optdef.sh
1451 . ./optdef.sh
1452 : create the posthint manipulation script and leave the file out there...
1453 touch posthint.sh
1454
1455 : set package name
1456 package=perl5
1457 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1458 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1459 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1460 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1461 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1462 esac
1463
1464 : Some greps do not return status, grrr.
1465 echo "grimblepritz" >grimble
1466 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1467         contains=contains
1468 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1469         contains=grep
1470 else
1471         contains=contains
1472 fi
1473 rm -f grimble
1474 : the following should work in any shell
1475 case "$contains" in
1476 contains*)
1477         echo " "
1478         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1479         cat >contains <<'EOSS'
1480 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1481 EOSS
1482 chmod +x contains
1483 esac
1484
1485 : Find the path to the source tree
1486 case "$src" in
1487 '') case "$0" in
1488     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1489          case "$src" in
1490          /*)    ;;
1491          .)     ;;
1492          *)     src=`cd ../$src && pwd` ;;
1493          esac
1494          ;;
1495     *)   src='.';;
1496     esac;;
1497 esac
1498 case "$src" in
1499 '')     src=/
1500         rsrc=/
1501         ;;
1502 /*) rsrc="$src";;
1503 *) rsrc="../$src";;
1504 esac
1505 if test -f $rsrc/Configure && \
1506         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1507 then
1508    : found it, so we are ok.
1509 else
1510         rsrc=''
1511         for src in . .. ../.. ../../.. ../../../..; do
1512                 if test -f ../$src/Configure && \
1513                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1514                 then
1515                         rsrc=../$src
1516                         break
1517                 fi
1518         done
1519 fi
1520 case "$rsrc" in
1521 '')
1522         cat <<EOM >&4
1523
1524 Sorry, I can't seem to locate the source dir for $package.  Please start
1525 Configure with an explicit path -- i.e. /some/path/Configure.
1526
1527 EOM
1528         exit 1
1529         ;;
1530 ../.)   rsrc='..';;
1531 *)
1532         echo " "
1533         echo "Sources for $package found in \"$src\"." >&4
1534         ;;
1535 esac
1536
1537 : script used to extract .SH files with variable substitutions
1538 cat >extract <<'EOS'
1539 PERL_CONFIG_SH=true
1540 echo "Doing variable substitutions on .SH files..."
1541 if test -f MANIFEST; then
1542         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1543 else
1544         echo "(Looking for .SH files under the source directory.)"
1545         set x `(cd $src; find . -name "*.SH" -print)`
1546 fi
1547 shift
1548 case $# in
1549 0) set x `(cd $src; echo *.SH)`; shift;;
1550 esac
1551 if test ! -f $src/$1; then
1552         shift
1553 fi
1554 mkdir_p='
1555 name=$1;
1556 create="";
1557 while test $name; do
1558         if test ! -d "$name"; then
1559                 create="$name $create";
1560                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1561                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1562         else
1563                 name="";
1564         fi;
1565 done;
1566 for file in $create; do
1567         mkdir $file;
1568 done
1569 '
1570 for file in $*; do
1571         case "$src" in
1572         ".")
1573                 case "$file" in
1574                 */*)
1575                         dir=`expr X$file : 'X\(.*\)/'`
1576                         file=`expr X$file : 'X.*/\(.*\)'`
1577                         (cd $dir && . ./$file)
1578                         ;;
1579                 *)
1580                         . ./$file
1581                         ;;
1582                 esac
1583                 ;;
1584         *)
1585                 case "$file" in
1586                 */*)
1587                         dir=`expr X$file : 'X\(.*\)/'`
1588                         file=`expr X$file : 'X.*/\(.*\)'`
1589                         (set x $dir; shift; eval $mkdir_p)
1590                         sh <$src/$dir/$file
1591                         ;;
1592                 *)
1593                         sh <$src/$file
1594                         ;;
1595                 esac
1596                 ;;
1597         esac
1598 done
1599 if test -f $src/config_h.SH; then
1600         if test ! -f config.h; then
1601         : oops, they left it out of MANIFEST, probably, so do it anyway.
1602         . $src/config_h.SH
1603         fi
1604 fi
1605 EOS
1606
1607 : extract files and exit if asked to do so
1608 case "$extractsh" in
1609 true)
1610         case "$realsilent" in
1611         true) ;;
1612         *) exec 1>&4;;
1613         esac
1614         case "$config_sh" in
1615         '') config_sh='config.sh';;
1616         esac
1617         echo " "
1618         echo "Fetching answers from $config_sh..."
1619         cd ..
1620         . $config_sh
1621         test "$override" && . ./optdef.sh
1622         echo " "
1623         . UU/extract
1624         rm -rf UU
1625         echo "Extraction done."
1626         exit 0
1627         ;;
1628 esac
1629
1630 : Eunice requires " " instead of "", can you believe it
1631 echo " "
1632 : Here we go...
1633 echo "Beginning of configuration questions for $package."
1634
1635 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1636
1637 : first determine how to suppress newline on echo command
1638 echo " "
1639 echo "Checking echo to see how to suppress newlines..."
1640 (echo "hi there\c" ; echo " ") >.echotmp
1641 if $contains c .echotmp >/dev/null 2>&1 ; then
1642         echo "...using -n."
1643         n='-n'
1644         c=''
1645 else
1646         cat <<'EOM'
1647 ...using \c
1648 EOM
1649         n=''
1650         c='\c'
1651 fi
1652 echo $n "The star should be here-->$c"
1653 echo '*'
1654 rm -f .echotmp
1655
1656 : Now test for existence of everything in MANIFEST
1657 echo " "
1658 if test -f $rsrc/MANIFEST; then
1659         echo "First let's make sure your kit is complete.  Checking..." >&4
1660         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1661         rm -f missing
1662         tmppwd=`pwd`
1663         for filelist in x??; do
1664                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1665         done
1666         if test -s missing; then
1667                 cat missing >&4
1668                 cat >&4 <<'EOM'
1669
1670 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1671
1672 You have the option of continuing the configuration process, despite the
1673 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1674 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1675 and contact the author (perlbug@perl.org).
1676
1677 EOM
1678                 echo $n "Continue? [n] $c" >&4
1679                 read ans
1680                 case "$ans" in
1681                 y*)
1682                         echo "Continuing..." >&4
1683                         rm -f missing
1684                         ;;
1685                 *)
1686                         echo "ABORTING..." >&4
1687                         kill $$
1688                         ;;
1689                 esac
1690         else
1691                 echo "Looks good..."
1692         fi
1693 else
1694         echo "There is no MANIFEST file.  I hope your kit is complete !"
1695 fi
1696 rm -f missing x??
1697
1698 echo " "
1699 : Find the appropriate value for a newline for tr
1700 if test -n "$DJGPP"; then
1701        trnl='\012'
1702 fi
1703 if test X"$trnl" = X; then
1704         case "`echo foo|tr '\n' x 2>/dev/null`" in
1705         foox) trnl='\n' ;;
1706         esac
1707 fi
1708 if test X"$trnl" = X; then
1709         case "`echo foo|tr '\012' x 2>/dev/null`" in
1710         foox) trnl='\012' ;;
1711         esac
1712 fi
1713 if test X"$trnl" = X; then
1714         cat <<EOM >&2
1715
1716 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1717
1718 EOM
1719         exit 1
1720 fi
1721
1722 : compute the number of columns on the terminal for proper question formatting
1723 case "$COLUMNS" in
1724 '') COLUMNS='80';;
1725 esac
1726
1727 : set up the echo used in my read
1728 myecho="case \"\$xxxm\" in
1729 '') echo $n \"\$rp $c\" >&4;;
1730 *) case \"\$rp\" in
1731         '') echo $n \"[\$xxxm] $c\";;
1732         *)
1733                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1734                         echo \"\$rp\" >&4
1735                         echo $n \"[\$xxxm] $c\" >&4
1736                 else
1737                         echo $n \"\$rp [\$xxxm] $c\" >&4
1738                 fi
1739                 ;;
1740         esac;;
1741 esac"
1742
1743 : now set up to do reads with possible shell escape and default assignment
1744 cat <<EOSC >myread
1745 $startsh
1746 xxxm=\$dflt
1747 $myecho
1748 ans='!'
1749 case "\$fastread" in
1750 yes) case "\$dflt" in
1751         '') ;;
1752         *) ans='';
1753                 case "\$silent-\$rp" in
1754                 true-) ;;
1755                 *) echo " " >&4;;
1756                 esac;;
1757         esac;;
1758 *) case "\$silent" in
1759         true) case "\$rp" in
1760                 '') ans='';;
1761                 esac;;
1762         esac;;
1763 esac
1764 while expr "X\$ans" : "X!" >/dev/null; do
1765         read answ
1766         set x \$xxxm
1767         shift
1768         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1769         case  "\$answ" in
1770         "!")
1771                 sh 1>&4
1772                 echo " "
1773                 $myecho
1774                 ;;
1775         !*)
1776                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1777                 shift
1778                 sh 1>&4 -c "\$*"
1779                 echo " "
1780                 $myecho
1781                 ;;
1782         "\$ans")
1783                 case "\$ans" in
1784                 \\&*)
1785                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1786                         shift
1787                         case "\$1" in
1788                         -d)
1789                                 fastread=yes
1790                                 echo "(OK, I'll run with -d after this question.)" >&4
1791                                 ;;
1792                         -*)
1793                                 echo "*** Sorry, \$1 not supported yet." >&4
1794                                 ;;
1795                         esac
1796                         $myecho
1797                         ans=!
1798                         ;;
1799                 esac;;
1800         *)
1801                 case "\$aok" in
1802                 y)
1803                         echo "*** Substitution done -- please confirm."
1804                         xxxm="\$ans"
1805                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1806                         xxxm="\$ans"
1807                         ans=!
1808                         ;;
1809                 *)
1810                         echo "*** Error -- try again."
1811                         ans=!
1812                         ;;
1813                 esac
1814                 $myecho
1815                 ;;
1816         esac
1817         case "\$ans\$xxxm\$nostick" in
1818         '')
1819                 ans=!
1820                 $myecho
1821                 ;;
1822         esac
1823 done
1824 case "\$ans" in
1825 '') ans="\$xxxm";;
1826 esac
1827 EOSC
1828
1829 : create .config dir to save info across Configure sessions
1830 test -d ../.config || mkdir ../.config
1831 cat >../.config/README <<EOF
1832 This directory created by Configure to save information that should
1833 persist across sessions for $package.
1834
1835 You may safely delete it if you wish.
1836 EOF
1837
1838 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1839 case "$usedevel" in
1840 $define|true|[yY]*) ;;
1841 *) case "$xversion" in
1842    *[13579])
1843         cat >&4 <<EOH
1844 *** WHOA THERE!!! ***
1845
1846     This is an UNSTABLE DEVELOPMENT release.
1847     The version of this $package distribution is $xversion, that is, odd,
1848     (as opposed to even) and that signifies a development release.
1849     If you want a maintenance release, you want an even-numbered version.
1850
1851     Do ***NOT*** install this into production use.
1852     Data corruption and crashes are possible.
1853
1854     It is most seriously suggested that you do not continue any further
1855     unless you want to help in developing and debugging Perl.
1856
1857     If you *still* want to build perl, you can answer 'y' now,
1858     or pass -Dusedevel to Configure.
1859
1860 EOH
1861         rp='Do you really want to continue?'
1862         dflt='n'
1863         . ./myread
1864         case "$ans" in
1865         [yY]) echo >&4 "Okay, continuing."
1866               usedevel="$define" ;;
1867         *) echo >&4 "Okay, bye."
1868            exit 1
1869            ;;
1870         esac
1871         ;;
1872     esac
1873     ;;
1874 esac
1875 case "$usedevel" in
1876 $define|true|[yY]*)
1877         case "$versiononly" in
1878         '') versiononly="$define" ;;
1879         esac
1880         case "$installusrbinperl" in
1881         '') installusrbinperl="$undef" ;;
1882         esac
1883         ;;
1884 esac
1885
1886 : general instructions
1887 needman=true
1888 firsttime=true
1889 user=`(logname) 2>/dev/null`
1890 case "$user" in
1891 '') user=`whoami 2>&1`;;
1892 esac
1893 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1894         firsttime=false
1895         echo " "
1896         rp='Would you like to see the instructions?'
1897         dflt=n
1898         . ./myread
1899         case "$ans" in
1900         [yY]*) ;;
1901         *) needman=false;;
1902         esac
1903 fi
1904 if $needman; then
1905         cat <<EOH
1906
1907 This installation shell script will examine your system and ask you questions
1908 to determine how the perl5 package should be installed. If you get
1909 stuck on a question, you may use a ! shell escape to start a subshell or
1910 execute a command.  Many of the questions will have default answers in square
1911 brackets; typing carriage return will give you the default.
1912
1913 On some of the questions which ask for file or directory names you are allowed
1914 to use the ~name construct to specify the login directory belonging to "name",
1915 even if you don't have a shell which knows about that.  Questions where this is
1916 allowed will be marked "(~name ok)".
1917
1918 EOH
1919         rp=''
1920         dflt='Type carriage return to continue'
1921         . ./myread
1922         cat <<'EOH'
1923
1924 The prompter used in this script allows you to use shell variables and
1925 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1926 in the default answer, as if the default line was a set of arguments given to a
1927 script shell.  This means you may also use $* to repeat the whole default line,
1928 so you do not have to re-type everything to add something to the default.
1929
1930 Everytime there is a substitution, you will have to confirm.  If there is an
1931 error (e.g. an unmatched backtick), the default answer will remain unchanged
1932 and you will be prompted again.
1933
1934 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1935 the questions and use the computed defaults (or the previous answers if there
1936 was already a config.sh file). Type 'Configure -h' for a list of options.
1937 You may also start interactively and then answer '& -d' at any prompt to turn
1938 on the non-interactive behaviour for the remainder of the execution.
1939
1940 EOH
1941         . ./myread
1942         cat <<EOH
1943
1944 Much effort has been expended to ensure that this shell script will run on any
1945 Unix system.  If despite that it blows up on yours, your best bet is to edit
1946 Configure and run it again.  If you can't run Configure for some reason,
1947 you'll have to generate a config.sh file by hand.  Whatever problems you
1948 have, let me (perlbug@perl.org) know how I blew it.
1949
1950 This installation script affects things in two ways:
1951
1952 1) it may do direct variable substitutions on some of the files included
1953    in this kit.
1954 2) it builds a config.h file for inclusion in C programs.  You may edit
1955    any of these files as the need arises after running this script.
1956
1957 If you make a mistake on a question, there is no easy way to back up to it
1958 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1959 files.  Configure will offer to let you do this before it runs the SH files.
1960
1961 EOH
1962         dflt='Type carriage return to continue'
1963         . ./myread
1964         case "$firsttime" in
1965         true) echo $user >>../.config/instruct;;
1966         esac
1967 fi
1968
1969 : find out where common programs are
1970 echo " "
1971 echo "Locating common programs..." >&4
1972 cat <<EOSC >loc
1973 $startsh
1974 case \$# in
1975 0) exit 1;;
1976 esac
1977 thing=\$1
1978 shift
1979 dflt=\$1
1980 shift
1981 for dir in \$*; do
1982         case "\$thing" in
1983         .)
1984         if test -d \$dir/\$thing; then
1985                 echo \$dir
1986                 exit 0
1987         fi
1988         ;;
1989         *)
1990         for thisthing in \$dir/\$thing; do
1991                 : just loop through to pick last item
1992         done
1993         if test -f \$thisthing; then
1994                 echo \$thisthing
1995                 exit 0
1996         elif test -f \$dir/\$thing.exe; then
1997                 if test -n "$DJGPP"; then
1998                         echo \$dir/\$thing.exe
1999                 else
2000                         : on Eunice apparently
2001                         echo \$dir/\$thing
2002                 fi
2003                 exit 0
2004         fi
2005         ;;
2006         esac
2007 done
2008 echo \$dflt
2009 exit 1
2010 EOSC
2011 chmod +x loc
2012 $eunicefix loc
2013 loclist="
2014 awk
2015 cat
2016 chmod
2017 comm
2018 cp
2019 echo
2020 expr
2021 grep
2022 ls
2023 make
2024 mkdir
2025 rm
2026 sed
2027 sort
2028 touch
2029 tr
2030 uniq
2031 "
2032 trylist="
2033 Mcc
2034 ar
2035 bison
2036 byacc
2037 cpp
2038 csh
2039 date
2040 egrep
2041 gzip
2042 less
2043 ln
2044 more
2045 nm
2046 nroff
2047 pg
2048 test
2049 uname
2050 zip
2051 "
2052 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2053 pth="$pth /lib /usr/lib"
2054 for file in $loclist; do
2055         eval xxx=\$$file
2056         case "$xxx" in
2057         /*|?:[\\/]*)
2058                 if test -f "$xxx"; then
2059                         : ok
2060                 else
2061                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2062                         xxx=`./loc $file $file $pth`
2063                 fi
2064                 ;;
2065         '') xxx=`./loc $file $file $pth`;;
2066         *) xxx=`./loc $xxx $xxx $pth`;;
2067         esac
2068         eval $file=$xxx
2069         eval _$file=$xxx
2070         case "$xxx" in
2071         /*)
2072                 echo $file is in $xxx.
2073                 ;;
2074         ?:[\\/]*)
2075                 echo $file is in $xxx.
2076                 ;;
2077         *)
2078                 echo "I don't know where '$file' is, and my life depends on it." >&4
2079                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2080                 exit 1
2081                 ;;
2082         esac
2083 done
2084 echo " "
2085 echo "Don't worry if any of the following aren't found..."
2086 say=offhand
2087 for file in $trylist; do
2088         eval xxx=\$$file
2089         case "$xxx" in
2090         /*|?:[\\/]*)
2091                 if test -f "$xxx"; then
2092                         : ok
2093                 else
2094                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2095                         xxx=`./loc $file $file $pth`
2096                 fi
2097                 ;;
2098         '') xxx=`./loc $file $file $pth`;;
2099         *) xxx=`./loc $xxx $xxx $pth`;;
2100         esac
2101         eval $file=$xxx
2102         eval _$file=$xxx
2103         case "$xxx" in
2104         /*)
2105                 echo $file is in $xxx.
2106                 ;;
2107         ?:[\\/]*)
2108                 echo $file is in $xxx.
2109                 ;;
2110         *)
2111                 echo "I don't see $file out there, $say."
2112                 say=either
2113                 ;;
2114         esac
2115 done
2116 case "$egrep" in
2117 egrep)
2118         echo "Substituting grep for egrep."
2119         egrep=$grep
2120         ;;
2121 esac
2122 case "$ln" in
2123 ln)
2124         echo "Substituting cp for ln."
2125         ln=$cp
2126         ;;
2127 esac
2128 case "$test" in
2129 test)
2130         echo "Hopefully test is built into your sh."
2131         ;;
2132 *)
2133         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2134                 echo "Using the test built into your sh."
2135                 test=test
2136                 _test=test
2137         fi
2138         ;;
2139 esac
2140 case "$echo" in
2141 echo)
2142         echo "Hopefully echo is built into your sh."
2143         ;;
2144 '') ;;
2145 *)
2146         echo " "
2147 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2148         $echo $n "hi there$c" >foo1
2149         echo $n "hi there$c" >foo2
2150         if cmp foo1 foo2 >/dev/null 2>&1; then
2151                 echo "They are compatible.  In fact, they may be identical."
2152         else
2153                 case "$n" in
2154                 '-n') n='' c='\c';;
2155                 *) n='-n' c='';;
2156                 esac
2157                 cat <<FOO
2158 They are not compatible!  You are probably running ksh on a non-USG system.
2159 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2160 have echo built in and we may have to run some Bourne shell scripts.  That
2161 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2162
2163 FOO
2164                 $echo $n "The star should be here-->$c"
2165                 $echo "*"
2166         fi
2167         $rm -f foo1 foo2
2168         ;;
2169 esac
2170
2171 cat <<EOS >checkcc
2172 $startsh
2173 EOS
2174 cat <<'EOSC' >>checkcc
2175 case "$cc" in
2176 '') ;;
2177 *)  $rm -f try try.*
2178     $cat >try.c <<EOM
2179 int main(int argc, char *argv[]) {
2180   return 0;
2181 }
2182 EOM
2183     if $cc -o try $ccflags $ldflags try.c; then
2184        :
2185     else
2186         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2187         despair=yes
2188         trygcc=yes
2189         case "$cc" in
2190         *gcc*) trygcc=no ;;
2191         esac
2192         case "`$cc -v -c try.c 2>&1`" in
2193         *gcc*) trygcc=no ;;
2194         esac
2195         if $test X"$trygcc" = Xyes; then
2196             if gcc -o try -c try.c; then
2197                 echo " "
2198                 echo "You seem to have a working gcc, though." >&4
2199                 rp="Would you like to use it?"
2200                 dflt=y
2201                 if $test -f myread; then
2202                     . ./myread
2203                 else
2204                     if $test -f UU/myread; then
2205                         . ./UU/myread
2206                     else
2207                         echo "Cannot find myread, sorry.  Aborting." >&2
2208                         exit 1
2209                     fi
2210                 fi  
2211                 case "$ans" in
2212                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2213                 esac
2214             fi
2215         fi
2216         if $test X"$despair" = Xyes; then
2217             $cat >&4 <<EOM
2218 You need to find a working C compiler.
2219 Either (purchase and) install the C compiler supplied by your OS vendor,
2220 or for a free C compiler try http://gcc.gnu.org/
2221 I cannot continue any further, aborting.
2222 EOM
2223             exit 1
2224         fi
2225     fi
2226     $rm -f try try.*
2227     ;;
2228 esac
2229 EOSC
2230
2231 : determine whether symbolic links are supported
2232 echo " "
2233 $touch blurfl
2234 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2235         echo "Symbolic links are supported." >&4
2236         lns="$ln -s"
2237 else
2238         echo "Symbolic links are NOT supported." >&4
2239         lns="$ln"
2240 fi
2241 $rm -f blurfl sym
2242
2243 : determine whether symbolic links are supported
2244 echo " "
2245 case "$lns" in
2246 *"ln -s")
2247         echo "Checking how to test for symbolic links..." >&4
2248         $lns blurfl sym
2249         if $test "X$issymlink" = X; then
2250                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2251                 if test $? = 0; then
2252                         issymlink="test -h"
2253                 fi              
2254         fi
2255         if $test "X$issymlink" = X; then
2256                 if  $test -h >/dev/null 2>&1; then
2257                         issymlink="$test -h"
2258                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2259                 fi              
2260         fi
2261         if $test "X$issymlink" = X; then
2262                 if $test -L sym 2>/dev/null; then
2263                         issymlink="$test -L"
2264                 fi
2265         fi
2266         if $test "X$issymlink" != X; then
2267                 echo "You can test for symbolic links with '$issymlink'." >&4
2268         else
2269                 echo "I do not know how you can test for symbolic links." >&4
2270         fi
2271         $rm -f blurfl sym
2272         ;;
2273 *)      echo "No symbolic links, so not testing for their testing..." >&4
2274         ;;
2275 esac
2276 echo " "
2277
2278
2279 case "$mksymlinks" in
2280 $define|true|[yY]*)
2281         case "$src" in
2282         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2283                 exit 1
2284                 ;;
2285         *)      case "$lns:$issymlink" in
2286                 *"ln -s:"*"test -"?)
2287                         echo "Creating the symbolic links..." >&4
2288                         echo "(First creating the subdirectories...)" >&4
2289                         cd ..
2290                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2291                                 read directory
2292                                 test -z "$directory" && break
2293                                 mkdir -p $directory
2294                         done
2295                         # Sanity check 1.
2296                         if test ! -d t/base; then
2297                                 echo "Failed to create the subdirectories.  Aborting." >&4
2298                                 exit 1
2299                         fi
2300                         echo "(Then creating the symlinks...)" >&4
2301                         awk '{print $1}' $src/MANIFEST | while true; do
2302                                 read filename
2303                                 test -z "$filename" && break
2304                                 if test -f $filename; then
2305                                         if $issymlink $filename; then
2306                                                 rm -f $filename
2307                                         fi
2308                                 fi
2309                                 if test -f $filename; then
2310                                         echo "$filename already exists, not symlinking."
2311                                 else
2312                                         ln -s $src/$filename $filename
2313                                 fi
2314                         done
2315                         # Sanity check 2.
2316                         if test ! -f t/base/lex.t; then
2317                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2318                                 exit 1
2319                         fi
2320                         cd UU
2321                         ;;
2322                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2323                         ;;
2324                 esac
2325                 ;;
2326         esac
2327         ;;
2328 esac
2329
2330
2331 case "$usecrosscompile" in
2332 $define|true|[yY]*)
2333         $echo "Cross-compiling..."
2334         croak=''
2335         case "$cc" in
2336         *-*-gcc) # A cross-compiling gcc, probably.
2337             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2338             ar=$targetarch-ar
2339             # leave out ld, choosing it is more complex
2340             nm=$targetarch-nm
2341             ranlib=$targetarch-ranlib
2342             $echo 'extern int foo;' > try.c
2343             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2344             shift
2345             if $test $# -gt 0; then
2346                 incpth="$incpth $*"
2347                 incpth="`$echo $incpth|$sed 's/^ //'`"
2348                 echo "Guessing incpth '$incpth'." >&4
2349                 for i in $*; do
2350                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2351                     if $test -d $j; then
2352                         libpth="$libpth $j"
2353                     fi
2354                 done   
2355                 libpth="`$echo $libpth|$sed 's/^ //'`"
2356                 echo "Guessing libpth '$libpth'." >&4
2357             fi
2358             $rm -f try.c
2359             ;;
2360         esac
2361         case "$targetarch" in
2362         '') echo "Targetarch not defined." >&4; croak=y ;;
2363         *)  echo "Using targetarch $targetarch." >&4 ;;
2364         esac
2365         case "$incpth" in
2366         '') echo "Incpth not defined." >&4; croak=y ;;
2367         *)  echo "Using incpth '$incpth'." >&4 ;;
2368         esac
2369         case "$libpth" in
2370         '') echo "Libpth not defined." >&4; croak=y ;;
2371         *)  echo "Using libpth '$libpth'." >&4 ;;
2372         esac
2373         case "$usrinc" in
2374         '') for i in $incpth; do
2375                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2376                     usrinc=$i
2377                     echo "Guessing usrinc $usrinc." >&4
2378                     break
2379                 fi
2380             done
2381             case "$usrinc" in
2382             '') echo "Usrinc not defined." >&4; croak=y ;;
2383             esac
2384             ;;
2385         *)  echo "Using usrinc $usrinc." >&4 ;;
2386         esac
2387         case "$targethost" in
2388         '') echo "Targethost not defined." >&4; croak=y ;;
2389         *)  echo "Using targethost $targethost." >&4
2390         esac
2391         locincpth=' '
2392         loclibpth=' '
2393         case "$croak" in
2394         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2395         esac
2396         case "$src" in
2397         /*) run=$src/Cross/run
2398             targetmkdir=$src/Cross/mkdir
2399             to=$src/Cross/to
2400             from=$src/Cross/from
2401             ;;
2402         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2403             run=$pwd/Cross/run
2404             targetmkdir=$pwd/Cross/mkdir
2405             to=$pwd/Cross/to
2406             from=$pwd/Cross/from
2407             ;;
2408         esac
2409         case "$targetrun" in
2410         '') targetrun=ssh ;;
2411         esac
2412         case "$targetto" in
2413         '') targetto=scp ;;
2414         esac
2415         case "$targetfrom" in
2416         '') targetfrom=scp ;;
2417         esac
2418         run=$run-$targetrun
2419         to=$to-$targetto
2420         from=$from-$targetfrom
2421         case "$targetdir" in
2422         '')  targetdir=/tmp
2423              echo "Guessing targetdir $targetdir." >&4
2424              ;;
2425         esac
2426         case "$targetuser" in
2427         '')  targetuser=root
2428              echo "Guessing targetuser $targetuser." >&4
2429              ;;
2430         esac
2431         case "$targetfrom" in
2432         scp)    q=-q ;;
2433         *)      q='' ;;
2434         esac
2435         case "$targetrun" in
2436         ssh|rsh)
2437             cat >$run <<EOF
2438 #!/bin/sh
2439 case "\$1" in
2440 -cwd)
2441   shift
2442   cwd=\$1
2443   shift
2444   ;;
2445 esac
2446 case "\$cwd" in
2447 '') cwd=$targetdir ;;
2448 esac
2449 exe=\$1
2450 shift
2451 if $test ! -f \$exe.xok; then
2452   $to \$exe
2453   $touch \$exe.xok
2454 fi
2455 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2456 EOF
2457             ;;
2458         *)  echo "Unknown targetrun '$targetrun'" >&4
2459             exit 1
2460             ;;
2461         esac
2462         case "$targetmkdir" in
2463         */Cross/mkdir)
2464             cat >$targetmkdir <<EOF
2465 #!/bin/sh
2466 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2467 EOF
2468             $chmod a+rx $targetmkdir
2469             ;;
2470         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2471             exit 1
2472             ;;
2473         esac
2474         case "$targetto" in
2475         scp|rcp)
2476             cat >$to <<EOF
2477 #!/bin/sh
2478 for f in \$@
2479 do
2480   case "\$f" in
2481   /*)
2482     $targetmkdir \`dirname \$f\`
2483     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2484     ;;
2485   *)
2486     $targetmkdir $targetdir/\`dirname \$f\`
2487     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2488     ;;
2489   esac
2490 done
2491 exit 0
2492 EOF
2493             ;;
2494         cp) cat >$to <<EOF
2495 #!/bin/sh
2496 for f in \$@
2497 do
2498   case "\$f" in
2499   /*)
2500     $mkdir -p $targetdir/\`dirname \$f\`
2501     $cp \$f $targetdir/\$f || exit 1
2502     ;;
2503   *)
2504     $targetmkdir $targetdir/\`dirname \$f\`
2505     $cp \$f $targetdir/\$f || exit 1
2506     ;;
2507   esac
2508 done
2509 exit 0
2510 EOF
2511             ;;
2512         *)  echo "Unknown targetto '$targetto'" >&4
2513             exit 1
2514             ;;
2515         esac
2516         case "$targetfrom" in
2517         scp|rcp)
2518           cat >$from <<EOF
2519 #!/bin/sh
2520 for f in \$@
2521 do
2522   $rm -f \$f
2523   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2524 done
2525 exit 0
2526 EOF
2527             ;;
2528         cp) cat >$from <<EOF
2529 #!/bin/sh
2530 for f in \$@
2531 do
2532   $rm -f \$f
2533   cp $targetdir/\$f . || exit 1
2534 done
2535 exit 0
2536 EOF
2537             ;;
2538         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2539             exit 1
2540             ;;
2541         esac
2542         if $test ! -f $run; then
2543             echo "Target 'run' script '$run' not found." >&4
2544         else
2545             $chmod a+rx $run
2546         fi
2547         if $test ! -f $to; then
2548             echo "Target 'to' script '$to' not found." >&4
2549         else
2550             $chmod a+rx $to
2551         fi
2552         if $test ! -f $from; then
2553             echo "Target 'from' script '$from' not found." >&4
2554         else
2555             $chmod a+rx $from
2556         fi
2557         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2558             exit 1
2559         fi
2560         cat >&4 <<EOF
2561 Using '$run' for remote execution,
2562 and '$from' and '$to'
2563 for remote file transfer.
2564 EOF
2565         ;;
2566 *)      run=''
2567         to=:
2568         from=:
2569         usecrosscompile='undef'
2570         targetarch=''
2571         ;;
2572 esac
2573
2574 : see whether [:lower:] and [:upper:] are supported character classes
2575 echo " "
2576 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2577 ABYZ)
2578         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2579         up='[:upper:]'
2580         low='[:lower:]'
2581         ;;
2582 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2583         # (0xc9 and 0xd1), therefore that is a nice testing point.
2584         if test "X$up" = X -o "X$low" = X; then
2585             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2586             ij) up='[A-Z]'
2587                 low='[a-z]'
2588                 ;;
2589             esac
2590         fi
2591         if test "X$up" = X -o "X$low" = X; then
2592             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2593             ij) up='A-Z'
2594                 low='a-z'
2595                 ;;
2596             esac
2597         fi
2598         if test "X$up" = X -o "X$low" = X; then
2599             case "`echo IJ | od -x 2>/dev/null`" in
2600             *C9D1*|*c9d1*)
2601                 echo "Hey, this might be EBCDIC." >&4
2602                 if test "X$up" = X -o "X$low" = X; then
2603                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2604                     ij) up='[A-IJ-RS-Z]'
2605                         low='[a-ij-rs-z]'
2606                         ;;
2607                     esac
2608                 fi
2609                 if test "X$up" = X -o "X$low" = X; then
2610                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2611                     ij) up='A-IJ-RS-Z'
2612                         low='a-ij-rs-z'
2613                         ;;
2614                     esac
2615                 fi
2616                 ;;
2617             esac
2618         fi
2619 esac
2620 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2621 ij)
2622     echo "Using $up and $low to convert case." >&4
2623     ;;
2624 *)
2625     echo "I don't know how to translate letters from upper to lower case." >&4
2626     echo "Your tr is not acting any way I know of." >&4
2627     exit 1
2628     ;;
2629 esac
2630 : set up the translation script tr, must be called with ./tr of course
2631 cat >tr <<EOSC
2632 $startsh
2633 case "\$1\$2" in
2634 '[A-Z][a-z]') exec $tr '$up' '$low';;
2635 '[a-z][A-Z]') exec $tr '$low' '$up';;
2636 esac
2637 exec $tr "\$@"
2638 EOSC
2639 chmod +x tr
2640 $eunicefix tr
2641
2642 : Try to determine whether config.sh was made on this system
2643 case "$config_sh" in
2644 '')
2645 myuname=`$uname -a 2>/dev/null`
2646 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2647 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2648 # because the A-Z/a-z are not consecutive.
2649 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2650         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2651 newmyuname="$myuname"
2652 dflt=n
2653 case "$knowitall" in
2654 '')
2655         if test -f ../config.sh; then
2656                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2657                         eval "`grep myuname= ../config.sh`"
2658                 fi
2659                 if test "X$myuname" = "X$newmyuname"; then
2660                         dflt=y
2661                 fi
2662         fi
2663         ;;
2664 *) dflt=y;;
2665 esac
2666
2667 : Get old answers from old config file if Configure was run on the
2668 : same system, otherwise use the hints.
2669 hint=default
2670 cd ..
2671 if test -f config.sh; then
2672         echo " "
2673         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2674         . UU/myread
2675         case "$ans" in
2676         n*|N*) echo "OK, I'll ignore it."
2677                 mv config.sh config.sh.old
2678                 myuname="$newmyuname"
2679                 ;;
2680         *)  echo "Fetching default answers from your old config.sh file..." >&4
2681                 tmp_n="$n"
2682                 tmp_c="$c"
2683                 tmp_sh="$sh"
2684                 . ./config.sh
2685                 cp config.sh UU
2686                 n="$tmp_n"
2687                 c="$tmp_c"
2688                 : Older versions did not always set $sh.  Catch re-use of such
2689                 : an old config.sh.
2690                 case "$sh" in
2691                 '') sh="$tmp_sh" ;;
2692                 esac
2693                 hint=previous
2694                 ;;
2695         esac
2696 fi
2697 . ./UU/checkcc
2698 if test ! -f config.sh; then
2699         $cat <<EOM
2700
2701 First time through, eh?  I have some defaults handy for some systems
2702 that need some extra help getting the Configure answers right:
2703
2704 EOM
2705         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2706         dflt=''
2707         : Half the following guesses are probably wrong... If you have better
2708         : tests or hints, please send them to perlbug@perl.org
2709         : The metaconfig authors would also appreciate a copy...
2710         $test -f /irix && osname=irix
2711         $test -f /xenix && osname=sco_xenix
2712         $test -f /dynix && osname=dynix
2713         $test -f /dnix && osname=dnix
2714         $test -f /lynx.os && osname=lynxos
2715         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2716         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2717         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /bin/mips && /bin/mips && osname=mips
2719         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2720                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2721         $test -d /usr/apollo/bin && osname=apollo
2722         $test -f /etc/saf/_sactab && osname=svr4
2723         $test -d /usr/include/minix && osname=minix
2724         if $test -d /MachTen -o -d /MachTen_Folder; then
2725                 osname=machten
2726                 if $test -x /sbin/version; then
2727                         osvers=`/sbin/version | $awk '{print $2}' |
2728                         $sed -e 's/[A-Za-z]$//'`
2729                 elif $test -x /usr/etc/version; then
2730                         osvers=`/usr/etc/version | $awk '{print $2}' |
2731                         $sed -e 's/[A-Za-z]$//'`
2732                 else
2733                         osvers="$2.$3"
2734                 fi
2735         fi
2736
2737         $test -f /sys/posix.dll &&
2738                 $test -f /usr/bin/what &&
2739                 set X `/usr/bin/what /sys/posix.dll` &&
2740                 $test "$3" = UWIN &&
2741                 osname=uwin &&
2742                 osvers="$5"
2743
2744         if $test -f $uname; then
2745                 set X $myuname
2746                 shift
2747
2748                 case "$5" in
2749                 fps*) osname=fps ;;
2750                 mips*)
2751                         case "$4" in
2752                         umips) osname=umips ;;
2753                         *) osname=mips ;;
2754                         esac;;
2755                 [23]100) osname=mips ;;
2756                 next*) osname=next ;;
2757                 i386*)
2758                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2759                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2760                                 osname='sco'
2761                                 osvers=$tmp
2762                         elif $test -f /etc/kconfig; then
2763                                 osname=isc
2764                                 if test "$lns" = "$ln -s"; then
2765                                         osvers=4
2766                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2767                                         osvers=3
2768                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2769                                         osvers=2
2770                                 fi
2771                         fi
2772                         tmp=''
2773                         ;;
2774                 pc*)
2775                         if test -n "$DJGPP"; then
2776                                 osname=dos
2777                                 osvers=djgpp
2778                         fi
2779                         ;;
2780                 esac
2781
2782                 case "$1" in
2783                 aix) osname=aix
2784                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2785                         case "$tmp" in
2786                         'not found') osvers="$4"."$3" ;;
2787                         '<3240'|'<>3240') osvers=3.2.0 ;;
2788                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2789                         '=3250'|'>3250') osvers=3.2.5 ;;
2790                         *) osvers=$tmp;;
2791                         esac
2792                         ;;
2793                 bsd386) osname=bsd386
2794                         osvers=`$uname -r`
2795                         ;;
2796                 cygwin*) osname=cygwin
2797                         osvers="$3"
2798                         ;;
2799                 *dc.osx) osname=dcosx
2800                         osvers="$3"
2801                         ;;
2802                 dnix) osname=dnix
2803                         osvers="$3"
2804                         ;;
2805                 domainos) osname=apollo
2806                         osvers="$3"
2807                         ;;
2808                 dgux) osname=dgux 
2809                         osvers="$3"
2810                         ;;
2811                 dynixptx*) osname=dynixptx
2812                         osvers=`echo "$4"|sed 's/^v//'`
2813                         ;;
2814                 freebsd) osname=freebsd 
2815                         osvers="$3" ;;
2816                 genix) osname=genix ;;
2817                 hp*) osname=hpux 
2818                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2819                         ;;
2820                 irix*) osname=irix
2821                         case "$3" in
2822                         4*) osvers=4 ;;
2823                         5*) osvers=5 ;;
2824                         *)      osvers="$3" ;;
2825                         esac
2826                         ;;
2827                 linux) osname=linux
2828                         case "$3" in
2829                         *)      osvers="$3" ;;
2830                         esac
2831                         ;;
2832                 MiNT) osname=mint
2833                         ;;
2834                 netbsd*) osname=netbsd
2835                         osvers="$3"
2836                         ;;
2837                 news-os) osvers="$3"
2838                         case "$3" in
2839                         4*) osname=newsos4 ;;
2840                         *) osname=newsos ;;
2841                         esac
2842                         ;;
2843                 next*) osname=next ;;
2844                 nonstop-ux) osname=nonstopux ;;
2845                 POSIX-BC | posix-bc ) osname=posix-bc
2846                         osvers="$3"
2847                         ;;
2848                 powerux | power_ux | powermax_os | powermaxos | \
2849                 powerunix | power_unix) osname=powerux
2850                         osvers="$3"
2851                         ;;
2852                 qnx) osname=qnx
2853                         osvers="$4"
2854                         ;;
2855                 solaris) osname=solaris
2856                         case "$3" in
2857                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2858                         *)      osvers="$3" ;;
2859                         esac
2860                         ;;
2861                 sunos) osname=sunos
2862                         case "$3" in
2863                         5*) osname=solaris
2864                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2865                         *)      osvers="$3" ;;
2866                         esac
2867                         ;;
2868                 titanos) osname=titanos
2869                         case "$3" in
2870                         1*) osvers=1 ;;
2871                         2*) osvers=2 ;;
2872                         3*) osvers=3 ;;
2873                         4*) osvers=4 ;;
2874                         *)      osvers="$3" ;;
2875                         esac
2876                         ;;
2877                 ultrix) osname=ultrix
2878                         osvers="$3"
2879                         ;;
2880                 osf1|mls+)      case "$5" in
2881                                 alpha)
2882                                         osname=dec_osf
2883                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2884                                         case "$osvers" in
2885                                         [1-9].[0-9]*) ;;
2886                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2887                                         esac
2888                                         ;;
2889                         hp*)    osname=hp_osf1  ;;
2890                         mips)   osname=mips_osf1 ;;
2891                         esac
2892                         ;;
2893                 unixware) osname=svr5
2894                         osvers="$4"
2895                         ;;
2896                 uts) osname=uts
2897                         osvers="$3"
2898                         ;;
2899                 $2) case "$osname" in
2900                         *isc*) ;;
2901                         *freebsd*) ;;
2902                         svr*)
2903                                 : svr4.x or possibly later
2904                                 case "svr$3" in 
2905                                 ${osname}*)
2906                                         osname=svr$3
2907                                         osvers=$4
2908                                         ;;
2909                                 esac
2910                                 case "$osname" in
2911                                 svr4.0)
2912                                         : Check for ESIX
2913                                         if test -f /stand/boot ; then
2914                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2915                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2916                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2917                                                         if test -n "$isesix"; then
2918                                                                 osname=esix4
2919                                                         fi
2920                                                 fi
2921                                         fi
2922                                         ;;
2923                                 esac
2924                                 ;;
2925                         *)      if test -f /etc/systemid; then
2926                                         osname=sco
2927                                         set `echo $3 | $sed 's/\./ /g'` $4
2928                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2929                                                 osvers=$1.$2.$3
2930                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2931                                                 osvers=$1.$2
2932                                         elif $test -f $src/hints/sco_$1.sh; then
2933                                                 osvers=$1
2934                                         fi
2935                                 else
2936                                         case "$osname" in
2937                                         '') : Still unknown.  Probably a generic Sys V.
2938                                                 osname="sysv"
2939                                                 osvers="$3"
2940                                                 ;;
2941                                         esac
2942                                 fi
2943                                 ;;
2944                         esac
2945                         ;;
2946                 *)      case "$osname" in
2947                         '') : Still unknown.  Probably a generic BSD.
2948                                 osname="$1"
2949                                 osvers="$3"
2950                                 ;;
2951                         esac
2952                         ;;
2953                 esac
2954         else
2955                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2956                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2957                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2958                                 osname=news_os
2959                         fi
2960                         $rm -f UU/kernel.what
2961                 elif test -d c:/.; then
2962                         set X $myuname
2963                         osname=os2
2964                         osvers="$5"
2965                 fi
2966         fi
2967         
2968         case "$targetarch" in
2969         '') ;;
2970         *)  hostarch=$osname
2971             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2972             osvers=''
2973             ;;
2974         esac
2975
2976         : Now look for a hint file osname_osvers, unless one has been
2977         : specified already.
2978         case "$hintfile" in
2979         ''|' ')
2980                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2981                 : Also try without trailing minor version numbers.
2982                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2983                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2984                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2986                 case "$file" in
2987                 '') dflt=none ;;
2988                 *)  case "$osvers" in
2989                         '') dflt=$file
2990                                 ;;
2991                         *)  if $test -f $src/hints/$file.sh ; then
2992                                         dflt=$file
2993                                 elif $test -f $src/hints/$xfile.sh ; then
2994                                         dflt=$xfile
2995                                 elif $test -f $src/hints/$xxfile.sh ; then
2996                                         dflt=$xxfile
2997                                 elif $test -f $src/hints/$xxxfile.sh ; then
2998                                         dflt=$xxxfile
2999                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3000                                         dflt=$xxxxfile
3001                                 elif $test -f "$src/hints/${osname}.sh" ; then
3002                                         dflt="${osname}"
3003                                 else
3004                                         dflt=none
3005                                 fi
3006                                 ;;
3007                         esac
3008                         ;;
3009                 esac
3010                 if $test -f Policy.sh ; then
3011                         case "$dflt" in
3012                         *Policy*) ;;
3013                         none) dflt="Policy" ;;
3014                         *) dflt="Policy $dflt" ;;
3015                         esac
3016                 fi
3017                 ;;
3018         *)
3019                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3020                 ;;
3021         esac
3022
3023         if $test -f Policy.sh ; then
3024                 $cat <<EOM
3025
3026 There's also a Policy hint file available, which should make the
3027 site-specific (policy) questions easier to answer.
3028 EOM
3029
3030         fi
3031
3032         $cat <<EOM
3033
3034 You may give one or more space-separated answers, or "none" if appropriate.
3035 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3036 is a good thing.  DO NOT give a wrong version or a wrong OS.
3037
3038 EOM
3039
3040         rp="Which of these apply, if any?"
3041         . UU/myread
3042         tans=$ans
3043         for file in $tans; do
3044                 if $test X$file = XPolicy -a -f Policy.sh; then
3045                         . Policy.sh
3046                         $cat Policy.sh >> UU/config.sh
3047                 elif $test -f $src/hints/$file.sh; then
3048                         . $src/hints/$file.sh
3049                         $cat $src/hints/$file.sh >> UU/config.sh
3050                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3051                         : nothing
3052                 else
3053                         : Give one chance to correct a possible typo.
3054                         echo "$file.sh does not exist"
3055                         dflt=$file
3056                         rp="hint to use instead?"
3057                         . UU/myread
3058                         for file in $ans; do
3059                                 if $test -f "$src/hints/$file.sh"; then
3060                                         . $src/hints/$file.sh
3061                                         $cat $src/hints/$file.sh >> UU/config.sh
3062                                 elif $test X$ans = X -o X$ans = Xnone ; then
3063                                         : nothing
3064                                 else
3065                                         echo "$file.sh does not exist -- ignored."
3066                                 fi
3067                         done
3068                 fi
3069         done
3070
3071         hint=recommended
3072         : Remember our hint file for later.
3073         if $test -f "$src/hints/$file.sh" ; then
3074                 hintfile="$file"
3075         else
3076                 hintfile=''
3077         fi
3078 fi
3079 cd UU
3080 ;;
3081 *)
3082         echo " "
3083         echo "Fetching default answers from $config_sh..." >&4
3084         tmp_n="$n"
3085         tmp_c="$c"
3086         cd ..
3087         cp $config_sh config.sh 2>/dev/null
3088         chmod +w config.sh
3089         . ./config.sh
3090         cd UU
3091         cp ../config.sh .
3092         n="$tmp_n"
3093         c="$tmp_c"
3094         hint=previous
3095         ;;
3096 esac
3097 test "$override" && . ./optdef.sh
3098
3099 : Restore computed paths
3100 for file in $loclist $trylist; do
3101         eval $file="\$_$file"
3102 done
3103
3104 cat << EOM
3105
3106 Configure uses the operating system name and version to set some defaults.
3107 The default value is probably right if the name rings a bell. Otherwise,
3108 since spelling matters for me, either accept the default or answer "none"
3109 to leave it blank.
3110
3111 EOM
3112 case "$osname" in
3113         ''|' ')
3114                 case "$hintfile" in
3115                 ''|' '|none) dflt=none ;;
3116                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3117                 esac
3118                 ;;
3119         *) dflt="$osname" ;;
3120 esac
3121 rp="Operating system name?"
3122 . ./myread
3123 case "$ans" in
3124 none)  osname='' ;;
3125 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3126 esac
3127 echo " "
3128 case "$osvers" in
3129         ''|' ')
3130                 case "$hintfile" in
3131                 ''|' '|none) dflt=none ;;
3132                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3133                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3134                         case "$dflt" in
3135                         ''|' ') dflt=none ;;
3136                         esac
3137                         ;;
3138                 esac
3139                 ;;
3140         *) dflt="$osvers" ;;
3141 esac
3142 rp="Operating system version?"
3143 . ./myread
3144 case "$ans" in
3145 none)  osvers='' ;;
3146 *) osvers="$ans" ;;
3147 esac
3148
3149
3150 . ./posthint.sh
3151
3152 : who configured the system
3153 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3154 cf_by=`(logname) 2>/dev/null`
3155 case "$cf_by" in
3156 "")
3157         cf_by=`(whoami) 2>/dev/null`
3158         case "$cf_by" in
3159         "") cf_by=unknown ;;
3160         esac ;;
3161 esac
3162
3163 : set up the script used to warn in case of inconsistency
3164 cat <<EOS >whoa
3165 $startsh
3166 EOS
3167 cat <<'EOSC' >>whoa
3168 dflt=y
3169 echo " "
3170 echo "*** WHOA THERE!!! ***" >&4
3171 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3172 rp="    Keep the $hint value?"
3173 . ./myread
3174 case "$ans" in
3175 y) td=$was; tu=$was;;
3176 esac
3177 EOSC
3178
3179 : function used to set $1 to $val
3180 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3181 case "$val$was" in
3182 $define$undef) . ./whoa; eval "$var=\$td";;
3183 $undef$define) . ./whoa; eval "$var=\$tu";;
3184 *) eval "$var=$val";;
3185 esac'
3186
3187 case "$usethreads" in
3188 $define|true|[yY]*)     dflt='y';;
3189 *) dflt='n';;
3190 esac
3191 cat <<EOM
3192
3193 Perl can be built to take advantage of threads on some systems.
3194 To do so, Configure can be run with -Dusethreads.
3195
3196 Note that threading is a highly experimental feature, and
3197 some known race conditions still remain.  If you choose to try
3198 it, be very sure to not actually deploy it for production
3199 purposes.  README.threads has more details, and is required
3200 reading if you enable threads.
3201
3202 If this doesn't make any sense to you, just accept the default '$dflt'.
3203 EOM
3204 rp='Build a threading Perl?'
3205 . ./myread
3206 case "$ans" in
3207 y|Y)    val="$define" ;;
3208 *)      val="$undef" ;;
3209 esac
3210 set usethreads
3211 eval $setvar
3212
3213 case "$usethreads" in
3214 $define)
3215         $cat <<EOM
3216
3217 As of 5.5.640, Perl has two different internal threading implementations,
3218 the 5.005 version (5005threads) and an interpreter-based version
3219 (ithreads) that has one interpreter per thread.  Both are very 
3220 experimental.  This arrangement exists to help developers work out
3221 which one is better.
3222
3223 If you're a casual user, you probably don't want interpreter-threads
3224 at this time.  There doesn't yet exist a way to create threads from
3225 within Perl in this model, i.e., "use Thread;" will NOT work.
3226 EOM
3227         : Default to ithreads unless overridden on command line or with
3228         : old config.sh
3229         dflt='y'
3230         case "$use5005threads" in
3231                 $define|true|[yY]*) dflt='n';;
3232         esac
3233         case "$useithreads" in
3234                 $undef|false|[nN]*) dflt='n';;
3235         esac
3236         rp='Use interpreter-based ithreads?'
3237         . ./myread
3238         case "$ans" in
3239         y|Y)    val="$define" ;;
3240         *)      val="$undef" ;;
3241         esac
3242         set useithreads
3243         eval $setvar
3244         : Now set use5005threads to the opposite value.
3245         case "$useithreads" in
3246         $define) val="$undef" ;;
3247         *) val="$define" ;;
3248         esac
3249         set use5005threads
3250         eval $setvar
3251         ;;
3252 *)
3253         useithreads="$undef"
3254         use5005threads="$undef"
3255         ;;
3256 esac
3257
3258 case "$useithreads$use5005threads" in
3259 "$define$define")
3260         $cat >&4 <<EOM
3261
3262 You cannot have both the ithreads and the 5.005 threads enabled
3263 at the same time.  Disabling the 5.005 threads since they are
3264 much less stable than the ithreads.
3265
3266 EOM
3267         use5005threads="$undef"
3268         ;;
3269 esac
3270
3271 case "$d_oldpthreads" in
3272 '')     : Configure tests would be welcome here.  For now, assume undef.
3273         val="$undef" ;;
3274 *)      val="$d_oldpthreads" ;;
3275 esac
3276 set d_oldpthreads
3277 eval $setvar
3278
3279
3280 case "$usethreads" in
3281 "$define"|true|[yY]*)
3282 : Look for a hint-file generated 'call-back-unit'.  If the
3283 : user has specified that a threading perl is to be built,
3284 : we may need to set or change some other defaults.
3285         if $test -f usethreads.cbu; then
3286                 echo "Your platform has some specific hints for threaded builds, using them..."
3287                 . ./usethreads.cbu
3288         else
3289                 $cat <<EOM
3290 (Your platform doesn't have any specific hints for threaded builds.
3291  Assuming POSIX threads, then.)
3292 EOM
3293         fi
3294         ;;
3295 esac
3296
3297 cat <<EOM
3298
3299 Perl can be built so that multiple Perl interpreters can coexist
3300 within the same Perl executable.
3301 EOM
3302
3303 case "$useithreads" in
3304 $define)
3305         cat <<EOM
3306 This multiple interpreter support is required for interpreter-based threads.
3307 EOM
3308         val="$define"
3309         ;;
3310 *)      case "$usemultiplicity" in
3311         $define|true|[yY]*)     dflt='y';;
3312         *) dflt='n';;
3313         esac
3314         echo " "
3315         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3316         rp='Build Perl for multiplicity?'
3317         . ./myread
3318         case "$ans" in
3319         y|Y)    val="$define" ;;
3320         *)      val="$undef" ;;
3321         esac
3322         ;;
3323 esac
3324 set usemultiplicity
3325 eval $setvar
3326
3327
3328 case "$usemorebits" in
3329 "$define"|true|[yY]*)
3330         use64bitint="$define"
3331         uselongdouble="$define"
3332         usemorebits="$define"
3333         ;;
3334 *)      usemorebits="$undef"
3335         ;;
3336 esac
3337
3338 : make some quick guesses about what we are up against
3339 echo " "
3340 $echo $n "Hmm...  $c"
3341 echo exit 1 >bsd
3342 echo exit 1 >usg
3343 echo exit 1 >v7
3344 echo exit 1 >osf1
3345 echo exit 1 >eunice
3346 echo exit 1 >xenix
3347 echo exit 1 >venix
3348 echo exit 1 >os2
3349 d_bsd="$undef"
3350 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3351 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3352 then
3353         echo "Looks kind of like an OSF/1 system, but we'll see..."
3354         echo exit 0 >osf1
3355 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3356         xxx=`./loc addbib blurfl $pth`
3357         if $test -f $xxx; then
3358         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3359                 echo exit 0 >bsd
3360                 echo exit 0 >usg
3361         else
3362                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3363                         echo "Looks kind of like an extended USG system, but we'll see..."
3364                 else
3365                         echo "Looks kind of like a USG system, but we'll see..."
3366                 fi
3367                 echo exit 0 >usg
3368         fi
3369 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3370         echo "Looks kind of like a BSD system, but we'll see..."
3371         d_bsd="$define"
3372         echo exit 0 >bsd
3373 else
3374         echo "Looks kind of like a Version 7 system, but we'll see..."
3375         echo exit 0 >v7
3376 fi
3377 case "$eunicefix" in
3378 *unixtovms*)
3379         $cat <<'EOI'
3380 There is, however, a strange, musty smell in the air that reminds me of
3381 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3382 EOI
3383         echo exit 0 >eunice
3384         d_eunice="$define"
3385 : it so happens the Eunice I know will not run shell scripts in Unix format
3386         ;;
3387 *)
3388         echo " "
3389         echo "Congratulations.  You aren't running Eunice."
3390         d_eunice="$undef"
3391         ;;
3392 esac
3393 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3394 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3395 : semicolon as a patch separator
3396 case "$p_" in
3397 :) ;;
3398 *)
3399         $cat <<'EOI'
3400 I have the feeling something is not exactly right, however...don't tell me...
3401 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3402 (Or you may be running DOS with DJGPP.)
3403 EOI
3404         echo exit 0 >os2
3405         ;;
3406 esac
3407 if test -f /xenix; then
3408         echo "Actually, this looks more like a XENIX system..."
3409         echo exit 0 >xenix
3410         d_xenix="$define"
3411 else
3412         echo " "
3413         echo "It's not Xenix..."
3414         d_xenix="$undef"
3415 fi
3416 chmod +x xenix
3417 $eunicefix xenix
3418 if test -f /venix; then
3419         echo "Actually, this looks more like a VENIX system..."
3420         echo exit 0 >venix
3421 else
3422         echo " "
3423         if ./xenix; then
3424                 : null
3425         else
3426                 echo "Nor is it Venix..."
3427         fi
3428 fi
3429 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3430 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3431 $rm -f foo
3432
3433 case "$cc" in
3434 '') dflt=cc;;
3435 *) dflt="$cc";;
3436 esac
3437 rp="Use which C compiler?"
3438 . ./myread
3439 cc="$ans"
3440 : Look for a hint-file generated 'call-back-unit'.  Now that the
3441 : user has specified the compiler, we may need to set or change some
3442 : other defaults.
3443 if $test -f cc.cbu; then
3444     . ./cc.cbu
3445 fi
3446 . ./checkcc
3447
3448 echo " "
3449 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3450 $cat >try.c <<EOM
3451 #include <stdio.h>
3452 int main() {
3453 #ifdef __GNUC__
3454 #ifdef __VERSION__
3455         printf("%s\n", __VERSION__);
3456 #else
3457         printf("%s\n", "1");
3458 #endif
3459 #endif
3460         exit(0);
3461 }
3462 EOM
3463 if $cc -o try $ccflags $ldflags try.c; then
3464         gccversion=`$run ./try`
3465         case "$gccversion" in
3466         '') echo "You are not using GNU cc." ;;
3467         *)  echo "You are using GNU cc $gccversion."
3468             ccname=gcc  
3469             ;;
3470         esac
3471 else
3472         echo " "
3473         echo "*** WHOA THERE!!! ***" >&4
3474         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3475         case "$knowitall" in
3476         '')
3477         echo "    You'd better start hunting for one and let me know about it." >&4
3478                 exit 1
3479                 ;;
3480         esac
3481 fi
3482 $rm -f try try.*
3483 case "$gccversion" in
3484 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3485 esac
3486 case "$gccversion" in
3487 '') gccosandvers='' ;;
3488 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3489    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3490    gccshortvers=''
3491    case "$gccosandvers" in
3492    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3493    $osname$osvers) ;; # looking good
3494    $osname*) cat <<EOM >&4
3495
3496 *** WHOA THERE!!! ***
3497
3498     Your gcc has not been compiled for the exact release of
3499     your operating system ($gccosandvers versus $osname$osvers).
3500
3501     In general it is a good idea to keep gcc synchronized with
3502     the operating system because otherwise serious problems
3503     may ensue when trying to compile software, like Perl.
3504
3505     I'm trying to be optimistic here, though, and will continue.
3506     If later during the configuration and build icky compilation
3507     problems appear (headerfile conflicts being the most common
3508     manifestation), I suggest reinstalling the gcc to match
3509     your operating system release.
3510
3511 EOM
3512       ;;
3513    *) gccosandvers='' ;; # failed to parse, better be silent
3514    esac
3515    ;;
3516 esac
3517 case "$ccname" in
3518 '') ccname="$cc" ;;
3519 esac
3520
3521 case "$gccversion" in
3522 '') ;;
3523 *)  case "$ccflags" in
3524     *-Wall*) ;;
3525     *) ccflags="$ccflags -Wall" ;;
3526     esac
3527     ;;
3528 esac
3529
3530 : decide how portable to be.  Allow command line overrides.
3531 case "$d_portable" in
3532 "$undef") ;;
3533 *)      d_portable="$define" ;;
3534 esac
3535
3536 : set up shell script to do ~ expansion
3537 cat >filexp <<EOSS
3538 $startsh
3539 : expand filename
3540 case "\$1" in
3541  ~/*|~)
3542         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3543         ;;
3544  ~*)
3545         if $test -f /bin/csh; then
3546                 /bin/csh -f -c "glob \$1"
3547                 failed=\$?
3548                 echo ""
3549                 exit \$failed
3550         else
3551                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3552                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3553                 if $test ! -d "\$dir"; then
3554                         me=\`basename \$0\`
3555                         echo "\$me: can't locate home directory for: \$name" >&2
3556                         exit 1
3557                 fi
3558                 case "\$1" in
3559                 */*)
3560                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3561                         ;;
3562                 *)
3563                         echo \$dir
3564                         ;;
3565                 esac
3566         fi
3567         ;;
3568 *)
3569         echo \$1
3570         ;;
3571 esac
3572 EOSS
3573 chmod +x filexp
3574 $eunicefix filexp
3575
3576 : now set up to get a file name
3577 cat <<EOS >getfile
3578 $startsh
3579 EOS
3580 cat <<'EOSC' >>getfile
3581 tilde=''
3582 fullpath=''
3583 already=''
3584 skip=''
3585 none_ok=''
3586 exp_file=''
3587 nopath_ok=''
3588 orig_rp="$rp"
3589 orig_dflt="$dflt"
3590 case "$gfpth" in
3591 '') gfpth='.' ;;
3592 esac
3593
3594 case "$fn" in
3595 *\(*)
3596         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3597         fn=`echo $fn | sed 's/(.*)//'`
3598         ;;
3599 esac
3600
3601 case "$fn" in
3602 *:*)
3603         loc_file=`expr $fn : '.*:\(.*\)'`
3604         fn=`expr $fn : '\(.*\):.*'`
3605         ;;
3606 esac
3607
3608 case "$fn" in
3609 *~*) tilde=true;;
3610 esac
3611 case "$fn" in
3612 */*) fullpath=true;;
3613 esac
3614 case "$fn" in
3615 *+*) skip=true;;
3616 esac
3617 case "$fn" in
3618 *n*) none_ok=true;;
3619 esac
3620 case "$fn" in
3621 *e*) exp_file=true;;
3622 esac
3623 case "$fn" in
3624 *p*) nopath_ok=true;;
3625 esac
3626
3627 case "$fn" in
3628 *f*) type='File';;
3629 *d*) type='Directory';;
3630 *l*) type='Locate';;
3631 esac
3632
3633 what="$type"
3634 case "$what" in
3635 Locate) what='File';;
3636 esac
3637
3638 case "$exp_file" in
3639 '')
3640         case "$d_portable" in
3641         "$define") ;;
3642         *) exp_file=true;;
3643         esac
3644         ;;
3645 esac
3646
3647 cd ..
3648 while test "$type"; do
3649         redo=''
3650         rp="$orig_rp"
3651         dflt="$orig_dflt"
3652         case "$tilde" in
3653         true) rp="$rp (~name ok)";;
3654         esac
3655         . UU/myread
3656         if test -f UU/getfile.ok && \
3657                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3658         then
3659                 value="$ans"
3660                 ansexp="$ans"
3661                 break
3662         fi
3663         case "$ans" in
3664         none)
3665                 value=''
3666                 ansexp=''
3667                 case "$none_ok" in
3668                 true) type='';;
3669                 esac
3670                 ;;
3671         *)
3672                 case "$tilde" in
3673                 '') value="$ans"
3674                         ansexp="$ans";;
3675                 *)
3676                         value=`UU/filexp $ans`
3677                         case $? in
3678                         0)
3679                                 if test "$ans" != "$value"; then
3680                                         echo "(That expands to $value on this system.)"
3681                                 fi
3682                                 ;;
3683                         *) value="$ans";;
3684                         esac
3685                         ansexp="$value"
3686                         case "$exp_file" in
3687                         '') value="$ans";;
3688                         esac
3689                         ;;
3690                 esac
3691                 case "$fullpath" in
3692                 true)
3693                         case "$ansexp" in
3694                         /*) value="$ansexp" ;;
3695                         [a-zA-Z]:/*) value="$ansexp" ;;
3696                         *)
3697                                 redo=true
3698                                 case "$already" in
3699                                 true)
3700                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3701                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3702                                         ;;
3703                                 *)
3704                                 echo "Please give a full path name, starting with slash." >&4
3705                                         case "$tilde" in
3706                                         true)
3707                                 echo "Note that using ~name is ok provided it expands well." >&4
3708                                                 already=true
3709                                                 ;;
3710                                         esac
3711                                 esac
3712                                 ;;
3713                         esac
3714                         ;;
3715                 esac
3716                 case "$redo" in
3717                 '')
3718                         case "$type" in
3719                         File)
3720                                 for fp in $gfpth; do
3721                                         if test "X$fp" = X.; then
3722                                             pf="$ansexp"
3723                                         else    
3724                                             pf="$fp/$ansexp"
3725                                         fi
3726                                         if test -f "$pf"; then
3727                                                 type=''
3728                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3729                                         then
3730                                                 echo "($value is not a plain file, but that's ok.)"
3731                                                 type=''
3732                                         fi
3733                                         if test X"$type" = X; then
3734                                             value="$pf"
3735                                             break
3736                                         fi
3737                                 done
3738                                 ;;
3739                         Directory)
3740                                 for fp in $gfpth; do
3741                                         if test "X$fp" = X.; then
3742                                             dir="$ans"
3743                                             direxp="$ansexp"
3744                                         else    
3745                                             dir="$fp/$ansexp"
3746                                             direxp="$fp/$ansexp"
3747                                         fi
3748                                         if test -d "$direxp"; then
3749                                                 type=''
3750                                                 value="$dir"
3751                                                 break
3752                                         fi
3753                                 done
3754                                 ;;
3755                         Locate)
3756                                 if test -d "$ansexp"; then
3757                                         echo "(Looking for $loc_file in directory $value.)"
3758                                         value="$value/$loc_file"
3759                                         ansexp="$ansexp/$loc_file"
3760                                 fi
3761                                 if test -f "$ansexp"; then
3762                                         type=''
3763                                 fi
3764                                 case "$nopath_ok" in
3765                                 true)   case "$value" in
3766                                         */*) ;;
3767                                         *)      echo "Assuming $value will be in people's path."
3768                                                 type=''
3769                                                 ;;
3770                                         esac
3771                                         ;;
3772                                 esac
3773                                 ;;
3774                         esac
3775
3776                         case "$skip" in
3777                         true) type='';
3778                         esac
3779
3780                         case "$type" in
3781                         '') ;;
3782                         *)
3783                                 if test "$fastread" = yes; then
3784                                         dflt=y
3785                                 else
3786                                         dflt=n
3787                                 fi
3788                                 rp="$what $value doesn't exist.  Use that name anyway?"
3789                                 . UU/myread
3790                                 dflt=''
3791                                 case "$ans" in
3792                                 y*) type='';;
3793                                 *) echo " ";;
3794                                 esac
3795                                 ;;
3796                         esac
3797                         ;;
3798                 esac
3799                 ;;
3800         esac
3801 done
3802 cd UU
3803 ans="$value"
3804 rp="$orig_rp"
3805 dflt="$orig_dflt"
3806 rm -f getfile.ok
3807 test "X$gfpthkeep" != Xy && gfpth=""
3808 EOSC
3809
3810 : What should the include directory be ?
3811 echo " "
3812 $echo $n "Hmm...  $c"
3813 dflt='/usr/include'
3814 incpath=''
3815 mips_type=''
3816 if $test -f /bin/mips && /bin/mips; then
3817         echo "Looks like a MIPS system..."
3818         $cat >usr.c <<'EOCP'
3819 #ifdef SYSTYPE_BSD43
3820 /bsd43
3821 #endif
3822 EOCP
3823         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3824                 dflt='/bsd43/usr/include'
3825                 incpath='/bsd43'
3826                 mips_type='BSD 4.3'
3827         else
3828                 mips_type='System V'
3829         fi
3830         $rm -f usr.c usr.out
3831         echo "and you're compiling with the $mips_type compiler and libraries."
3832         xxx_prompt=y
3833         echo "exit 0" >mips
3834 else
3835         echo "Doesn't look like a MIPS system."
3836         xxx_prompt=n
3837         echo "exit 1" >mips
3838 fi
3839 chmod +x mips
3840 $eunicefix mips
3841 case "$usrinc" in
3842 '') ;;
3843 *) dflt="$usrinc";;
3844 esac
3845 case "$xxx_prompt" in
3846 y)      fn=d/
3847         echo " "
3848         rp='Where are the include files you want to use?'
3849         . ./getfile
3850         usrinc="$ans"
3851         ;;
3852 *)      usrinc="$dflt"
3853         ;;
3854 esac
3855
3856 : see how we invoke the C preprocessor
3857 echo " "
3858 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3859 cat <<'EOT' >testcpp.c
3860 #define ABC abc
3861 #define XYZ xyz
3862 ABC.XYZ
3863 EOT
3864 cd ..
3865 if test ! -f cppstdin; then
3866         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3867                 # AIX cc -E doesn't show the absolute headerfile
3868                 # locations but we'll cheat by using the -M flag.
3869                 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
3870         else
3871                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3872         fi
3873 else
3874         echo "Keeping your $hint cppstdin wrapper."
3875 fi
3876 chmod 755 cppstdin
3877 wrapper=`pwd`/cppstdin
3878 ok='false'
3879 cd UU
3880
3881 if $test "X$cppstdin" != "X" && \
3882         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3883         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884 then
3885         echo "You used to use $cppstdin $cppminus so we'll use that again."
3886         case "$cpprun" in
3887         '') echo "But let's see if we can live without a wrapper..." ;;
3888         *)
3889                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3890                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891                 then
3892                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3893                         ok='true'
3894                 else
3895                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3896                 fi
3897                 ;;
3898         esac
3899 else
3900         case "$cppstdin" in
3901         '') ;;
3902         *)
3903                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3904                 ;;
3905         esac
3906 fi
3907
3908 if $ok; then
3909         : nothing
3910 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3911         $cc -E <testcpp.c >testcpp.out 2>&1; \
3912         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3913         echo "Yup, it does."
3914         x_cpp="$cc -E"
3915         x_minus='';
3916 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3917         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3918         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3919         echo "Yup, it does."
3920         x_cpp="$cc -E"
3921         x_minus='-';
3922 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3923         $cc -P <testcpp.c >testcpp.out 2>&1; \
3924         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925         echo "Yipee, that works!"
3926         x_cpp="$cc -P"
3927         x_minus='';
3928 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3929         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3930         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3931         echo "At long last!"
3932         x_cpp="$cc -P"
3933         x_minus='-';
3934 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3935         $cpp <testcpp.c >testcpp.out 2>&1; \
3936         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937         echo "It works!"
3938         x_cpp="$cpp"
3939         x_minus='';
3940 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3941         $cpp - <testcpp.c >testcpp.out 2>&1; \
3942         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943         echo "Hooray, it works!  I was beginning to wonder."
3944         x_cpp="$cpp"
3945         x_minus='-';
3946 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3947         $wrapper <testcpp.c >testcpp.out 2>&1; \
3948         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949         x_cpp="$wrapper"
3950         x_minus=''
3951         echo "Eureka!"
3952 else
3953         dflt=''
3954         rp="No dice.  I can't find a C preprocessor.  Name one:"
3955         . ./myread
3956         x_cpp="$ans"
3957         x_minus=''
3958         $x_cpp <testcpp.c >testcpp.out 2>&1
3959         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3960                 echo "OK, that will do." >&4
3961         else
3962 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3963                 exit 1
3964         fi
3965 fi
3966
3967 case "$ok" in
3968 false)
3969         cppstdin="$x_cpp"
3970         cppminus="$x_minus"
3971         cpprun="$x_cpp"
3972         cpplast="$x_minus"
3973         set X $x_cpp
3974         shift
3975         case "$1" in
3976         "$cpp")
3977                 echo "Perhaps can we force $cc -E using a wrapper..."
3978                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3979                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3980                 then
3981                         echo "Yup, we can."
3982                         cppstdin="$wrapper"
3983                         cppminus='';
3984                 else
3985                         echo "Nope, we'll have to live without it..."
3986                 fi
3987                 ;;
3988         esac
3989         case "$cpprun" in
3990         "$wrapper")
3991                 cpprun=''
3992                 cpplast=''
3993                 ;;
3994         esac
3995         ;;
3996 esac
3997
3998 case "$cppstdin" in
3999 "$wrapper"|'cppstdin') ;;
4000 *) $rm -f $wrapper;;
4001 esac
4002 $rm -f testcpp.c testcpp.out
4003
4004 : Set private lib path
4005 case "$plibpth" in
4006 '') if ./mips; then
4007                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4008         fi;;
4009 esac
4010 case "$libpth" in
4011 ' ') dlist='';;
4012 '') dlist="$loclibpth $plibpth $glibpth";;
4013 *) dlist="$libpth";;
4014 esac
4015
4016 : Now check and see which directories actually exist, avoiding duplicates
4017 libpth=''
4018 for xxx in $dlist
4019 do
4020     if $test -d $xxx; then
4021                 case " $libpth " in
4022                 *" $xxx "*) ;;
4023                 *) libpth="$libpth $xxx";;
4024                 esac
4025     fi
4026 done
4027 $cat <<'EOM'
4028
4029 Some systems have incompatible or broken versions of libraries.  Among
4030 the directories listed in the question below, please remove any you
4031 know not to be holding relevant libraries, and add any that are needed.
4032 Say "none" for none.
4033
4034 EOM
4035 case "$libpth" in
4036 '') dflt='none';;
4037 *)
4038         set X $libpth
4039         shift
4040         dflt=${1+"$@"}
4041         ;;
4042 esac
4043 rp="Directories to use for library searches?"
4044 . ./myread
4045 case "$ans" in
4046 none) libpth=' ';;
4047 *) libpth="$ans";;
4048 esac
4049
4050 : compute shared library extension
4051 case "$so" in
4052 '')
4053         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4054                 dflt='sl'
4055         else
4056                 dflt='so'
4057         fi
4058         ;;
4059 *) dflt="$so";;
4060 esac
4061 $cat <<EOM
4062
4063 On some systems, shared libraries may be available.  Answer 'none' if
4064 you want to suppress searching of shared libraries for the remainder
4065 of this configuration.
4066
4067 EOM
4068 rp='What is the file extension used for shared libraries?'
4069 . ./myread
4070 so="$ans"
4071
4072 : Define several unixisms.
4073 : Hints files or command line option can be used to override them.
4074 : The convoluted testing is in case hints files set either the old
4075 : or the new name.
4076 case "$_exe" in
4077 '')     case "$exe_ext" in
4078     '') ;;
4079         *)      _exe="$exe_ext" ;;
4080         esac
4081         ;;
4082 esac
4083 case "$_a" in
4084 '')     case "$lib_ext" in
4085     '') _a='.a';;
4086         *)      _a="$lib_ext" ;;
4087         esac
4088         ;;
4089 esac
4090 case "$_o" in
4091 '') case "$obj_ext" in
4092         '')     _o='.o';;
4093         *)      _o="$obj_ext";;
4094         esac
4095         ;;
4096 esac
4097 case "$p_" in
4098 '') case "$path_sep" in
4099         '')     p_=':';;
4100         *)      p_="$path_sep";;
4101         esac
4102         ;;
4103 esac
4104 exe_ext=$_exe
4105 lib_ext=$_a
4106 obj_ext=$_o
4107 path_sep=$p_
4108
4109 : Which makefile gets called first.  This is used by make depend.
4110 case "$firstmakefile" in
4111 '') firstmakefile='makefile';;
4112 esac
4113
4114 case "$usesocks" in
4115 $define|true|[yY]*)     dflt='y';;
4116 *) dflt='n';;
4117 esac
4118 cat <<EOM
4119
4120 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4121 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4122 to use the PerlIO abstraction layer, this will be implicitly selected.
4123
4124 If this doesn't make any sense to you, just accept the default '$dflt'.
4125 EOM
4126 rp='Build Perl for SOCKS?'
4127 . ./myread
4128 case "$ans" in
4129 y|Y)    val="$define" ;;     
4130 *)      val="$undef" ;;
4131 esac
4132 set usesocks
4133 eval $setvar
4134
4135 case "$usesocks" in
4136 $define|true|[yY]*) useperlio="$define";;
4137 esac
4138
4139 : Looking for optional libraries
4140 echo " "
4141 echo "Checking for optional libraries..." >&4
4142 case "$libs" in
4143 ' '|'') dflt='';;
4144 *) dflt="$libs";;
4145 esac
4146 case "$libswanted" in
4147 '') libswanted='c_s';;
4148 esac
4149 case "$usesocks" in
4150 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4151 esac
4152 libsfound=''
4153 libsfiles=''
4154 libsdirs=''
4155 libspath=''
4156 for thisdir in $libpth $xlibpth; do
4157   test -d $thisdir && libspath="$libspath $thisdir"
4158 done
4159 for thislib in $libswanted; do
4160         for thisdir in $libspath; do
4161             xxx=''
4162             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4163                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4164                 $test -f "$xxx" && eval $libscheck
4165                 $test -f "$xxx" && libstyle=shared
4166             fi
4167             if test ! -f "$xxx"; then
4168                 xxx=$thisdir/lib$thislib.$so
4169                 $test -f "$xxx" && eval $libscheck
4170                 $test -f "$xxx" && libstyle=shared
4171             fi  
4172             if test ! -f "$xxx"; then
4173                 xxx=$thisdir/lib$thislib$_a
4174                 $test -f "$xxx" && eval $libscheck
4175                 $test -f "$xxx" && libstyle=static
4176             fi
4177             if test ! -f "$xxx"; then
4178                 xxx=$thisdir/$thislib$_a
4179                 $test -f "$xxx" && eval $libscheck
4180                 $test -f "$xxx" && libstyle=static
4181             fi
4182             if test ! -f "$xxx"; then
4183                 xxx=$thisdir/lib${thislib}_s$_a
4184                 $test -f "$xxx" && eval $libscheck
4185                 $test -f "$xxx" && libstyle=static
4186                 $test -f "$xxx" && thislib=${thislib}_s
4187             fi
4188             if test ! -f "$xxx"; then
4189                 xxx=$thisdir/Slib$thislib$_a
4190                 $test -f "$xxx" && eval $libscheck
4191                 $test -f "$xxx" && libstyle=static
4192             fi
4193             if $test -f "$xxx"; then
4194                 case "$libstyle" in
4195                 shared) echo "Found -l$thislib (shared)." ;;
4196                 static) echo "Found -l$thislib." ;;
4197                 *)      echo "Found -l$thislib ($libstyle)." ;;
4198                 esac
4199                 case " $dflt " in
4200                 *"-l$thislib "*);;
4201                 *) dflt="$dflt -l$thislib"
4202                    libsfound="$libsfound $xxx"
4203                    yyy=`basename $xxx`
4204                    libsfiles="$libsfiles $yyy"
4205                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4206                    case " $libsdirs " in
4207                    *" $yyy "*) ;;
4208                    *) libsdirs="$libsdirs $yyy" ;;
4209                    esac
4210                    ;;
4211                 esac
4212                 break
4213             fi  
4214         done
4215         if $test ! -f "$xxx"; then
4216             echo "No -l$thislib."
4217         fi
4218 done
4219 set X $dflt
4220 shift
4221 dflt="$*"
4222 case "$libs" in
4223 '') dflt="$dflt";;
4224 *) dflt="$libs";;
4225 esac
4226 case "$dflt" in
4227 ' '|'') dflt='none';;
4228 esac
4229
4230 $cat <<EOM
4231
4232 In order to compile $package on your machine, a number of libraries
4233 are usually needed.  Include any other special libraries here as well.
4234 Say "none" for none.  The default list is almost always right.
4235 EOM
4236
4237 echo " "
4238 rp="What libraries to use?"
4239 . ./myread
4240 case "$ans" in
4241 none) libs=' ';;
4242 *) libs="$ans";;
4243 esac
4244
4245 : determine optimization, if desired, or use for debug flag also
4246 case "$optimize" in
4247 ' '|$undef) dflt='none';;
4248 '') dflt='-O';;
4249 *) dflt="$optimize";;
4250 esac
4251 $cat <<EOH
4252
4253 By default, $package compiles with the -O flag to use the optimizer.
4254 Alternately, you might want to use the symbolic debugger, which uses
4255 the -g flag (on traditional Unix systems).  Either flag can be
4256 specified here.  To use neither flag, specify the word "none".
4257
4258 EOH
4259 rp="What optimizer/debugger flag should be used?"
4260 . ./myread
4261 optimize="$ans"
4262 case "$optimize" in
4263 'none') optimize=" ";;
4264 esac
4265
4266 dflt=''
4267 : We will not override a previous value, but we might want to
4268 : augment a hint file
4269 case "$hint" in
4270 default|recommended)
4271         case "$gccversion" in
4272         1*) dflt='-fpcc-struct-return' ;;
4273         esac
4274         case "$optimize" in
4275         *-g*) dflt="$dflt -DDEBUGGING";;
4276         esac
4277         case "$gccversion" in
4278         2*) if test -d /etc/conf/kconfig.d &&
4279                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4280                 then
4281                         dflt="$dflt -posix"
4282                 fi
4283                 ;;
4284         esac
4285         case "$gccversion" in
4286         1*) ;;
4287         2.[0-8]*) ;;
4288         ?*)     echo " "
4289                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4290                 echo 'int main(void) { return 0; }' > gcctest.c
4291                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4292                         echo "Yes, it does." 2>&1
4293                         case "$ccflags" in
4294                         *strict-aliasing*) 
4295                                 echo "Leaving current flags $ccflags alone." 2>&1
4296                                 ;;
4297                         *) dflt="$dflt -fno-strict-aliasing" ;;
4298                         esac
4299                 else
4300                         echo "Nope, it doesn't, but that's ok." 2>&1
4301                 fi
4302                 ;;
4303         esac
4304         ;;
4305 esac
4306
4307 case "$mips_type" in
4308 *BSD*|'') inclwanted="$locincpth $usrinc";;
4309 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4310 esac
4311 for thisincl in $inclwanted; do
4312         if $test -d $thisincl; then
4313                 if $test x$thisincl != x$usrinc; then
4314                         case "$dflt" in
4315                         *" -I$thisincl "*);;
4316                         *) dflt="$dflt -I$thisincl ";;
4317                         esac
4318                 fi
4319         fi
4320 done
4321
4322 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4323         xxx=true;
4324 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4325         xxx=true;
4326 else
4327         xxx=false;
4328 fi;
4329 if $xxx; then
4330         case "$dflt" in
4331         *$2*);;
4332         *) dflt="$dflt -D$2";;
4333         esac;
4334 fi'
4335
4336 set signal.h LANGUAGE_C; eval $inctest
4337
4338 case "$usesocks" in
4339 $define)
4340         ccflags="$ccflags -DSOCKS"
4341         ;;
4342 esac
4343
4344 case "$hint" in
4345 default|recommended) dflt="$ccflags $dflt" ;;
4346 *) dflt="$ccflags";;
4347 esac
4348
4349 case "$dflt" in
4350 ''|' ') dflt=none;;
4351 esac
4352
4353 $cat <<EOH
4354
4355 Your C compiler may want other flags.  For this question you should include
4356 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4357 but you should NOT include libraries or ld flags like -lwhatever.  If you
4358 want $package to honor its debug switch, you should include -DDEBUGGING here.
4359 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4360
4361 To use no flags, specify the word "none".
4362
4363 EOH
4364 set X $dflt
4365 shift
4366 dflt=${1+"$@"}
4367 rp="Any additional cc flags?"
4368 . ./myread
4369 case "$ans" in
4370 none) ccflags='';;
4371 *) ccflags="$ans";;
4372 esac
4373
4374 : the following weeds options from ccflags that are of no interest to cpp
4375 case "$cppflags" in
4376 '') cppflags="$ccflags" ;;
4377 *)  cppflags="$cppflags $ccflags" ;;
4378 esac
4379 case "$gccversion" in
4380 1*) cppflags="$cppflags -D__GNUC__"
4381 esac
4382 case "$mips_type" in
4383 '');;
4384 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4385 esac
4386 case "$cppflags" in
4387 '');;
4388 *)
4389         echo " "
4390         echo "Let me guess what the preprocessor flags are..." >&4
4391         set X $cppflags
4392         shift
4393         cppflags=''
4394         $cat >cpp.c <<'EOM'
4395 #define BLURFL foo
4396
4397 BLURFL xx LFRULB
4398 EOM
4399         previous=''
4400         for flag in $*
4401         do
4402                 case "$flag" in
4403                 -*) ftry="$flag";;
4404                 *) ftry="$previous $flag";;
4405                 esac
4406                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4407                         >cpp1.out 2>/dev/null && \
4408                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4409                         >cpp2.out 2>/dev/null && \
4410                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4411                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4412                 then
4413                         cppflags="$cppflags $ftry"
4414                         previous=''
4415                 else
4416                         previous="$flag"
4417                 fi
4418         done
4419         set X $cppflags
4420         shift
4421         cppflags=${1+"$@"}
4422         case "$cppflags" in
4423         *-*)  echo "They appear to be: $cppflags";;
4424         esac
4425         $rm -f cpp.c cpp?.out
4426         ;;
4427 esac
4428
4429 : flags used in final linking phase
4430 case "$ldflags" in
4431 '') if ./venix; then
4432                 dflt='-i -z'
4433         else
4434                 dflt=''
4435         fi
4436         case "$ccflags" in
4437         *-posix*) dflt="$dflt -posix" ;;
4438         esac
4439         ;;
4440 *) dflt="$ldflags";;
4441 esac
4442
4443 : Try to guess additional flags to pick up local libraries.
4444 for thislibdir in $libpth; do
4445         case " $loclibpth " in
4446         *" $thislibdir "*)
4447                 case "$dflt " in 
4448                 *"-L$thislibdir "*) ;;
4449                 *)  dflt="$dflt -L$thislibdir" ;;
4450                 esac
4451                 ;;
4452         esac
4453 done
4454
4455 case "$dflt" in
4456 '') dflt='none' ;;
4457 esac
4458
4459 $cat <<EOH
4460
4461 Your C linker may need flags.  For this question you should
4462 include -L/whatever and any other flags used by the C linker, but you
4463 should NOT include libraries like -lwhatever.
4464
4465 Make sure you include the appropriate -L/path flags if your C linker
4466 does not normally search all of the directories you specified above,
4467 namely
4468         $libpth
4469 To use no flags, specify the word "none".
4470
4471 EOH
4472
4473 rp="Any additional ld flags (NOT including libraries)?"
4474 . ./myread
4475 case "$ans" in
4476 none) ldflags='';;
4477 *) ldflags="$ans";;
4478 esac
4479 rmlist="$rmlist pdp11"
4480
4481 : coherency check
4482 echo " "
4483 echo "Checking your choice of C compiler and flags for coherency..." >&4
4484 $cat > try.c <<'EOF'
4485 #include <stdio.h>
4486 int main() { printf("Ok\n"); exit(0); }
4487 EOF
4488 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4489 shift
4490 $cat >try.msg <<'EOM'
4491 I've tried to compile and run the following simple program:
4492
4493 EOM
4494 $cat try.c >> try.msg
4495
4496 $cat >> try.msg <<EOM
4497
4498 I used the command:
4499
4500         $*
4501         $run ./try
4502
4503 and I got the following output:
4504
4505 EOM
4506 dflt=y
4507 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4508         if $sh -c "$run ./try" >>try.msg 2>&1; then
4509                 xxx=`$run ./try`
4510                 case "$xxx" in
4511                 "Ok") dflt=n ;;
4512                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4513                         case " $libs " in
4514                         *" -lsfio "*)
4515                                 cat >> try.msg <<'EOQS'
4516 If $libs contains -lsfio, and sfio is mis-configured, then it
4517 sometimes (apparently) runs and exits with a 0 status, but with no
4518 output!  It may have to do with sfio's use of _exit vs. exit.
4519
4520 EOQS
4521                                 rp="You have a big problem.  Shall I abort Configure"
4522                                 dflt=y
4523                                 ;;
4524                         esac
4525                         ;;
4526                 esac
4527         else
4528                 echo "The program compiled OK, but exited with status $?." >>try.msg
4529                 rp="You have a problem.  Shall I abort Configure"
4530                 dflt=y
4531         fi
4532 else
4533         echo "I can't compile the test program." >>try.msg
4534         rp="You have a BIG problem.  Shall I abort Configure"
4535         dflt=y
4536 fi
4537 case "$dflt" in
4538 y)
4539         $cat try.msg >&4
4540         case "$knowitall" in
4541         '')
4542                 echo "(The supplied flags or libraries might be incorrect.)"
4543                 ;;
4544         *) dflt=n;;
4545         esac
4546         echo " "
4547         . ./myread
4548         case "$ans" in
4549         n*|N*) ;;
4550         *)      echo "Ok.  Stopping Configure." >&4
4551                 exit 1
4552                 ;;
4553         esac
4554         ;;
4555 n) echo "OK, that should do.";;
4556 esac
4557 $rm -f try try.* core
4558
4559 : define a shorthand compile call
4560 compile='
4561 mc_file=$1;
4562 shift;
4563 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4564 : define a shorthand compile call for compilations that should be ok.
4565 compile_ok='
4566 mc_file=$1;
4567 shift;
4568 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4569
4570 : check for lengths of integral types
4571 echo " "
4572 case "$intsize" in
4573 '')
4574         echo "Checking to see how big your integers are..." >&4
4575         $cat >try.c <<'EOCP'
4576 #include <stdio.h>
4577 int main()
4578 {
4579         printf("intsize=%d;\n", (int)sizeof(int));
4580         printf("longsize=%d;\n", (int)sizeof(long));
4581         printf("shortsize=%d;\n", (int)sizeof(short));
4582         exit(0);
4583 }
4584 EOCP
4585         set try
4586         if eval $compile_ok && $run ./try > /dev/null; then
4587                 eval `$run ./try`
4588                 echo "Your integers are $intsize bytes long."
4589                 echo "Your long integers are $longsize bytes long."
4590                 echo "Your short integers are $shortsize bytes long."
4591         else
4592                 $cat >&4 <<EOM
4593 !
4594 Help! I can't compile and run the intsize test program: please enlighten me!
4595 (This is probably a misconfiguration in your system or libraries, and
4596 you really ought to fix it.  Still, I'll try anyway.)
4597 !
4598 EOM
4599                 dflt=4
4600                 rp="What is the size of an integer (in bytes)?"
4601                 . ./myread
4602                 intsize="$ans"
4603                 dflt=$intsize
4604                 rp="What is the size of a long integer (in bytes)?"
4605                 . ./myread
4606                 longsize="$ans"
4607                 dflt=2
4608                 rp="What is the size of a short integer (in bytes)?"
4609                 . ./myread
4610                 shortsize="$ans"
4611         fi
4612         ;;
4613 esac
4614 $rm -f try try.*
4615
4616 : check for void type
4617 echo " "
4618 echo "Checking to see how well your C compiler groks the void type..." >&4
4619 case "$voidflags" in
4620 '')
4621         $cat >try.c <<'EOCP'
4622 #if TRY & 1
4623 void sub() {
4624 #else
4625 sub() {
4626 #endif
4627         extern void moo();      /* function returning void */
4628         void (*goo)();          /* ptr to func returning void */
4629 #if TRY & 8
4630         void *hue;              /* generic ptr */
4631 #endif
4632 #if TRY & 2
4633         void (*foo[10])();
4634 #endif
4635
4636 #if TRY & 4
4637         if(goo == moo) {
4638                 exit(0);
4639         }
4640 #endif
4641         exit(0);
4642 }
4643 int main() { sub(); }
4644 EOCP
4645         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4646                 voidflags=$defvoidused
4647         echo "Good.  It appears to support void to the level $package wants.">&4
4648                 if $contains warning .out >/dev/null 2>&1; then
4649                         echo "However, you might get some warnings that look like this:"
4650                         $cat .out
4651                 fi
4652         else
4653 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4654                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4655                         echo "It supports 1..."
4656                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4657                                 echo "It also supports 2..."
4658                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4659                                         voidflags=7
4660                                         echo "And it supports 4 but not 8 definitely."
4661                                 else
4662                                         echo "It doesn't support 4..."
4663                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4664                                                 voidflags=11
4665                                                 echo "But it supports 8."
4666                                         else
4667                                                 voidflags=3
4668                                                 echo "Neither does it support 8."
4669                                         fi
4670                                 fi
4671                         else
4672                                 echo "It does not support 2..."
4673                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4674                                         voidflags=13
4675                                         echo "But it supports 4 and 8."
4676                                 else
4677                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4678                                                 voidflags=5
4679                                                 echo "And it supports 4 but has not heard about 8."
4680                                         else
4681                                                 echo "However it supports 8 but not 4."
4682                                         fi
4683                                 fi
4684                         fi
4685                 else
4686                         echo "There is no support at all for void."
4687                         voidflags=0
4688                 fi
4689         fi
4690 esac
4691 case "$voidflags" in
4692 "$defvoidused") ;;
4693 *)      $cat >&4 <<'EOM'
4694   Support flag bits are:
4695     1: basic void declarations.
4696     2: arrays of pointers to functions returning void.
4697     4: operations between pointers to and addresses of void functions.
4698     8: generic void pointers.
4699 EOM
4700         dflt="$voidflags";
4701         rp="Your void support flags add up to what?"
4702         . ./myread
4703         voidflags="$ans"
4704         ;;
4705 esac
4706 $rm -f try.* .out
4707
4708 : check for length of pointer
4709 echo " "
4710 case "$ptrsize" in
4711 '')
4712         echo "Checking to see how big your pointers are..." >&4
4713         if test "$voidflags" -gt 7; then
4714                 echo '#define VOID_PTR char *' > try.c
4715         else
4716                 echo '#define VOID_PTR void *' > try.c
4717         fi
4718         $cat >>try.c <<'EOCP'
4719 #include <stdio.h>
4720 int main()
4721 {
4722     printf("%d\n", (int)sizeof(VOID_PTR));
4723     exit(0);
4724 }
4725 EOCP
4726         set try
4727         if eval $compile_ok; then
4728                 ptrsize=`$run ./try`
4729                 echo "Your pointers are $ptrsize bytes long."
4730         else
4731                 dflt='4'
4732                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4733                 rp="What is the size of a pointer (in bytes)?"
4734                 . ./myread
4735                 ptrsize="$ans"
4736         fi
4737         ;;
4738 esac
4739 $rm -f try.c try
4740
4741 : check for long long
4742 echo " "
4743 echo "Checking to see if you have long long..." >&4
4744 echo 'int main() { long long x = 7; return 0; }' > try.c
4745 set try
4746 if eval $compile; then
4747         val="$define"
4748         echo "You have long long."
4749 else
4750         val="$undef"
4751         echo "You do not have long long."
4752 fi
4753 $rm try.*
4754 set d_longlong
4755 eval $setvar
4756
4757 : check for length of long long
4758 case "${d_longlong}${longlongsize}" in
4759 $define)
4760         echo " "
4761         echo "Checking to see how big your long longs are..." >&4
4762         $cat >try.c <<'EOCP'
4763 #include <stdio.h>
4764 int main()
4765 {
4766     printf("%d\n", (int)sizeof(long long));
4767     return(0);
4768 }
4769 EOCP
4770         set try
4771         if eval $compile_ok; then
4772                 longlongsize=`$run ./try`
4773                 echo "Your long longs are $longlongsize bytes long."
4774         else
4775                 dflt='8'
4776                 echo " "
4777                 echo "(I can't seem to compile the test program.  Guessing...)"
4778                 rp="What is the size of a long long (in bytes)?"
4779                 . ./myread
4780                 longlongsize="$ans"
4781         fi
4782         if $test "X$longsize" = "X$longlongsize"; then
4783                 echo "(That isn't any different from an ordinary long.)"
4784         fi      
4785         ;;
4786 esac
4787 $rm -f try.* try
4788
4789 : determine filename position in cpp output
4790 echo " "
4791 echo "Computing filename position in cpp output for #include directives..." >&4
4792 echo '#include <stdio.h>' > foo.c
4793 $cat >fieldn <<EOF
4794 $startsh
4795 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4796 $grep '^[       ]*#.*stdio\.h' | \
4797 while read cline; do
4798         pos=1
4799         set \$cline
4800         while $test \$# -gt 0; do
4801                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4802                         echo "\$pos"
4803                         exit 0
4804                 fi
4805                 shift
4806                 pos=\`expr \$pos + 1\`
4807         done
4808 done
4809 EOF
4810 chmod +x fieldn
4811 fieldn=`./fieldn`
4812 $rm -f foo.c fieldn
4813 case $fieldn in
4814 '') pos='???';;
4815 1) pos=first;;
4816 2) pos=second;;
4817 3) pos=third;;
4818 *) pos="${fieldn}th";;
4819 esac
4820 echo "Your cpp writes the filename in the $pos field of the line."
4821
4822 : locate header file
4823 $cat >findhdr <<EOF
4824 $startsh
4825 wanted=\$1
4826 name=''
4827 for usrincdir in $usrinc
4828 do
4829         if test -f \$usrincdir/\$wanted; then
4830                 echo "\$usrincdir/\$wanted"
4831                 exit 0
4832         fi
4833 done
4834 awkprg='{ print \$$fieldn }'
4835 echo "#include <\$wanted>" > foo\$\$.c
4836 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4837 $grep "^[       ]*#.*\$wanted" | \
4838 while read cline; do
4839         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4840         case "\$name" in
4841         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4842         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4843         *) exit 2;;
4844         esac;
4845 done;
4846 #
4847 # status = 0: grep returned 0 lines, case statement not executed
4848 # status = 1: headerfile found
4849 # status = 2: while loop executed, no headerfile found
4850 #
4851 status=\$?
4852 $rm -f foo\$\$.c;
4853 if test \$status -eq 1; then
4854         exit 0;
4855 fi
4856 exit 1
4857 EOF
4858 chmod +x findhdr
4859
4860 : define an alternate in-header-list? function
4861 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4862 cont=true; xxf="echo \"<\$1> found.\" >&4";
4863 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4864 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4865 esac;
4866 case $# in 4) instead=instead;; *) instead="at last";; esac;
4867 while $test "$cont"; do
4868         xxx=`./findhdr $1`
4869         var=$2; eval "was=\$$2";
4870         if $test "$xxx" && $test -r "$xxx";
4871         then eval $xxf;
4872         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4873                 cont="";
4874         else eval $xxnf;
4875         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4876         set $yyy; shift; shift; yyy=$@;
4877         case $# in 0) cont="";;
4878         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4879                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4880         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4881                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4882         esac;
4883 done;
4884 while $test "$yyy";
4885 do set $yyy; var=$2; eval "was=\$$2";
4886         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4887         set $yyy; shift; shift; yyy=$@;
4888 done'
4889
4890 : see if inttypes.h is available
4891 : we want a real compile instead of Inhdr because some systems
4892 : have an inttypes.h which includes non-existent headers
4893 echo " "
4894 $cat >try.c <<EOCP
4895 #include <inttypes.h>
4896 int main() {
4897         static int32_t foo32 = 0x12345678;
4898 }
4899 EOCP
4900 set try
4901 if eval $compile; then
4902         echo "<inttypes.h> found." >&4
4903         val="$define"
4904 else
4905         echo "<inttypes.h> NOT found." >&4
4906         val="$undef"
4907 fi
4908 $rm -f try.c try
4909 set i_inttypes
4910 eval $setvar
4911
4912 : check for int64_t
4913 echo " "
4914 echo "Checking to see if you have int64_t..." >&4
4915 $cat >try.c <<EOCP
4916 #include <sys/types.h>
4917 #$i_inttypes I_INTTYPES
4918 #ifdef I_INTTYPES
4919 #include <inttypes.h>
4920 #endif
4921 int main() { int64_t x = 7; }
4922 EOCP
4923 set try
4924 if eval $compile; then
4925         val="$define"
4926         echo "You have int64_t."
4927 else
4928         val="$undef"
4929         echo "You do not have int64_t."
4930 fi
4931 $rm -f try try.*
4932 set d_int64_t
4933 eval $setvar
4934
4935
4936 echo " "
4937 echo "Checking which 64-bit integer type we could use..." >&4
4938
4939 case "$intsize" in
4940 8) val=int
4941    set quadtype
4942    eval $setvar
4943    val='"unsigned int"'
4944    set uquadtype
4945    eval $setvar
4946    quadkind=1
4947    ;;
4948 *) case "$longsize" in
4949    8) val=long
4950       set quadtype
4951       eval $setvar
4952       val='"unsigned long"'
4953       set uquadtype
4954       eval $setvar
4955       quadkind=2
4956       ;;
4957    *) case "$d_longlong:$longlongsize" in
4958       define:8)
4959         val='"long long"'
4960         set quadtype
4961         eval $setvar
4962         val='"unsigned long long"'
4963         set uquadtype
4964         eval $setvar
4965         quadkind=3
4966         ;;
4967       *) case "$d_int64_t" in
4968          define)
4969            val=int64_t
4970            set quadtype
4971            eval $setvar
4972            val=uint64_t
4973            set uquadtype
4974            eval $setvar
4975            quadkind=4
4976            ;;
4977          esac
4978          ;;
4979       esac
4980       ;;
4981    esac
4982    ;;
4983 esac
4984
4985 case "$quadtype" in
4986 '')     echo "Alas, no 64-bit integer types in sight." >&4
4987         d_quad="$undef"
4988         ;;
4989 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4990         d_quad="$define"
4991         ;;
4992 esac
4993
4994
4995 case "$uselonglong" in
4996 "$define"|true|[yY]*)
4997         cat <<EOM >&4
4998
4999 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5000 EOM
5001         use64bitint="$define"
5002         ;;
5003 esac                          
5004 case "$use64bits" in
5005 "$define"|true|[yY]*)
5006         cat <<EOM >&4
5007
5008 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5009 EOM
5010         use64bitint="$define"
5011         ;;
5012 esac                          
5013 case "$use64bitints" in
5014 "$define"|true|[yY]*)
5015         cat <<EOM >&4
5016
5017 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5018 EOM
5019         use64bitint="$define"
5020         ;;
5021 esac                          
5022 case "$use64bitsint" in
5023 "$define"|true|[yY]*)
5024         cat <<EOM >&4
5025
5026 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5027 EOM
5028         use64bitint="$define"
5029         ;;
5030 esac                          
5031 case "$uselonglongs" in
5032 "$define"|true|[yY]*)
5033         cat <<EOM >&4
5034
5035 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5036 EOM
5037         use64bitint="$define"
5038         ;;
5039 esac                          
5040 case "$use64bitsall" in
5041 "$define"|true|[yY]*)
5042         cat <<EOM >&4
5043
5044 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5045 EOM
5046         use64bitall="$define"
5047         ;;
5048 esac                          
5049
5050 case "$ccflags" in
5051 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5052 esac
5053 case "$use64bitall" in
5054 "$define"|true|[yY]*) use64bitint="$define" ;;
5055 esac
5056
5057 case "$longsize" in
5058 8) cat <<EOM
5059
5060 You have natively 64-bit long integers.
5061 EOM
5062    val="$define"
5063    ;;
5064 *) case "$use64bitint" in
5065    "$define"|true|[yY]*) dflt='y';;
5066    *) dflt='n';;
5067    esac
5068    case "$d_quad" in
5069    "$define") ;;
5070    *) dflt='n' ;;
5071    esac
5072    cat <<EOM
5073
5074 Perl can be built to take advantage of 64-bit integer types
5075 on some systems.  To do so, Configure can be run with -Duse64bitint.
5076 Choosing this option will most probably introduce binary incompatibilities.
5077
5078 If this doesn't make any sense to you, just accept the default '$dflt'.
5079 (The default has been chosen based on your configuration.)
5080 EOM
5081    rp='Try to use 64-bit integers, if available?'
5082    . ./myread
5083    case "$ans" in
5084    [yY]*) val="$define" ;;
5085    *)     val="$undef"  ;;
5086    esac
5087    ;;
5088 esac
5089 set use64bitint
5090 eval $setvar
5091
5092 case "$use64bitall" in
5093 "$define"|true|[yY]*) dflt='y' ;;
5094 *) case "$longsize" in
5095    8) dflt='y' ;;
5096    *) dflt='n' ;;
5097    esac
5098    ;;
5099 esac    
5100 cat <<EOM
5101
5102 You may also choose to try maximal 64-bitness.  It means using as much
5103 64-bitness as possible on the platform.  This in turn means even more
5104 binary incompatibilities.  On the other hand, your platform may not
5105 have any more 64-bitness available than what you already have chosen.
5106
5107 If this doesn't make any sense to you, just accept the default '$dflt'.
5108 (The default has been chosen based on your configuration.)
5109 EOM
5110 rp='Try to use maximal 64-bit support, if available?'
5111 . ./myread
5112 case "$ans" in
5113 [yY]*) val="$define" ;;
5114 *)     val="$undef"  ;;
5115 esac
5116 set use64bitall
5117 eval $setvar
5118 case "$use64bitall" in
5119 "$define")
5120         case "$use64bitint" in
5121         "$undef")
5122                 cat <<EOM
5123
5124 Since you have chosen a maximally 64-bit build, I'm also turning on
5125 the use of 64-bit integers.
5126 EOM
5127                 use64bitint="$define" ;;
5128         esac
5129         ;;
5130 esac
5131
5132 case "$use64bitall" in
5133 "$define"|true|[yY]*)
5134         case "$ptrsize" in
5135         4)      cat <<EOM >&4
5136
5137 *** You have chosen a maximally 64-bit build, but your pointers
5138 *** are only 4 bytes wide, disabling maximal 64-bitness.
5139
5140 EOM
5141                 use64bitall="$undef"
5142                 case "$use64bitint" in
5143                 "$define"|true|[yY]*) ;;
5144                 *)      cat <<EOM >&4
5145
5146 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5147
5148 EOM
5149                         use64bitint="$define"
5150                         ;;
5151                 esac
5152                 ;;
5153         esac
5154         ;;
5155 esac
5156
5157 case "$use64bitint" in
5158 "$define"|true|[yY]*)
5159 : Look for a hint-file generated 'call-back-unit'.  If the
5160 : user has specified that a 64-bit perl is to be built,
5161 : we may need to set or change some other defaults.
5162         if $test -f use64bitint.cbu; then
5163                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5164                 . ./use64bitint.cbu
5165         fi
5166         case "$longsize" in
5167         4) case "$archname64" in
5168            '') archname64=64int ;;
5169            esac
5170            ;;
5171         esac
5172         ;;
5173 esac
5174
5175 case "$use64bitall" in
5176 "$define"|true|[yY]*)
5177 : Look for a hint-file generated 'call-back-unit'.  If the
5178 : user has specified that a maximally 64-bit perl is to be built,
5179 : we may need to set or change some other defaults.
5180         if $test -f use64bitall.cbu; then
5181                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5182                 . ./use64bitall.cbu
5183         fi
5184         case "$longsize" in
5185         4) case "$archname64" in
5186            ''|64int) archname64=64all ;;
5187            esac
5188            ;;
5189         esac
5190         ;;
5191 esac
5192
5193 echo " "
5194 echo "Checking for GNU C Library..." >&4
5195 cat >try.c <<EOM
5196 #include <stdio.h>
5197 int main()
5198 {
5199 #ifdef __GLIBC__
5200     exit(0);
5201 #else
5202     exit(1);
5203 #endif
5204 }
5205 EOM
5206 set try
5207 if eval $compile_ok && $run ./try; then
5208         val="$define"
5209         echo "You are using the GNU C Library"
5210 else
5211         val="$undef"
5212         echo "You are not using the GNU C Library"
5213 fi
5214 $rm -f try try.*
5215 set d_gnulibc
5216 eval $setvar
5217
5218 : see if nm is to be used to determine whether a symbol is defined or not
5219 case "$usenm" in
5220 '')
5221         dflt=''
5222         case "$d_gnulibc" in
5223         "$define")
5224                 echo " "
5225                 echo "nm probably won't work on the GNU C Library." >&4
5226                 dflt=n
5227                 ;;
5228         esac
5229         case "$dflt" in
5230         '') 
5231                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5232                         echo " "
5233                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5234                         echo "'nm' won't be sufficient on this sytem." >&4
5235                         dflt=n
5236                 fi
5237                 ;;
5238         esac
5239         case "$dflt" in
5240         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5241                 if $test $dflt -gt 20; then
5242                         dflt=y
5243                 else
5244                         dflt=n
5245                 fi
5246                 ;;
5247         esac
5248         ;;
5249 *)
5250         case "$usenm" in
5251         true|$define) dflt=y;;
5252         *) dflt=n;;
5253         esac
5254         ;;
5255 esac
5256 $cat <<EOM
5257
5258 I can use $nm to extract the symbols from your C libraries. This
5259 is a time consuming task which may generate huge output on the disk (up
5260 to 3 megabytes) but that should make the symbols extraction faster. The
5261 alternative is to skip the 'nm' extraction part and to compile a small
5262 test program instead to determine whether each symbol is present. If
5263 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5264 this may be the best solution.
5265
5266 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5267
5268 EOM
5269 rp="Shall I use $nm to extract C symbols from the libraries?"
5270 . ./myread
5271 case "$ans" in
5272 [Nn]*) usenm=false;;
5273 *) usenm=true;;
5274 esac
5275
5276 runnm=$usenm
5277 case "$reuseval" in
5278 true) runnm=false;;
5279 esac
5280
5281 : nm options which may be necessary
5282 case "$nm_opt" in
5283 '') if $test -f /mach_boot; then
5284                 nm_opt=''       # Mach
5285         elif $test -d /usr/ccs/lib; then
5286                 nm_opt='-p'     # Solaris (and SunOS?)
5287         elif $test -f /dgux; then
5288                 nm_opt='-p'     # DG-UX
5289         elif $test -f /lib64/rld; then
5290                 nm_opt='-p'     # 64-bit Irix
5291         else
5292                 nm_opt=''
5293         fi;;
5294 esac
5295
5296 : nm options which may be necessary for shared libraries but illegal
5297 : for archive libraries.  Thank you, Linux.
5298 case "$nm_so_opt" in
5299 '')     case "$myuname" in
5300         *linux*)
5301                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5302                         nm_so_opt='--dynamic'
5303                 fi
5304                 ;;
5305         esac
5306         ;;
5307 esac
5308
5309 case "$runnm" in
5310 true)
5311 : get list of predefined functions in a handy place
5312 echo " "
5313 case "$libc" in
5314 '') libc=unknown
5315         case "$libs" in
5316         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5317         esac
5318         ;;
5319 esac
5320 case "$libs" in
5321 '') ;;
5322 *)  for thislib in $libs; do
5323         case "$thislib" in
5324         -lc|-lc_s)
5325                 : Handle C library specially below.
5326                 ;;
5327         -l*)
5328                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5329                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5330                         :
5331                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5332                         :
5333                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5334                         :
5335                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5340                         :
5341                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5342                         :
5343                 else
5344                         try=''
5345                 fi
5346                 libnames="$libnames $try"
5347                 ;;
5348         *) libnames="$libnames $thislib" ;;
5349         esac
5350         done
5351         ;;
5352 esac
5353 xxx=normal
5354 case "$libc" in
5355 unknown)
5356         set /lib/libc.$so
5357         for xxx in $libpth; do
5358                 $test -r $1 || set $xxx/libc.$so
5359                 : The messy sed command sorts on library version numbers.
5360                 $test -r $1 || \
5361                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5362                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5363                                 h
5364                                 s/[0-9][0-9]*/0000&/g
5365                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5366                                 G
5367                                 s/\n/ /' | \
5368                          $sort | $sed -e 's/^.* //'`
5369                 eval set \$$#
5370         done
5371         $test -r $1 || set /usr/ccs/lib/libc.$so
5372         $test -r $1 || set /lib/libsys_s$_a
5373         ;;
5374 *)
5375         set blurfl
5376         ;;
5377 esac
5378 if $test -r "$1"; then
5379         echo "Your (shared) C library seems to be in $1."
5380         libc="$1"
5381 elif $test -r /lib/libc && $test -r /lib/clib; then
5382         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5383         xxx=apollo
5384         libc='/lib/clib /lib/libc'
5385         if $test -r /lib/syslib; then
5386                 echo "(Your math library is in /lib/syslib.)"
5387                 libc="$libc /lib/syslib"
5388         fi
5389 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5390         echo "Your C library seems to be in $libc, as you said before."
5391 elif $test -r $incpath/usr/lib/libc$_a; then
5392         libc=$incpath/usr/lib/libc$_a;
5393         echo "Your C library seems to be in $libc.  That's fine."
5394 elif $test -r /lib/libc$_a; then
5395         libc=/lib/libc$_a;
5396         echo "Your C library seems to be in $libc.  You're normal."
5397 else
5398         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5399                 :
5400         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5401                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5402         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5403                 :
5404         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405                 :
5406         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5407                 :
5408         else
5409                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5410         fi
5411         if $test -r "$tans"; then
5412                 echo "Your C library seems to be in $tans, of all places."
5413                 libc=$tans
5414         else
5415                 libc='blurfl'
5416         fi
5417 fi
5418 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5419         dflt="$libc"
5420         cat <<EOM
5421
5422 If the guess above is wrong (which it might be if you're using a strange
5423 compiler, or your machine supports multiple models), you can override it here.
5424
5425 EOM
5426 else
5427         dflt=''
5428         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5429         cat >&4 <<EOM
5430 I can't seem to find your C library.  I've looked in the following places:
5431
5432 EOM
5433         $sed 's/^/      /' libpath
5434         cat <<EOM
5435
5436 None of these seems to contain your C library. I need to get its name...
5437
5438 EOM
5439 fi
5440 fn=f
5441 rp='Where is your C library?'
5442 . ./getfile
5443 libc="$ans"
5444
5445 echo " "
5446 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5447 set X `cat libnames`
5448 shift
5449 xxx=files
5450 case $# in 1) xxx=file; esac
5451 echo "Extracting names from the following $xxx for later perusal:" >&4
5452 echo " "
5453 $sed 's/^/      /' libnames >&4
5454 echo " "
5455 $echo $n "This may take a while...$c" >&4
5456
5457 for file in $*; do
5458         case $file in
5459         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5460         *) $nm $nm_opt $file 2>/dev/null;;
5461         esac
5462 done >libc.tmp
5463
5464 $echo $n ".$c"
5465 $grep fprintf libc.tmp > libc.ptf
5466 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5467 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5468 xxx='[ADTSIW]'
5469 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5470         eval $xscan;\
5471         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5472                 eval $xrun
5473 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5474         eval $xscan;\
5475         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5476                 eval $xrun
5477 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5478         eval $xscan;\
5479         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480                 eval $xrun
5481 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5482         eval $xscan;\
5483         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484                 eval $xrun
5485 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5486         eval $xscan;\
5487         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488                 eval $xrun
5489 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5490         eval $xscan;\
5491         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492                 eval $xrun
5493 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5494                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5495         eval $xscan;\
5496         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5497                 eval $xrun
5498 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5499         eval $xscan;\
5500         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501                 eval $xrun
5502 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5503         eval $xscan;\
5504         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505                 eval $xrun
5506 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5507         eval $xscan;\
5508         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509                 eval $xrun
5510 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5511         eval $xscan;\
5512         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513                 eval $xrun
5514 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5515         eval $xscan;\
5516         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517                 eval $xrun
5518 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5519         eval $xscan;\
5520         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521                 eval $xrun
5522 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5523         eval $xscan;\
5524         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525                 eval $xrun
5526 else
5527         $nm -p $* 2>/dev/null >libc.tmp
5528         $grep fprintf libc.tmp > libc.ptf
5529         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5530                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5531         then
5532                 nm_opt='-p'
5533                 eval $xrun
5534         else
5535                 echo " "
5536                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5537                 com=''
5538                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5539                         for thisname in $libnames $libc; do
5540                                 $ar t $thisname >>libc.tmp
5541                         done
5542                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5543                         echo "Ok." >&4
5544                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5545                         # Repeat libc to extract forwarders to DLL entries too
5546                         for thisname in $libnames $libc; do
5547                                 $ar tv $thisname >>libc.tmp
5548                                 # Revision 50 of EMX has bug in $ar.
5549                                 # it will not extract forwarders to DLL entries
5550                                 # Use emximp which will extract exactly them.
5551                                 emximp -o tmp.imp $thisname \
5552                                     2>/dev/null && \
5553                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5554                                     < tmp.imp >>libc.tmp
5555                                 $rm tmp.imp
5556                         done
5557                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5558                         echo "Ok." >&4
5559                 else
5560                         echo "$ar didn't seem to work right." >&4
5561                         echo "Maybe this is a Cray...trying bld instead..." >&4
5562                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5563                         then
5564                                 for thisname in $libnames; do
5565                                         bld t $libnames | \
5566                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5567                                         $ar t $thisname >>libc.tmp
5568                                 done
5569                                 echo "Ok." >&4
5570                         else
5571                                 echo "That didn't work either.  Giving up." >&4
5572                                 exit 1
5573                         fi
5574                 fi
5575         fi
5576 fi
5577 nm_extract="$com"
5578 if $test -f /lib/syscalls.exp; then
5579         echo " "
5580         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5581         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5582 fi
5583 ;;
5584 esac
5585 $rm -f libnames libpath
5586
5587 : is a C symbol defined?
5588 csym='tlook=$1;
5589 case "$3" in
5590 -v) tf=libc.tmp; tc=""; tdc="";;
5591 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5592 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5593 esac;
5594 tx=yes;
5595 case "$reuseval-$4" in
5596 true-) ;;
5597 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5598 esac;
5599 case "$tx" in
5600 yes)
5601         case "$runnm" in
5602         true)
5603                 if $contains $tlook $tf >/dev/null 2>&1;
5604                 then tval=true;
5605                 else tval=false;
5606                 fi;;
5607         *)
5608                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5609                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5610                 then tval=true;
5611                 else tval=false;
5612                 fi;
5613                 $rm -f t t.c;;
5614         esac;;
5615 *)
5616         case "$tval" in
5617         $define) tval=true;;
5618         *) tval=false;;
5619         esac;;
5620 esac;
5621 eval "$2=$tval"'
5622
5623 : define an is-in-libc? function
5624 inlibc='echo " "; td=$define; tu=$undef;
5625 sym=$1; var=$2; eval "was=\$$2";
5626 tx=yes;
5627 case "$reuseval$was" in
5628 true) ;;
5629 true*) tx=no;;
5630 esac;
5631 case "$tx" in
5632 yes)
5633         set $sym tres -f;
5634         eval $csym;
5635         case "$tres" in
5636         true)
5637                 echo "$sym() found." >&4;
5638                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5639         *)
5640                 echo "$sym() NOT found." >&4;
5641                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5642         esac;;
5643 *)
5644         case "$was" in
5645         $define) echo "$sym() found." >&4;;
5646         *) echo "$sym() NOT found." >&4;;
5647         esac;;
5648 esac'
5649
5650 : see if sqrtl exists
5651 set sqrtl d_sqrtl
5652 eval $inlibc
5653
5654 case "$ccflags" in
5655 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5656 esac
5657
5658 case "$uselongdouble" in
5659 $define|true|[yY]*)     dflt='y';;
5660 *) dflt='n';;
5661 esac
5662 cat <<EOM
5663
5664 Perl can be built to take advantage of long doubles which
5665 (if available) may give more accuracy and range for floating point numbers.
5666
5667 If this doesn't make any sense to you, just accept the default '$dflt'.
5668 EOM
5669 rp='Try to use long doubles if available?'
5670 . ./myread
5671 case "$ans" in
5672 y|Y)    val="$define"   ;;
5673 *)      val="$undef"    ;;
5674 esac
5675 set uselongdouble
5676 eval $setvar
5677
5678 case "$uselongdouble" in
5679 true|[yY]*) uselongdouble="$define" ;;
5680 esac
5681
5682 case "$uselongdouble" in
5683 $define)
5684 : Look for a hint-file generated 'call-back-unit'.  If the
5685 : user has specified that long doubles should be used,
5686 : we may need to set or change some other defaults.
5687         if $test -f uselongdouble.cbu; then
5688                 echo "Your platform has some specific hints for long doubles, using them..."
5689                 . ./uselongdouble.cbu
5690         else
5691                 $cat <<EOM
5692 (Your platform doesn't have any specific hints for long doubles.)
5693 EOM
5694         fi
5695         ;;
5696 esac
5697
5698 case "$uselongdouble:$d_sqrtl" in
5699 $define:$undef)
5700                 $cat <<EOM >&4
5701
5702 *** You requested the use of long doubles but you do not seem to have
5703 *** the mathematic functions for long doubles.  I'm disabling the use
5704 *** of long doubles.
5705
5706 EOM
5707         uselongdouble=$undef
5708         ;;
5709 esac
5710
5711 : check for length of double
5712 echo " "
5713 case "$doublesize" in
5714 '')
5715         echo "Checking to see how big your double precision numbers are..." >&4
5716         $cat >try.c <<'EOCP'
5717 #include <stdio.h>
5718 int main()
5719 {
5720     printf("%d\n", (int)sizeof(double));
5721     exit(0);
5722 }
5723 EOCP
5724         set try
5725         if eval $compile_ok; then
5726                 doublesize=`$run ./try`
5727                 echo "Your double is $doublesize bytes long."
5728         else
5729                 dflt='8'
5730                 echo "(I can't seem to compile the test program.  Guessing...)"
5731                 rp="What is the size of a double precision number (in bytes)?"
5732                 . ./myread
5733                 doublesize="$ans"
5734         fi
5735         ;;
5736 esac
5737 $rm -f try.c try
5738
5739 : check for long doubles
5740 echo " "
5741 echo "Checking to see if you have long double..." >&4
5742 echo 'int main() { long double x = 7.0; }' > try.c
5743 set try
5744 if eval $compile; then
5745         val="$define"
5746         echo "You have long double."
5747 else
5748         val="$undef"
5749         echo "You do not have long double."
5750 fi
5751 $rm try.*
5752 set d_longdbl
5753 eval $setvar
5754
5755 : check for length of long double
5756 case "${d_longdbl}${longdblsize}" in
5757 $define)
5758         echo " "
5759         echo "Checking to see how big your long doubles are..." >&4
5760         $cat >try.c <<'EOCP'
5761 #include <stdio.h>
5762 int main()
5763 {
5764         printf("%d\n", sizeof(long double));
5765 }
5766 EOCP
5767         set try
5768         set try
5769         if eval $compile; then
5770                 longdblsize=`$run ./try`
5771                 echo "Your long doubles are $longdblsize bytes long."
5772         else
5773                 dflt='8'
5774                 echo " "
5775                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5776                 rp="What is the size of a long double (in bytes)?"
5777                 . ./myread
5778                 longdblsize="$ans"
5779         fi
5780         if $test "X$doublesize" = "X$longdblsize"; then
5781                 echo "(That isn't any different from an ordinary double.)"
5782         fi      
5783         ;;
5784 esac
5785 $rm -f try.* try
5786
5787 case "$useperlio" in
5788 $define|true|[yY]*|'')  dflt='y';;
5789 *) dflt='n';;
5790 esac
5791 cat <<EOM
5792
5793 Previous version of $package used the standard IO mechanisms as
5794 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5795 alternate IO mechanisms via the PerlIO abstraction layer, but the
5796 stdio mechanism is still available if needed.  The abstraction layer
5797 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5798 Using PerlIO with sfio may cause problems with some extension modules.
5799
5800 If this doesn't make any sense to you, just accept the default '$dflt'.
5801 EOM
5802 rp='Use the PerlIO abstraction layer?'
5803 . ./myread
5804 case "$ans" in
5805 y|Y) 
5806         val="$define"
5807         ;;
5808 *)      
5809         echo "Ok, doing things the stdio way."
5810         val="$undef"
5811         ;;
5812 esac
5813 set useperlio
5814 eval $setvar 
5815
5816 case "$usesocks" in
5817 $define|true|[yY]*)
5818         case "$useperlio" in
5819         $define|true|[yY]*) ;;
5820         *)      cat >&4 <<EOM
5821
5822 You are using the SOCKS proxy protocol library which means that you
5823 should also use the PerlIO layer.  You may be headed for trouble.
5824
5825 EOM
5826                 ;;
5827         esac
5828         ;;
5829 esac
5830
5831         
5832 : determine the architecture name
5833 echo " "
5834 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5835         tarch=`arch`"-$osname"
5836 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5837         if uname -m > tmparch 2>&1 ; then
5838                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5839                         -e 's/$/'"-$osname/" tmparch`
5840         else
5841                 tarch="$osname"
5842         fi
5843         $rm -f tmparch
5844 else
5845         tarch="$osname"
5846 fi
5847 case "$myarchname" in
5848 ''|"$tarch") ;;
5849 *)
5850         echo "(Your architecture name used to be $myarchname.)"
5851         archname=''
5852         ;;
5853 esac
5854 case "$targetarch" in
5855 '') ;;
5856 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5857 esac
5858 myarchname="$tarch"
5859 case "$archname" in
5860 '') dflt="$tarch";;
5861 *) dflt="$archname";;
5862 esac
5863 rp='What is your architecture name'
5864 . ./myread
5865 archname="$ans"
5866 case "$usethreads" in
5867 $define)
5868         echo "Threads selected." >&4
5869         case "$archname" in
5870         *-thread*) echo "...and architecture name already has -thread." >&4
5871                 ;;
5872         *)      archname="$archname-thread"
5873                 echo "...setting architecture name to $archname." >&4
5874                 ;;
5875         esac
5876         ;;
5877 esac
5878 case "$usemultiplicity" in
5879 $define)
5880         echo "Multiplicity selected." >&4
5881         case "$archname" in
5882         *-multi*) echo "...and architecture name already has -multi." >&4
5883                 ;;
5884         *)      archname="$archname-multi"
5885                 echo "...setting architecture name to $archname." >&4
5886                 ;;
5887         esac
5888         ;;
5889 esac
5890 case "$use64bitint$use64bitall" in
5891 *"$define"*)
5892         case "$archname64" in
5893         '')
5894                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5895                 ;;
5896         *)
5897                 case "$use64bitint" in
5898                 "$define") echo "64 bit integers selected." >&4 ;;
5899                 esac
5900                 case "$use64bitall" in
5901                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5902                 esac
5903                 case "$archname" in
5904                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5905                         ;;
5906                 *)      archname="$archname-$archname64"
5907                         echo "...setting architecture name to $archname." >&4
5908                         ;;
5909                 esac
5910                 ;;
5911         esac
5912 esac
5913 case "$uselongdouble" in
5914 $define)
5915         echo "Long doubles selected." >&4
5916         case "$longdblsize" in
5917         $doublesize)
5918                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5919                 ;;
5920         *)
5921                 case "$archname" in
5922                 *-ld*) echo "...and architecture name already has -ld." >&4
5923                         ;;
5924                 *)      archname="$archname-ld"
5925                         echo "...setting architecture name to $archname." >&4
5926                         ;;
5927                 esac
5928                 ;;
5929         esac
5930         ;;
5931 esac
5932 case "$useperlio" in
5933 $define)
5934         echo "Perlio selected." >&4
5935         ;;
5936 *)
5937         echo "Perlio not selected, using stdio." >&4
5938         case "$archname" in
5939         *-stdio*) echo "...and architecture name already has -stdio." >&4
5940                 ;;
5941         *)      archname="$archname-stdio"
5942                 echo "...setting architecture name to $archname." >&4
5943                 ;;
5944         esac
5945         ;;
5946 esac
5947
5948 : determine root of directory hierarchy where package will be installed.
5949 case "$prefix" in
5950 '')
5951         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5952         ;;
5953 *)
5954         dflt="$prefix"
5955         ;;
5956 esac
5957 $cat <<EOM
5958
5959 By default, $package will be installed in $dflt/bin, manual pages
5960 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5961 installation directories. Typically this is something like /usr/local.
5962 If you wish to have binaries under /usr/bin but other parts of the
5963 installation under /usr/local, that's ok: you will be prompted
5964 separately for each of the installation directories, the prefix being
5965 only used to set the defaults.
5966
5967 EOM
5968 fn=d~
5969 rp='Installation prefix to use?'
5970 . ./getfile
5971 oldprefix=''
5972 case "$prefix" in
5973 '') ;;
5974 *)
5975         case "$ans" in
5976         "$prefix") ;;
5977         *) oldprefix="$prefix";;
5978         esac
5979         ;;
5980 esac
5981 prefix="$ans"
5982 prefixexp="$ansexp"
5983
5984 case "$afsroot" in
5985 '')     afsroot=/afs ;;
5986 *)      afsroot=$afsroot ;;
5987 esac
5988
5989 : is AFS running?
5990 echo " "
5991 case "$afs" in
5992 $define|true)   afs=true ;;
5993 $undef|false)   afs=false ;;
5994 *)      if test -d $afsroot; then
5995                 afs=true
5996         else
5997                 afs=false
5998         fi
5999         ;;
6000 esac
6001 if $afs; then
6002         echo "AFS may be running... I'll be extra cautious then..." >&4
6003 else
6004         echo "AFS does not seem to be running..." >&4
6005 fi
6006
6007 : determine installation prefix for where package is to be installed.
6008 if $afs; then 
6009 $cat <<EOM
6010
6011 Since you are running AFS, I need to distinguish the directory in which
6012 files will reside from the directory in which they are installed (and from
6013 which they are presumably copied to the former directory by occult means).
6014
6015 EOM
6016         case "$installprefix" in
6017         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6018         *) dflt="$installprefix";;
6019         esac
6020 else
6021 $cat <<EOM
6022
6023 In some special cases, particularly when building $package for distribution,
6024 it is convenient to distinguish between the directory in which files should 
6025 be installed from the directory ($prefix) in which they 
6026 will eventually reside.  For most users, these two directories are the same.
6027
6028 EOM
6029         case "$installprefix" in
6030         '') dflt=$prefix ;;
6031         *) dflt=$installprefix;;
6032         esac
6033 fi
6034 fn=d~
6035 rp='What installation prefix should I use for installing files?'
6036 . ./getfile
6037 installprefix="$ans"
6038 installprefixexp="$ansexp"
6039
6040 : set the prefixit variable, to compute a suitable default value
6041 prefixit='case "$3" in
6042 ""|none)
6043         case "$oldprefix" in
6044         "") eval "$1=\"\$$2\"";;
6045         *)
6046                 case "$3" in
6047                 "") eval "$1=";;
6048                 none)
6049                         eval "tp=\"\$$2\"";
6050                         case "$tp" in
6051                         ""|" ") eval "$1=\"\$$2\"";;
6052                         *) eval "$1=";;
6053                         esac;;
6054                 esac;;
6055         esac;;
6056 *)
6057         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6058         case "$tp" in
6059         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6060         /*-$oldprefix/*|\~*-$oldprefix/*)
6061                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6062         *) eval "$1=\"\$$2\"";;
6063         esac;;
6064 esac'
6065
6066 : get the patchlevel
6067 echo " "
6068 echo "Getting the current patchlevel..." >&4
6069 if $test -r $rsrc/patchlevel.h;then
6070         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6071         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6072         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6073         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6076        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6077 else
6078         revision=0
6079         patchlevel=0
6080         subversion=0
6081         api_revision=0
6082         api_version=0
6083         api_subversion=0
6084         perl_patchlevel=0
6085         $echo "(You do not have patchlevel.h.  Eek.)"
6086 fi
6087 if $test -r $rsrc/.patch ; then  
6088         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6089                 perl_patchlevel=`cat $rsrc/.patch`
6090         fi
6091 fi
6092 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6093 version_patchlevel_string="version $patchlevel subversion $subversion"
6094 case "$perl_patchlevel" in
6095 0|'') ;;
6096 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6097 esac
6098
6099 $echo "(You have $package $version_patchlevel_string.)"
6100
6101 case "$osname" in
6102 dos|vms)
6103         : XXX Should be a Configure test for double-dots in filenames.
6104         version=`echo $revision $patchlevel $subversion | \
6105                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6106         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6107                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6108         ;;
6109 *)
6110         version=`echo $revision $patchlevel $subversion | \
6111                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6112         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6113                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6114         ;;
6115 esac
6116 : Special case the 5.005_xx maintenance series, which used 5.005
6117 : without any subversion label as a subdirectory in $sitelib
6118 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6119         api_versionstring='5.005'
6120 fi
6121
6122 : determine installation style
6123 : For now, try to deduce it from prefix unless it is already set.
6124 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6125 case "$installstyle" in
6126 '')     case "$prefix" in
6127                 *perl*) dflt='lib';;
6128                 *) dflt='lib/perl5' ;;
6129         esac
6130         ;;
6131 *)      dflt="$installstyle" ;;
6132 esac
6133 : Probably not worth prompting for this since we prompt for all
6134 : the directories individually, and the prompt would be too long and
6135 : confusing anyway.
6136 installstyle=$dflt
6137
6138 : determine where private library files go
6139 : Usual default is /usr/local/lib/perl5/$version.
6140 : Also allow things like /opt/perl/lib/$version, since 
6141 : /opt/perl/lib/perl5... would be redundant.
6142 : The default "style" setting is made in installstyle.U
6143 case "$installstyle" in
6144 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6145 *)       set dflt privlib lib/$version ;;
6146 esac
6147 eval $prefixit
6148 $cat <<EOM
6149
6150 There are some auxiliary files for $package that need to be put into a
6151 private library directory that is accessible by everyone.
6152
6153 EOM
6154 fn=d~+
6155 rp='Pathname where the private library files will reside?'
6156 . ./getfile
6157 privlib="$ans"
6158 privlibexp="$ansexp"
6159 : Change installation prefix, if necessary.
6160 if $test X"$prefix" != X"$installprefix"; then
6161         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6162 else
6163         installprivlib="$privlibexp"
6164 fi
6165
6166 : set the prefixup variable, to restore leading tilda escape
6167 prefixup='case "$prefixexp" in
6168 "$prefix") ;;
6169 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6170 esac'
6171
6172 : determine where public architecture dependent libraries go
6173 set archlib archlib
6174 eval $prefixit
6175 : privlib default is /usr/local/lib/$package/$version
6176 : archlib default is /usr/local/lib/$package/$version/$archname
6177 : privlib may have an optional trailing /share.
6178 tdflt=`echo $privlib | $sed 's,/share$,,'`
6179 tdflt=$tdflt/$archname
6180 case "$archlib" in
6181 '')     dflt=$tdflt
6182         ;;
6183 *)      dflt="$archlib"
6184     ;;
6185 esac
6186 $cat <<EOM
6187
6188 $spackage contains architecture-dependent library files.  If you are
6189 sharing libraries in a heterogeneous environment, you might store
6190 these files in a separate location.  Otherwise, you can just include
6191 them with the rest of the public library files.
6192
6193 EOM
6194 fn=d+~
6195 rp='Where do you want to put the public architecture-dependent libraries?'
6196 . ./getfile
6197 archlib="$ans"
6198 archlibexp="$ansexp"
6199 if $test X"$archlib" = X"$privlib"; then
6200         d_archlib="$undef"
6201 else
6202         d_archlib="$define"
6203 fi
6204 : Change installation prefix, if necessary.
6205 if $test X"$prefix" != X"$installprefix"; then
6206         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6207 else
6208         installarchlib="$archlibexp"
6209 fi
6210
6211
6212 : Binary compatibility with 5.005 is not possible for builds
6213 : with advanced features
6214 case "$usethreads$usemultiplicity" in
6215 *define*)
6216         bincompat5005="$undef"
6217         d_bincompat5005="$undef"
6218         ;;
6219 *)      $cat <<EOM
6220
6221 This version of Perl can be compiled for binary compatibility with 5.005.
6222 If you decide to do so, you will be able to continue using most of the
6223 extensions that were compiled for Perl 5.005.
6224
6225 EOM
6226         case "$bincompat5005$d_bincompat5005" in
6227         *"$undef"*) dflt=n ;;
6228         *) dflt=y ;;
6229         esac
6230         rp='Binary compatibility with Perl 5.005?'
6231         . ./myread
6232         case "$ans" in
6233         y*) val="$define" ;;
6234         *)  val="$undef" ;;
6235         esac
6236         set d_bincompat5005
6237         eval $setvar
6238         case "$d_bincompat5005" in
6239         "$define")
6240                 bincompat5005="$define"
6241                 ;;
6242         *)      bincompat5005="$undef"
6243                 d_bincompat5005="$undef"
6244                 ;;
6245         esac
6246         ;;
6247 esac
6248
6249
6250 : see if setuid scripts can be secure
6251 $cat <<EOM
6252
6253 Some kernels have a bug that prevents setuid #! scripts from being
6254 secure.  Some sites have disabled setuid #! scripts because of this.
6255
6256 First let's decide if your kernel supports secure setuid #! scripts.
6257 (If setuid #! scripts would be secure but have been disabled anyway,
6258 don't say that they are secure if asked.)
6259
6260 EOM
6261
6262 val="$undef"
6263 if $test -d /dev/fd; then
6264         echo "#!$ls" >reflect
6265         chmod +x,u+s reflect
6266         ./reflect >flect 2>&1
6267         if $contains "/dev/fd" flect >/dev/null; then
6268                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269                 val="$define"
6270         else
6271                 $cat <<EOM
6272 If you are not sure if they are secure, I can check but I'll need a
6273 username and password different from the one you are using right now.
6274 If you don't have such a username or don't want me to test, simply
6275 enter 'none'.
6276
6277 EOM
6278                 rp='Other username to test security of setuid scripts with?'
6279                 dflt='none'
6280                 . ./myread
6281                 case "$ans" in
6282                 n|none)
6283                         case "$d_suidsafe" in
6284                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6285                                 dflt=n;;
6286                         "$undef")
6287                                 echo "Well, the $hint value is *not* secure." >&4
6288                                 dflt=n;;
6289                         *)      echo "Well, the $hint value *is* secure." >&4
6290                                 dflt=y;;
6291                         esac
6292                         ;;
6293                 *)
6294                         $rm -f reflect flect
6295                         echo "#!$ls" >reflect
6296                         chmod +x,u+s reflect
6297                         echo >flect
6298                         chmod a+w flect
6299                         echo '"su" will (probably) prompt you for '"$ans's password."
6300                         su $ans -c './reflect >flect'
6301                         if $contains "/dev/fd" flect >/dev/null; then
6302                                 echo "Okay, it looks like setuid scripts are secure." >&4
6303                                 dflt=y
6304                         else
6305                                 echo "I don't think setuid scripts are secure." >&4
6306                                 dflt=n
6307                         fi
6308                         ;;
6309                 esac
6310                 rp='Does your kernel have *secure* setuid scripts?'
6311                 . ./myread
6312                 case "$ans" in
6313                 [yY]*)  val="$define";;
6314                 *)      val="$undef";;
6315                 esac
6316         fi
6317 else
6318         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319         echo "(That's for file descriptors, not floppy disks.)"
6320         val="$undef"
6321 fi
6322 set d_suidsafe
6323 eval $setvar
6324
6325 $rm -f reflect flect
6326
6327 : now see if they want to do setuid emulation
6328 echo " "
6329 val="$undef"
6330 case "$d_suidsafe" in
6331 "$define")
6332         val="$undef"
6333         echo "No need to emulate SUID scripts since they are secure here." >& 4
6334         ;;
6335 *)
6336         $cat <<EOM
6337 Some systems have disabled setuid scripts, especially systems where
6338 setuid scripts cannot be secure.  On systems where setuid scripts have
6339 been disabled, the setuid/setgid bits on scripts are currently
6340 useless.  It is possible for $package to detect those bits and emulate
6341 setuid/setgid in a secure fashion.  This emulation will only work if
6342 setuid scripts have been disabled in your kernel.
6343
6344 EOM
6345         case "$d_dosuid" in
6346         "$define") dflt=y ;;
6347         *) dflt=n ;;
6348         esac
6349         rp="Do you want to do setuid/setgid emulation?"
6350         . ./myread
6351         case "$ans" in
6352         [yY]*)  val="$define";;
6353         *)      val="$undef";;
6354         esac
6355         ;;
6356 esac
6357 set d_dosuid
6358 eval $setvar
6359
6360 : see if this is a malloc.h system
6361 set malloc.h i_malloc
6362 eval $inhdr
6363
6364 : see if stdlib is available
6365 set stdlib.h i_stdlib
6366 eval $inhdr
6367
6368 : determine which malloc to compile in
6369 echo " "
6370 case "$usemymalloc" in
6371 [yY]*|true|$define)     dflt='y' ;;
6372 [nN]*|false|$undef)     dflt='n' ;;
6373 *)      case "$ptrsize" in
6374         4) dflt='y' ;;
6375         *) dflt='n' ;;
6376         esac
6377         ;;
6378 esac
6379 rp="Do you wish to attempt to use the malloc that comes with $package?"
6380 . ./myread
6381 usemymalloc="$ans"
6382 case "$ans" in
6383 y*|true)
6384         usemymalloc='y'
6385         mallocsrc='malloc.c'
6386         mallocobj="malloc$_o"
6387         d_mymalloc="$define"
6388         case "$libs" in
6389         *-lmalloc*)
6390                 : Remove malloc from list of libraries to use
6391                 echo "Removing unneeded -lmalloc from library list" >&4
6392                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6393                 shift
6394                 libs="$*"
6395                 echo "libs = $libs" >&4
6396                 ;;
6397         esac
6398         ;;
6399 *)
6400         usemymalloc='n'
6401         mallocsrc=''
6402         mallocobj=''
6403         d_mymalloc="$undef"
6404         ;;
6405 esac
6406
6407 : compute the return types of malloc and free
6408 echo " "
6409 $cat >malloc.c <<END
6410 #$i_malloc I_MALLOC
6411 #$i_stdlib I_STDLIB
6412 #include <stdio.h>
6413 #include <sys/types.h>
6414 #ifdef I_MALLOC
6415 #include <malloc.h>
6416 #endif
6417 #ifdef I_STDLIB
6418 #include <stdlib.h>
6419 #endif
6420 #ifdef TRY_MALLOC
6421 void *malloc();
6422 #endif
6423 #ifdef TRY_FREE
6424 void free();
6425 #endif
6426 END
6427 case "$malloctype" in
6428 '')
6429         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6430                 malloctype='void *'
6431         else
6432                 malloctype='char *'
6433         fi
6434         ;;
6435 esac
6436 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6437
6438 case "$freetype" in
6439 '')
6440         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6441                 freetype='void'
6442         else
6443                 freetype='int'
6444         fi
6445         ;;
6446 esac
6447 echo "Your system uses $freetype free(), it would seem." >&4
6448 $rm -f malloc.[co]
6449 $cat <<EOM
6450
6451 After $package is installed, you may wish to install various
6452 add-on modules and utilities.  Typically, these add-ons will
6453 be installed under $prefix with the rest
6454 of this package.  However, you may wish to install such add-ons
6455 elsewhere under a different prefix.
6456
6457 If you do not wish to put everything under a single prefix, that's
6458 ok.  You will be prompted for the individual locations; this siteprefix
6459 is only used to suggest the defaults.
6460
6461 The default should be fine for most people.
6462
6463 EOM
6464 fn=d~+
6465 rp='Installation prefix to use for add-on modules and utilities?'
6466 : XXX Here might be another good place for an installstyle setting.
6467 case "$siteprefix" in
6468 '') dflt=$prefix ;;
6469 *)  dflt=$siteprefix ;;
6470 esac
6471 . ./getfile
6472 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6473 oldsiteprefix=''
6474 case "$siteprefix" in
6475 '') ;;
6476 *)      case "$ans" in
6477         "$prefix") ;;
6478         *) oldsiteprefix="$prefix";;
6479         esac
6480         ;;
6481 esac
6482 siteprefix="$ans"
6483 siteprefixexp="$ansexp"
6484
6485 : determine where site specific libraries go.
6486 : Usual default is /usr/local/lib/perl5/site_perl/$version
6487 : The default "style" setting is made in installstyle.U
6488 : XXX No longer works with Prefixit stuff.
6489 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6490 case "$sitelib" in
6491 '') case "$installstyle" in
6492         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6493         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6494         esac
6495         ;;
6496 *)      dflt="$sitelib"
6497         ;;
6498 esac
6499 $cat <<EOM
6500
6501 The installation process will create a directory for
6502 site-specific extensions and modules.  Most users find it convenient
6503 to place all site-specific files in this directory rather than in the
6504 main distribution directory.
6505
6506 EOM
6507 fn=d~+
6508 rp='Pathname for the site-specific library files?'
6509 . ./getfile
6510 sitelib="$ans"
6511 sitelibexp="$ansexp"
6512 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6513 : Change installation prefix, if necessary.
6514 if $test X"$prefix" != X"$installprefix"; then
6515         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6516 else
6517         installsitelib="$sitelibexp"
6518 fi
6519
6520 : determine where site specific architecture-dependent libraries go.
6521 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6522 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6523 : sitelib may have an optional trailing /share.
6524 case "$sitearch" in
6525 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6526         dflt="$dflt/$archname"
6527         ;;
6528 *)      dflt="$sitearch"
6529         ;;
6530 esac
6531 set sitearch sitearch none
6532 eval $prefixit
6533 $cat <<EOM
6534
6535 The installation process will also create a directory for
6536 architecture-dependent site-specific extensions and modules.
6537
6538 EOM
6539 fn=d~+
6540 rp='Pathname for the site-specific architecture-dependent library files?'
6541 . ./getfile
6542 sitearch="$ans"
6543 sitearchexp="$ansexp"
6544 : Change installation prefix, if necessary.
6545 if $test X"$prefix" != X"$installprefix"; then
6546         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6547 else
6548         installsitearch="$sitearchexp"
6549 fi
6550
6551 $cat <<EOM
6552
6553 The installation process will also create a directory for
6554 vendor-supplied add-ons.  Vendors who supply perl with their system
6555 may find it convenient to place all vendor-supplied files in this
6556 directory rather than in the main distribution directory.  This will
6557 ease upgrades between binary-compatible maintenance versions of perl.
6558
6559 Of course you may also use these directories in whatever way you see
6560 fit.  For example, you might use them to access modules shared over a
6561 company-wide network.
6562
6563 The default answer should be fine for most people.
6564 This causes further questions about vendor add-ons to be skipped
6565 and no vendor-specific directories will be configured for perl.
6566
6567 EOM
6568 rp='Do you want to configure vendor-specific add-on directories?'
6569 case "$usevendorprefix" in
6570 define|true|[yY]*) dflt=y ;;
6571 *)      : User may have set vendorprefix directly on Configure command line.
6572         case "$vendorprefix" in
6573         ''|' ') dflt=n ;;
6574         *)      dflt=y ;;
6575         esac
6576         ;;
6577 esac
6578 . ./myread
6579 case "$ans" in
6580 [yY]*)  fn=d~+
6581         rp='Installation prefix to use for vendor-supplied add-ons?'
6582         case "$vendorprefix" in
6583         '') dflt='' ;;
6584         *)  dflt=$vendorprefix ;;
6585         esac
6586         . ./getfile
6587         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6588         oldvendorprefix=''
6589         case "$vendorprefix" in
6590         '') ;;
6591         *)      case "$ans" in
6592                 "$prefix") ;;
6593                 *) oldvendorprefix="$prefix";;
6594                 esac
6595                 ;;
6596         esac
6597         usevendorprefix="$define"
6598         vendorprefix="$ans"
6599         vendorprefixexp="$ansexp"
6600         ;;
6601 *)      usevendorprefix="$undef"
6602         vendorprefix=''
6603         vendorprefixexp=''
6604         ;;
6605 esac
6606
6607 case "$vendorprefix" in
6608 '')     d_vendorlib="$undef"
6609         vendorlib=''
6610         vendorlibexp=''
6611         ;;
6612 *)      d_vendorlib="$define"
6613         : determine where vendor-supplied modules go.
6614         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6615         case "$vendorlib" in
6616         '')
6617                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6618                 case "$installstyle" in
6619                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6620                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6621                 esac
6622                 ;;
6623         *)      dflt="$vendorlib"
6624                 ;;
6625         esac
6626         fn=d~+
6627         rp='Pathname for the vendor-supplied library files?'
6628         . ./getfile
6629         vendorlib="$ans"
6630         vendorlibexp="$ansexp"
6631         ;;
6632 esac
6633 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6634 : Change installation prefix, if necessary.
6635 if $test X"$prefix" != X"$installprefix"; then
6636         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6637 else
6638         installvendorlib="$vendorlibexp"
6639 fi
6640
6641 case "$vendorprefix" in
6642 '')     d_vendorarch="$undef"
6643         vendorarch=''
6644         vendorarchexp=''
6645         ;;
6646 *)      d_vendorarch="$define"
6647         : determine where vendor-supplied architecture-dependent libraries go.
6648         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6649         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6650         : vendorlib may have an optional trailing /share.
6651         case "$vendorarch" in
6652         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6653                 dflt="$dflt/$archname"
6654                 ;;
6655         *)      dflt="$vendorarch" ;;
6656         esac
6657         fn=d~+
6658         rp='Pathname for vendor-supplied architecture-dependent files?'
6659         . ./getfile
6660         vendorarch="$ans"
6661         vendorarchexp="$ansexp"
6662         ;;
6663 esac
6664 : Change installation prefix, if necessary.
6665 if $test X"$prefix" != X"$installprefix"; then
6666         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6667 else
6668         installvendorarch="$vendorarchexp"
6669 fi
6670
6671 : Final catch-all directories to search
6672 $cat <<EOM
6673
6674 Lastly, you can have perl look in other directories for extensions and
6675 modules in addition to those already specified.
6676 These directories will be searched after 
6677         $sitearch 
6678         $sitelib 
6679 EOM
6680 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6681 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6682 echo ' '
6683 case "$otherlibdirs" in
6684 ''|' ') dflt='none' ;;
6685 *)      dflt="$otherlibdirs" ;;
6686 esac
6687 $cat <<EOM
6688 Enter a colon-separated set of extra paths to include in perl's @INC
6689 search path, or enter 'none' for no extra paths.
6690
6691 EOM
6692
6693 rp='Colon-separated list of additional directories for perl to search?'
6694 . ./myread
6695 case "$ans" in
6696 ' '|''|none)    otherlibdirs=' ' ;;     
6697 *)      otherlibdirs="$ans" ;;
6698 esac
6699 case "$otherlibdirs" in
6700 ' ') val=$undef ;;
6701 *)      val=$define ;;
6702 esac
6703 set d_perl_otherlibdirs
6704 eval $setvar
6705
6706 : Cruising for prototypes
6707 echo " "
6708 echo "Checking out function prototypes..." >&4
6709 $cat >prototype.c <<'EOCP'
6710 int main(int argc, char *argv[]) {
6711         exit(0);}
6712 EOCP
6713 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6714         echo "Your C compiler appears to support function prototypes."
6715         val="$define"
6716 else
6717         echo "Your C compiler doesn't seem to understand function prototypes."
6718         val="$undef"
6719 fi
6720 set prototype
6721 eval $setvar
6722 $rm -f prototype*
6723
6724 case "$prototype" in
6725 "$define") ;;
6726 *)      ansi2knr='ansi2knr'
6727         echo " "
6728         cat <<EOM >&4
6729
6730 $me:  FATAL ERROR:
6731 This version of $package can only be compiled by a compiler that 
6732 understands function prototypes.  Unfortunately, your C compiler 
6733         $cc $ccflags
6734 doesn't seem to understand them.  Sorry about that.
6735
6736 If GNU cc is available for your system, perhaps you could try that instead.  
6737
6738 Eventually, we hope to support building Perl with pre-ANSI compilers.
6739 If you would like to help in that effort, please contact <perlbug@perl.org>.
6740
6741 Aborting Configure now.
6742 EOM
6743         exit 2
6744         ;;
6745 esac
6746
6747 : determine where public executables go
6748 echo " "
6749 set dflt bin bin
6750 eval $prefixit
6751 fn=d~
6752 rp='Pathname where the public executables will reside?'
6753 . ./getfile
6754 if $test "X$ansexp" != "X$binexp"; then
6755         installbin=''
6756 fi
6757 bin="$ans"
6758 binexp="$ansexp"
6759 : Change installation prefix, if necessary.
6760 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6761 if $test X"$prefix" != X"$installprefix"; then
6762         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6763 else
6764         installbin="$binexp"
6765 fi
6766
6767 : Find perl5.005 or later.
6768 echo "Looking for a previously installed perl5.005 or later... "
6769 case "$perl5" in
6770 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6771                 : Check if this perl is recent and can load a simple module
6772                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6773                         perl5=$tdir/perl
6774                         break;
6775                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6776                         perl5=$tdir/perl5
6777                         break;
6778                 fi
6779         done
6780         ;;
6781 *)      perl5="$perl5"
6782         ;;
6783 esac
6784 case "$perl5" in
6785 '')     echo "None found.  That's ok.";;
6786 *)      echo "Using $perl5." ;;
6787 esac
6788
6789 : Determine list of previous versions to include in @INC
6790 $cat > getverlist <<EOPL
6791 #!$perl5 -w
6792 use File::Basename;
6793 \$api_versionstring = "$api_versionstring";
6794 \$version = "$version";
6795 \$stem = "$sitelib_stem";
6796 \$archname = "$archname";
6797 EOPL
6798         $cat >> getverlist <<'EOPL'
6799 # Can't have leading @ because metaconfig interprets it as a command!
6800 ;@inc_version_list=();
6801 # XXX Redo to do opendir/readdir? 
6802 if (-d $stem) {
6803     chdir($stem);
6804     ;@candidates = glob("5.*");
6805 }
6806 else {
6807     ;@candidates = ();
6808 }
6809
6810 # XXX ToDo:  These comparisons must be reworked when two-digit
6811 # subversions come along, so that 5.7.10 compares as greater than
6812 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6813 # widespread that we can use the built-in version vectors rather
6814 # than reinventing them here.  For 5.6.0, however, we must
6815 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6816 foreach $d (@candidates) {
6817     if ($d lt $version) {
6818         if ($d ge $api_versionstring) {
6819             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6820         }
6821         elsif ($d ge "5.005") {
6822             unshift(@inc_version_list, grep { -d } $d);
6823         }
6824     }
6825     else {
6826         # Skip newer version.  I.e. don't look in
6827         # 5.7.0 if we're installing 5.6.1.
6828     }
6829 }
6830
6831 if (@inc_version_list) {
6832     print join(' ', @inc_version_list);
6833 }
6834 else {
6835     # Blank space to preserve value for next Configure run.
6836     print " ";
6837 }
6838 EOPL
6839 chmod +x getverlist
6840 case "$inc_version_list" in
6841 '')     if test -x "$perl5$exe_ext"; then
6842                 dflt=`$perl5 getverlist`
6843         else
6844                 dflt='none'
6845         fi
6846         ;;
6847 $undef) dflt='none' ;;
6848 *)  eval dflt=\"$inc_version_list\" ;;
6849 esac
6850 case "$dflt" in
6851 ''|' ') dflt=none ;;
6852 esac
6853 case "$dflt" in
6854 5.005) case "$bincompat5005" in
6855        $define|true|[yY]*) ;;
6856        *) dflt=none ;;
6857        esac
6858        ;;
6859 esac
6860 $cat <<'EOM'
6861
6862 In order to ease the process of upgrading, this version of perl 
6863 can be configured to use modules built and installed with earlier 
6864 versions of perl that were installed under $prefix.  Specify here
6865 the list of earlier versions that this version of perl should check.
6866 If Configure detected no earlier versions of perl installed under
6867 $prefix, then the list will be empty.  Answer 'none' to tell perl
6868 to not search earlier versions.
6869
6870 The default should almost always be sensible, so if you're not sure,
6871 just accept the default.
6872 EOM
6873
6874 rp='List of earlier versions to include in @INC?'
6875 . ./myread
6876 case "$ans" in
6877 [Nn]one|''|' ') inc_version_list=' ' ;;
6878 *) inc_version_list="$ans" ;;
6879 esac
6880 case "$inc_version_list" in
6881 ''|' ') 
6882         inc_version_list_init='0';;
6883 *)      inc_version_list_init=`echo $inc_version_list |
6884                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6885         ;;
6886 esac
6887 $rm -f getverlist
6888
6889 : determine whether to install perl also as /usr/bin/perl
6890
6891 echo " "
6892 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6893         $cat <<EOM
6894 Many scripts expect perl to be installed as /usr/bin/perl.
6895 I can install the perl you are about to compile also as /usr/bin/perl
6896 (in addition to $installbin/perl).
6897 EOM
6898         case "$installusrbinperl" in
6899         "$undef"|[nN]*) dflt='n';;
6900         *)              dflt='y';;
6901         esac
6902         rp="Do you want to install perl as /usr/bin/perl?"
6903         . ./myread
6904         case "$ans" in
6905         [yY]*)  val="$define";;
6906         *)      val="$undef" ;;
6907         esac
6908 else
6909         val="$undef"
6910 fi
6911 set installusrbinperl
6912 eval $setvar
6913
6914 : see if dld is available
6915 set dld.h i_dld
6916 eval $inhdr
6917
6918 : see if dlopen exists
6919 xxx_runnm="$runnm"
6920 runnm=false
6921 set dlopen d_dlopen
6922 eval $inlibc
6923 runnm="$xxx_runnm"
6924
6925 : determine which dynamic loading, if any, to compile in
6926 echo " "
6927 dldir="ext/DynaLoader"
6928 case "$usedl" in
6929 $define|y|true)
6930         dflt='y'
6931         usedl="$define"
6932         ;;
6933 $undef|n|false)
6934         dflt='n'
6935         usedl="$undef"
6936         ;;
6937 *) 
6938         dflt='n'
6939         case "$d_dlopen" in
6940             $define) dflt='y' ;;
6941         esac
6942         case "$i_dld" in
6943             $define) dflt='y' ;;
6944         esac
6945         : Does a dl_xxx.xs file exist for this operating system
6946         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6947         ;;
6948 esac
6949 rp="Do you wish to use dynamic loading?"
6950 . ./myread
6951 usedl="$ans"
6952 case "$ans" in
6953 y*) usedl="$define"
6954         case "$dlsrc" in
6955         '')
6956                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6957                         dflt="$dldir/dl_${osname}.xs"
6958                 elif $test "$d_dlopen" = "$define" ; then
6959                         dflt="$dldir/dl_dlopen.xs"
6960                 elif $test "$i_dld" = "$define" ; then
6961                         dflt="$dldir/dl_dld.xs"
6962                 else
6963                         dflt=''
6964                 fi
6965                 ;;
6966         *)      dflt="$dldir/$dlsrc"
6967                 ;;
6968         esac
6969     echo "The following dynamic loading files are available:"
6970         : Can not go over to $dldir because getfile has path hard-coded in.
6971         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6972         rp="Source file to use for dynamic loading"
6973         fn="fne"
6974         gfpth="$src"
6975         . ./getfile
6976         usedl="$define"
6977         : emulate basename
6978         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6979
6980         $cat << EOM
6981
6982 Some systems may require passing special flags to $cc -c to
6983 compile modules that will be used to create a shared library.
6984 To use no flags, say "none".
6985
6986 EOM
6987     case "$cccdlflags" in
6988     '') case "$gccversion" in
6989                 '') case "$osname" in
6990                         hpux)   dflt='+z' ;;
6991                         next)   dflt='none' ;;
6992                         irix*)  dflt='-KPIC' ;;
6993                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6994                         sunos)  dflt='-pic' ;;
6995                         *)      dflt='none' ;;
6996                     esac
6997                         ;;
6998                 *)  case "$osname" in
6999                         darwin) dflt='none' ;;
7000                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7001                         *)      dflt='-fpic' ;;
7002                     esac ;;
7003             esac ;;
7004         ' ') dflt='none' ;;
7005     *)  dflt="$cccdlflags" ;;
7006     esac
7007     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7008     . ./myread
7009     case "$ans" in
7010     none) cccdlflags=' ' ;;
7011     *) cccdlflags="$ans" ;;
7012     esac
7013
7014     cat << EOM
7015
7016 Some systems use ld to create libraries that can be dynamically loaded,
7017 while other systems (such as those using ELF) use $cc.
7018
7019 EOM
7020         case "$ld" in
7021         '')     $cat >try.c <<'EOM'
7022 /* Test for whether ELF binaries are produced */
7023 #include <fcntl.h>
7024 #include <stdlib.h>
7025 int main() {
7026         char b[4];
7027         int i = open("a.out",O_RDONLY);
7028         if(i == -1) 
7029                 exit(1); /* fail */
7030         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7031                 exit(0); /* succeed (yes, it's ELF) */
7032         else
7033                 exit(1); /* fail */
7034 }
7035 EOM
7036                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7037                         cat <<EOM
7038 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7039 EOM
7040                         dflt="$cc"
7041                 else
7042                         echo "I'll use ld to build dynamic libraries."
7043                         dflt='ld'
7044                 fi
7045                 rm -f try.c a.out
7046                 ;;
7047         *)      dflt="$ld"
7048                 ;;
7049         esac
7050
7051     rp="What command should be used to create dynamic libraries?"
7052     . ./myread
7053         ld="$ans"
7054
7055     cat << EOM
7056
7057 Some systems may require passing special flags to $ld to create a
7058 library that can be dynamically loaded.  If your ld flags include
7059 -L/other/path options to locate libraries outside your loader's normal
7060 search path, you may need to specify those -L options here as well.  To
7061 use no flags, say "none".
7062
7063 EOM
7064     case "$lddlflags" in
7065     '') case "$osname" in
7066                         beos) dflt='-nostart' ;;
7067                         hpux) dflt='-b';
7068                               case "$gccversion" in
7069                               '') dflt="$dflt +vnocompatwarnings" ;;
7070                               esac
7071                               ;;        
7072                         linux|irix*)    dflt='-shared' ;;
7073                         next)  dflt='none' ;;
7074                         solaris) dflt='-G' ;;
7075                         sunos) dflt='-assert nodefinitions' ;;
7076                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7077                 *)     dflt='none' ;;
7078                         esac
7079                         ;;
7080     *) dflt="$lddlflags" ;;
7081     esac
7082
7083         : Try to guess additional flags to pick up local libraries.
7084         : Be careful not to append to a plain 'none'
7085         case "$dflt" in
7086         none) dflt='' ;;
7087         esac
7088         for thisflag in $ldflags; do
7089                 case "$thisflag" in
7090                 -L*|-R*)
7091                         case " $dflt " in
7092                         *" $thisflag "*) ;;
7093                         *) dflt="$dflt $thisflag" ;;
7094                         esac
7095                         ;;
7096                 esac
7097         done
7098
7099         case "$dflt" in
7100         ''|' ') dflt='none' ;;
7101         esac
7102
7103     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7104     . ./myread
7105     case "$ans" in
7106     none) lddlflags=' ' ;;
7107     *) lddlflags="$ans" ;;
7108     esac
7109
7110         cat <<EOM
7111
7112 Some systems may require passing special flags to $cc to indicate that
7113 the resulting executable will use dynamic linking.  To use no flags,
7114 say "none".
7115
7116 EOM
7117     case "$ccdlflags" in
7118     '') case "$osname" in
7119                 hpux)   dflt='-Wl,-E' ;;
7120                 linux)  dflt='-rdynamic' ;;
7121                 next)   dflt='none' ;;
7122                 sunos)  dflt='none' ;;
7123                 *)      dflt='none' ;;
7124             esac ;;
7125     ' ')  dflt='none' ;;
7126     *)  dflt="$ccdlflags" ;;
7127     esac
7128     rp="Any special flags to pass to $cc to use dynamic linking?"
7129     . ./myread
7130     case "$ans" in
7131     none) ccdlflags=' ' ;;
7132     *) ccdlflags="$ans" ;;
7133     esac
7134     ;;
7135 *)  usedl="$undef"
7136         ld='ld'
7137     dlsrc='dl_none.xs'
7138     lddlflags=''
7139     ccdlflags=''
7140     ;;
7141 esac
7142
7143 also=''
7144 case "$usedl" in
7145 $undef)
7146         # No dynamic loading being used, so don't bother even to prompt.
7147         useshrplib='false'
7148         ;;
7149 *)      case "$useshrplib" in
7150         '')     case "$osname" in
7151                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7152                         dflt=y
7153                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7154                         ;;
7155                 next*)
7156                         case "$osvers" in
7157                         4*)     dflt=y
7158                                 also='Building a shared libperl is needed for MAB support.'
7159                                 ;;
7160                         *)      dflt=n
7161                                 ;;
7162                         esac
7163                         ;;
7164                 *)      dflt=n
7165                         ;;
7166                 esac
7167                 ;;
7168         $define|true|[Yy]*)
7169                 dflt=y
7170                 ;;
7171         *)      dflt=n
7172                 ;;
7173         esac
7174         $cat << EOM
7175
7176 The perl executable is normally obtained by linking perlmain.c with
7177 libperl${_a}, any static extensions (usually just DynaLoader), and
7178 any other libraries needed on this system (such as -lm, etc.).  Since
7179 your system supports dynamic loading, it is probably possible to build
7180 a shared libperl.$so.  If you will have more than one executable linked
7181 to libperl.$so, this will significantly reduce the size of each
7182 executable, but it may have a noticeable affect on performance.  The
7183 default is probably sensible for your system.
7184 $also
7185
7186 EOM
7187         rp="Build a shared libperl.$so (y/n)"
7188         . ./myread
7189         case "$ans" in
7190         true|$define|[Yy]*)
7191                 useshrplib='true'  ;;
7192         *)      useshrplib='false' ;;
7193         esac
7194         ;;
7195 esac
7196
7197 case "$useshrplib" in
7198 true)
7199         case "$libperl" in
7200         '')
7201                 # Figure out a good name for libperl.so.  Since it gets stored in
7202                 # a version-specific architecture-dependent library, the version
7203                 # number isn't really that important, except for making cc/ld happy.
7204                 #
7205                 # A name such as libperl.so.3.1
7206                 majmin="libperl.$so.$patchlevel.$subversion"
7207                 # A name such as libperl.so.301
7208                 majonly=`echo $patchlevel $subversion |
7209                         $awk '{printf "%d%02d", $1, $2}'`
7210                 majonly=libperl.$so.$majonly
7211                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7212                 # rely on figuring it out from the naming of libc.
7213                 case "${osname}${osvers}" in
7214                 next4*)
7215                         dflt=libperl.5.$so
7216                         # XXX How handle the --version stuff for MAB?
7217                         ;;
7218                 linux*)  # ld won't link with a bare -lperl otherwise.
7219                         dflt=libperl.$so
7220                         ;;
7221                 cygwin*) # include version
7222                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7223                         ;;
7224                 *)      # Try to guess based on whether libc has major.minor.
7225                         case "$libc" in
7226                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7227                         *libc.$so.[0-9]*) dflt=$majonly ;;
7228                         *)      dflt=libperl.$so ;;
7229                         esac
7230                         ;;
7231                 esac
7232                 ;;
7233         *)      dflt=$libperl
7234                 ;;
7235         esac
7236         cat << EOM
7237
7238 I need to select a good name for the shared libperl.  If your system uses
7239 library names with major and minor numbers, then you might want something
7240 like $majmin.  Alternatively, if your system uses a single version
7241 number for shared libraries, then you might want to use $majonly.
7242 Or, your system might be quite happy with a simple libperl.$so.
7243
7244 Since the shared libperl will get installed into a version-specific
7245 architecture-dependent directory, the version number of the shared perl
7246 library probably isn't important, so the default should be o.k.
7247
7248 EOM
7249         rp='What name do you want to give to the shared libperl?'
7250         . ./myread
7251         libperl=$ans
7252         echo "Ok, I'll use $libperl"
7253         ;;
7254 *)
7255         libperl="libperl${_a}"
7256         ;;
7257 esac
7258
7259 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7260 case "$shrpdir" in
7261 '') ;;
7262 *)      $cat >&4 <<EOM
7263 WARNING:  Use of the shrpdir variable for the installation location of
7264 the shared $libperl is not supported.  It was never documented and
7265 will not work in this version.  Let me (perlbug@perl.org)
7266 know of any problems this may cause.
7267
7268 EOM
7269         case "$shrpdir" in
7270         "$archlibexp/CORE")
7271                 $cat >&4 <<EOM
7272 But your current setting of $shrpdir is
7273 the default anyway, so it's harmless.
7274 EOM
7275                 ;;
7276         *)
7277                 $cat >&4 <<EOM
7278 Further, your current attempted setting of $shrpdir
7279 conflicts with the value of $archlibexp/CORE
7280 that installperl will use.
7281 EOM
7282                 ;;
7283         esac
7284         ;;
7285 esac
7286
7287 # How will the perl executable find the installed shared $libperl?
7288 # Add $xxx to ccdlflags.
7289 # If we can't figure out a command-line option, use $shrpenv to
7290 # set env LD_RUN_PATH.  The main perl makefile uses this.
7291 shrpdir=$archlibexp/CORE
7292 xxx=''
7293 tmp_shrpenv=''
7294 if "$useshrplib"; then
7295     case "$osname" in 
7296         aix)
7297                 # We'll set it in Makefile.SH...
7298                 ;;
7299         solaris|netbsd)
7300                 xxx="-R $shrpdir"
7301                 ;;
7302         freebsd)
7303                 xxx="-Wl,-R$shrpdir"
7304                 ;;
7305         linux|irix*|dec_osf)
7306                 xxx="-Wl,-rpath,$shrpdir"
7307                 ;;
7308         next)
7309                 # next doesn't like the default...
7310                 ;;
7311         beos)
7312                 # beos doesn't like the default, either.
7313                 ;;
7314         hpux*)
7315                 # hpux doesn't like the default, either.
7316                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7317                 ;;
7318         *)
7319                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7320                 ;;
7321         esac
7322         case "$xxx" in
7323         '') ;;
7324         *)      
7325                 # Only add $xxx if it isn't already in ccdlflags.
7326                 case " $ccdlflags " in
7327                 *" $xxx "*)     ;;
7328                 *)      ccdlflags="$ccdlflags $xxx"
7329                         cat <<EOM >&4
7330
7331 Adding $xxx to the flags
7332 passed to $ld so that the perl executable will find the 
7333 installed shared $libperl.
7334
7335 EOM
7336                         ;;
7337                 esac
7338                 ;;
7339         esac
7340 fi
7341 # Fix ccdlflags in AIX for building external extensions.
7342 # (For building Perl itself bare -bE:perl.exp is needed,
7343 #  Makefile.SH takes care of this.)
7344 case "$osname" in
7345 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7346 esac
7347 # Respect a hint or command-line value.
7348 case "$shrpenv" in
7349 '') shrpenv="$tmp_shrpenv" ;;
7350 esac
7351 case "$ldlibpthname" in
7352 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7353 none)   ldlibpthname='' ;;
7354 esac
7355
7356 : determine where manual pages are on this system
7357 echo " "
7358 case "$sysman" in
7359 '') 
7360         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7361         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7362         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7363         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7364         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7365         sysman=`./loc . /usr/man/man1 $syspath`
7366         ;;
7367 esac
7368 if $test -d "$sysman"; then
7369         echo "System manual is in $sysman." >&4
7370 else
7371         echo "Could not find manual pages in source form." >&4
7372 fi
7373
7374 : determine where manual pages go
7375 set man1dir man1dir none
7376 eval $prefixit
7377 $cat <<EOM
7378
7379 $spackage has manual pages available in source form.
7380 EOM
7381 case "$nroff" in
7382 nroff)
7383         echo "However, you don't have nroff, so they're probably useless to you."
7384         case "$man1dir" in
7385         '') man1dir="none";;
7386         esac;;
7387 esac
7388 echo "If you don't want the manual sources installed, answer 'none'."
7389 case "$man1dir" in
7390 ' ') dflt=none
7391         ;;
7392 '')
7393         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7394         lookpath="$lookpath $prefixexp/man/p_man/man1"
7395         lookpath="$lookpath $prefixexp/man/u_man/man1"
7396         lookpath="$lookpath $prefixexp/man/man.1"
7397         case "$sysman" in
7398         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7399         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7400         esac
7401         set dflt
7402         eval $prefixup
7403         ;;
7404 *)  dflt="$man1dir"
7405         ;;
7406 esac
7407 echo " "
7408 fn=dn+~
7409 rp="Where do the main $spackage manual pages (source) go?"
7410 . ./getfile
7411 if $test "X$man1direxp" != "X$ansexp"; then
7412         installman1dir=''
7413 fi
7414 man1dir="$ans"
7415 man1direxp="$ansexp"
7416 case "$man1dir" in
7417 '')     man1dir=' '
7418         installman1dir='';;
7419 esac
7420
7421 : Change installation prefix, if necessary.
7422 if $test X"$prefix" != X"$installprefix"; then
7423         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7424 else
7425         installman1dir="$man1direxp"
7426 fi
7427
7428 : What suffix to use on installed man pages
7429
7430 case "$man1dir" in
7431 ' ')
7432         man1ext='0'
7433         ;;
7434 *)
7435         rp="What suffix should be used for the main $spackage man pages?"
7436         case "$man1ext" in
7437         '')     case "$man1dir" in
7438                 *1)  dflt=1 ;;
7439                 *1p) dflt=1p ;;
7440                 *1pm) dflt=1pm ;;
7441                 *l) dflt=l;;
7442                 *n) dflt=n;;
7443                 *o) dflt=o;;
7444                 *p) dflt=p;;
7445                 *C) dflt=C;;
7446                 *L) dflt=L;;
7447                 *L1) dflt=L1;;
7448                 *) dflt=1;;
7449                 esac
7450                 ;;
7451         *)      dflt="$man1ext";;
7452         esac
7453         . ./myread
7454         man1ext="$ans"
7455         ;;
7456 esac
7457
7458 : see if we can have long filenames
7459 echo " "
7460 first=123456789abcdef
7461 $rm -f $first
7462 if (echo hi >$first) 2>/dev/null; then
7463         if $test -f 123456789abcde; then
7464                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7465                 val="$undef"
7466         else
7467                 echo 'You can have filenames longer than 14 characters.'>&4
7468                 val="$define"
7469         fi
7470 else
7471         $cat <<'EOM'
7472 You can't have filenames longer than 14 chars.
7473 You can't even think about them!
7474 EOM
7475         val="$undef"
7476 fi 
7477 set d_flexfnam
7478 eval $setvar
7479 $rm -rf 123456789abcde*
7480
7481 : determine where library module manual pages go
7482 set man3dir man3dir none
7483 eval $prefixit
7484 $cat <<EOM
7485
7486 $spackage has manual pages for many of the library modules.
7487 EOM
7488
7489 case "$nroff" in
7490 nroff)
7491         $cat <<'EOM'
7492 However, you don't have nroff, so they're probably useless to you.
7493 EOM
7494         case "$man3dir" in
7495         '') man3dir="none";;
7496         esac;;
7497 esac
7498
7499 case "$d_flexfnam" in
7500 undef)
7501         $cat <<'EOM'
7502 However, your system can't handle the long file names like File::Basename.3. 
7503 EOM
7504         case "$man3dir" in
7505         '') man3dir="none";;
7506         esac;;
7507 esac
7508
7509 echo "If you don't want the manual sources installed, answer 'none'."
7510 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7511 case "$man3dir" in
7512 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7513         if $test -d "$privlib/man/man3"; then
7514                 cat <<EOM >&4
7515
7516 WARNING:  Previous versions of perl installed man3 pages into
7517 $privlib/man/man3.  This version will suggest a 
7518 new default of $dflt.  
7519 EOM
7520                 tdflt=$dflt
7521                 dflt='n'
7522                 rp='Do you wish to preserve the old behavior?(y/n)'
7523                 . ./myread
7524                 case "$ans" in
7525                 y*) dflt="$privlib/man/man3" ;;
7526                 *)  dflt=$tdflt ;;
7527                 esac
7528     fi
7529         ;;
7530 *)      dflt="$man3dir" ;;
7531 esac
7532 case "$dflt" in
7533 ' ') dflt=none ;;
7534 esac
7535 echo " "
7536 fn=dn+~
7537 rp="Where do the $package library man pages (source) go?"
7538 . ./getfile
7539 man3dir="$ans"
7540 man3direxp="$ansexp"
7541 case "$man3dir" in
7542 '')     man3dir=' '
7543         installman3dir='';;
7544 esac
7545
7546 : Change installation prefix, if necessary.
7547 if $test X"$prefix" != X"$installprefix"; then
7548         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7549 else
7550         installman3dir="$man3direxp"
7551 fi
7552
7553 : What suffix to use on installed man pages
7554 case "$man3dir" in
7555 ' ')
7556         man3ext='0'
7557         ;;
7558 *)
7559         rp="What suffix should be used for the $package library man pages?"
7560         case "$man3ext" in
7561         '')     case "$man3dir" in
7562                 *3)  dflt=3 ;;
7563                 *3p) dflt=3p ;;
7564                 *3pm) dflt=3pm ;;
7565                 *l) dflt=l;;
7566                 *n) dflt=n;;
7567                 *o) dflt=o;;
7568                 *p) dflt=p;;
7569                 *C) dflt=C;;
7570                 *L) dflt=L;;
7571                 *L3) dflt=L3;;
7572                 *) dflt=3;;
7573                 esac
7574                 ;;
7575         *)      dflt="$man3ext";;
7576         esac
7577         . ./myread
7578         man3ext="$ans"
7579         ;;
7580 esac
7581
7582 : see if we have to deal with yellow pages, now NIS.
7583 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7584         if $test -f /usr/etc/nibindd; then
7585                 echo " "
7586                 echo "I'm fairly confident you're on a NeXT."
7587                 echo " "
7588                 rp='Do you get the hosts file via NetInfo?'
7589                 dflt=y
7590                 case "$hostcat" in
7591                 nidump*) ;;
7592                 '') ;;
7593                 *) dflt=n;;
7594                 esac
7595                 . ./myread
7596                 case "$ans" in
7597                 y*) hostcat='nidump hosts .';;
7598                 *)      case "$hostcat" in
7599                         nidump*) hostcat='';;
7600                         esac
7601                         ;;
7602                 esac
7603         fi
7604         case "$hostcat" in
7605         nidump*) ;;
7606         *)
7607                 case "$hostcat" in
7608                 *ypcat*) dflt=y;;
7609                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7610                                 dflt=y
7611                         else
7612                                 dflt=n
7613                         fi;;
7614                 *) dflt=n;;
7615                 esac
7616                 echo " "
7617                 rp='Are you getting the hosts file via yellow pages?'
7618                 . ./myread
7619                 case "$ans" in
7620                 y*) hostcat='ypcat hosts';;
7621                 *) hostcat='cat /etc/hosts';;
7622                 esac
7623                 ;;
7624         esac
7625 fi
7626 case "$hostcat" in
7627 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7628 esac
7629 case "$groupcat" in
7630 '') test -f /etc/group && groupcat='cat /etc/group';;
7631 esac
7632 case "$passcat" in
7633 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7634 esac
7635
7636 : now get the host name
7637 echo " "
7638 echo "Figuring out host name..." >&4
7639 case "$myhostname" in
7640 '') cont=true
7641         echo 'Maybe "hostname" will work...'
7642         if tans=`sh -c hostname 2>&1` ; then
7643                 myhostname=$tans
7644                 phostname=hostname
7645                 cont=''
7646         fi
7647         ;;
7648 *) cont='';;
7649 esac
7650 if $test "$cont"; then
7651         if ./xenix; then
7652                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7653                 if tans=`cat /etc/systemid 2>&1` ; then
7654                         myhostname=$tans
7655                         phostname='cat /etc/systemid'
7656                         echo "Whadyaknow.  Xenix always was a bit strange..."
7657                         cont=''
7658                 fi
7659         elif $test -r /etc/systemid; then
7660                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7661         fi
7662 fi
7663 if $test "$cont"; then
7664         echo 'No, maybe "uuname -l" will work...'
7665         if tans=`sh -c 'uuname -l' 2>&1` ; then
7666                 myhostname=$tans
7667                 phostname='uuname -l'
7668         else
7669                 echo 'Strange.  Maybe "uname -n" will work...'
7670                 if tans=`sh -c 'uname -n' 2>&1` ; then
7671                         myhostname=$tans
7672                         phostname='uname -n'
7673                 else
7674                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7675                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7676                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7677                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7678                         else
7679                                 case "$myhostname" in
7680                                 '') echo "Does this machine have an identity crisis or something?"
7681                                         phostname='';;
7682                                 *)
7683                                         echo "Well, you said $myhostname before..."
7684                                         phostname='echo $myhostname';;
7685                                 esac
7686                         fi
7687                 fi
7688         fi
7689 fi
7690 : you do not want to know about this
7691 set $myhostname
7692 myhostname=$1
7693
7694 : verify guess
7695 if $test "$myhostname" ; then
7696         dflt=y
7697         rp='Your host name appears to be "'$myhostname'".'" Right?"
7698         . ./myread
7699         case "$ans" in
7700         y*) ;;
7701         *) myhostname='';;
7702         esac
7703 fi
7704
7705 : bad guess or no guess
7706 while $test "X$myhostname" = X ; do
7707         dflt=''
7708         rp="Please type the (one word) name of your host:"
7709         . ./myread
7710         myhostname="$ans"
7711 done
7712
7713 : translate upper to lower if necessary
7714 case "$myhostname" in
7715 *[A-Z]*)
7716         echo "(Normalizing case in your host name)"
7717         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7718         ;;
7719 esac
7720
7721 case "$myhostname" in
7722 *.*)
7723         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7724         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7725         echo "(Trimming domain name from host name--host name is now $myhostname)"
7726         ;;
7727 *) case "$mydomain" in
7728         '')
7729                 {
7730                         test "X$hostcat" = "Xypcat hosts" &&
7731                         ypmatch "$myhostname" hosts 2>/dev/null |\
7732                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7733                         $test -s hosts
7734                 } || {
7735                         test "X$hostcat" != "X" &&
7736                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7737                                         /[       ]$myhostname[  . ]/p" > hosts
7738                 }
7739                 tmp_re="[       . ]"
7740                 if $test -f hosts; then
7741                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7742                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7743                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7744                                 hosts | $sort | $uniq | \
7745                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7746                         case `$echo X$dflt` in
7747                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7748                                 dflt=.
7749                                 ;;
7750                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7751                                 ;;
7752                         esac
7753                 else
7754                         echo "(I cannot locate a hosts database anywhere)"
7755                         dflt=.
7756                 fi
7757                 case "$dflt" in
7758                 .)
7759                         tans=`./loc resolv.conf X /etc /usr/etc`
7760                         if $test -f "$tans"; then
7761                                 echo "(Attempting domain name extraction from $tans)"
7762                                 dflt=.`$sed -n -e 's/   / /g' \
7763                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7764                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7765                                 case "$dflt" in
7766                                 .) dflt=.`$sed -n -e 's/        / /g' \
7767                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7768                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7769                                         ;;
7770                                 esac
7771                         fi
7772                         ;;
7773                 esac
7774                 case "$dflt" in
7775                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7776                         dflt=.`sh -c domainname 2>/dev/null`
7777                         case "$dflt" in
7778                         '') dflt='.';;
7779                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7780                         esac
7781                         ;;
7782                 esac
7783                 case "$dflt$osname" in
7784                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7785                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7786                         ;;
7787                 esac
7788                 case "$dflt" in
7789                 .) echo "(Lost all hope -- silly guess then)"
7790                         dflt='.uucp'
7791                         ;;
7792                 esac
7793                 $rm -f hosts
7794                 ;;
7795         *) dflt="$mydomain";;
7796         esac;;
7797 esac
7798 echo " "
7799 rp="What is your domain name?"
7800 . ./myread
7801 tans="$ans"
7802 case "$ans" in
7803 '') ;;
7804 .*) ;;
7805 *) tans=".$tans";;
7806 esac
7807 mydomain="$tans"
7808
7809 : translate upper to lower if necessary
7810 case "$mydomain" in
7811 *[A-Z]*)
7812         echo "(Normalizing case in your domain name)"
7813         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7814         ;;
7815 esac
7816
7817 : a little sanity check here
7818 case "$phostname" in
7819 '') ;;
7820 *)
7821         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7822         $myhostname$mydomain|$myhostname) ;;
7823         *)
7824                 case "$phostname" in
7825                 sed*)
7826                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7827                         ;;
7828                 *)
7829                         echo "(That doesn't agree with your $phostname command, by the way.)"
7830                         ;;
7831                 esac
7832         ;;
7833         esac
7834         ;;
7835 esac
7836
7837 $cat <<EOM
7838
7839 I need to get your e-mail address in Internet format if possible, i.e.
7840 something like user@host.domain. Please answer accurately since I have
7841 no easy means to double check it. The default value provided below
7842 is most probably close to reality but may not be valid from outside
7843 your organization...
7844
7845 EOM
7846 cont=x
7847 while test "$cont"; do
7848         case "$cf_email" in
7849         '') dflt="$cf_by@$myhostname$mydomain";;
7850         *) dflt="$cf_email";;
7851         esac
7852         rp='What is your e-mail address?'
7853         . ./myread
7854         cf_email="$ans"
7855         case "$cf_email" in
7856         *@*.*) cont='' ;;
7857         *)
7858                 rp='Address does not look like an Internet one.  Use it anyway?'
7859                 case "$fastread" in
7860                 yes) dflt=y ;;
7861                 *) dflt=n ;;
7862                 esac
7863                 . ./myread
7864                 case "$ans" in
7865                 y*) cont='' ;;
7866                 *) echo " " ;;
7867                 esac
7868                 ;;
7869         esac
7870 done
7871
7872 $cat <<EOM
7873
7874 If you or somebody else will be maintaining perl at your site, please
7875 fill in the correct e-mail address here so that they may be contacted
7876 if necessary. Currently, the "perlbug" program included with perl
7877 will send mail to this address in addition to perlbug@perl.org. You may
7878 enter "none" for no administrator.
7879
7880 EOM
7881 case "$perladmin" in
7882 '') dflt="$cf_email";;
7883 *) dflt="$perladmin";;
7884 esac
7885 rp='Perl administrator e-mail address'
7886 . ./myread
7887 perladmin="$ans"
7888
7889 : determine whether to only install version-specific parts.
7890 echo " "
7891 $cat <<EOM
7892 Do you want to install only the version-specific parts of the perl
7893 distribution?  Usually you do *not* want to do this.
7894 EOM
7895 case "$versiononly" in
7896 "$define"|[Yy]*|true) dflt='y' ;;
7897 *) dflt='n';
7898 esac
7899 rp="Do you want to install only the version-specific parts of perl?"
7900 . ./myread
7901 case "$ans" in
7902 [yY]*)  val="$define";;
7903 *)      val="$undef" ;;
7904 esac
7905 set versiononly
7906 eval $setvar
7907
7908 : figure out how to guarantee perl startup
7909 case "$startperl" in
7910 '')
7911         case "$sharpbang" in
7912         *!)
7913                 $cat <<EOH
7914
7915 I can use the #! construct to start perl on your system. This will
7916 make startup of perl scripts faster, but may cause problems if you
7917 want to share those scripts and perl is not in a standard place
7918 ($binexp/perl) on all your platforms. The alternative is to force
7919 a shell by starting the script with a single ':' character.
7920
7921 EOH
7922                 case "$versiononly" in
7923                 "$define")      dflt="$binexp/perl$version";;  
7924                 *)              dflt="$binexp/perl";;
7925                 esac
7926                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7927                 . ./myread
7928                 case "$ans" in
7929                 none)   startperl=": # use perl";;
7930                 *)      startperl="#!$ans"
7931                         if $test 30 -lt `echo "$ans" | wc -c`; then
7932                                 $cat >&4 <<EOM
7933
7934 WARNING:  Some systems limit the #! command to 32 characters.
7935 If you experience difficulty running Perl scripts with #!, try
7936 installing Perl in a directory with a shorter pathname.
7937
7938 EOM
7939                         fi ;;
7940                 esac
7941                 ;;
7942         *) startperl=": # use perl"
7943                 ;;
7944         esac
7945         ;;
7946 esac
7947 echo "I'll use $startperl to start perl scripts."
7948
7949 : figure best path for perl in scripts
7950 case "$perlpath" in
7951 '')
7952         perlpath="$binexp/perl"
7953         case "$startperl" in
7954         *!*) ;;
7955         *)
7956                 $cat <<EOH
7957
7958 I will use the "eval 'exec'" idiom to start Perl on your system.
7959 I can use the full path of your Perl binary for this purpose, but
7960 doing so may cause problems if you want to share those scripts and
7961 Perl is not always in a standard place ($binexp/perl).
7962
7963 EOH
7964                 dflt="$binexp/perl"
7965                 rp="What path shall I use in \"eval 'exec'\"?"
7966                 . ./myread
7967                 perlpath="$ans"
7968                 ;;
7969         esac
7970         ;;
7971 esac
7972 case "$startperl" in
7973 *!*)    ;;
7974 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7975 esac
7976
7977 : determine where public executable scripts go
7978 set scriptdir scriptdir
7979 eval $prefixit
7980 case "$scriptdir" in
7981 '')
7982         dflt="$bin"
7983         : guess some guesses
7984         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7985         $test -d /usr/share/bin     && dflt=/usr/share/bin
7986         $test -d /usr/local/script  && dflt=/usr/local/script
7987         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7988         $test -d $prefixexp/script  && dflt=$prefixexp/script
7989         set dflt
7990         eval $prefixup
7991         ;;
7992 *)  dflt="$scriptdir"
7993         ;;
7994 esac
7995 $cat <<EOM
7996  
7997 Some installations have a separate directory just for executable scripts so
7998 that they can mount it across multiple architectures but keep the scripts in
7999 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8000 Or you might just lump your scripts in with all your other executables.
8001  
8002 EOM
8003 fn=d~
8004 rp='Where do you keep publicly executable scripts?'
8005 . ./getfile
8006 if $test "X$ansexp" != "X$scriptdirexp"; then
8007         installscript=''
8008 fi
8009 scriptdir="$ans"
8010 scriptdirexp="$ansexp"
8011 : Change installation prefix, if necessary.
8012 if $test X"$prefix" != X"$installprefix"; then
8013         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8014 else
8015         installscript="$scriptdirexp"
8016 fi
8017
8018 : determine where add-on public executables go
8019 case "$sitebin" in
8020 '')     dflt=$siteprefix/bin ;;
8021 *)      dflt=$sitebin ;;
8022 esac
8023 fn=d~
8024 rp='Pathname where the add-on public executables should be installed?'
8025 . ./getfile
8026 sitebin="$ans"
8027 sitebinexp="$ansexp"
8028 : Change installation prefix, if necessary.
8029 if $test X"$prefix" != X"$installprefix"; then
8030         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8031 else
8032         installsitebin="$sitebinexp"
8033 fi
8034
8035 : define an is-a-typedef? function
8036 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8037 case "$inclist" in
8038 "") inclist="sys/types.h";;
8039 esac;
8040 eval "varval=\$$var";
8041 case "$varval" in
8042 "")
8043         $rm -f temp.c;
8044         for inc in $inclist; do
8045                 echo "#include <$inc>" >>temp.c;
8046         done;
8047         echo "#ifdef $type" >> temp.c;
8048         echo "printf(\"We have $type\");" >> temp.c;
8049         echo "#endif" >> temp.c;
8050         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8051         if $contains $type temp.E >/dev/null 2>&1; then
8052                 eval "$var=\$type";
8053         else
8054                 eval "$var=\$def";
8055         fi;
8056         $rm -f temp.?;;
8057 *) eval "$var=\$varval";;
8058 esac'
8059
8060 : define an is-a-typedef? function that prompts if the type is not available.
8061 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8062 case "$inclist" in
8063 "") inclist="sys/types.h";;
8064 esac;
8065 eval "varval=\$$var";
8066 case "$varval" in
8067 "")
8068         $rm -f temp.c;
8069         for inc in $inclist; do
8070                 echo "#include <$inc>" >>temp.c;
8071         done;
8072         echo "#ifdef $type" >> temp.c;
8073         echo "printf(\"We have $type\");" >> temp.c;
8074         echo "#endif" >> temp.c;
8075         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8076         echo " " ;
8077         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8078         if $contains $type temp.E >/dev/null 2>&1; then
8079                 echo "$type found." >&4;
8080                 eval "$var=\$type";
8081         else
8082                 echo "$type NOT found." >&4;
8083                 dflt="$def";
8084                 . ./myread ;
8085                 eval "$var=\$ans";
8086         fi;
8087         $rm -f temp.?;;
8088 *) eval "$var=\$varval";;
8089 esac'
8090
8091 : see what type lseek is declared as in the kernel
8092 rp="What is the type used for lseek's offset on this system?"
8093 set off_t lseektype long stdio.h sys/types.h
8094 eval $typedef_ask
8095
8096 echo " "
8097 echo "Checking to see how big your file offsets are..." >&4
8098 $cat >try.c <<EOCP
8099 #include <sys/types.h>
8100 #include <stdio.h>
8101 int main()
8102 {
8103     printf("%d\n", (int)sizeof($lseektype));
8104     return(0); 
8105 }
8106 EOCP
8107 set try
8108 if eval $compile_ok; then
8109         lseeksize=`$run ./try`
8110         echo "Your file offsets are $lseeksize bytes long."
8111 else
8112         dflt=$longsize
8113         echo " "
8114         echo "(I can't seem to compile the test program.  Guessing...)"
8115         rp="What is the size of your file offsets (in bytes)?"
8116         . ./myread
8117         lseeksize="$ans"
8118 fi
8119 $rm -f try.c try
8120
8121 : see what type file positions are declared as in the library
8122 rp="What is the type for file position used by fsetpos()?"
8123 set fpos_t fpostype long stdio.h sys/types.h
8124 eval $typedef_ask
8125
8126 echo " "
8127 case "$fpostype" in
8128 *_t) zzz="$fpostype"    ;;
8129 *)   zzz="fpos_t"       ;;
8130 esac
8131 echo "Checking the size of $zzz..." >&4 
8132 cat > try.c <<EOCP
8133 #include <sys/types.h>
8134 #include <stdio.h>
8135 int main() {
8136     printf("%d\n", (int)sizeof($fpostype));
8137     exit(0);
8138 }
8139 EOCP
8140 set try
8141 if eval $compile_ok; then
8142         yyy=`$run ./try`
8143         case "$yyy" in
8144         '')     fpossize=4
8145                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8146                 ;;
8147         *)      fpossize=$yyy
8148                 echo "Your $zzz is $fpossize bytes long."
8149                 ;;
8150         esac
8151 else
8152         dflt="$longsize"
8153         echo " " >&4
8154         echo "(I can't compile the test program.  Guessing...)" >&4
8155         rp="What is the size of your file positions (in bytes)?"
8156         . ./myread
8157         fpossize="$ans"
8158 fi
8159
8160
8161
8162 # Backward compatibility (uselfs is deprecated).
8163 case "$uselfs" in
8164 "$define"|true|[yY]*)
8165         cat <<EOM >&4
8166
8167 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8168 EOM
8169         uselargefiles="$define"
8170         ;;
8171 esac                          
8172
8173 case "$lseeksize:$fpossize" in
8174 8:8) cat <<EOM
8175
8176 You can have files larger than 2 gigabytes.
8177 EOM
8178    val="$define" ;;
8179 *)    case "$uselargefiles" in
8180    "$undef"|false|[nN]*) dflt='n' ;;
8181    *)   dflt='y' ;;
8182    esac
8183    cat <<EOM
8184
8185 Perl can be built to understand large files (files larger than 2 gigabytes)
8186 on some systems.  To do so, Configure can be run with -Duselargefiles.
8187
8188 If this doesn't make any sense to you, just accept the default '$dflt'.
8189 EOM
8190    rp='Try to understand large files, if available?'
8191    . ./myread
8192    case "$ans" in
8193    y|Y)         val="$define" ;;
8194    *)           val="$undef"  ;;
8195    esac
8196    ;;
8197 esac
8198 set uselargefiles
8199 eval $setvar
8200 case "$uselargefiles" in
8201 "$define")
8202 : Look for a hint-file generated 'call-back-unit'.  If the
8203 : user has specified that a large files perl is to be built,
8204 : we may need to set or change some other defaults.
8205         if $test -f uselargefiles.cbu; then
8206                 echo "Your platform has some specific hints for large file builds, using them..."
8207                 . ./uselargefiles.cbu
8208                 echo " "
8209                 echo "Rechecking to see how big your file offsets are..." >&4
8210                 $cat >try.c <<EOCP
8211 #include <sys/types.h>
8212 #include <stdio.h>
8213 int main()
8214 {
8215     printf("%d\n", (int)sizeof($lseektype));
8216     return(0); 
8217 }
8218 EOCP
8219                 set try
8220                 if eval $compile_ok; then
8221                         lseeksize=`$run ./try`
8222                         $echo "Your file offsets are now $lseeksize bytes long."
8223                 else
8224                         dflt="$lseeksize"
8225                         echo " "
8226                         echo "(I can't seem to compile the test program.  Guessing...)"
8227                         rp="What is the size of your file offsets (in bytes)?"
8228                         . ./myread
8229                         lseeksize="$ans"
8230                 fi
8231                 case "$fpostype" in
8232                 *_t) zzz="$fpostype"    ;;
8233                 *)   zzz="fpos_t"       ;;
8234                 esac
8235                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8236                 $cat > try.c <<EOCP
8237 #include <sys/types.h>
8238 #include <stdio.h>
8239 int main() {
8240     printf("%d\n", (int)sizeof($fpostype));
8241     exit(0);
8242 }
8243 EOCP
8244                 set try
8245                 if eval $compile_ok; then
8246                         yyy=`$run ./try`
8247                         dflt="$lseeksize"
8248                         case "$yyy" in
8249                         '')     echo " "
8250                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8251                                 ;;
8252                         *)      fpossize=$yyy
8253                                 echo " $fpossize bytes." >&4
8254                                 ;;
8255                         esac
8256                 else
8257                         dflt="$fpossize"
8258                         echo " "
8259                         echo "(I can't compile the test program.  Guessing...)" >&4
8260                         rp="What is the size of your file positions (in bytes)?"
8261                         . ./myread
8262                         fpossize="$ans"
8263                 fi
8264                 $rm -f try.c try
8265         fi
8266         ;;
8267 esac
8268
8269 case "$vendorprefix" in
8270 '')     d_vendorbin="$undef"
8271         vendorbin=''
8272         vendorbinexp=''
8273         ;;
8274 *)      d_vendorbin="$define"
8275         : determine where vendor-supplied executables go.
8276         case "$vendorbin" in
8277         '') dflt=$vendorprefix/bin ;;
8278         *)      dflt="$vendorbin" ;;
8279         esac
8280         fn=d~+
8281         rp='Pathname for the vendor-supplied executables directory?'
8282         . ./getfile
8283         vendorbin="$ans"
8284         vendorbinexp="$ansexp"
8285         ;;
8286 esac
8287 : Change installation prefix, if necessary.
8288 if $test X"$prefix" != X"$installprefix"; then
8289         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8290 else
8291         installvendorbin="$vendorbinexp"
8292 fi
8293
8294 : see if qgcvt exists
8295 set qgcvt d_qgcvt
8296 eval $inlibc
8297
8298 echo " "
8299
8300 if $test X"$d_longdbl" = X"$define"; then
8301
8302 echo "Checking how to print long doubles..." >&4
8303
8304 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8305         $cat >try.c <<'EOCP'
8306 #include <sys/types.h>
8307 #include <stdio.h>
8308 int main() {
8309   double d = 123.456;
8310   printf("%.3f\n", d);
8311 }
8312 EOCP
8313         set try
8314         if eval $compile; then
8315                 yyy=`$run ./try`
8316                 case "$yyy" in
8317                 123.456)
8318                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8319                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8320                         echo "We will use %f."
8321                         ;;
8322                 esac
8323         fi
8324 fi
8325
8326 if $test X"$sPRIfldbl" = X; then
8327         $cat >try.c <<'EOCP'
8328 #include <sys/types.h>
8329 #include <stdio.h>
8330 int main() {
8331   long double d = 123.456;
8332   printf("%.3Lf\n", d);
8333 }
8334 EOCP
8335         set try
8336         if eval $compile; then
8337                 yyy=`$run ./try`
8338                 case "$yyy" in
8339                 123.456)
8340                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8341                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8342                         echo "We will use %Lf."
8343                         ;;
8344                 esac
8345         fi
8346 fi
8347
8348 if $test X"$sPRIfldbl" = X; then
8349         $cat >try.c <<'EOCP'
8350 #include <sys/types.h>
8351 #include <stdio.h>
8352 int main() {
8353   long double d = 123.456;
8354   printf("%.3llf\n", d);
8355 }
8356 EOCP
8357         set try
8358         if eval $compile; then
8359                 yyy=`$run ./try`
8360                 case "$yyy" in
8361                 123.456)
8362                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8363                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8364                         echo "We will use %llf."
8365                         ;;
8366                 esac
8367         fi
8368 fi
8369
8370 if $test X"$sPRIfldbl" = X; then
8371         $cat >try.c <<'EOCP'
8372 #include <sys/types.h>
8373 #include <stdio.h>
8374 int main() {
8375   long double d = 123.456;
8376   printf("%.3lf\n", d);
8377 }
8378 EOCP
8379         set try
8380         if eval $compile; then
8381                 yyy=`$run ./try`
8382                 case "$yyy" in
8383                 123.456)
8384                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8385                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8386                         echo "We will use %lf."
8387                         ;;
8388                 esac
8389         fi
8390 fi
8391
8392 if $test X"$sPRIfldbl" = X; then
8393         echo "Cannot figure out how to print long doubles." >&4
8394 else
8395         sSCNfldbl=$sPRIfldbl    # expect consistency
8396 fi
8397
8398 $rm -f try try.*
8399
8400 fi # d_longdbl
8401
8402 case "$sPRIfldbl" in
8403 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8404         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8405         d_SCNfldbl="$undef";
8406         ;;
8407 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8408         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8409         d_SCNfldbl="$define";
8410         ;;
8411 esac
8412
8413 : Check how to convert floats to strings.
8414 echo " "
8415 echo "Checking for an efficient way to convert floats to strings."
8416 echo " " > try.c
8417 case "$uselongdouble" in
8418 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8419 esac
8420 case "$d_longdbl" in
8421 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8422 esac
8423 case "$d_PRIgldbl" in
8424 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8425 esac
8426 $cat >>try.c <<EOP
8427 #ifdef TRY_gconvert
8428 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8429 char *myname = "gconvert";
8430 #endif
8431 #ifdef TRY_gcvt
8432 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8433 char *myname = "gcvt";
8434 #endif
8435 #ifdef TRY_qgcvt
8436 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8437 char *myname = "qgcvt";
8438 #define DOUBLETYPE long double
8439 #endif
8440 #ifdef TRY_sprintf
8441 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8442 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8443 #else
8444 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8445 #endif
8446 char *myname = "sprintf";
8447 #endif
8448
8449 #ifndef DOUBLETYPE
8450 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8451 #define DOUBLETYPE long double
8452 #else
8453 #define DOUBLETYPE double
8454 #endif
8455 #endif
8456
8457 #include <stdio.h>
8458
8459 #define I_STDLIB $i_stdlib
8460 #ifdef I_STDLIB
8461 #include <stdlib.h>
8462 #endif
8463
8464 int
8465 checkit(expect, got)
8466 char *expect;
8467 char *got;
8468 {
8469     if (strcmp(expect, got)) {
8470                 printf("%s oddity:  Expected %s, got %s\n",
8471                         myname, expect, got);
8472                 exit(1);
8473         }
8474 }
8475
8476 int main()
8477
8478         char buf[64]; 
8479         buf[63] = '\0';
8480
8481         /* This must be 1st test on (which?) platform */
8482         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8483         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8484         checkit("0.1", buf);
8485
8486         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8487         checkit("1", buf);
8488
8489         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8490         checkit("1.1", buf);
8491
8492         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8493         checkit("1.01", buf);
8494
8495         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8496         checkit("1.001", buf);
8497
8498         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8499         checkit("1.0001", buf);
8500
8501         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8502         checkit("1.00001", buf);
8503
8504         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8505         checkit("1.000001", buf);
8506
8507         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8508         checkit("0", buf);
8509
8510         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8511         checkit("-1", buf);
8512
8513         /* Some Linux gcvt's give 1.e+5 here. */
8514         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8515         checkit("100000", buf);
8516         
8517         /* Some Linux gcvt's give -1.e+5 here. */
8518         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8519         checkit("-100000", buf);
8520
8521         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8522         checkit("123.456", buf);
8523
8524         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8525         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8526         if (strlen(buf) > 5)
8527             checkit("1e+030", buf); /* for Microsoft */
8528         else
8529             checkit("1e+30", buf);
8530
8531         exit(0);
8532 }
8533 EOP
8534 case "$d_Gconvert" in
8535 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8536 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8537 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8538 *) xxx_list='gconvert gcvt sprintf' ;;
8539 esac
8540
8541 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8542 "$define$define$define")
8543     # for long doubles prefer first qgcvt, then sprintf
8544     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8545     xxx_list="sprintf $xxx_list"
8546     case "$d_qgcvt" in
8547     "$define") xxx_list="qgcvt $xxx_list" ;;
8548     esac
8549     ;;
8550 esac
8551
8552 for xxx_convert in $xxx_list; do
8553         echo "Trying $xxx_convert..."
8554         $rm -f try try$_o
8555         set try -DTRY_$xxx_convert
8556         if eval $compile; then
8557                 echo "$xxx_convert() found." >&4
8558                 if $run ./try; then
8559                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8560                         break;
8561                 else
8562                         echo "...But $xxx_convert didn't work as I expected."
8563                 fi
8564         else
8565                 echo "$xxx_convert NOT found." >&4
8566         fi
8567 done
8568         
8569 case "$xxx_convert" in
8570 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8571 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8572 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8573 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8574    "$define$define$define")
8575       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8576    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8577    esac
8578    ;;  
8579 esac
8580
8581 : see if _fwalk exists
8582 set fwalk d__fwalk
8583 eval $inlibc
8584
8585 : Initialize h_fcntl
8586 h_fcntl=false
8587
8588 : Initialize h_sysfile
8589 h_sysfile=false
8590
8591 : access call always available on UNIX
8592 set access d_access
8593 eval $inlibc
8594
8595 : locate the flags for 'access()'
8596 case "$d_access" in
8597 "$define")
8598         echo " "
8599         $cat >access.c <<'EOCP'
8600 #include <sys/types.h>
8601 #ifdef I_FCNTL
8602 #include <fcntl.h>
8603 #endif
8604 #ifdef I_SYS_FILE
8605 #include <sys/file.h>
8606 #endif
8607 #ifdef I_UNISTD
8608 #include <unistd.h>
8609 #endif
8610 int main() {
8611         exit(R_OK);
8612 }
8613 EOCP
8614         : check sys/file.h first, no particular reason here
8615         if $test `./findhdr sys/file.h` && \
8616                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8617                 h_sysfile=true;
8618                 echo "<sys/file.h> defines the *_OK access constants." >&4
8619         elif $test `./findhdr fcntl.h` && \
8620                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8621                 h_fcntl=true;
8622                 echo "<fcntl.h> defines the *_OK access constants." >&4
8623         elif $test `./findhdr unistd.h` && \
8624                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8625                 echo "<unistd.h> defines the *_OK access constants." >&4
8626         else
8627                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8628         fi
8629         ;;
8630 esac
8631 $rm -f access*
8632
8633 : see if accessx exists
8634 set accessx d_accessx
8635 eval $inlibc
8636
8637 : see if alarm exists
8638 set alarm d_alarm
8639 eval $inlibc
8640
8641 : see if atolf exists
8642 set atolf d_atolf
8643 eval $inlibc
8644
8645 : see if atoll exists
8646 set atoll d_atoll
8647 eval $inlibc
8648
8649 : Look for GNU-cc style attribute checking
8650 echo " "
8651 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8652 $cat >attrib.c <<'EOCP'
8653 #include <stdio.h>
8654 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8655 EOCP
8656 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8657         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8658                 echo "Your C compiler doesn't fully support __attribute__."
8659                 val="$undef"
8660         else
8661                 echo "Your C compiler supports __attribute__."
8662                 val="$define"
8663         fi
8664 else
8665         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8666         val="$undef"
8667 fi
8668 set d_attribut
8669 eval $setvar
8670 $rm -f attrib*
8671
8672 : see if bcmp exists
8673 set bcmp d_bcmp
8674 eval $inlibc
8675
8676 : see if bcopy exists
8677 set bcopy d_bcopy
8678 eval $inlibc
8679
8680 : see if this is a unistd.h system
8681 set unistd.h i_unistd
8682 eval $inhdr
8683
8684 : see if getpgrp exists
8685 set getpgrp d_getpgrp
8686 eval $inlibc
8687
8688 case "$d_getpgrp" in
8689 "$define")
8690         echo " "
8691         echo "Checking to see which flavor of getpgrp is in use..."
8692         $cat >try.c <<EOP
8693 #$i_unistd I_UNISTD
8694 #include <sys/types.h>
8695 #ifdef I_UNISTD
8696 #  include <unistd.h>
8697 #endif
8698 int main()
8699 {
8700         if (getuid() == 0) {
8701                 printf("(I see you are running Configure as super-user...)\n");
8702                 setuid(1);
8703         }
8704 #ifdef TRY_BSD_PGRP
8705         if (getpgrp(1) == 0)
8706                 exit(0);
8707 #else
8708         if (getpgrp() > 0)
8709                 exit(0);
8710 #endif
8711         exit(1);
8712 }
8713 EOP
8714         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8715                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8716                 val="$define"
8717         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8718                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8719                 val="$undef"
8720         else
8721                 echo "I can't seem to compile and run the test program."
8722                 if ./usg; then
8723                         xxx="a USG one, i.e. you use getpgrp()."
8724                 else
8725                         # SVR4 systems can appear rather BSD-ish.
8726                         case "$i_unistd" in
8727                         $undef)
8728                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8729                                 val="$define"
8730                                 ;;
8731                         $define)
8732                                 xxx="probably a USG one, i.e. you use getpgrp()."
8733                                 val="$undef"
8734                                 ;;
8735                         esac
8736                 fi
8737                 echo "Assuming your getpgrp is $xxx" >&4
8738         fi
8739         ;;
8740 *) val="$undef";;
8741 esac
8742 set d_bsdgetpgrp
8743 eval $setvar
8744 $rm -f try try.*
8745
8746 : see if setpgrp exists
8747 set setpgrp d_setpgrp
8748 eval $inlibc
8749
8750 case "$d_setpgrp" in
8751 "$define")
8752         echo " "
8753         echo "Checking to see which flavor of setpgrp is in use..."
8754         $cat >try.c <<EOP
8755 #$i_unistd I_UNISTD
8756 #include <sys/types.h>
8757 #ifdef I_UNISTD
8758 #  include <unistd.h>
8759 #endif
8760 int main()
8761 {
8762         if (getuid() == 0) {
8763                 printf("(I see you are running Configure as super-user...)\n");
8764                 setuid(1);
8765         }
8766 #ifdef TRY_BSD_PGRP
8767         if (-1 == setpgrp(1, 1))
8768                 exit(0);
8769 #else
8770         if (setpgrp() != -1)
8771                 exit(0);
8772 #endif
8773         exit(1);
8774 }
8775 EOP
8776         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8777                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8778                 val="$define"
8779         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8780                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8781                 val="$undef"
8782         else
8783                 echo "(I can't seem to compile and run the test program.)"
8784                 if ./usg; then
8785                         xxx="a USG one, i.e. you use setpgrp()."
8786                 else
8787                         # SVR4 systems can appear rather BSD-ish.
8788                         case "$i_unistd" in
8789                         $undef)
8790                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8791                                 val="$define"
8792                                 ;;
8793                         $define)
8794                                 xxx="probably a USG one, i.e. you use setpgrp()."
8795                                 val="$undef"
8796                                 ;;
8797                         esac
8798                 fi
8799                 echo "Assuming your setpgrp is $xxx" >&4
8800         fi
8801         ;;
8802 *) val="$undef";;
8803 esac
8804 set d_bsdsetpgrp
8805 eval $setvar
8806 $rm -f try try.*
8807 : see if bzero exists
8808 set bzero d_bzero
8809 eval $inlibc
8810
8811 : see if signal is declared as pointer to function returning int or void
8812 echo " "
8813 xxx=`./findhdr signal.h`
8814 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8815 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8816         echo "You have int (*signal())() instead of void." >&4
8817         val="$undef"
8818 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8819         echo "You have void (*signal())()." >&4
8820         val="$define"
8821 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8822         echo "You have int (*signal())() instead of void." >&4
8823         val="$undef"
8824 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8825         echo "You have void (*signal())()." >&4
8826         val="$define"
8827 else
8828         case "$d_voidsig" in
8829         '')
8830         echo "I can't determine whether signal handler returns void or int..." >&4
8831                 dflt=void
8832                 rp="What type does your signal handler return?"
8833                 . ./myread
8834                 case "$ans" in
8835                 v*) val="$define";;
8836                 *) val="$undef";;
8837                 esac;;
8838         "$define")
8839                 echo "As you already told me, signal handler returns void." >&4
8840                 val="$define"
8841                 ;;
8842         *)      echo "As you already told me, signal handler returns int." >&4
8843                 val="$undef"
8844                 ;;
8845         esac
8846 fi
8847 set d_voidsig
8848 eval $setvar
8849 case "$d_voidsig" in
8850 "$define") signal_t="void";;
8851 *) signal_t="int";;
8852 esac
8853 $rm -f $$.tmp
8854
8855 : check for ability to cast large floats to 32-bit ints.
8856 echo " "
8857 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8858 if $test "$intsize" -ge 4; then
8859         xxx=int
8860 else
8861         xxx=long
8862 fi
8863 $cat >try.c <<EOCP
8864 #include <stdio.h>
8865 #include <sys/types.h>
8866 #include <signal.h>
8867 $signal_t blech(s) int s; { exit(3); }
8868 int main()
8869 {
8870         $xxx i32;
8871         double f, g;
8872         int result = 0;
8873         char str[16];
8874         signal(SIGFPE, blech);
8875
8876         /* Don't let compiler optimize the test away.  Store the number 
8877            in a writable string for gcc to pass to sscanf under HP/UX.
8878         */
8879         sprintf(str, "2147483647");
8880         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8881         g = 10 * f;
8882         i32  = ($xxx) g;
8883
8884         /* x86 processors will probably give 0x8000 0000, which is a
8885        sign change.  We don't want that.  We want to mimic SPARC
8886            behavior here, which is to preserve the sign and give
8887            back 0x7fff ffff.
8888         */
8889         if (i32 != ($xxx) f)
8890                 result |= 1;
8891         exit(result);
8892 }
8893 EOCP
8894 set try
8895 if eval $compile_ok; then
8896         $run ./try
8897         yyy=$?
8898 else
8899         echo "(I can't seem to compile the test program--assuming it can't)"
8900         yyy=1
8901 fi
8902 case "$yyy" in
8903 0)      val="$define"
8904         echo "Yup, it can."
8905         ;;
8906 *)      val="$undef"
8907         echo "Nope, it can't."
8908         ;;
8909 esac
8910 set d_casti32
8911 eval $setvar
8912 $rm -f try try.*
8913
8914 : check for ability to cast negative floats to unsigned
8915 echo " "
8916 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8917 $cat >try.c <<EOCP
8918 #include <stdio.h>
8919 #include <sys/types.h>
8920 #include <signal.h>
8921 $signal_t blech(s) int s; { exit(7); }
8922 $signal_t blech_in_list(s) int s; { exit(4); }
8923 unsigned long dummy_long(p) unsigned long p; { return p; }
8924 unsigned int dummy_int(p) unsigned int p; { return p; }
8925 unsigned short dummy_short(p) unsigned short p; { return p; }
8926 int main()
8927 {
8928         double f;
8929         unsigned long along;
8930         unsigned int aint;
8931         unsigned short ashort;
8932         int result = 0;
8933         char str[16];
8934         
8935         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8936            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8937            optimized the whole file away
8938         */
8939         /* Store the number in a writable string for gcc to pass to 
8940            sscanf under HP/UX.
8941         */
8942         sprintf(str, "-123");
8943         sscanf(str, "%lf", &f);  /* f = -123.; */
8944
8945         signal(SIGFPE, blech);
8946         along = (unsigned long)f;
8947         aint = (unsigned int)f;
8948         ashort = (unsigned short)f;
8949         if (along != (unsigned long)-123)
8950                 result |= 1;
8951         if (aint != (unsigned int)-123)
8952                 result |= 1;
8953         if (ashort != (unsigned short)-123)
8954                 result |= 1;
8955         sprintf(str, "1073741824.");
8956         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8957         f = f + f;
8958         along = 0;
8959         along = (unsigned long)f;
8960         if (along != 0x80000000)
8961                 result |= 2;
8962         f -= 1.;
8963         along = 0;
8964         along = (unsigned long)f;
8965         if (along != 0x7fffffff)
8966                 result |= 1;
8967         f += 2.;
8968         along = 0;
8969         along = (unsigned long)f;
8970         if (along != 0x80000001)
8971                 result |= 2;
8972         if (result)
8973                 exit(result);
8974         signal(SIGFPE, blech_in_list);
8975         sprintf(str, "123.");
8976         sscanf(str, "%lf", &f);  /* f = 123.; */
8977         along = dummy_long((unsigned long)f);
8978         aint = dummy_int((unsigned int)f);
8979         ashort = dummy_short((unsigned short)f);
8980         if (along != (unsigned long)123)
8981                 result |= 4;
8982         if (aint != (unsigned int)123)
8983                 result |= 4;
8984         if (ashort != (unsigned short)123)
8985                 result |= 4;
8986         exit(result);
8987
8988 }
8989 EOCP
8990 set try
8991 if eval $compile_ok; then
8992         $run ./try
8993         castflags=$?
8994 else
8995         echo "(I can't seem to compile the test program--assuming it can't)"
8996         castflags=7
8997 fi
8998 case "$castflags" in
8999 0)      val="$define"
9000         echo "Yup, it can."
9001         ;;
9002 *)      val="$undef"
9003         echo "Nope, it can't."
9004         ;;
9005 esac
9006 set d_castneg
9007 eval $setvar
9008 $rm -f try.*
9009
9010 : see if vprintf exists
9011 echo " "
9012 if set vprintf val -f d_vprintf; eval $csym; $val; then
9013         echo 'vprintf() found.' >&4
9014         val="$define"
9015         $cat >try.c <<'EOF'
9016 #include <varargs.h>
9017
9018 int main() { xxx("foo"); }
9019
9020 xxx(va_alist)
9021 va_dcl
9022 {
9023         va_list args;
9024         char buf[10];
9025
9026         va_start(args);
9027         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9028 }
9029 EOF
9030         set try
9031         if eval $compile && $run ./try; then
9032                 echo "Your vsprintf() returns (int)." >&4
9033                 val2="$undef"
9034         else
9035                 echo "Your vsprintf() returns (char*)." >&4
9036                 val2="$define"
9037         fi
9038 else
9039         echo 'vprintf() NOT found.' >&4
9040                 val="$undef"
9041                 val2="$undef"
9042 fi
9043 $rm -f try try.*
9044 set d_vprintf
9045 eval $setvar
9046 val=$val2
9047 set d_charvspr
9048 eval $setvar
9049
9050 : see if chown exists
9051 set chown d_chown
9052 eval $inlibc
9053
9054 : see if chroot exists
9055 set chroot d_chroot
9056 eval $inlibc
9057
9058 : see if chsize exists
9059 set chsize d_chsize
9060 eval $inlibc
9061
9062 hasstruct='varname=$1; struct=$2; shift; shift;
9063 while $test $# -ge 2; do
9064         case "$1" in
9065         $define) echo "#include <$2>";;
9066         esac ;
9067     shift 2;
9068 done > try.c;
9069 echo "int main () { struct $struct foo; }" >> try.c;
9070 set try;
9071 if eval $compile; then
9072         val="$define";
9073 else
9074         val="$undef";
9075 fi;
9076 set $varname;
9077 eval $setvar;
9078 $rm -f try.c try.o'
9079
9080 : see if sys/types.h has to be included
9081 set sys/types.h i_systypes
9082 eval $inhdr
9083
9084 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9085 while $test $# -ge 2; do
9086         case "$1" in
9087         $define) echo "#include <$2>";;
9088         esac ;
9089     shift 2;
9090 done > try.c;
9091 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9092 set try;
9093 if eval $compile; then
9094         val="$define";
9095 else
9096         val="$undef";
9097 fi;
9098 set $varname;
9099 eval $setvar;
9100 $rm -f try.c try.o'
9101
9102 socketlib=''
9103 sockethdr=''
9104 : see whether socket exists
9105 echo " "
9106 $echo $n "Hmm... $c" >&4
9107 if set socket val -f d_socket; eval $csym; $val; then
9108         echo "Looks like you have Berkeley networking support." >&4
9109         d_socket="$define"
9110         if set setsockopt val -f; eval $csym; $val; then
9111                 d_oldsock="$undef"
9112         else
9113                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9114                 d_oldsock="$define"
9115         fi
9116 else
9117         if $contains socklib libc.list >/dev/null 2>&1; then
9118                 echo "Looks like you have Berkeley networking support." >&4
9119                 d_socket="$define"
9120                 : we will have to assume that it supports the 4.2 BSD interface
9121                 d_oldsock="$undef"
9122         else
9123                 echo "You don't have Berkeley networking in libc$_a..." >&4
9124                 if test "X$d_socket" = "X$define"; then
9125                    echo "...but you seem to believe that you have sockets." >&4
9126                 else
9127                         for net in net socket
9128                         do
9129                                 if test -f /usr/lib/lib$net$_a; then
9130                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9131                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9132                                         if $contains socket libc.list >/dev/null 2>&1; then
9133                                                 d_socket="$define"
9134                                                 socketlib="-l$net"
9135                                                 case "$net" in
9136                                                 net)
9137                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9138                                                         sockethdr="-I/usr/netinclude"
9139                                                         ;;
9140                                                 esac
9141                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9142                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9143                                                         d_oldsock="$undef"
9144                                                 else
9145                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9146                                                         d_oldsock="$define"
9147                                                 fi
9148                                                 break
9149                                         fi
9150                                 fi
9151                         done
9152                         if test "X$d_socket" != "X$define"; then
9153                            echo "or anywhere else I see." >&4
9154                            d_socket="$undef"
9155                            d_oldsock="$undef"
9156                         fi
9157                 fi
9158         fi
9159 fi
9160
9161 : see if socketpair exists
9162 set socketpair d_sockpair
9163 eval $inlibc
9164
9165
9166 echo " "
9167 echo "Checking the availability of certain socket constants..." >& 4
9168 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9169         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9170         $cat >try.c <<EOF
9171 #include <sys/types.h>
9172 #include <sys/socket.h>
9173 int main() {
9174     int i = $ENUM;
9175 }
9176 EOF
9177         val="$undef"
9178         set try; if eval $compile; then
9179                 val="$define"
9180         fi
9181         set d_${enum}; eval $setvar
9182         $rm -f try.c try
9183 done
9184
9185 : see if this is a sys/uio.h system
9186 set sys/uio.h i_sysuio
9187 eval $inhdr
9188
9189
9190 echo " "
9191 echo "Checking to see if your system supports struct cmsghdr..." >&4
9192 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9193 eval $hasstruct
9194 case "$d_cmsghdr_s" in
9195 "$define")      echo "Yes, it does."   ;;
9196 *)              echo "No, it doesn't." ;;
9197 esac
9198
9199
9200 : check for const keyword
9201 echo " "
9202 echo 'Checking to see if your C compiler knows about "const"...' >&4
9203 $cat >const.c <<'EOCP'
9204 typedef struct spug { int drokk; } spug;
9205 int main()
9206 {
9207         const char *foo;
9208         const spug y;
9209 }
9210 EOCP
9211 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9212         val="$define"
9213         echo "Yup, it does."
9214 else
9215         val="$undef"
9216         echo "Nope, it doesn't."
9217 fi
9218 set d_const
9219 eval $setvar
9220
9221 : see if crypt exists
9222 echo " "
9223 if set crypt val -f d_crypt; eval $csym; $val; then
9224         echo 'crypt() found.' >&4
9225         val="$define"
9226         cryptlib=''
9227 else
9228         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9229         if $test -z "$cryptlib"; then
9230                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9231         else
9232                 cryptlib=-lcrypt
9233         fi
9234         if $test -z "$cryptlib"; then
9235                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9236         else
9237                 cryptlib=-lcrypt
9238         fi
9239         if $test -z "$cryptlib"; then
9240                 cryptlib=`./loc libcrypt$_a "" $libpth`
9241         else
9242                 cryptlib=-lcrypt
9243         fi
9244         if $test -z "$cryptlib"; then
9245                 echo 'crypt() NOT found.' >&4
9246                 val="$undef"
9247         else
9248                 val="$define"
9249         fi
9250 fi
9251 set d_crypt
9252 eval $setvar
9253
9254 : get csh whereabouts
9255 case "$csh" in
9256 'csh') val="$undef" ;;
9257 *) val="$define" ;;
9258 esac
9259 set d_csh
9260 eval $setvar
9261 : Respect a hint or command line value for full_csh.
9262 case "$full_csh" in
9263 '') full_csh=$csh ;;
9264 esac
9265
9266 : see if cuserid exists
9267 set cuserid d_cuserid
9268 eval $inlibc
9269
9270 : see if this is a limits.h system
9271 set limits.h i_limits
9272 eval $inhdr
9273
9274 : see if this is a float.h system
9275 set float.h i_float
9276 eval $inhdr
9277
9278 : See if number of significant digits in a double precision number is known
9279 echo " "
9280 $cat >dbl_dig.c <<EOM
9281 #$i_limits I_LIMITS
9282 #$i_float I_FLOAT
9283 #ifdef I_LIMITS
9284 #include <limits.h>
9285 #endif
9286 #ifdef I_FLOAT
9287 #include <float.h>
9288 #endif
9289 #ifdef DBL_DIG
9290 printf("Contains DBL_DIG");
9291 #endif
9292 EOM
9293 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9294 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9295         echo "DBL_DIG found." >&4
9296         val="$define"
9297 else
9298         echo "DBL_DIG NOT found." >&4
9299         val="$undef"
9300 fi
9301 $rm -f dbl_dig.?
9302 set d_dbl_dig
9303 eval $setvar
9304
9305 hasproto='varname=$1; func=$2; shift; shift;
9306 while $test $# -ge 2; do
9307         case "$1" in
9308         $define) echo "#include <$2>";;
9309         esac ;
9310     shift 2;
9311 done > try.c;
9312 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9313 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9314         echo "$func() prototype found.";
9315         val="$define";
9316 else
9317         echo "$func() prototype NOT found.";
9318         val="$undef";
9319 fi;
9320 set $varname;
9321 eval $setvar;
9322 $rm -f try.c tryout.c'
9323
9324 : see if dbm.h is available
9325 : see if dbmclose exists
9326 set dbmclose d_dbmclose
9327 eval $inlibc
9328
9329 case "$d_dbmclose" in
9330 $define)
9331         set dbm.h i_dbm
9332         eval $inhdr
9333         case "$i_dbm" in
9334         $define)
9335                 val="$undef"
9336                 set i_rpcsvcdbm
9337                 eval $setvar
9338                 ;;
9339         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9340                 eval $inhdr
9341                 ;;
9342         esac
9343         ;;
9344 *)      echo "We won't be including <dbm.h>"
9345         val="$undef"
9346         set i_dbm
9347         eval $setvar
9348         val="$undef"
9349         set i_rpcsvcdbm
9350         eval $setvar
9351         ;;
9352 esac
9353
9354 : see if prototype for dbminit is available
9355 echo " "
9356 set d_dbminitproto dbminit $i_dbm dbm.h
9357 eval $hasproto
9358
9359 : see if difftime exists
9360 set difftime d_difftime
9361 eval $inlibc
9362
9363 : see if this is a dirent system
9364 echo " "
9365 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9366         val="$define"
9367         echo "<dirent.h> found." >&4
9368 else
9369         val="$undef"
9370         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9371                 echo "<sys/dir.h> found." >&4
9372                 echo " "
9373         else
9374                 xinc=`./findhdr sys/ndir.h`
9375         fi
9376         echo "<dirent.h> NOT found." >&4
9377 fi
9378 set i_dirent
9379 eval $setvar
9380
9381 : Look for type of directory structure.
9382 echo " "
9383 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9384
9385 case "$direntrytype" in
9386 ''|' ')
9387         case "$i_dirent" in
9388         $define) guess1='struct dirent' ;;
9389         *) guess1='struct direct'  ;;
9390         esac
9391         ;;
9392 *)      guess1="$direntrytype"
9393         ;;
9394 esac
9395
9396 case "$guess1" in
9397 'struct dirent') guess2='struct direct' ;;
9398 *) guess2='struct dirent' ;;
9399 esac
9400                 
9401 if $contains "$guess1" try.c >/dev/null 2>&1; then
9402         direntrytype="$guess1"
9403         echo "Your directory entries are $direntrytype." >&4
9404 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9405         direntrytype="$guess2"
9406         echo "Your directory entries seem to be $direntrytype." >&4
9407 else
9408         echo "I don't recognize your system's directory entries." >&4
9409         rp="What type is used for directory entries on this system?"
9410         dflt="$guess1"
9411         . ./myread
9412         direntrytype="$ans"
9413 fi
9414 $rm -f try.c
9415
9416
9417 : see if the directory entry stores field length
9418 echo " "
9419 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9420 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9421         echo "Good, your directory entry keeps length information in d_namlen." >&4
9422         val="$define"
9423 else
9424         echo "Your directory entry does not know about the d_namlen field." >&4
9425         val="$undef"
9426 fi
9427 set d_dirnamlen
9428 eval $setvar
9429 $rm -f try.c
9430
9431 : see if dlerror exists
9432 xxx_runnm="$runnm"
9433 runnm=false
9434 set dlerror d_dlerror
9435 eval $inlibc
9436 runnm="$xxx_runnm"
9437
9438 : see if dlfcn is available
9439 set dlfcn.h i_dlfcn
9440 eval $inhdr
9441
9442 case "$usedl" in
9443 $define|y|true)
9444         $cat << EOM
9445
9446 On a few systems, the dynamically loaded modules that perl generates and uses
9447 will need a different extension than shared libs. The default will probably
9448 be appropriate.
9449
9450 EOM
9451         case "$dlext" in
9452         '')     dflt="$so" ;;
9453         *)      dflt="$dlext" ;;
9454         esac
9455         rp='What is the extension of dynamically loaded modules'
9456         . ./myread
9457         dlext="$ans"
9458         ;;
9459 *)
9460         dlext="none"
9461         ;;
9462 esac
9463
9464 : Check if dlsym need a leading underscore
9465 echo " "
9466 val="$undef"
9467
9468 case "$dlsrc" in
9469 dl_dlopen.xs)
9470         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9471         $cat >dyna.c <<'EOM'
9472 fred () { }
9473 EOM
9474
9475 $cat >fred.c<<EOM
9476
9477 #include <stdio.h>
9478 #$i_dlfcn I_DLFCN
9479 #ifdef I_DLFCN
9480 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9481 #else
9482 #include <sys/types.h>
9483 #include <nlist.h>
9484 #include <link.h>
9485 #endif
9486
9487 extern int fred() ;
9488
9489 int main()
9490 {
9491     void * handle ;
9492     void * symbol ;
9493 #ifndef RTLD_LAZY
9494     int mode = 1 ;
9495 #else
9496     int mode = RTLD_LAZY ;
9497 #endif
9498     handle = dlopen("./dyna.$dlext", mode) ;
9499     if (handle == NULL) {
9500         printf ("1\n") ;
9501         fflush (stdout) ;
9502         exit(0);
9503     }
9504     symbol = dlsym(handle, "fred") ;
9505     if (symbol == NULL) {
9506         /* try putting a leading underscore */
9507         symbol = dlsym(handle, "_fred") ;
9508         if (symbol == NULL) {
9509             printf ("2\n") ;
9510             fflush (stdout) ;
9511             exit(0);
9512         }
9513         printf ("3\n") ;
9514     }
9515     else
9516         printf ("4\n") ;
9517     fflush (stdout) ;
9518     exit(0);
9519 }
9520 EOM
9521         : Call the object file tmp-dyna.o in case dlext=o.
9522         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9523                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9524                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9525                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9526                 xxx=`$run ./fred`
9527                 case $xxx in
9528                 1)      echo "Test program failed using dlopen." >&4
9529                         echo "Perhaps you should not use dynamic loading." >&4;;
9530                 2)      echo "Test program failed using dlsym." >&4
9531                         echo "Perhaps you should not use dynamic loading." >&4;;
9532                 3)      echo "dlsym needs a leading underscore" >&4
9533                         val="$define" ;;
9534                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9535                 esac
9536         else
9537                 echo "I can't compile and run the test program." >&4
9538                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9539         fi
9540         ;;
9541 esac
9542                 
9543 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9544
9545 set d_dlsymun
9546 eval $setvar
9547
9548 : see if prototype for drand48 is available
9549 echo " "
9550 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9551 eval $hasproto
9552
9553 : see if dup2 exists
9554 set dup2 d_dup2
9555 eval $inlibc
9556
9557 : see if eaccess exists
9558 set eaccess d_eaccess
9559 eval $inlibc
9560
9561 : see if endgrent exists
9562 set endgrent d_endgrent
9563 eval $inlibc
9564
9565 : see if endhostent exists
9566 set endhostent d_endhent
9567 eval $inlibc
9568
9569 : see if endnetent exists
9570 set endnetent d_endnent
9571 eval $inlibc
9572
9573 : see if endprotoent exists
9574 set endprotoent d_endpent
9575 eval $inlibc
9576
9577 : see if endpwent exists
9578 set endpwent d_endpwent
9579 eval $inlibc
9580
9581 : see if endservent exists
9582 set endservent d_endsent
9583 eval $inlibc
9584
9585 : Locate the flags for 'open()'
9586 echo " "
9587 $cat >try.c <<'EOCP'
9588 #include <sys/types.h>
9589 #ifdef I_FCNTL
9590 #include <fcntl.h>
9591 #endif
9592 #ifdef I_SYS_FILE
9593 #include <sys/file.h>
9594 #endif
9595 int main() {
9596         if(O_RDONLY);
9597 #ifdef O_TRUNC
9598         exit(0);
9599 #else
9600         exit(1);
9601 #endif
9602 }
9603 EOCP
9604 : check sys/file.h first to get FREAD on Sun
9605 if $test `./findhdr sys/file.h` && \
9606                 set try -DI_SYS_FILE && eval $compile; then
9607         h_sysfile=true;
9608         echo "<sys/file.h> defines the O_* constants..." >&4
9609         if $run ./try; then
9610                 echo "and you have the 3 argument form of open()." >&4
9611                 val="$define"
9612         else
9613                 echo "but not the 3 argument form of open().  Oh, well." >&4
9614                 val="$undef"
9615         fi
9616 elif $test `./findhdr fcntl.h` && \
9617                 set try -DI_FCNTL && eval $compile; then
9618         h_fcntl=true;
9619         echo "<fcntl.h> defines the O_* constants..." >&4
9620         if $run ./try; then
9621                 echo "and you have the 3 argument form of open()." >&4
9622                 val="$define"
9623         else
9624                 echo "but not the 3 argument form of open().  Oh, well." >&4
9625                 val="$undef"
9626         fi
9627 else
9628         val="$undef"
9629         echo "I can't find the O_* constant definitions!  You got problems." >&4
9630 fi
9631 set d_open3
9632 eval $setvar
9633 $rm -f try try.*
9634
9635 : see which of string.h or strings.h is needed
9636 echo " "
9637 strings=`./findhdr string.h`
9638 if $test "$strings" && $test -r "$strings"; then
9639         echo "Using <string.h> instead of <strings.h>." >&4
9640         val="$define"
9641 else
9642         val="$undef"
9643         strings=`./findhdr strings.h`
9644         if $test "$strings" && $test -r "$strings"; then
9645                 echo "Using <strings.h> instead of <string.h>." >&4
9646         else
9647                 echo "No string header found -- You'll surely have problems." >&4
9648         fi
9649 fi
9650 set i_string
9651 eval $setvar
9652 case "$i_string" in
9653 "$undef") strings=`./findhdr strings.h`;;
9654 *)        strings=`./findhdr string.h`;;
9655 esac
9656
9657 : check for non-blocking I/O stuff
9658 case "$h_sysfile" in
9659 true) echo "#include <sys/file.h>" > head.c;;
9660 *)
9661        case "$h_fcntl" in
9662        true) echo "#include <fcntl.h>" > head.c;;
9663        *) echo "#include <sys/fcntl.h>" > head.c;;
9664        esac
9665        ;;
9666 esac
9667 echo " "
9668 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9669 case "$o_nonblock" in
9670 '')
9671         $cat head.c > try.c
9672         $cat >>try.c <<'EOCP'
9673 #include <stdio.h>
9674 #include <stdlib.h>
9675 int main() {
9676 #ifdef O_NONBLOCK
9677         printf("O_NONBLOCK\n");
9678         exit(0);
9679 #endif
9680 #ifdef O_NDELAY
9681         printf("O_NDELAY\n");
9682         exit(0);
9683 #endif
9684 #ifdef FNDELAY
9685         printf("FNDELAY\n");
9686         exit(0);
9687 #endif
9688         exit(0);
9689 }
9690 EOCP
9691         set try
9692         if eval $compile_ok; then
9693                 o_nonblock=`$run ./try`
9694                 case "$o_nonblock" in
9695                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9696                 *) echo "Seems like we can use $o_nonblock.";;
9697                 esac
9698         else
9699                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9700         fi
9701         ;;
9702 *) echo "Using $hint value $o_nonblock.";;
9703 esac
9704 $rm -f try try.* .out core
9705
9706 echo " "
9707 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9708 case "$eagain" in
9709 '')
9710         $cat head.c > try.c
9711         $cat >>try.c <<EOCP
9712 #include <errno.h>
9713 #include <sys/types.h>
9714 #include <signal.h>
9715 #include <stdio.h> 
9716 #include <stdlib.h> 
9717 #define MY_O_NONBLOCK $o_nonblock
9718 #ifndef errno  /* XXX need better Configure test */
9719 extern int errno;
9720 #endif
9721 #$i_unistd I_UNISTD
9722 #ifdef I_UNISTD
9723 #include <unistd.h>
9724 #endif
9725 #$i_string I_STRING
9726 #ifdef I_STRING
9727 #include <string.h>
9728 #else
9729 #include <strings.h>
9730 #endif
9731 $signal_t blech(x) int x; { exit(3); }
9732 EOCP
9733         $cat >> try.c <<'EOCP'
9734 int main()
9735 {
9736         int pd[2];
9737         int pu[2];
9738         char buf[1];
9739         char string[100];
9740
9741         pipe(pd);       /* Down: child -> parent */
9742         pipe(pu);       /* Up: parent -> child */
9743         if (0 != fork()) {
9744                 int ret;
9745                 close(pd[1]);   /* Parent reads from pd[0] */
9746                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9747 #ifdef F_SETFL
9748                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9749                         exit(1);
9750 #else
9751                 exit(4);
9752 #endif
9753                 signal(SIGALRM, blech);
9754                 alarm(5);
9755                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9756                         exit(2);
9757                 sprintf(string, "%d\n", ret);
9758                 write(2, string, strlen(string));
9759                 alarm(0);
9760 #ifdef EAGAIN
9761                 if (errno == EAGAIN) {
9762                         printf("EAGAIN\n");
9763                         goto ok;
9764                 }
9765 #endif
9766 #ifdef EWOULDBLOCK
9767                 if (errno == EWOULDBLOCK)
9768                         printf("EWOULDBLOCK\n");
9769 #endif
9770         ok:
9771                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9772                 sleep(2);                               /* Give it time to close our pipe */
9773                 alarm(5);
9774                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9775                 alarm(0);
9776                 sprintf(string, "%d\n", ret);
9777                 write(3, string, strlen(string));
9778                 exit(0);
9779         }
9780
9781         close(pd[0]);                   /* We write to pd[1] */
9782         close(pu[1]);                   /* We read from pu[0] */
9783         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9784         close(pd[1]);                   /* Pipe pd is now fully closed! */
9785         exit(0);                                /* Bye bye, thank you for playing! */
9786 }
9787 EOCP
9788         set try
9789         if eval $compile_ok; then
9790                 echo "$startsh" >mtry
9791                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9792                 chmod +x mtry
9793                 ./mtry >/dev/null 2>&1
9794                 case $? in
9795                 0) eagain=`$cat try.out`;;
9796                 1) echo "Could not perform non-blocking setting!";;
9797                 2) echo "I did a successful read() for something that was not there!";;
9798                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9799                 4) echo "Could not find F_SETFL!";;
9800                 *) echo "Something terribly wrong happened during testing.";;
9801                 esac
9802                 rd_nodata=`$cat try.ret`
9803                 echo "A read() system call with no data present returns $rd_nodata."
9804                 case "$rd_nodata" in
9805                 0|-1) ;;
9806                 *)
9807                         echo "(That's peculiar, fixing that to be -1.)"
9808                         rd_nodata=-1
9809                         ;;
9810                 esac
9811                 case "$eagain" in
9812                 '')
9813                         echo "Forcing errno EAGAIN on read() with no data available."
9814                         eagain=EAGAIN
9815                         ;;
9816                 *)
9817                         echo "Your read() sets errno to $eagain when no data is available."
9818                         ;;
9819                 esac
9820                 status=`$cat try.err`
9821                 case "$status" in
9822                 0) echo "And it correctly returns 0 to signal EOF.";;
9823                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9824                 *) echo "However, your read() returns '$status' on EOF??";;
9825                 esac
9826                 val="$define"
9827                 if test "$status" = "$rd_nodata"; then
9828                         echo "WARNING: you can't distinguish between EOF and no data!"
9829                         val="$undef"
9830                 fi
9831         else
9832                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9833                 eagain=EAGAIN
9834         fi
9835         set d_eofnblk
9836         eval $setvar
9837         ;;
9838 *)
9839         echo "Using $hint value $eagain."
9840         echo "Your read() returns $rd_nodata when no data is present."
9841         case "$d_eofnblk" in
9842         "$define") echo "And you can see EOF because read() returns 0.";;
9843         "$undef") echo "But you can't see EOF status from read() returned value.";;
9844         *)
9845                 echo "(Assuming you can't see EOF status from read anyway.)"
9846                 d_eofnblk=$undef
9847                 ;;
9848         esac
9849         ;;
9850 esac
9851 $rm -f try try.* .out core head.c mtry
9852
9853 : see if fchdir exists
9854 set fchdir d_fchdir
9855 eval $inlibc
9856
9857 : see if fchmod exists
9858 set fchmod d_fchmod
9859 eval $inlibc
9860
9861 : see if fchown exists
9862 set fchown d_fchown
9863 eval $inlibc
9864
9865 : see if this is an fcntl system
9866 set fcntl d_fcntl
9867 eval $inlibc
9868
9869 echo " "
9870 : See if fcntl-based locking works.
9871 $cat >try.c <<EOCP
9872 #include <stdlib.h>
9873 #include <unistd.h>
9874 #include <fcntl.h>
9875 #include <signal.h>
9876 $signal_t blech(x) int x; { exit(3); }
9877 int main() {
9878 #if defined(F_SETLK) && defined(F_SETLKW)
9879      struct flock flock;
9880      int retval, fd;
9881      fd = open("try.c", O_RDONLY);
9882      flock.l_type = F_RDLCK;
9883      flock.l_whence = SEEK_SET;
9884      flock.l_start = flock.l_len = 0;
9885      signal(SIGALRM, blech);
9886      alarm(10);
9887      retval = fcntl(fd, F_SETLK, &flock);
9888      close(fd);
9889      (retval < 0 ? exit(2) : exit(0));
9890 #else
9891      exit(2);
9892 #endif
9893 }
9894 EOCP
9895 echo "Checking if fcntl-based file locking works... "
9896 case "$d_fcntl" in
9897 "$define")
9898         set try
9899         if eval $compile_ok; then
9900                 if $run ./try; then
9901                         echo "Yes, it seems to work."
9902                         val="$define"
9903                 else
9904                         echo "Nope, it didn't work."
9905                         val="$undef"
9906                         case "$?" in
9907                         3) $cat >&4 <<EOM
9908 ***
9909 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9910 *** This is (almost) impossible.
9911 *** If your NFS lock daemons are not feeling well, something like
9912 *** this may happen, please investigate.  Cannot continue, aborting.
9913 ***
9914 EOM
9915                                 exit 1
9916                                 ;;
9917                         esac
9918                 fi
9919         else
9920                 echo "I'm unable to compile the test program, so I'll assume not."
9921                 val="$undef"
9922         fi
9923         ;;
9924 *) val="$undef";
9925         echo "Nope, since you don't even have fcntl()."
9926         ;;
9927 esac
9928 set d_fcntl_can_lock
9929 eval $setvar
9930 $rm -f try*
9931
9932
9933 : see if sys/select.h has to be included
9934 set sys/select.h i_sysselct
9935 eval $inhdr
9936
9937 : see if we should include time.h, sys/time.h, or both
9938 echo " "
9939 if test "X$timeincl" = X; then
9940         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9941         $echo $n "I'm now running the test program...$c"
9942         $cat >try.c <<'EOCP'
9943 #include <sys/types.h>
9944 #ifdef I_TIME
9945 #include <time.h>
9946 #endif
9947 #ifdef I_SYSTIME
9948 #ifdef SYSTIMEKERNEL
9949 #define KERNEL
9950 #endif
9951 #include <sys/time.h>
9952 #endif
9953 #ifdef I_SYSSELECT
9954 #include <sys/select.h>
9955 #endif
9956 int main()
9957 {
9958         struct tm foo;
9959 #ifdef S_TIMEVAL
9960         struct timeval bar;
9961 #endif
9962 #ifdef S_TIMEZONE
9963         struct timezone tzp;
9964 #endif
9965         if (foo.tm_sec == foo.tm_sec)
9966                 exit(0);
9967 #ifdef S_TIMEVAL
9968         if (bar.tv_sec == bar.tv_sec)
9969                 exit(0);
9970 #endif
9971         exit(1);
9972 }
9973 EOCP
9974         flags=''
9975         for s_timezone in '-DS_TIMEZONE' ''; do
9976         sysselect=''
9977         for s_timeval in '-DS_TIMEVAL' ''; do
9978         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9979         for i_time in '' '-DI_TIME'; do
9980         for i_systime in '-DI_SYSTIME' ''; do
9981                 case "$flags" in
9982                 '') $echo $n ".$c"
9983                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9984                         if eval $compile; then
9985                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9986                                 shift
9987                                 flags="$*"
9988                                 echo " "
9989                                 $echo $n "Succeeded with $flags$c"
9990                         fi
9991                         ;;
9992                 esac
9993         done
9994         done
9995         done
9996         done
9997         done
9998         timeincl=''
9999         echo " "
10000         case "$flags" in
10001         *SYSTIMEKERNEL*) i_systimek="$define"
10002                 timeincl=`./findhdr sys/time.h`
10003                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10004         *) i_systimek="$undef";;
10005         esac
10006         case "$flags" in
10007         *I_TIME*) i_time="$define"
10008                 timeincl=`./findhdr time.h`" $timeincl"
10009                 echo "We'll include <time.h>." >&4;;
10010         *) i_time="$undef";;
10011         esac
10012         case "$flags" in
10013         *I_SYSTIME*) i_systime="$define"
10014                 timeincl=`./findhdr sys/time.h`" $timeincl"
10015                 echo "We'll include <sys/time.h>." >&4;;
10016         *) i_systime="$undef";;
10017         esac
10018         $rm -f try.c try
10019 fi
10020
10021 : check for fd_set items
10022 $cat <<EOM
10023
10024 Checking to see how well your C compiler handles fd_set and friends ...
10025 EOM
10026 $cat >try.c <<EOCP
10027 #$i_systime I_SYS_TIME
10028 #$i_sysselct I_SYS_SELECT
10029 #$d_socket HAS_SOCKET
10030 #include <sys/types.h>
10031 #ifdef HAS_SOCKET
10032 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10033 #endif
10034 #ifdef I_SYS_TIME
10035 #include <sys/time.h>
10036 #endif
10037 #ifdef I_SYS_SELECT
10038 #include <sys/select.h>
10039 #endif
10040 int main() {
10041         fd_set fds;
10042
10043 #ifdef TRYBITS
10044         if(fds.fds_bits);
10045 #endif
10046
10047 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10048         exit(0);
10049 #else
10050         exit(1);
10051 #endif
10052 }
10053 EOCP
10054 set try -DTRYBITS
10055 if eval $compile; then
10056         d_fds_bits="$define"
10057         d_fd_set="$define"
10058         echo "Well, your system knows about the normal fd_set typedef..." >&4
10059         if $run ./try; then
10060                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10061                 d_fd_macros="$define"
10062         else
10063                 $cat >&4 <<'EOM'
10064 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10065 EOM
10066                 d_fd_macros="$undef"
10067         fi
10068 else
10069         $cat <<'EOM'
10070 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10071 EOM
10072         set try
10073         if eval $compile; then
10074                 d_fds_bits="$undef"
10075                 d_fd_set="$define"
10076                 echo "Well, your system has some sort of fd_set available..." >&4
10077                 if $run ./try; then
10078                         echo "and you have the normal fd_set macros." >&4
10079                         d_fd_macros="$define"
10080                 else
10081                         $cat <<'EOM'
10082 but not the normal fd_set macros!  Gross!  More work for me...
10083 EOM
10084                         d_fd_macros="$undef"
10085                 fi
10086         else
10087         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10088                 d_fd_set="$undef"
10089                 d_fds_bits="$undef"
10090                 d_fd_macros="$undef"
10091         fi
10092 fi
10093 $rm -f try try.*
10094
10095 : see if fgetpos exists
10096 set fgetpos d_fgetpos
10097 eval $inlibc
10098
10099 : see if flock exists
10100 set flock d_flock
10101 eval $inlibc
10102
10103 : see if this is a sys/file.h system
10104 val=''
10105 set sys/file.h val
10106 eval $inhdr
10107
10108 : do we need to include sys/file.h ?
10109 case "$val" in
10110 "$define")
10111         echo " "
10112         if $h_sysfile; then
10113                 val="$define"
10114                 echo "We'll be including <sys/file.h>." >&4
10115         else
10116                 val="$undef"
10117                 echo "We won't be including <sys/file.h>." >&4
10118         fi
10119         ;;
10120 *)
10121         h_sysfile=false
10122         ;;
10123 esac
10124 set i_sysfile
10125 eval $setvar
10126
10127 : see if prototype for flock is available
10128 echo " "
10129 set d_flockproto flock $i_sysfile sys/file.h
10130 eval $hasproto
10131
10132 : see if fork exists
10133 set fork d_fork
10134 eval $inlibc
10135
10136 : see if pathconf exists
10137 set pathconf d_pathconf
10138 eval $inlibc
10139
10140 : see if fpathconf exists
10141 set fpathconf d_fpathconf
10142 eval $inlibc
10143
10144
10145 : check for fpos64_t
10146 echo " "
10147 echo "Checking to see if you have fpos64_t..." >&4
10148 $cat >try.c <<EOCP
10149 #include <stdio.h>
10150 int main() { fpos64_t x = 7; }
10151 EOCP
10152 set try
10153 if eval $compile; then
10154         val="$define"
10155         echo "You have fpos64_t."
10156 else
10157         val="$undef"
10158         echo "You do not have fpos64_t."
10159         case "$fpossize" in
10160         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10161         esac
10162 fi
10163 $rm -f try.* try
10164 set d_fpos64_t
10165 eval $setvar
10166
10167 : see if frexpl exists
10168 set frexpl d_frexpl
10169 eval $inlibc
10170
10171 : see if this is a sys/param system
10172 set sys/param.h i_sysparam
10173 eval $inhdr
10174
10175 : see if this is a sys/mount.h system
10176 set sys/mount.h i_sysmount
10177 eval $inhdr
10178
10179
10180 echo " "
10181 echo "Checking to see if your system supports struct fs_data..." >&4
10182 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10183 eval $hasstruct
10184 case "$d_fs_data_s" in
10185 "$define")      echo "Yes, it does."   ;;
10186 *)              echo "No, it doesn't." ;;
10187 esac
10188
10189 : see if fseeko exists
10190 set fseeko d_fseeko
10191 eval $inlibc
10192 case "$longsize" in
10193 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10194 esac
10195
10196 : see if fsetpos exists
10197 set fsetpos d_fsetpos
10198 eval $inlibc
10199
10200
10201 : see if fstatfs exists
10202 set fstatfs d_fstatfs
10203 eval $inlibc
10204
10205
10206 : see if statvfs exists
10207 set statvfs d_statvfs
10208 eval $inlibc
10209
10210 : see if fstatvfs exists
10211 set fstatvfs d_fstatvfs
10212 eval $inlibc
10213
10214
10215 : see if fsync exists
10216 set fsync d_fsync
10217 eval $inlibc
10218
10219 : see if ftello exists
10220 set ftello d_ftello
10221 eval $inlibc
10222 case "$longsize" in
10223 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10224 esac
10225
10226 : see if getcwd exists
10227 set getcwd d_getcwd
10228 eval $inlibc
10229
10230 : see if getespwnam exists
10231 set getespwnam d_getespwnam
10232 eval $inlibc
10233
10234
10235 : see if getfsstat exists
10236 set getfsstat d_getfsstat
10237 eval $inlibc
10238
10239 : see if getgrent exists
10240 set getgrent d_getgrent
10241 eval $inlibc
10242
10243 : see if gethostbyaddr exists
10244 set gethostbyaddr d_gethbyaddr
10245 eval $inlibc
10246
10247 : see if gethostbyname exists
10248 set gethostbyname d_gethbyname
10249 eval $inlibc
10250
10251 : see if gethostent exists
10252 set gethostent d_gethent
10253 eval $inlibc
10254
10255 : see how we will look up host name
10256 echo " "
10257 call=''
10258 if set gethostname val -f d_gethname; eval $csym; $val; then
10259         echo 'gethostname() found.' >&4
10260         d_gethname="$define"
10261         call=gethostname
10262 fi
10263 if set uname val -f d_uname; eval $csym; $val; then
10264         if ./xenix; then
10265                 $cat <<'EOM'
10266 uname() was found, but you're running xenix, and older versions of xenix
10267 have a broken uname(). If you don't really know whether your xenix is old
10268 enough to have a broken system call, use the default answer.
10269
10270 EOM
10271                 dflt=y
10272                 case "$d_uname" in
10273                 "$define") dflt=n;;
10274                 esac
10275                 rp='Is your uname() broken?'
10276                 . ./myread
10277                 case "$ans" in
10278                 n*) d_uname="$define"; call=uname;;
10279                 esac
10280         else
10281                 echo 'uname() found.' >&4
10282                 d_uname="$define"
10283                 case "$call" in
10284                 '') call=uname ;;
10285                 esac
10286         fi
10287 fi
10288 case "$d_gethname" in
10289 '') d_gethname="$undef";;
10290 esac
10291 case "$d_uname" in
10292 '') d_uname="$undef";;
10293 esac
10294 case "$d_uname$d_gethname" in
10295 *define*)
10296         dflt=n
10297         cat <<EOM
10298  
10299 Every now and then someone has a $call() that lies about the hostname
10300 but can't be fixed for political or economic reasons.  If you wish, I can
10301 pretend $call() isn't there and maybe compute hostname at run-time
10302 thanks to the '$phostname' command.
10303
10304 EOM
10305         rp="Shall I ignore $call() from now on?"
10306         . ./myread
10307         case "$ans" in
10308         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10309         esac;;
10310 esac
10311 case "$phostname" in
10312 '') aphostname='';;
10313 *) case "$aphostname" in
10314         /*) ;;
10315         *) set X $phostname
10316                 shift
10317                 file=$1
10318                 shift
10319                 file=`./loc $file $file $pth`
10320                 aphostname=`echo $file $*`
10321                 ;;
10322         esac
10323         ;;
10324 esac
10325 case "$d_uname$d_gethname" in
10326 *define*) ;;
10327 *)
10328         case "$phostname" in
10329         '')
10330                 echo "There will be no way for $package to get your hostname." >&4;;
10331         *)
10332         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10333                 ;;
10334         esac;;
10335 esac
10336 case "$d_phostname" in
10337 '') d_phostname="$undef";;
10338 esac
10339
10340 : see if this is a netdb.h system
10341 set netdb.h i_netdb
10342 eval $inhdr
10343
10344 : see if prototypes for various gethostxxx netdb.h functions are available
10345 echo " "
10346 set d_gethostprotos gethostent $i_netdb netdb.h
10347 eval $hasproto
10348
10349 : see if getitimer exists
10350 set getitimer d_getitimer
10351 eval $inlibc
10352
10353 : see if getlogin exists
10354 set getlogin d_getlogin
10355 eval $inlibc
10356
10357 : see if getmnt exists
10358 set getmnt d_getmnt
10359 eval $inlibc
10360
10361 : see if getmntent exists
10362 set getmntent d_getmntent
10363 eval $inlibc
10364
10365 : see if getnetbyaddr exists
10366 set getnetbyaddr d_getnbyaddr
10367 eval $inlibc
10368
10369 : see if getnetbyname exists
10370 set getnetbyname d_getnbyname
10371 eval $inlibc
10372
10373 : see if getnetent exists
10374 set getnetent d_getnent
10375 eval $inlibc
10376
10377 : see if prototypes for various getnetxxx netdb.h functions are available
10378 echo " "
10379 set d_getnetprotos getnetent $i_netdb netdb.h
10380 eval $hasproto
10381
10382 : see if getpagesize exists
10383 set getpagesize d_getpagsz
10384 eval $inlibc
10385
10386
10387 : see if getprotobyname exists
10388 set getprotobyname d_getpbyname
10389 eval $inlibc
10390
10391 : see if getprotobynumber exists
10392 set getprotobynumber d_getpbynumber
10393 eval $inlibc
10394
10395 : see if getprotoent exists
10396 set getprotoent d_getpent
10397 eval $inlibc
10398
10399 : see if getpgid exists
10400 set getpgid d_getpgid
10401 eval $inlibc
10402
10403 : see if getpgrp2 exists
10404 set getpgrp2 d_getpgrp2
10405 eval $inlibc
10406
10407 : see if getppid exists
10408 set getppid d_getppid
10409 eval $inlibc
10410
10411 : see if getpriority exists
10412 set getpriority d_getprior
10413 eval $inlibc
10414
10415 : see if prototypes for various getprotoxxx netdb.h functions are available
10416 echo " "
10417 set d_getprotoprotos getprotoent $i_netdb netdb.h
10418 eval $hasproto
10419
10420 : see if getprpwnam exists
10421 set getprpwnam d_getprpwnam
10422 eval $inlibc
10423
10424 : see if getpwent exists
10425 set getpwent d_getpwent
10426 eval $inlibc
10427
10428
10429 : see if getservbyname exists
10430 set getservbyname d_getsbyname
10431 eval $inlibc
10432
10433 : see if getservbyport exists
10434 set getservbyport d_getsbyport
10435 eval $inlibc
10436
10437 : see if getservent exists
10438 set getservent d_getsent
10439 eval $inlibc
10440
10441 : see if prototypes for various getservxxx netdb.h functions are available
10442 echo " "
10443 set d_getservprotos getservent $i_netdb netdb.h
10444 eval $hasproto
10445
10446 : see if getspnam exists
10447 set getspnam d_getspnam
10448 eval $inlibc
10449
10450 : see if gettimeofday or ftime exists
10451 set gettimeofday d_gettimeod
10452 eval $inlibc
10453 case "$d_gettimeod" in
10454 "$undef")
10455         set ftime d_ftime 
10456         eval $inlibc
10457         ;;
10458 *)
10459         val="$undef"; set d_ftime; eval $setvar
10460         ;;
10461 esac
10462 case "$d_gettimeod$d_ftime" in
10463 "$undef$undef")
10464         echo " "
10465         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10466         ;;
10467 esac
10468
10469 : see if this is an grp system
10470 set grp.h i_grp
10471 eval $inhdr
10472
10473 case "$i_grp" in
10474 $define)
10475         xxx=`./findhdr grp.h`
10476         $cppstdin $cppflags $cppminus < $xxx >$$.h
10477
10478         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10479                 val="$define"
10480         else
10481                 val="$undef"
10482         fi
10483         set d_grpasswd
10484         eval $setvar
10485
10486         $rm -f $$.h
10487         ;;
10488 *)
10489         val="$undef";
10490         set d_grpasswd; eval $setvar
10491         ;;
10492 esac
10493
10494 : see if hasmntopt exists
10495 set hasmntopt d_hasmntopt
10496 eval $inlibc
10497
10498 : see if this is a netinet/in.h or sys/in.h system
10499 set netinet/in.h i_niin sys/in.h i_sysin
10500 eval $inhdr
10501
10502 : see if arpa/inet.h has to be included
10503 set arpa/inet.h i_arpainet
10504 eval $inhdr
10505
10506 : see if htonl --and friends-- exists
10507 val=''
10508 set htonl val
10509 eval $inlibc
10510
10511 : Maybe they are macros.
10512 case "$val" in
10513 $undef)
10514         $cat >htonl.c <<EOM
10515 #include <stdio.h>
10516 #include <sys/types.h>
10517 #$i_niin I_NETINET_IN
10518 #$i_sysin I_SYS_IN
10519 #$i_arpainet I_ARPA_INET
10520 #ifdef I_NETINET_IN
10521 #include <netinet/in.h>
10522 #endif
10523 #ifdef I_SYS_IN
10524 #include <sys/in.h>
10525 #endif
10526 #ifdef I_ARPA_INET
10527 #include <arpa/inet.h>
10528 #endif
10529 #ifdef htonl
10530 printf("Defined as a macro.");
10531 #endif
10532 EOM
10533         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10534         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10535                 val="$define"
10536                 echo "But it seems to be defined as a macro." >&4
10537         fi
10538         $rm -f htonl.?
10539         ;;
10540 esac
10541 set d_htonl
10542 eval $setvar
10543
10544 : see if iconv exists
10545 set iconv d_iconv
10546 eval $inlibc
10547
10548 : index or strchr
10549 echo " "
10550 if set index val -f; eval $csym; $val; then
10551         if set strchr val -f d_strchr; eval $csym; $val; then
10552                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10553                         val="$define"
10554                         vali="$undef"
10555                         echo "strchr() found." >&4
10556                 else
10557                         val="$undef"
10558                         vali="$define"
10559                         echo "index() found." >&4
10560                 fi
10561         else
10562                 val="$undef"
10563                 vali="$define"
10564                 echo "index() found." >&4
10565         fi
10566 else
10567         if set strchr val -f d_strchr; eval $csym; $val; then
10568                 val="$define"
10569                 vali="$undef"
10570                 echo "strchr() found." >&4
10571         else
10572                 echo "No index() or strchr() found!" >&4
10573                 val="$undef"
10574                 vali="$undef"
10575         fi
10576 fi
10577 set d_strchr; eval $setvar
10578 val="$vali"
10579 set d_index; eval $setvar
10580
10581 : check whether inet_aton exists
10582 set inet_aton d_inetaton
10583 eval $inlibc
10584
10585 : Look for isascii
10586 echo " "
10587 $cat >isascii.c <<'EOCP'
10588 #include <stdio.h>
10589 #include <ctype.h>
10590 int main() {
10591         int c = 'A';
10592         if (isascii(c))
10593                 exit(0);
10594         else
10595                 exit(1);
10596 }
10597 EOCP
10598 set isascii
10599 if eval $compile; then
10600         echo "isascii() found." >&4
10601         val="$define"
10602 else
10603         echo "isascii() NOT found." >&4
10604         val="$undef"
10605 fi
10606 set d_isascii
10607 eval $setvar
10608 $rm -f isascii*
10609
10610 : see if isnan exists
10611 set isnan d_isnan
10612 eval $inlibc
10613
10614 : see if isnanl exists
10615 set isnanl d_isnanl
10616 eval $inlibc
10617
10618 : see if killpg exists
10619 set killpg d_killpg
10620 eval $inlibc
10621
10622 : see if lchown exists
10623 echo " "
10624 $cat > try.c <<'EOCP'
10625 /* System header to define __stub macros and hopefully few prototypes,
10626     which can conflict with char lchown(); below.  */
10627 #include <assert.h>
10628 /* Override any gcc2 internal prototype to avoid an error.  */
10629 /* We use char because int might match the return type of a gcc2
10630    builtin and then its argument prototype would still apply.  */
10631 char lchown();
10632 int main() {
10633     /*  The GNU C library defines this for functions which it implements
10634         to always fail with ENOSYS.  Some functions are actually named
10635         something starting with __ and the normal name is an alias.  */
10636 #if defined (__stub_lchown) || defined (__stub___lchown)
10637 choke me
10638 #else
10639 lchown();
10640 #endif
10641 ; return 0; }
10642 EOCP
10643 set try
10644 if eval $compile; then
10645     $echo "lchown() found." >&4
10646     val="$define"
10647 else
10648     $echo "lchown() NOT found." >&4
10649     val="$undef"
10650 fi
10651 set d_lchown
10652 eval $setvar
10653
10654 : See if number of significant digits in a double precision number is known
10655 echo " "
10656 $cat >ldbl_dig.c <<EOM
10657 #$i_limits I_LIMITS
10658 #$i_float I_FLOAT
10659 #ifdef I_LIMITS
10660 #include <limits.h>
10661 #endif
10662 #ifdef I_FLOAT
10663 #include <float.h>
10664 #endif
10665 #ifdef LDBL_DIG
10666 printf("Contains LDBL_DIG");
10667 #endif
10668 EOM
10669 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10670 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10671         echo "LDBL_DIG found." >&4
10672         val="$define"
10673 else
10674         echo "LDBL_DIG NOT found." >&4
10675         val="$undef"
10676 fi
10677 $rm -f ldbl_dig.?
10678 set d_ldbl_dig
10679 eval $setvar
10680
10681 : see if link exists
10682 set link d_link
10683 eval $inlibc
10684
10685 : see if localeconv exists
10686 set localeconv d_locconv
10687 eval $inlibc
10688
10689 : see if lockf exists
10690 set lockf d_lockf
10691 eval $inlibc
10692
10693 : see if prototype for lseek is available
10694 echo " "
10695 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10696 eval $hasproto
10697
10698 : see if lstat exists
10699 set lstat d_lstat
10700 eval $inlibc
10701
10702 : see if madvise exists
10703 set madvise d_madvise
10704 eval $inlibc
10705
10706 : see if mblen exists
10707 set mblen d_mblen
10708 eval $inlibc
10709
10710 : see if mbstowcs exists
10711 set mbstowcs d_mbstowcs
10712 eval $inlibc
10713
10714 : see if mbtowc exists
10715 set mbtowc d_mbtowc
10716 eval $inlibc
10717
10718 : see if memchr exists
10719 set memchr d_memchr
10720 eval $inlibc
10721
10722 : see if memcmp exists
10723 set memcmp d_memcmp
10724 eval $inlibc
10725
10726 : see if memcpy exists
10727 set memcpy d_memcpy
10728 eval $inlibc
10729
10730 : see if memmove exists
10731 set memmove d_memmove
10732 eval $inlibc
10733
10734 : see if memset exists
10735 set memset d_memset
10736 eval $inlibc
10737
10738 : see if mkdir exists
10739 set mkdir d_mkdir
10740 eval $inlibc
10741
10742 : see if mkdtemp exists
10743 set mkdtemp d_mkdtemp
10744 eval $inlibc
10745
10746 : see if mkfifo exists
10747 set mkfifo d_mkfifo
10748 eval $inlibc
10749
10750 : see if mkstemp exists
10751 set mkstemp d_mkstemp
10752 eval $inlibc
10753
10754 : see if mkstemps exists
10755 set mkstemps d_mkstemps
10756 eval $inlibc
10757
10758 : see if mktime exists
10759 set mktime d_mktime
10760 eval $inlibc
10761
10762 : see if this is a sys/mman.h system
10763 set sys/mman.h i_sysmman
10764 eval $inhdr
10765
10766 : see if mmap exists
10767 set mmap d_mmap
10768 eval $inlibc
10769 : see what shmat returns
10770 : default to something harmless
10771 mmaptype='void *'
10772 case "$i_sysmman$d_mmap" in
10773 "$define$define")
10774         $cat >mmap.c <<'END'
10775 #include <sys/mman.h>
10776 void *mmap();
10777 END
10778         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10779                 mmaptype='void *'
10780         else
10781                 mmaptype='caddr_t'
10782         fi
10783         echo "and it returns ($mmaptype)." >&4
10784         ;;
10785 esac
10786
10787
10788
10789 : see if modfl exists
10790 set modfl d_modfl
10791 eval $inlibc
10792
10793 d_modfl_pow32_bug="$undef"
10794
10795 case "$d_longdbl$d_modfl" in
10796 $define$define)
10797         $cat <<EOM
10798 Checking to see whether your modfl() is okay for large values...
10799 EOM
10800 $cat >try.c <<EOCP
10801 #include <math.h> 
10802 #include <stdio.h>
10803 int main() {
10804     long double nv = 4294967303.15;
10805     long double v, w;
10806     v = modfl(nv, &w);         
10807 #ifdef __GLIBC__
10808     printf("glibc");
10809 #endif
10810     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10811     return 0;
10812 }
10813 EOCP
10814         case "$osname:$gccversion" in
10815         aix:)   saveccflags="$ccflags"
10816                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10817         esac
10818         set try
10819         if eval $compile; then
10820                 foo=`$run ./try`
10821                 case "$foo" in
10822                 *" 4294967303.150000 1.150000 4294967302.000000")
10823                         echo >&4 "Your modfl() is broken for large values."
10824                         d_modfl_pow32_bug="$define"
10825                         case "$foo" in
10826                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10827                         ;;
10828                         esac
10829                         ;;
10830                 *" 4294967303.150000 0.150000 4294967303.000000")
10831                         echo >&4 "Your modfl() seems okay for large values."
10832                         ;;
10833                 *)      echo >&4 "I don't understand your modfl() at all."
10834                         d_modfl="$undef"
10835                         ;;
10836                 esac
10837                 $rm -f try.* try core core.try.*
10838         else
10839                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10840                 d_modfl="$undef"
10841         fi
10842         case "$osname:$gccversion" in
10843         aix:)   ccflags="$saveccflags" ;; # restore
10844         esac
10845         ;;
10846 esac
10847
10848 : see if mprotect exists
10849 set mprotect d_mprotect
10850 eval $inlibc
10851
10852 : see if msgctl exists
10853 set msgctl d_msgctl
10854 eval $inlibc
10855
10856 : see if msgget exists
10857 set msgget d_msgget
10858 eval $inlibc
10859
10860 : see if msgsnd exists
10861 set msgsnd d_msgsnd
10862 eval $inlibc
10863
10864 : see if msgrcv exists
10865 set msgrcv d_msgrcv
10866 eval $inlibc
10867
10868 : see how much of the 'msg*(2)' library is present.
10869 h_msg=true
10870 echo " "
10871 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10872 *"$undef"*) h_msg=false;;
10873 esac
10874 case "$osname" in
10875 freebsd)
10876     case "`ipcs 2>&1`" in
10877     "SVID messages"*"not configured"*)
10878         echo "Your $osname does not have the msg*(2) configured." >&4
10879         h_msg=false
10880         val="$undef"
10881         set msgctl d_msgctl
10882         eval $setvar
10883         set msgget d_msgget
10884         eval $setvar
10885         set msgsnd d_msgsnd
10886         eval $setvar
10887         set msgrcv d_msgrcv
10888         eval $setvar
10889         ;;
10890     esac
10891     ;;
10892 esac
10893 : we could also check for sys/ipc.h ...
10894 if $h_msg && $test `./findhdr sys/msg.h`; then
10895         echo "You have the full msg*(2) library." >&4
10896         val="$define"
10897 else
10898         echo "You don't have the full msg*(2) library." >&4
10899         val="$undef"
10900 fi
10901 set d_msg
10902 eval $setvar
10903
10904
10905 echo " "
10906 echo "Checking to see if your system supports struct msghdr..." >&4
10907 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10908 eval $hasstruct
10909 case "$d_msghdr_s" in
10910 "$define")      echo "Yes, it does."   ;;
10911 *)              echo "No, it doesn't." ;;
10912 esac
10913
10914
10915 : see if msync exists
10916 set msync d_msync
10917 eval $inlibc
10918
10919 : see if munmap exists
10920 set munmap d_munmap
10921 eval $inlibc
10922
10923 : see if nice exists
10924 set nice d_nice
10925 eval $inlibc
10926
10927 : see if this is a langinfo.h system
10928 set langinfo.h i_langinfo
10929 eval $inhdr
10930
10931 : see if nl_langinfo exists
10932 set nl_langinfo d_nl_langinfo
10933 eval $inlibc
10934
10935 : check for length of character
10936 echo " "
10937 case "$charsize" in
10938 '')
10939         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10940         $cat >try.c <<'EOCP'
10941 #include <stdio.h>
10942 int main()
10943 {
10944     printf("%d\n", (int)sizeof(char));
10945     exit(0);
10946 }
10947 EOCP
10948         set try
10949         if eval $compile_ok; then
10950                 dflt=`$run ./try`
10951         else
10952                 dflt='1'
10953                 echo "(I can't seem to compile the test program.  Guessing...)"
10954         fi
10955         ;;
10956 *)
10957         dflt="$charsize"
10958         ;;
10959 esac
10960 rp="What is the size of a character (in bytes)?"
10961 . ./myread
10962 charsize="$ans"
10963 $rm -f try.c try
10964
10965 : check for volatile keyword
10966 echo " "
10967 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10968 $cat >try.c <<'EOCP'
10969 int main()
10970 {
10971         typedef struct _goo_struct goo_struct;
10972         goo_struct * volatile goo = ((goo_struct *)0);
10973         struct _goo_struct {
10974                 long long_int;
10975                 int reg_int;
10976                 char char_var;
10977         };
10978         typedef unsigned short foo_t;
10979         char *volatile foo;
10980         volatile int bar;
10981         volatile foo_t blech;
10982         foo = foo;
10983 }
10984 EOCP
10985 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10986         val="$define"
10987         echo "Yup, it does."
10988 else
10989         val="$undef"
10990         echo "Nope, it doesn't."
10991 fi
10992 set d_volatile
10993 eval $setvar
10994 $rm -f try.*
10995
10996
10997 echo " "
10998 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10999
11000 case "$use64bitint:$d_quad:$quadtype" in
11001 define:define:?*)
11002         ivtype="$quadtype"
11003         uvtype="$uquadtype"
11004         ivsize=8
11005         uvsize=8
11006         ;;
11007 *)      ivtype="long"
11008         uvtype="unsigned long"
11009         ivsize=$longsize
11010         uvsize=$longsize
11011         ;;
11012 esac
11013
11014 case "$uselongdouble:$d_longdbl" in
11015 define:define)
11016         nvtype="long double"
11017         nvsize=$longdblsize
11018         ;;
11019 *)      nvtype=double
11020         nvsize=$doublesize
11021         ;;
11022 esac
11023
11024 $echo "(IV will be "$ivtype", $ivsize bytes)"
11025 $echo "(UV will be "$uvtype", $uvsize bytes)"
11026 $echo "(NV will be "$nvtype", $nvsize bytes)"
11027
11028 $cat >try.c <<EOCP
11029 #$i_inttypes I_INTTYPES
11030 #ifdef I_INTTYPES
11031 #include <inttypes.h>
11032 #endif
11033 #include <stdio.h>
11034 int main() {
11035 #ifdef INT8
11036    int8_t i =  INT8_MAX;
11037   uint8_t u = UINT8_MAX;
11038   printf("int8_t\n");
11039 #endif
11040 #ifdef INT16
11041    int16_t i =  INT16_MAX;
11042   uint16_t i = UINT16_MAX;
11043   printf("int16_t\n");
11044 #endif
11045 #ifdef INT32
11046    int32_t i =  INT32_MAX;
11047   uint32_t u = UINT32_MAX;
11048   printf("int32_t\n");
11049 #endif
11050 }
11051 EOCP
11052
11053 case "$i8type" in
11054 '')     case "$charsize" in
11055         1)      i8type=char
11056                 u8type="unsigned char"
11057                 i8size=$charsize
11058                 u8size=$charsize
11059                 ;;
11060         esac
11061         ;;
11062 esac
11063 case "$i8type" in
11064 '')     set try -DINT8
11065         if eval $compile; then
11066                 case "`$run ./try`" in
11067                 int8_t) i8type=int8_t
11068                         u8type=uint8_t
11069                         i8size=1
11070                         u8size=1
11071                         ;;
11072                 esac
11073         fi
11074         ;;
11075 esac
11076 case "$i8type" in
11077 '')     if $test $charsize -ge 1; then
11078                 i8type=char
11079                 u8type="unsigned char"
11080                 i8size=$charsize
11081                 u8size=$charsize
11082         fi
11083         ;;
11084 esac
11085
11086 case "$i16type" in
11087 '')     case "$shortsize" in
11088         2)      i16type=short
11089                 u16type="unsigned short"
11090                 i16size=$shortsize
11091                 u16size=$shortsize
11092                 ;;
11093         esac
11094         ;;
11095 esac
11096 case "$i16type" in
11097 '')     set try -DINT16
11098         if eval $compile; then
11099                 case "`$run ./try`" in
11100                 int16_t)
11101                         i16type=int16_t
11102                         u16type=uint16_t
11103                         i16size=2
11104                         u16size=2
11105                         ;;
11106                 esac
11107         fi
11108         ;;
11109 esac
11110 case "$i16type" in
11111 '')     if $test $shortsize -ge 2; then
11112                 i16type=short
11113                 u16type="unsigned short"
11114                 i16size=$shortsize
11115                 u16size=$shortsize
11116         fi
11117         ;;
11118 esac
11119
11120 case "$i32type" in
11121 '')     case "$longsize" in
11122         4)      i32type=long
11123                 u32type="unsigned long"
11124                 i32size=$longsize
11125                 u32size=$longsize
11126                 ;;
11127         *)      case "$intsize" in
11128                 4)      i32type=int
11129                         u32type="unsigned int"
11130                         i32size=$intsize
11131                         u32size=$intsize
11132                         ;;
11133                 esac
11134                 ;;
11135         esac
11136         ;;
11137 esac
11138 case "$i32type" in
11139 '')     set try -DINT32
11140         if eval $compile; then
11141                 case "`$run ./try`" in
11142                 int32_t)
11143                         i32type=int32_t
11144                         u32type=uint32_t
11145                         i32size=4
11146                         u32size=4
11147                         ;;
11148                 esac
11149         fi
11150         ;;
11151 esac
11152 case "$i32type" in
11153 '')     if $test $intsize -ge 4; then
11154                 i32type=int
11155                 u32type="unsigned int"
11156                 i32size=$intsize
11157                 u32size=$intsize
11158         fi
11159         ;;
11160 esac
11161
11162 case "$i64type" in
11163 '')     case "$d_quad:$quadtype" in
11164         define:?*)
11165                 i64type="$quadtype"
11166                 u64type="$uquadtype"
11167                 i64size=8
11168                 u64size=8
11169                 ;;
11170         esac
11171         ;;
11172 esac
11173
11174 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11175 : volatile so that the compiler has to store it out to memory.
11176 if test X"$d_volatile" = X"$define"; then
11177         volatile=volatile
11178 fi
11179 $cat <<EOP >try.c
11180 #include <stdio.h>
11181 #include <sys/types.h>
11182 #include <signal.h>
11183 #ifdef SIGFPE
11184 $volatile int bletched = 0;
11185 $signal_t blech(s) int s; { bletched = 1; }
11186 #endif
11187 int main() {
11188     $uvtype u = 0;
11189     $nvtype d;
11190     int     n = 8 * $uvsize;
11191     int     i;
11192 #ifdef SIGFPE
11193     signal(SIGFPE, blech);
11194 #endif
11195
11196     for (i = 0; i < n; i++) {
11197       u = u << 1 | ($uvtype)1;
11198       d = ($nvtype)u;
11199       if (($uvtype)d != u)
11200         break;
11201       if (d <= 0)
11202         break;
11203       d = ($nvtype)(u - 1);
11204       if (($uvtype)d != (u - 1))
11205         break;
11206 #ifdef SIGFPE
11207       if (bletched) {
11208         break;
11209 #endif
11210       } 
11211     }
11212     printf("%d\n", ((i == n) ? -n : i));
11213     exit(0);
11214 }
11215 EOP
11216 set try
11217
11218 d_nv_preserves_uv="$undef"
11219 if eval $compile; then
11220         d_nv_preserves_uv_bits="`$run ./try`"
11221 fi
11222 case "$d_nv_preserves_uv_bits" in
11223 \-[1-9]*)       
11224         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11225         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11226         d_nv_preserves_uv="$define"
11227         ;;
11228 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11229         d_nv_preserves_uv="$undef" ;;
11230 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11231         d_nv_preserves_uv_bits="$undef" ;;
11232 esac
11233
11234 $rm -f try.* try
11235
11236
11237 : check for off64_t
11238 echo " "
11239 echo "Checking to see if you have off64_t..." >&4
11240 $cat >try.c <<EOCP
11241 #include <sys/types.h>
11242 #include <unistd.h>
11243 int main() { off64_t x = 7; }
11244 EOCP
11245 set try
11246 if eval $compile; then
11247         val="$define"
11248         echo "You have off64_t."
11249 else
11250         val="$undef"
11251         echo "You do not have off64_t."
11252         case "$lseeksize" in
11253         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11254         esac
11255 fi
11256 $rm -f try.* try
11257 set d_off64_t
11258 eval $setvar
11259
11260 : see if POSIX threads are available
11261 set pthread.h i_pthread
11262 eval $inhdr
11263
11264
11265
11266
11267 : how to create joinable pthreads
11268 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11269         echo " "
11270         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11271         $cat >try.c <<'EOCP'
11272 #include <pthread.h>
11273 int main() {
11274     int detachstate = JOINABLE;
11275 }
11276 EOCP
11277         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11278         if eval $compile; then
11279                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11280                 val="$undef" # Yes, undef.
11281                 set d_old_pthread_create_joinable
11282                 eval $setvar
11283                 val=""
11284                 set old_pthread_create_joinable
11285                 eval $setvar
11286         else
11287                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11288                 if eval $compile; then
11289                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11290                         val="$define"
11291                         set d_old_pthread_create_joinable
11292                         eval $setvar
11293                         val=PTHREAD_CREATE_UNDETACHED
11294                         set old_pthread_create_joinable
11295                         eval $setvar
11296                 else            
11297                         set try -DJOINABLE=__UNDETACHED
11298                         if eval $compile; then
11299                                 echo "You seem to use __UNDETACHED." >&4
11300                                 val="$define"
11301                                 set d_old_pthread_create_joinable
11302                                 eval $setvar
11303                                 val=__UNDETACHED
11304                                 set old_pthread_create_joinable
11305                                 eval $setvar
11306                         else
11307                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11308                                 val="$define"
11309                                 set d_old_pthread_create_joinable
11310                                 eval $setvar
11311                                 val=0
11312                                 set old_pthread_create_joinable
11313                                 eval $setvar
11314                         fi
11315                 fi
11316         fi
11317         $rm -f try try.*
11318 else
11319     d_old_pthread_create_joinable="$undef"
11320     old_pthread_create_joinable=""
11321 fi
11322
11323 : see if pause exists
11324 set pause d_pause
11325 eval $inlibc
11326
11327 : see if pipe exists
11328 set pipe d_pipe
11329 eval $inlibc
11330
11331 : see if poll exists
11332 set poll d_poll
11333 eval $inlibc
11334
11335 : see if pthread_atfork exists
11336 set pthread_atfork d_pthread_atfork
11337 eval $inlibc
11338
11339
11340 : see whether the various POSIXish _yields exist
11341 $cat >try.c <<EOP
11342 #include <pthread.h>
11343 #include <stdio.h>
11344 int main() {
11345 #ifdef SCHED_YIELD
11346         sched_yield();
11347 #else
11348 #ifdef PTHREAD_YIELD
11349         pthread_yield();
11350 #else
11351 #ifdef PTHREAD_YIELD_NULL
11352         pthread_yield(NULL);
11353 #endif
11354 #endif
11355 #endif
11356 }
11357 EOP
11358 : see if sched_yield exists
11359 set try -DSCHED_YIELD
11360 if eval $compile; then
11361     val="$define"
11362     sched_yield='sched_yield()'
11363 else
11364     val="$undef"
11365 fi
11366 case "$usethreads" in
11367 $define)
11368         case "$val" in
11369         $define) echo 'sched_yield() found.' >&4        ;;
11370         *)       echo 'sched_yield() NOT found.' >&4    ;;
11371         esac
11372 esac
11373 set d_sched_yield
11374 eval $setvar
11375
11376 : see if pthread_yield exists
11377 set try -DPTHREAD_YIELD
11378 if eval $compile; then
11379     val="$define"
11380     case "$sched_yield" in
11381     '') sched_yield='pthread_yield()' ;;
11382     esac
11383 else
11384     set try -DPTHREAD_YIELD_NULL
11385     if eval $compile; then
11386         val="$define"
11387         case "$sched_yield" in
11388         '') sched_yield='pthread_yield(NULL)' ;;
11389         esac
11390     else
11391         val="$undef"
11392     fi
11393 fi
11394 case "$usethreads" in
11395 $define)
11396         case "$val" in
11397         $define) echo 'pthread_yield() found.' >&4      ;;
11398         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11399         esac
11400         ;;
11401 esac
11402 set d_pthread_yield
11403 eval $setvar
11404
11405 case "$sched_yield" in
11406 '') sched_yield=undef ;;
11407 esac
11408
11409 $rm -f try try.*
11410
11411 : see if this is a pwd.h system
11412 set pwd.h i_pwd
11413 eval $inhdr
11414
11415 case "$i_pwd" in
11416 $define)
11417         xxx=`./findhdr pwd.h`
11418         $cppstdin $cppflags $cppminus < $xxx >$$.h
11419
11420         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11421                 val="$define"
11422         else
11423                 val="$undef"
11424         fi
11425         set d_pwquota
11426         eval $setvar
11427
11428         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11429                 val="$define"
11430         else
11431                 val="$undef"
11432         fi
11433         set d_pwage
11434         eval $setvar
11435
11436         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11437                 val="$define"
11438         else
11439                 val="$undef"
11440         fi
11441         set d_pwchange
11442         eval $setvar
11443
11444         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11445                 val="$define"
11446         else
11447                 val="$undef"
11448         fi
11449         set d_pwclass
11450         eval $setvar
11451
11452         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11453                 val="$define"
11454         else
11455                 val="$undef"
11456         fi
11457         set d_pwexpire
11458         eval $setvar
11459
11460         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11461                 val="$define"
11462         else
11463                 val="$undef"
11464         fi
11465         set d_pwcomment
11466         eval $setvar
11467
11468         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11469                 val="$define"
11470         else
11471                 val="$undef"
11472         fi
11473         set d_pwgecos
11474         eval $setvar
11475
11476         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11477                 val="$define"
11478         else
11479                 val="$undef"
11480         fi
11481         set d_pwpasswd
11482         eval $setvar
11483
11484         $rm -f $$.h
11485         ;;
11486 *)
11487         val="$undef"; 
11488         set d_pwquota; eval $setvar
11489         set d_pwage; eval $setvar
11490         set d_pwchange; eval $setvar
11491         set d_pwclass; eval $setvar
11492         set d_pwexpire; eval $setvar
11493         set d_pwcomment; eval $setvar
11494         set d_pwgecos; eval $setvar
11495         set d_pwpasswd; eval $setvar
11496         ;;
11497 esac
11498
11499 : see if readdir and friends exist
11500 set readdir d_readdir
11501 eval $inlibc
11502 set seekdir d_seekdir
11503 eval $inlibc
11504 set telldir d_telldir
11505 eval $inlibc
11506 set rewinddir d_rewinddir
11507 eval $inlibc
11508
11509 : see if readlink exists
11510 set readlink d_readlink
11511 eval $inlibc
11512
11513 : see if readv exists
11514 set readv d_readv
11515 eval $inlibc
11516
11517 : see if recvmsg exists
11518 set recvmsg d_recvmsg
11519 eval $inlibc
11520
11521 : see if rename exists
11522 set rename d_rename
11523 eval $inlibc
11524
11525 : see if rmdir exists
11526 set rmdir d_rmdir
11527 eval $inlibc
11528
11529 : see if memory.h is available.
11530 val=''
11531 set memory.h val
11532 eval $inhdr
11533
11534 : See if it conflicts with string.h
11535 case "$val" in
11536 $define)
11537         case "$strings" in
11538         '') ;;
11539         *)
11540                 $cppstdin $cppflags $cppminus < $strings > mem.h
11541                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11542                         echo " "
11543                         echo "We won't be including <memory.h>."
11544                         val="$undef"
11545                 fi
11546                 $rm -f mem.h
11547                 ;;
11548         esac
11549 esac
11550 set i_memory
11551 eval $setvar
11552
11553 : can bcopy handle overlapping blocks?
11554 echo " "
11555 val="$undef"
11556 case "$d_memmove" in
11557 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11558 *)      case "$d_bcopy" in
11559         "$define")
11560                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11561                 $cat >try.c <<EOCP
11562 #$i_memory I_MEMORY
11563 #$i_stdlib I_STDLIB
11564 #$i_string I_STRING
11565 #$i_unistd I_UNISTD
11566 EOCP
11567         $cat >>try.c <<'EOCP'
11568 #include <stdio.h>
11569 #ifdef I_MEMORY
11570 #  include <memory.h>
11571 #endif
11572 #ifdef I_STDLIB
11573 #  include <stdlib.h>
11574 #endif
11575 #ifdef I_STRING
11576 #  include <string.h>
11577 #else
11578 #  include <strings.h>
11579 #endif
11580 #ifdef I_UNISTD
11581 #  include <unistd.h>  /* Needed for NetBSD */
11582 #endif
11583 int main()
11584 {
11585 char buf[128], abc[128];
11586 char *b;
11587 int len;
11588 int off;
11589 int align;
11590
11591 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11592    try to store the string in read-only memory. */
11593 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11594
11595 for (align = 7; align >= 0; align--) {
11596         for (len = 36; len; len--) {
11597                 b = buf+align;
11598                 bcopy(abc, b, len);
11599                 for (off = 1; off <= len; off++) {
11600                         bcopy(b, b+off, len);
11601                         bcopy(b+off, b, len);
11602                         if (bcmp(b, abc, len))
11603                                 exit(1);
11604                 }
11605         }
11606 }
11607 exit(0);
11608 }
11609 EOCP
11610                 set try
11611                 if eval $compile_ok; then
11612                         if ./try 2>/dev/null; then
11613                                 echo "Yes, it can."
11614                                 val="$define"
11615                         else
11616                                 echo "It can't, sorry."
11617                         fi
11618                 else
11619                         echo "(I can't compile the test program, so we'll assume not...)"
11620                 fi
11621                 ;;
11622         esac
11623         $rm -f try.* try core
11624         ;;
11625 esac
11626 set d_safebcpy
11627 eval $setvar
11628
11629 : can memcpy handle overlapping blocks?
11630 echo " "
11631 val="$undef"
11632 case "$d_memmove" in
11633 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11634 *)      case "$d_memcpy" in
11635         "$define")
11636                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11637                 $cat >try.c <<EOCP
11638 #$i_memory I_MEMORY
11639 #$i_stdlib I_STDLIB
11640 #$i_string I_STRING
11641 #$i_unistd I_UNISTD
11642 EOCP
11643         $cat >>try.c <<'EOCP'
11644 #include <stdio.h>
11645 #ifdef I_MEMORY
11646 #  include <memory.h>
11647 #endif
11648 #ifdef I_STDLIB
11649 #  include <stdlib.h>
11650 #endif
11651 #ifdef I_STRING
11652 #  include <string.h>
11653 #else
11654 #  include <strings.h>
11655 #endif
11656 #ifdef I_UNISTD
11657 #  include <unistd.h>  /* Needed for NetBSD */
11658 #endif
11659 int main()
11660 {
11661 char buf[128], abc[128];
11662 char *b;
11663 int len;
11664 int off;
11665 int align;
11666
11667 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11668    try to store the string in read-only memory. */
11669 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11670
11671 for (align = 7; align >= 0; align--) {
11672         for (len = 36; len; len--) {
11673                 b = buf+align;
11674                 memcpy(b, abc, len);
11675                 for (off = 1; off <= len; off++) {
11676                         memcpy(b+off, b, len);
11677                         memcpy(b, b+off, len);
11678                         if (memcmp(b, abc, len))
11679                                 exit(1);
11680                 }
11681         }
11682 }
11683 exit(0);
11684 }
11685 EOCP
11686                 set try
11687                 if eval $compile_ok; then
11688                         if ./try 2>/dev/null; then
11689                                 echo "Yes, it can."
11690                                 val="$define"
11691                         else
11692                                 echo "It can't, sorry."
11693                         fi
11694                 else
11695                         echo "(I can't compile the test program, so we'll assume not...)"
11696                 fi
11697                 ;;
11698         esac
11699         $rm -f try.* try core
11700         ;;
11701 esac
11702 set d_safemcpy
11703 eval $setvar
11704
11705 : can memcmp be trusted to compare relative magnitude?
11706 val="$undef"
11707 case "$d_memcmp" in
11708 "$define")
11709         echo " "
11710         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11711         $cat >try.c <<EOCP
11712 #$i_memory I_MEMORY
11713 #$i_stdlib I_STDLIB
11714 #$i_string I_STRING
11715 #$i_unistd I_UNISTD
11716 EOCP
11717         $cat >>try.c <<'EOCP'
11718 #include <stdio.h>
11719 #ifdef I_MEMORY
11720 #  include <memory.h>
11721 #endif
11722 #ifdef I_STDLIB
11723 #  include <stdlib.h>
11724 #endif
11725 #ifdef I_STRING
11726 #  include <string.h>
11727 #else
11728 #  include <strings.h>
11729 #endif
11730 #ifdef I_UNISTD
11731 #  include <unistd.h>  /* Needed for NetBSD */
11732 #endif
11733 int main()
11734 {
11735 char a = -1;
11736 char b = 0;
11737 if ((a < b) && memcmp(&a, &b, 1) < 0)
11738         exit(1);
11739 exit(0);
11740 }
11741 EOCP
11742         set try
11743         if eval $compile_ok; then
11744                 if $run ./try 2>/dev/null; then
11745                         echo "Yes, it can."
11746                         val="$define"
11747                 else
11748                         echo "No, it can't (it uses signed chars)."
11749                 fi
11750         else
11751                 echo "(I can't compile the test program, so we'll assume not...)"
11752         fi
11753         ;;
11754 esac
11755 $rm -f try.* try core
11756 set d_sanemcmp
11757 eval $setvar
11758
11759 : see if prototype for sbrk is available
11760 echo " "
11761 set d_sbrkproto sbrk $i_unistd unistd.h
11762 eval $hasproto
11763
11764 : see if select exists
11765 set select d_select
11766 eval $inlibc
11767
11768 : see if semctl exists
11769 set semctl d_semctl
11770 eval $inlibc
11771
11772 : see if semget exists
11773 set semget d_semget
11774 eval $inlibc
11775
11776 : see if semop exists
11777 set semop d_semop
11778 eval $inlibc
11779
11780 : see how much of the 'sem*(2)' library is present.
11781 h_sem=true
11782 echo " "
11783 case "$d_semctl$d_semget$d_semop" in
11784 *"$undef"*) h_sem=false;;
11785 esac
11786 case "$osname" in
11787 freebsd)
11788     case "`ipcs 2>&1`" in
11789     "SVID messages"*"not configured"*)
11790         echo "Your $osname does not have the sem*(2) configured." >&4
11791         h_sem=false
11792         val="$undef"
11793         set semctl d_semctl
11794         eval $setvar
11795         set semget d_semget
11796         eval $setvar
11797         set semop d_semop
11798         eval $setvar
11799         ;;
11800     esac
11801     ;;
11802 esac
11803 : we could also check for sys/ipc.h ...
11804 if $h_sem && $test `./findhdr sys/sem.h`; then
11805         echo "You have the full sem*(2) library." >&4
11806         val="$define"
11807 else
11808         echo "You don't have the full sem*(2) library." >&4
11809         val="$undef"
11810 fi
11811 set d_sem
11812 eval $setvar
11813
11814 : see whether sys/sem.h defines union semun
11815 echo " "
11816 $cat > try.c <<'END'
11817 #include <sys/types.h>
11818 #include <sys/ipc.h>
11819 #include <sys/sem.h>
11820 int main () { union semun semun; semun.buf = 0; }
11821 END
11822 set try
11823 if eval $compile; then
11824     echo "You have union semun in <sys/sem.h>." >&4
11825     val="$define"
11826 else
11827     echo "You do not have union semun in <sys/sem.h>." >&4
11828     val="$undef"
11829 fi
11830 $rm -f try try.c try.h
11831 set d_union_semun
11832 eval $setvar
11833
11834 : see how to do semctl IPC_STAT
11835 case "$d_sem" in
11836 $define)
11837     : see whether semctl IPC_STAT can use union semun
11838     echo " "
11839     $cat > try.h <<END
11840 #ifndef S_IRUSR
11841 #   ifdef S_IREAD
11842 #       define S_IRUSR S_IREAD
11843 #       define S_IWUSR S_IWRITE
11844 #       define S_IXUSR S_IEXEC
11845 #   else
11846 #       define S_IRUSR 0400
11847 #       define S_IWUSR 0200
11848 #       define S_IXUSR 0100
11849 #   endif
11850 #   define S_IRGRP (S_IRUSR>>3)
11851 #   define S_IWGRP (S_IWUSR>>3)
11852 #   define S_IXGRP (S_IXUSR>>3)
11853 #   define S_IROTH (S_IRUSR>>6)
11854 #   define S_IWOTH (S_IWUSR>>6)
11855 #   define S_IXOTH (S_IXUSR>>6)
11856 #endif
11857 #ifndef S_IRWXU
11858 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11859 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11860 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11861 #endif
11862 END
11863
11864     $cat > try.c <<END
11865 #include <sys/types.h>
11866 #include <sys/ipc.h>
11867 #include <sys/sem.h>
11868 #include <sys/stat.h>
11869 #include <stdio.h>
11870 #include <errno.h>
11871 #include "try.h"
11872 #ifndef errno
11873 extern int errno;
11874 #endif
11875 #$d_union_semun HAS_UNION_SEMUN
11876 int main() {
11877     union semun
11878 #ifndef HAS_UNION_SEMUN
11879     {
11880         int val;
11881         struct semid_ds *buf;
11882         unsigned short *array;
11883     }
11884 #endif
11885     arg;
11886     int sem, st;
11887
11888 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11889     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11890     if (sem > -1) {
11891         struct semid_ds argbuf;
11892         arg.buf = &argbuf;
11893 #       ifdef IPC_STAT
11894         st = semctl(sem, 0, IPC_STAT, arg);
11895         if (st == 0)
11896             printf("semun\n");
11897         else
11898 #       endif /* IPC_STAT */
11899             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11900 #       ifdef IPC_RMID
11901         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11902 #       endif /* IPC_RMID */
11903             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11904     } else
11905 #endif /* IPC_PRIVATE && ... */
11906         printf("semget failed: errno = %d\n", errno);
11907   return 0;
11908 }
11909 END
11910     val="$undef"
11911     set try
11912     if eval $compile; then
11913         xxx=`$run ./try`
11914         case "$xxx" in
11915         semun) val="$define" ;;
11916         esac
11917     fi
11918     $rm -f try try.c
11919     set d_semctl_semun
11920     eval $setvar
11921     case "$d_semctl_semun" in
11922     $define)
11923         echo "You can use union semun for semctl IPC_STAT." >&4
11924         also='also'
11925         ;;
11926     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11927         also=''
11928         ;;
11929     esac
11930
11931     : see whether semctl IPC_STAT can use struct semid_ds pointer
11932     $cat > try.c <<'END'
11933 #include <sys/types.h>
11934 #include <sys/ipc.h>
11935 #include <sys/sem.h>
11936 #include <sys/stat.h>
11937 #include "try.h"
11938 #include <stdio.h>
11939 #include <errno.h>
11940 #ifndef errno
11941 extern int errno;
11942 #endif
11943 int main() {
11944     struct semid_ds arg;
11945     int sem, st;
11946
11947 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11948     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11949     if (sem > -1) {
11950 #       ifdef IPC_STAT
11951         st = semctl(sem, 0, IPC_STAT, &arg);
11952         if (st == 0)
11953             printf("semid_ds\n");
11954         else
11955 #       endif /* IPC_STAT */
11956             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11957 #       ifdef IPC_RMID
11958         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11959 #       endif /* IPC_RMID */
11960             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11961     } else
11962 #endif /* IPC_PRIVATE && ... */
11963         printf("semget failed: errno = %d\n", errno);
11964
11965     return 0;
11966 }
11967 END
11968     val="$undef"
11969     set try
11970     if eval $compile; then
11971         xxx=`$run ./try`
11972         case "$xxx" in
11973         semid_ds) val="$define" ;;
11974         esac
11975     fi
11976     $rm -f try try.c
11977     set d_semctl_semid_ds
11978     eval $setvar
11979     case "$d_semctl_semid_ds" in
11980     $define)
11981         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11982         ;;
11983     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11984         ;;
11985     esac
11986     $rm -f try.h
11987     ;;
11988 *)  val="$undef"
11989
11990     # We do not have the full sem*(2) library, so assume we can not
11991     # use either.
11992
11993     set d_semctl_semun
11994     eval $setvar
11995
11996     set d_semctl_semid_ds
11997     eval $setvar
11998     ;;
11999 esac
12000
12001 : see if sendmsg exists
12002 set sendmsg d_sendmsg
12003 eval $inlibc
12004
12005 : see if setegid exists
12006 set setegid d_setegid
12007 eval $inlibc
12008
12009 : see if seteuid exists
12010 set seteuid d_seteuid
12011 eval $inlibc
12012
12013 : see if setgrent exists
12014 set setgrent d_setgrent
12015 eval $inlibc
12016
12017 : see if sethostent exists
12018 set sethostent d_sethent
12019 eval $inlibc
12020
12021 : see if setitimer exists
12022 set setitimer d_setitimer
12023 eval $inlibc
12024
12025 : see if setlinebuf exists
12026 set setlinebuf d_setlinebuf
12027 eval $inlibc
12028
12029 : see if setlocale exists
12030 set setlocale d_setlocale
12031 eval $inlibc
12032
12033 : see if setnetent exists
12034 set setnetent d_setnent
12035 eval $inlibc
12036
12037 : see if setprotoent exists
12038 set setprotoent d_setpent
12039 eval $inlibc
12040
12041 : see if setpgid exists
12042 set setpgid d_setpgid
12043 eval $inlibc
12044
12045 : see if setpgrp2 exists
12046 set setpgrp2 d_setpgrp2
12047 eval $inlibc
12048
12049 : see if setpriority exists
12050 set setpriority d_setprior
12051 eval $inlibc
12052
12053 : see if setproctitle exists
12054 set setproctitle d_setproctitle
12055 eval $inlibc
12056
12057 : see if setpwent exists
12058 set setpwent d_setpwent
12059 eval $inlibc
12060
12061 : see if setregid exists
12062 set setregid d_setregid
12063 eval $inlibc
12064 set setresgid d_setresgid
12065 eval $inlibc
12066
12067 : see if setreuid exists
12068 set setreuid d_setreuid
12069 eval $inlibc
12070 set setresuid d_setresuid
12071 eval $inlibc
12072
12073 : see if setrgid exists
12074 set setrgid d_setrgid
12075 eval $inlibc
12076
12077 : see if setruid exists
12078 set setruid d_setruid
12079 eval $inlibc
12080
12081 : see if setservent exists
12082 set setservent d_setsent
12083 eval $inlibc
12084
12085 : see if setsid exists
12086 set setsid d_setsid
12087 eval $inlibc
12088
12089 : see if setvbuf exists
12090 set setvbuf d_setvbuf
12091 eval $inlibc
12092
12093 : see if sfio.h is available
12094 set sfio.h i_sfio
12095 eval $inhdr
12096
12097
12098 : see if sfio library is available
12099 case "$i_sfio" in
12100 $define)
12101         val=''
12102         set sfreserve val
12103         eval $inlibc
12104         ;;
12105 *)
12106         val="$undef"
12107         ;;
12108 esac
12109 : Ok, but do we want to use it.
12110 case "$val" in
12111 $define)
12112         case "$usesfio" in
12113         true|$define|[yY]*) dflt='y';;
12114         *) dflt='n';;
12115         esac
12116         echo "$package can use the sfio library, but it is experimental."
12117         case "$useperlio" in
12118         "$undef")
12119             echo "For sfio also the PerlIO abstraction layer is needed."
12120             echo "Earlier you said you wouldn't want that."
12121             ;;
12122         esac
12123         rp="You seem to have sfio available, do you want to try using it?"
12124         . ./myread
12125         case "$ans" in
12126         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12127                 useperlio="$define"
12128                 val="$define"
12129                 ;;
12130         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12131                 val="$undef"
12132                 ;;
12133         esac
12134         ;;
12135 *)      case "$usesfio" in
12136         true|$define|[yY]*)
12137                 echo "Sorry, cannot find sfio on this machine." >&4
12138                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12139                 val="$undef"
12140                 ;;
12141         esac
12142         ;;
12143 esac
12144 set d_sfio
12145 eval $setvar
12146 case "$d_sfio" in
12147 $define) usesfio='true';;
12148 *) usesfio='false';;
12149 esac
12150 case "$d_sfio" in
12151 $define) ;;
12152 *)      : Remove sfio from list of libraries to use
12153         case "$libs" in
12154         *-lsfio*)
12155                 echo "Removing unneeded -lsfio from library list" >&4
12156                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12157                 shift
12158                 libs="$*"
12159                 echo "libs = $libs" >&4
12160                 ;;
12161         esac
12162 ;;
12163 esac
12164
12165
12166 : see if shmctl exists
12167 set shmctl d_shmctl
12168 eval $inlibc
12169
12170 : see if shmget exists
12171 set shmget d_shmget
12172 eval $inlibc
12173
12174 : see if shmat exists
12175 set shmat d_shmat
12176 eval $inlibc
12177 : see what shmat returns
12178 case "$d_shmat" in
12179 "$define")
12180         $cat >shmat.c <<'END'
12181 #include <sys/shm.h>
12182 void *shmat();
12183 END
12184         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12185                 shmattype='void *'
12186         else
12187                 shmattype='char *'
12188         fi
12189         echo "and it returns ($shmattype)." >&4
12190         : see if a prototype for shmat is available
12191         xxx=`./findhdr sys/shm.h`
12192         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12193         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12194                 val="$define"
12195         else
12196                 val="$undef"
12197         fi
12198         $rm -f shmat.[co]
12199         ;;
12200 *)
12201         val="$undef"
12202         ;;
12203 esac
12204 set d_shmatprototype
12205 eval $setvar
12206
12207 : see if shmdt exists
12208 set shmdt d_shmdt
12209 eval $inlibc
12210
12211 : see how much of the 'shm*(2)' library is present.
12212 h_shm=true
12213 echo " "
12214 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12215 *"$undef"*) h_shm=false;;
12216 esac
12217 case "$osname" in
12218 freebsd)
12219     case "`ipcs 2>&1`" in
12220     "SVID shared memory"*"not configured"*)
12221         echo "Your $osname does not have the shm*(2) configured." >&4
12222         h_shm=false
12223         val="$undef"
12224         set shmctl d_shmctl
12225         evat $setvar
12226         set shmget d_shmget
12227         evat $setvar
12228         set shmat d_shmat
12229         evat $setvar
12230         set shmdt d_shmdt
12231         evat $setvar
12232         ;;
12233     esac
12234     ;;
12235 esac
12236 : we could also check for sys/ipc.h ...
12237 if $h_shm && $test `./findhdr sys/shm.h`; then
12238         echo "You have the full shm*(2) library." >&4
12239         val="$define"
12240 else
12241         echo "You don't have the full shm*(2) library." >&4
12242         val="$undef"
12243 fi
12244 set d_shm
12245 eval $setvar
12246
12247 echo " "
12248 : see if we have sigaction
12249 if set sigaction val -f d_sigaction; eval $csym; $val; then
12250         echo 'sigaction() found.' >&4
12251         $cat > try.c <<'EOP'
12252 #include <stdio.h>
12253 #include <sys/types.h>
12254 #include <signal.h>
12255 int main()
12256 {
12257     struct sigaction act, oact;
12258     act.sa_flags = 0;
12259     oact.sa_handler = 0;
12260     /* so that act and oact are used */
12261     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12262 }
12263 EOP
12264         set try
12265         if eval $compile_ok; then
12266                 val="$define"
12267         else
12268                 echo "But you don't seem to have a useable struct sigaction." >&4
12269                 val="$undef"
12270         fi
12271 else
12272         echo 'sigaction NOT found.' >&4
12273         val="$undef"
12274 fi
12275 set d_sigaction; eval $setvar
12276 $rm -f try try$_o try.c
12277
12278 : see if sigprocmask exists
12279 set sigprocmask d_sigprocmask
12280 eval $inlibc
12281
12282 : see if sigsetjmp exists
12283 echo " "
12284 case "$d_sigsetjmp" in
12285 '')
12286         $cat >try.c <<'EOP'
12287 #include <setjmp.h>
12288 sigjmp_buf env;
12289 int set = 1;
12290 int main()
12291 {
12292         if (sigsetjmp(env,1))
12293                 exit(set);
12294         set = 0;
12295         siglongjmp(env, 1);
12296         exit(1);
12297 }
12298 EOP
12299         set try
12300         if eval $compile; then
12301                 if $run ./try >/dev/null 2>&1; then
12302                         echo "POSIX sigsetjmp found." >&4
12303                         val="$define"
12304                 else
12305                         $cat >&4 <<EOM
12306 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12307 I'll ignore them.
12308 EOM
12309                         val="$undef"
12310                 fi
12311         else
12312                 echo "sigsetjmp not found." >&4
12313                 val="$undef"
12314         fi
12315         ;;
12316 *) val="$d_sigsetjmp"
12317         case "$d_sigsetjmp" in
12318         $define) echo "POSIX sigsetjmp found." >&4;;
12319         $undef) echo "sigsetjmp not found." >&4;;
12320         esac
12321         ;;
12322 esac
12323 set d_sigsetjmp
12324 eval $setvar
12325 $rm -f try.c try
12326
12327 : see if sockatmark exists
12328 set sockatmark d_sockatmark
12329 eval $inlibc
12330
12331 : see if prototype for sockatmark is available
12332 echo " "
12333 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12334 eval $hasproto
12335
12336 : see if socks5_init exists
12337 set socks5_init d_socks5_init
12338 eval $inlibc
12339
12340 : see if prototype for setresgid is available
12341 echo " "
12342 set d_sresgproto setresgid $i_unistd unistd.h
12343 eval $hasproto
12344
12345 : see if prototype for setresuid is available
12346 echo " "
12347 set d_sresuproto setresuid $i_unistd unistd.h
12348 eval $hasproto
12349
12350 : see if sys/stat.h is available
12351 set sys/stat.h i_sysstat
12352 eval $inhdr
12353
12354
12355 : see if stat knows about block sizes
12356 echo " "
12357 echo "Checking to see if your struct stat has st_blocks field..." >&4
12358 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12359 eval $hasfield
12360
12361
12362 : see if this is a sys/vfs.h system
12363 set sys/vfs.h i_sysvfs
12364 eval $inhdr
12365
12366
12367 : see if this is a sys/statfs.h system
12368 set sys/statfs.h i_sysstatfs
12369 eval $inhdr
12370
12371
12372 echo " "
12373 echo "Checking to see if your system supports struct statfs..." >&4
12374 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
12375 eval $hasstruct
12376 case "$d_statfs_s" in
12377 "$define")      echo "Yes, it does."   ;;
12378 *)              echo "No, it doesn't." ;;
12379 esac
12380
12381
12382
12383 : see if struct statfs knows about f_flags
12384 case "$d_statfs_s" in
12385 define) 
12386         echo " "
12387         echo "Checking to see if your struct statfs has f_flags field..." >&4
12388         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
12389         eval $hasfield
12390         ;;
12391 *)      val="$undef"
12392         set d_statfs_f_flags
12393         eval $setvar
12394         ;;
12395 esac
12396 case "$d_statfs_f_flags" in
12397 "$define")      echo "Yes, it does."   ;;
12398 *)              echo "No, it doesn't." ;;
12399 esac
12400
12401 : see if _ptr and _cnt from stdio act std
12402 echo " "
12403
12404 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12405         echo "(Looks like you have stdio.h from BSD.)"
12406         case "$stdio_ptr" in
12407         '') stdio_ptr='((fp)->_p)'
12408                 ptr_lval=$define
12409                 ;;
12410         *)      ptr_lval=$d_stdio_ptr_lval;;
12411         esac
12412         case "$stdio_cnt" in
12413         '') stdio_cnt='((fp)->_r)'
12414                 cnt_lval=$define
12415                 ;;
12416         *)      cnt_lval=$d_stdio_cnt_lval;;
12417         esac
12418         case "$stdio_base" in
12419         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12420         esac
12421         case "$stdio_bufsiz" in
12422         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12423         esac
12424 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12425         echo "(Looks like you have stdio.h from Linux.)"
12426         case "$stdio_ptr" in
12427         '') stdio_ptr='((fp)->_IO_read_ptr)'
12428                 ptr_lval=$define
12429                 ;;
12430         *)      ptr_lval=$d_stdio_ptr_lval;;
12431         esac
12432         case "$stdio_cnt" in
12433         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12434                 cnt_lval=$undef
12435                 ;;
12436         *)      cnt_lval=$d_stdio_cnt_lval;;
12437         esac
12438         case "$stdio_base" in
12439         '') stdio_base='((fp)->_IO_read_base)';;
12440         esac
12441         case "$stdio_bufsiz" in
12442         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12443         esac
12444 else
12445         case "$stdio_ptr" in
12446         '') stdio_ptr='((fp)->_ptr)'
12447                 ptr_lval=$define
12448                 ;;
12449         *)      ptr_lval=$d_stdio_ptr_lval;;
12450         esac
12451         case "$stdio_cnt" in
12452         '') stdio_cnt='((fp)->_cnt)'
12453                 cnt_lval=$define
12454                 ;;
12455         *)      cnt_lval=$d_stdio_cnt_lval;;
12456         esac
12457         case "$stdio_base" in
12458         '') stdio_base='((fp)->_base)';;
12459         esac
12460         case "$stdio_bufsiz" in
12461         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12462         esac
12463 fi
12464
12465 : test whether _ptr and _cnt really work
12466 echo "Checking how std your stdio is..." >&4
12467 $cat >try.c <<EOP
12468 #include <stdio.h>
12469 #define FILE_ptr(fp)    $stdio_ptr
12470 #define FILE_cnt(fp)    $stdio_cnt
12471 int main() {
12472         FILE *fp = fopen("try.c", "r");
12473         char c = getc(fp);
12474         if (
12475                 18 <= FILE_cnt(fp) &&
12476                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12477         )
12478                 exit(0);
12479         exit(1);
12480 }
12481 EOP
12482 val="$undef"
12483 set try
12484 if eval $compile && $to try.c; then
12485         if $run ./try; then
12486                 echo "Your stdio acts pretty std."
12487                 val="$define"
12488         else
12489                 echo "Your stdio isn't very std."
12490         fi
12491 else
12492         echo "Your stdio doesn't appear very std."
12493 fi
12494 $rm -f try.c try
12495 set d_stdstdio
12496 eval $setvar
12497
12498 : Can _ptr be used as an lvalue?
12499 case "$d_stdstdio$ptr_lval" in
12500 $define$define) val=$define ;;
12501 *) val=$undef ;;
12502 esac
12503 set d_stdio_ptr_lval
12504 eval $setvar
12505
12506 : Can _cnt be used as an lvalue?
12507 case "$d_stdstdio$cnt_lval" in
12508 $define$define) val=$define ;;
12509 *) val=$undef ;;
12510 esac
12511 set d_stdio_cnt_lval
12512 eval $setvar
12513
12514
12515 : test whether setting _ptr sets _cnt as a side effect
12516 d_stdio_ptr_lval_sets_cnt="$undef"
12517 d_stdio_ptr_lval_nochange_cnt="$undef"
12518 case "$d_stdio_ptr_lval$d_stdstdio" in
12519 $define$define)
12520         echo "Checking to see what happens if we set the stdio ptr..." >&4
12521 $cat >try.c <<EOP
12522 #include <stdio.h>
12523 /* Can we scream? */
12524 /* Eat dust sed :-) */
12525 /* In the buffer space, no one can hear you scream. */
12526 #define FILE_ptr(fp)    $stdio_ptr
12527 #define FILE_cnt(fp)    $stdio_cnt
12528 #include <sys/types.h>
12529 int main() {
12530         FILE *fp = fopen("try.c", "r");
12531         int c;
12532         char *ptr;
12533         size_t cnt;
12534         if (!fp) {
12535             puts("Fail even to read");
12536             exit(1);
12537         }
12538         c = getc(fp); /* Read away the first # */
12539         if (c == EOF) {
12540             puts("Fail even to read");
12541             exit(1);
12542         }
12543         if (!(
12544                 18 <= FILE_cnt(fp) &&
12545                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12546         )) {
12547                 puts("Fail even to read");
12548                 exit (1);
12549         }
12550         ptr = (char*) FILE_ptr(fp);
12551         cnt = (size_t)FILE_cnt(fp);
12552
12553         FILE_ptr(fp) += 42;
12554
12555         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12556                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12557                 exit (1);
12558         }
12559         if (FILE_cnt(fp) <= 20) {
12560                 printf ("Fail (<20 chars to test)");
12561                 exit (1);
12562         }
12563         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12564                 puts("Fail compare");
12565                 exit (1);
12566         }
12567         if (cnt == FILE_cnt(fp)) {
12568                 puts("Pass_unchanged");
12569                 exit (0);
12570         }       
12571         if (FILE_cnt(fp) == (cnt - 42)) {
12572                 puts("Pass_changed");
12573                 exit (0);
12574         }
12575         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12576         return 1;
12577
12578 }
12579 EOP
12580         set try
12581         if eval $compile && $to try.c; then
12582                 case `$run ./try` in
12583                 Pass_changed)
12584                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12585                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12586                 Pass_unchanged)
12587                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12588                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12589                 Fail*)
12590                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12591                 *)
12592                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12593         esac
12594         else
12595                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12596         fi
12597         $rm -f try.c try
12598         ;;
12599 esac
12600
12601 : see if _base is also standard
12602 val="$undef"
12603 case "$d_stdstdio" in
12604 $define)
12605         $cat >try.c <<EOP
12606 #include <stdio.h>
12607 #define FILE_base(fp)   $stdio_base
12608 #define FILE_bufsiz(fp) $stdio_bufsiz
12609 int main() {
12610         FILE *fp = fopen("try.c", "r");
12611         char c = getc(fp);
12612         if (
12613                 19 <= FILE_bufsiz(fp) &&
12614                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12615         )
12616                 exit(0);
12617         exit(1);
12618 }
12619 EOP
12620         set try
12621         if eval $compile && $to try.c; then
12622                 if $run ./try; then
12623                         echo "And its _base field acts std."
12624                         val="$define"
12625                 else
12626                         echo "But its _base field isn't std."
12627                 fi
12628         else
12629                 echo "However, it seems to be lacking the _base field."
12630         fi
12631         $rm -f try.c try
12632         ;;
12633 esac
12634 set d_stdiobase
12635 eval $setvar
12636
12637 $cat >&4 <<EOM
12638 Checking how to access stdio streams by file descriptor number...
12639 EOM
12640 case "$stdio_stream_array" in
12641 '')     $cat >try.c <<EOCP
12642 #include <stdio.h>
12643 int main() {
12644   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12645     printf("yes\n");
12646 }
12647 EOCP
12648         for s in _iob __iob __sF
12649         do
12650                 set try -DSTDIO_STREAM_ARRAY=$s
12651                 if eval $compile; then
12652                         case "`$run ./try`" in
12653                         yes)    stdio_stream_array=$s; break ;;
12654                         esac
12655                 fi
12656         done
12657         $rm -f try.* try$exe_ext
12658 esac
12659 case "$stdio_stream_array" in
12660 '')     $cat >&4 <<EOM
12661 I can't figure out how to access stdio streams by file descriptor number.
12662 EOM
12663         d_stdio_stream_array="$undef"
12664         ;;
12665 *)      $cat >&4 <<EOM
12666 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12667 EOM
12668         d_stdio_stream_array="$define"
12669         ;;
12670 esac
12671
12672 : see if strcoll exists
12673 set strcoll d_strcoll
12674 eval $inlibc
12675
12676 : check for structure copying
12677 echo " "
12678 echo "Checking to see if your C compiler can copy structs..." >&4
12679 $cat >try.c <<'EOCP'
12680 int main()
12681 {
12682         struct blurfl {
12683                 int dyick;
12684         } foo, bar;
12685
12686         foo = bar;
12687 }
12688 EOCP
12689 if $cc -c try.c >/dev/null 2>&1 ; then
12690         val="$define"
12691         echo "Yup, it can."
12692 else
12693         val="$undef"
12694         echo "Nope, it can't."
12695 fi
12696 set d_strctcpy
12697 eval $setvar
12698 $rm -f try.*
12699
12700 : see if strerror and/or sys_errlist[] exist
12701 echo " "
12702 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12703     if set strerror val -f d_strerror; eval $csym; $val; then
12704                 echo 'strerror() found.' >&4
12705                 d_strerror="$define"
12706                 d_strerrm='strerror(e)'
12707                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12708                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12709                         d_syserrlst="$define"
12710                 else
12711                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12712                         d_syserrlst="$undef"
12713                 fi
12714     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12715                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12716                 echo 'strerror() found in string header.' >&4
12717                 d_strerror="$define"
12718                 d_strerrm='strerror(e)'
12719                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12720                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12721                                 d_syserrlst="$define"
12722                 else
12723                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12724                         d_syserrlst="$undef"
12725                 fi
12726     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12727                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12728                 d_strerror="$undef"
12729                 d_syserrlst="$define"
12730                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12731     else
12732                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12733                 d_strerror="$undef"
12734                 d_syserrlst="$undef"
12735                 d_strerrm='"unknown"'
12736     fi
12737 fi
12738
12739 : see if strftime exists
12740 set strftime d_strftime
12741 eval $inlibc
12742
12743 : see if strtod exists
12744 set strtod d_strtod
12745 eval $inlibc
12746
12747 : see if strtol exists
12748 set strtol d_strtol
12749 eval $inlibc
12750
12751 : see if strtold exists
12752 set strtold d_strtold
12753 eval $inlibc
12754
12755 : see if strtoll exists
12756 set strtoll d_strtoll
12757 eval $inlibc
12758
12759 case "$d_longlong-$d_strtoll" in
12760 "$define-$define")
12761         $cat <<EOM
12762 Checking whether your strtoll() works okay...
12763 EOM
12764         $cat >try.c <<'EOCP'
12765 #include <errno.h>
12766 #ifdef __hpux
12767 #define strtoll __strtoll
12768 #endif
12769 #ifdef __EMX__
12770 #define strtoll _strtoll
12771 #endif
12772 #include <stdio.h>
12773 extern long long int strtoll(char *s, char **, int); 
12774 static int bad = 0;
12775 int check(char *s, long long ell, int een) {
12776         long long gll;
12777         errno = 0;
12778         gll = strtoll(s, 0, 10);
12779         if (!((gll == ell) && (errno == een)))
12780                 bad++;
12781 }
12782 int main() {
12783         check(" 1",                                      1LL, 0);
12784         check(" 0",                                      0LL, 0);
12785         check("-1",                                     -1LL, 0);
12786         check("-9223372036854775808", -9223372036854775808LL, 0);
12787         check("-9223372036854775808", -9223372036854775808LL, 0);
12788         check(" 9223372036854775807",  9223372036854775807LL, 0);
12789         check("-9223372036854775808", -9223372036854775808LL, 0);
12790         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12791         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12792         if (!bad)
12793                 printf("ok\n");
12794 }
12795 EOCP
12796         set try
12797         if eval $compile; then
12798                 yyy=`$run ./try`
12799                 case "$yyy" in
12800                 ok) echo "Your strtoll() seems to be working okay." ;;
12801                 *) cat <<EOM >&4
12802 Your strtoll() doesn't seem to be working okay.
12803 EOM
12804                    d_strtoll="$undef"
12805                    ;;
12806                 esac
12807         else
12808                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12809                 d_strtoll="$undef"
12810         fi
12811         ;;
12812 esac
12813
12814 : see if strtoq exists
12815 set strtoq d_strtoq
12816 eval $inlibc
12817
12818 : see if strtoul exists
12819 set strtoul d_strtoul
12820 eval $inlibc
12821
12822 case "$d_strtoul" in
12823 "$define")
12824         $cat <<EOM
12825 Checking whether your strtoul() works okay...
12826 EOM
12827         $cat >try.c <<'EOCP'
12828 #include <errno.h>
12829 #include <stdio.h>
12830 extern unsigned long int strtoul(char *s, char **, int); 
12831 static int bad = 0;
12832 void check(char *s, unsigned long eul, int een) {
12833         unsigned long gul;
12834         errno = 0;
12835         gul = strtoul(s, 0, 10);
12836         if (!((gul == eul) && (errno == een)))
12837                 bad++;
12838 }
12839 int main() {
12840         check(" 1", 1L, 0);
12841         check(" 0", 0L, 0);
12842 EOCP
12843         case "$longsize" in
12844         8)
12845             $cat >>try.c <<'EOCP'
12846         check("18446744073709551615", 18446744073709551615UL, 0);
12847         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12848 #if 0 /* strtoul() for /^-/ strings is undefined. */
12849         check("-1", 18446744073709551615UL, 0);
12850         check("-18446744073709551614", 2, 0);
12851         check("-18446744073709551615", 1, 0);
12852         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12853         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12854 #endif
12855 EOCP
12856                 ;;
12857         4)
12858                     $cat >>try.c <<'EOCP'
12859         check("4294967295", 4294967295UL, 0);
12860         check("4294967296", 4294967295UL, ERANGE);
12861 #if 0 /* strtoul() for /^-/ strings is undefined. */
12862         check("-1", 4294967295UL, 0);
12863         check("-4294967294", 2, 0);
12864         check("-4294967295", 1, 0);
12865         check("-4294967296", 4294967295UL, ERANGE);
12866         check("-4294967297", 4294967295UL, ERANGE);
12867 #endif
12868 EOCP
12869                 ;;
12870         *)
12871 : Should we write these tests to be more portable by sprintf-ing
12872 : ~0 and then manipulating that char string as input for strtol?
12873                 ;;
12874         esac
12875         $cat >>try.c <<'EOCP'
12876         if (!bad)
12877                 printf("ok\n");
12878         return 0;
12879 }
12880 EOCP
12881         set try
12882         if eval $compile; then
12883                 case "`$run ./try`" in
12884                 ok) echo "Your strtoul() seems to be working okay." ;;
12885                 *) cat <<EOM >&4
12886 Your strtoul() doesn't seem to be working okay.
12887 EOM
12888                    d_strtoul="$undef"
12889                    ;;
12890                 esac
12891         fi
12892         ;;
12893 esac
12894
12895 : see if strtoull exists
12896 set strtoull d_strtoull
12897 eval $inlibc
12898
12899 case "$d_longlong-$d_strtoull" in
12900 "$define-$define")
12901         $cat <<EOM
12902 Checking whether your strtoull() works okay...
12903 EOM
12904         $cat >try.c <<'EOCP'
12905 #include <errno.h>
12906 #ifdef __hpux
12907 #define strtoull __strtoull
12908 #endif
12909 #include <stdio.h>
12910 extern unsigned long long int strtoull(char *s, char **, int); 
12911 static int bad = 0;
12912 int check(char *s, long long eull, int een) {
12913         long long gull;
12914         errno = 0;
12915         gull = strtoull(s, 0, 10);
12916         if (!((gull == eull) && (errno == een)))
12917                 bad++;
12918 }
12919 int main() {
12920         check(" 1",                                        1LL, 0);
12921         check(" 0",                                        0LL, 0);
12922         check("18446744073709551615",  18446744073709551615ULL, 0);
12923         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12924 #if 0 /* strtoull() for /^-/ strings is undefined. */
12925         check("-1",                    18446744073709551615ULL, 0);
12926         check("-18446744073709551614",                     2LL, 0);
12927         check("-18446744073709551615",                     1LL, 0);
12928         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12929         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12930 #endif
12931         if (!bad)
12932                 printf("ok\n");
12933 }
12934 EOCP
12935         set try
12936         if eval $compile; then
12937                 case "`$run ./try`" in
12938                 ok) echo "Your strtoull() seems to be working okay." ;;
12939                 *) cat <<EOM >&4
12940 Your strtoull() doesn't seem to be working okay.
12941 EOM
12942                    d_strtoull="$undef"
12943                    ;;
12944                 esac
12945         fi
12946         ;;
12947 esac
12948
12949 : see if strtouq exists
12950 set strtouq d_strtouq
12951 eval $inlibc
12952
12953 case "$d_strtouq" in
12954 "$define")
12955         $cat <<EOM
12956 Checking whether your strtouq() works okay...
12957 EOM
12958         $cat >try.c <<'EOCP'
12959 #include <errno.h>
12960 #include <stdio.h>
12961 extern unsigned long long int strtouq(char *s, char **, int); 
12962 static int bad = 0;
12963 void check(char *s, unsigned long long eull, int een) {
12964         unsigned long long gull;
12965         errno = 0;
12966         gull = strtouq(s, 0, 10);
12967         if (!((gull == eull) && (errno == een)))
12968                 bad++;
12969 }
12970 int main() {
12971         check(" 1",                                        1LL, 0);
12972         check(" 0",                                        0LL, 0);
12973         check("18446744073709551615",  18446744073709551615ULL, 0);
12974         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12975 #if 0 /* strtouq() for /^-/ strings is undefined. */
12976         check("-1",                    18446744073709551615ULL, 0);
12977         check("-18446744073709551614",                     2LL, 0);
12978         check("-18446744073709551615",                     1LL, 0);
12979         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12980         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12981 #endif
12982         if (!bad)
12983                 printf("ok\n");
12984         return 0;
12985 }
12986 EOCP
12987         set try
12988         if eval $compile; then
12989                 case "`$run ./try`" in
12990                 ok) echo "Your strtouq() seems to be working okay." ;;
12991                 *) cat <<EOM >&4
12992 Your strtouq() doesn't seem to be working okay.
12993 EOM
12994                    d_strtouq="$undef"
12995                    ;;
12996                 esac
12997         fi
12998         ;;
12999 esac
13000
13001 : see if strxfrm exists
13002 set strxfrm d_strxfrm
13003 eval $inlibc
13004
13005 : see if symlink exists
13006 set symlink d_symlink
13007 eval $inlibc
13008
13009 : see if syscall exists
13010 set syscall d_syscall
13011 eval $inlibc
13012
13013 : see if prototype for syscall is available
13014 echo " "
13015 set d_syscallproto syscall $i_unistd unistd.h
13016 eval $hasproto
13017
13018 : see if sysconf exists
13019 set sysconf d_sysconf
13020 eval $inlibc
13021
13022 : see if system exists
13023 set system d_system
13024 eval $inlibc
13025
13026 : see if tcgetpgrp exists
13027 set tcgetpgrp d_tcgetpgrp
13028 eval $inlibc
13029
13030 : see if tcsetpgrp exists
13031 set tcsetpgrp d_tcsetpgrp
13032 eval $inlibc
13033
13034 : see if prototype for telldir is available
13035 echo " "
13036 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13037 eval $hasproto
13038
13039 : see if this is a sys/times.h system
13040 set sys/times.h i_systimes
13041 eval $inhdr
13042
13043 : see if times exists
13044 echo " "
13045 if set times val -f d_times; eval $csym; $val; then
13046         echo 'times() found.' >&4
13047         d_times="$define"
13048         inc=''
13049         case "$i_systimes" in
13050         "$define") inc='sys/times.h';;
13051         esac
13052         rp="What is the type returned by times() on this system?"
13053         set clock_t clocktype long stdio.h sys/types.h $inc
13054         eval $typedef_ask
13055 else
13056         echo 'times() NOT found, hope that will do.' >&4
13057         d_times="$undef"
13058         clocktype='int'
13059 fi
13060
13061 : see if truncate exists
13062 set truncate d_truncate
13063 eval $inlibc
13064
13065 : see if tzname[] exists
13066 echo " "
13067 if set tzname val -a d_tzname; eval $csym; $val; then
13068         val="$define"
13069         echo 'tzname[] found.' >&4
13070 else
13071         val="$undef"
13072         echo 'tzname[] NOT found.' >&4
13073 fi
13074 set d_tzname
13075 eval $setvar
13076
13077 case "$osname" in
13078 next|rhapsody|darwin) multiarch="$define" ;;
13079 esac
13080 case "$multiarch" in
13081 ''|[nN]*) multiarch="$undef" ;;
13082 esac
13083
13084 : check for ordering of bytes in a long
13085 echo " "
13086 case "$usecrosscompile$multiarch" in
13087 *$define*)
13088         $cat <<EOM
13089 You seem to be either cross-compiling or doing a multiarchitecture build,
13090 skipping the byteorder check.
13091
13092 EOM
13093         byteorder='ffff'
13094         ;;
13095 *)
13096         case "$byteorder" in
13097         '')
13098                 $cat <<'EOM'
13099 In the following, larger digits indicate more significance.  A big-endian
13100 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13101 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13102 machines may have weird orders like 3412.  A Cray will report 87654321,
13103 an Alpha will report 12345678. If the test program works the default is
13104 probably right.
13105 I'm now running the test program...
13106 EOM
13107                 $cat >try.c <<'EOCP'
13108 #include <stdio.h>
13109 int main()
13110 {
13111         int i;
13112         union {
13113                 unsigned long l;
13114                 char c[sizeof(long)];
13115         } u;
13116
13117         if (sizeof(long) > 4)
13118                 u.l = (0x08070605L << 32) | 0x04030201L;
13119         else
13120                 u.l = 0x04030201L;
13121         for (i = 0; i < sizeof(long); i++)
13122                 printf("%c", u.c[i]+'0');
13123         printf("\n");
13124         exit(0);
13125 }
13126 EOCP
13127                 xxx_prompt=y
13128                 set try
13129                 if eval $compile && ./try > /dev/null; then
13130                         dflt=`$run ./try`
13131                         case "$dflt" in
13132                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13133                                 echo "(The test program ran ok.)"
13134                                 echo "byteorder=$dflt"
13135                                 xxx_prompt=n
13136                         ;;
13137                         ????|????????) echo "(The test program ran ok.)" ;;
13138                         *) echo "(The test program didn't run right for some reason.)" ;;
13139                         esac
13140                 else
13141                         dflt='4321'
13142                         cat <<'EOM'
13143 (I can't seem to compile the test program.  Guessing big-endian...)
13144 EOM
13145                 fi
13146                 case "$xxx_prompt" in
13147                 y)
13148                         rp="What is the order of bytes in a long?"
13149                         . ./myread
13150                         byteorder="$ans"
13151                         ;;
13152                 *)      byteorder=$dflt
13153                         ;;
13154                 esac
13155                 ;;
13156         esac
13157         $rm -f try.c try
13158         ;;
13159 esac
13160
13161
13162 $cat <<EOM
13163
13164 Checking to see whether you can access character data unalignedly...
13165 EOM
13166 $cat >try.c <<EOCP
13167 #include <stdio.h>
13168 #define U32 $u32type
13169 #define BYTEORDER $byteorder
13170 int main() {
13171 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13172     U8 buf[] = "\0\0\0\1\0\0\0\0";
13173     U32 *up;
13174     int i;
13175
13176     if (sizeof(U32) != 4) {
13177         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13178         exit(1);
13179     }
13180
13181     fflush(stdout);
13182
13183     for (i = 0; i < 4; i++) {
13184         up = (U32*)(buf + i);
13185         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13186                (*up == 1 << (8*(3-i)))  /* little-endian */
13187               )
13188            )
13189         {
13190             printf("read failed (%x)\n", *up);
13191             exit(2);
13192         }
13193     }
13194
13195     /* write test */
13196     for (i = 0; i < 4; i++) {
13197         up = (U32*)(buf + i);
13198         *up = 0xBeef;
13199         if (*up != 0xBeef) {
13200             printf("write failed (%x)\n", *up);
13201             exit(3);
13202         }
13203     }
13204
13205     exit(0);
13206 #else
13207     printf("1\n");
13208     exit(1);
13209 #endif
13210     return 0;
13211 }
13212 EOCP
13213 set try
13214 if eval $compile_ok; then
13215         echo "(Testing for character data alignment may dump core.)" >&4
13216         $run ./try 2>&1 >/dev/null
13217         case "$?" in
13218         0)      cat >&4 <<EOM
13219 You can access character data pretty unalignedly.
13220 EOM
13221                 d_u32align="$undef"
13222                 ;;
13223         *)      cat >&4 <<EOM
13224 It seems that you must access character data in an aligned manner.
13225 EOM
13226                 d_u32align="$define"
13227                 ;;
13228         esac
13229         $rm -f core core.try.* try.core
13230 else
13231         rp='Can you access character data at unaligned addresses?'
13232         dflt='n'
13233         . ./myread
13234         case "$ans" in
13235         [yY]*)  d_u32align="$undef"  ;;
13236         *)      d_u32align="$define" ;;
13237         esac
13238 fi
13239
13240 : see if ualarm exists
13241 set ualarm d_ualarm
13242 eval $inlibc
13243
13244 : see if umask exists
13245 set umask d_umask
13246 eval $inlibc
13247
13248 : see if usleep exists
13249 set usleep d_usleep
13250 eval $inlibc
13251
13252 : see if prototype for usleep is available
13253 echo " "
13254 set d_usleepproto usleep $i_unistd unistd.h
13255 eval $hasproto
13256
13257 : see if ustat exists
13258 set ustat d_ustat
13259 eval $inlibc
13260
13261 : backward compatibility for d_hvfork
13262 if test X$d_hvfork != X; then
13263         d_vfork="$d_hvfork"
13264         d_hvfork=''
13265 fi
13266 : see if there is a vfork
13267 val=''
13268 set vfork val
13269 eval $inlibc
13270
13271 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13272 : perl on Solaris 2.x, and probably elsewhere.
13273 case "$val" in
13274 $define)
13275         echo " "
13276         case "$usevfork" in
13277         false) dflt='n';;
13278         *) dflt='y';;
13279         esac
13280         cat <<'EOM'
13281  
13282 Perl can only use a vfork() that doesn't suffer from strict
13283 restrictions on calling functions or modifying global data in
13284 the child.  For example, glibc-2.1 contains such a vfork()
13285 that is unsuitable.  If your system provides a proper fork()
13286 call, chances are that you do NOT want perl to use vfork().
13287
13288 EOM
13289         rp="Do you still want to use vfork()?"
13290         . ./myread
13291         case "$ans" in
13292         y|Y) ;;
13293         *)
13294                 echo "Ok, we won't use vfork()."
13295                 val="$undef"
13296                 ;;
13297         esac
13298         ;;
13299 esac
13300 set d_vfork
13301 eval $setvar
13302 case "$d_vfork" in
13303 $define) usevfork='true';;
13304 *) usevfork='false';;
13305 esac
13306
13307 : see if this is an sysdir system
13308 set sys/dir.h i_sysdir
13309 eval $inhdr
13310
13311 : see if this is an sysndir system
13312 set sys/ndir.h i_sysndir
13313 eval $inhdr
13314
13315 : see if closedir exists
13316 set closedir d_closedir
13317 eval $inlibc
13318
13319 case "$d_closedir" in
13320 "$define")
13321         echo " "
13322         echo "Checking whether closedir() returns a status..." >&4
13323         cat > try.c <<EOM
13324 #$i_dirent I_DIRENT             /**/
13325 #$i_sysdir I_SYS_DIR            /**/
13326 #$i_sysndir I_SYS_NDIR          /**/
13327 #$i_systypes I_SYS_TYPES        /**/
13328
13329 #if defined(I_SYS_TYPES)
13330 #include <sys/types.h>
13331 #endif
13332 #if defined(I_DIRENT)
13333 #include <dirent.h>
13334 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13335 #include <sys/dir.h>
13336 #endif
13337 #else
13338 #ifdef I_SYS_NDIR
13339 #include <sys/ndir.h>
13340 #else
13341 #ifdef I_SYS_DIR
13342 #ifdef hp9000s500
13343 #include <ndir.h>       /* may be wrong in the future */
13344 #else
13345 #include <sys/dir.h>
13346 #endif
13347 #endif
13348 #endif
13349 #endif 
13350 int main() { return closedir(opendir(".")); }
13351 EOM
13352         set try
13353         if eval $compile_ok; then
13354                 if $run ./try > /dev/null 2>&1 ; then
13355                         echo "Yes, it does."
13356                         val="$undef"
13357                 else
13358                         echo "No, it doesn't."
13359                         val="$define"
13360                 fi
13361         else
13362                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13363                 val="$define"
13364         fi
13365         ;;
13366 *)
13367         val="$undef";
13368         ;;
13369 esac
13370 set d_void_closedir
13371 eval $setvar
13372 $rm -f try try.*
13373 : see if there is a wait4
13374 set wait4 d_wait4
13375 eval $inlibc
13376
13377 : see if waitpid exists
13378 set waitpid d_waitpid
13379 eval $inlibc
13380
13381 : see if wcstombs exists
13382 set wcstombs d_wcstombs
13383 eval $inlibc
13384
13385 : see if wctomb exists
13386 set wctomb d_wctomb
13387 eval $inlibc
13388
13389 : see if writev exists
13390 set writev d_writev
13391 eval $inlibc
13392
13393 : preserve RCS keywords in files with variable substitution, grrr
13394 Date='$Date'
13395 Id='$Id'
13396 Log='$Log'
13397 RCSfile='$RCSfile'
13398 Revision='$Revision'
13399
13400 : check for alignment requirements
13401 echo " "
13402 case "$usecrosscompile$multiarch" in
13403 *$define*)
13404         $cat <<EOM
13405 You seem to be either cross-compiling or doing a multiarchitecture build,
13406 skipping the memory alignment check.
13407
13408 EOM
13409         case "$alignbytes" in
13410         '') alignbytes=8 ;;
13411         esac
13412         ;;
13413 *)
13414         case "$alignbytes" in
13415         '') echo "Checking alignment constraints..." >&4
13416                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13417                         $cat >try.c <<'EOCP'
13418 typedef long double NV;
13419 EOCP
13420                 else
13421                         $cat >try.c <<'EOCP'
13422 typedef double NV;
13423 EOCP
13424                 fi
13425                 $cat >>try.c <<'EOCP'
13426 #include <stdio.h>
13427 struct foobar {
13428         char foo;
13429         NV bar;
13430 } try_algn;
13431 int main()
13432 {
13433     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13434     return(0);
13435 }
13436 EOCP
13437                 set try
13438                 if eval $compile_ok; then
13439                         dflt=`$run ./try`
13440                 else
13441                         dflt='8'
13442                         echo "(I can't seem to compile the test program...)"
13443                 fi
13444                 ;;
13445         *) dflt="$alignbytes"
13446                 ;;
13447         esac
13448         rp="Doubles must be aligned on a how-many-byte boundary?"
13449         . ./myread
13450         alignbytes="$ans"
13451         $rm -f try.c try
13452         ;;
13453 esac
13454
13455
13456 : set the base revision
13457 baserev=5.0
13458
13459 : how do we catenate cpp tokens here?
13460 echo " "
13461 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13462 $cat >cpp_stuff.c <<'EOCP'
13463 #define RCAT(a,b)a/**/b
13464 #define ACAT(a,b)a ## b
13465 RCAT(Rei,ser)
13466 ACAT(Cir,cus)
13467 EOCP
13468 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13469 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13470         echo "Oh!  Smells like ANSI's been here." >&4
13471         echo "We can catify or stringify, separately or together!"
13472         cpp_stuff=42
13473 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13474         echo "Ah, yes!  The good old days!" >&4
13475         echo "However, in the good old days we don't know how to stringify and"
13476         echo "catify at the same time."
13477         cpp_stuff=1
13478 else
13479         $cat >&4 <<EOM
13480 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13481 to have to edit the values of CAT[2-5] in config.h...
13482 EOM
13483         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13484 fi
13485 $rm -f cpp_stuff.*
13486
13487 : see if this is a db.h system
13488 set db.h i_db
13489 eval $inhdr
13490
13491 case "$i_db" in
13492 $define)
13493         : Check db version.
13494         echo " "
13495         echo "Checking Berkeley DB version ..." >&4
13496         $cat >try.c <<EOCP
13497 #$d_const HASCONST
13498 #ifndef HASCONST
13499 #define const
13500 #endif
13501 #include <sys/types.h>
13502 #include <stdio.h>
13503 #include <db.h>
13504 int main(int argc, char *argv[])
13505 {
13506 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13507     int Major, Minor, Patch ;
13508     unsigned long Version ;
13509     (void)db_version(&Major, &Minor, &Patch) ;
13510     if (argc == 2) {
13511         printf("%d %d %d %d %d %d\n",
13512                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13513                Major, Minor, Patch);
13514         exit(0);
13515     }
13516     printf("You have Berkeley DB Version 2 or greater.\n");
13517
13518     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13519                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13520     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13521                 Major, Minor, Patch) ;
13522
13523     /* check that db.h & libdb are compatible */
13524     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13525         printf("db.h and libdb are incompatible.\n") ;
13526         exit(3);        
13527     }
13528
13529     printf("db.h and libdb are compatible.\n") ;
13530
13531     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13532                 + DB_VERSION_PATCH ;
13533
13534     /* needs to be >= 2.3.4 */
13535     if (Version < 2003004) {
13536     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13537         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13538         exit(2);        
13539     }
13540
13541     exit(0);
13542 #else
13543 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13544     if (argc == 2) {
13545         printf("1 0 0\n");
13546         exit(0);
13547     }
13548     printf("You have Berkeley DB Version 1.\n");
13549     exit(0);    /* DB version < 2: the coast is clear. */
13550 #else
13551     exit(1);    /* <db.h> not Berkeley DB? */
13552 #endif
13553 #endif
13554 }
13555 EOCP
13556         set try
13557         if eval $compile_ok && $run ./try; then
13558                 echo 'Looks OK.' >&4
13559                 set `$run ./try 1`
13560                 db_version_major=$1
13561                 db_version_minor=$2
13562                 db_version_patch=$3
13563         else
13564                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13565                 i_db=$undef
13566                 case " $libs " in
13567                 *"-ldb "*)
13568                         : Remove db from list of libraries to use
13569                         echo "Removing unusable -ldb from library list" >&4
13570                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13571                         shift
13572                         libs="$*"
13573                         echo "libs = $libs" >&4
13574                         ;;
13575                 esac
13576         fi
13577         $rm -f try.*
13578         ;;
13579 esac
13580
13581 case "$i_db" in
13582 define)
13583         : Check the return type needed for hash 
13584         echo " "
13585         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13586         $cat >try.c <<EOCP
13587 #$d_const HASCONST
13588 #ifndef HASCONST
13589 #define const
13590 #endif
13591 #include <sys/types.h>
13592 #include <db.h>
13593
13594 #ifndef DB_VERSION_MAJOR
13595 u_int32_t hash_cb (ptr, size)
13596 const void *ptr;
13597 size_t size;
13598 {
13599 }
13600 HASHINFO info;
13601 int main()
13602 {
13603         info.hash = hash_cb;
13604 }
13605 #endif
13606 EOCP
13607         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13608                 if $contains warning try.out >>/dev/null 2>&1 ; then
13609                         db_hashtype='int'
13610                 else
13611                         db_hashtype='u_int32_t'
13612                 fi
13613         else
13614                 : XXX Maybe we should just give up here.
13615                 db_hashtype=u_int32_t
13616                 $cat try.out >&4
13617                 echo "Help:  I can't seem to compile the db test program." >&4
13618                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13619         fi
13620         $rm -f try.*
13621         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13622         ;;
13623 *)      db_hashtype=u_int32_t
13624         ;;
13625 esac
13626 case "$i_db" in
13627 define)
13628         : Check the return type needed for prefix 
13629         echo " "
13630         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13631         cat >try.c <<EOCP
13632 #$d_const HASCONST
13633 #ifndef HASCONST
13634 #define const
13635 #endif
13636 #include <sys/types.h>
13637 #include <db.h>
13638
13639 #ifndef DB_VERSION_MAJOR
13640 size_t prefix_cb (key1, key2)
13641 const DBT *key1;
13642 const DBT *key2;
13643 {
13644 }
13645 BTREEINFO info;
13646 int main()
13647 {
13648         info.prefix = prefix_cb;
13649 }
13650 #endif
13651 EOCP
13652         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13653                 if $contains warning try.out >>/dev/null 2>&1 ; then
13654                         db_prefixtype='int'
13655                 else
13656                         db_prefixtype='size_t'
13657                 fi
13658         else
13659                 db_prefixtype='size_t'
13660                 : XXX Maybe we should just give up here.
13661                 $cat try.out >&4
13662                 echo "Help:  I can't seem to compile the db test program." >&4
13663                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13664         fi
13665         $rm -f try.*
13666         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13667         ;;
13668 *)      db_prefixtype='size_t'
13669         ;;
13670 esac
13671
13672
13673 : How can we generate normalized random numbers ?
13674 echo " "
13675 echo "Looking for a random number function..." >&4
13676 case "$randfunc" in
13677 '')
13678         if set drand48 val -f; eval $csym; $val; then
13679                 dflt="drand48"
13680                 echo "Good, found drand48()." >&4
13681         elif set random val -f; eval $csym; $val; then
13682                 dflt="random"
13683                 echo "OK, found random()." >&4
13684         else
13685                 dflt="rand"
13686                 echo "Yick, looks like I have to use rand()." >&4
13687         fi
13688         echo " "
13689         ;;
13690 *)
13691         dflt="$randfunc"
13692         ;;
13693 esac
13694 cont=true
13695
13696 case "$ccflags" in
13697 *-Dmy_rand=*|*-Dmy_srand=*)
13698         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13699         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13700         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13701         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13702         ;;
13703 esac
13704
13705 while $test "$cont"; do
13706         rp="Use which function to generate random numbers?"
13707         . ./myread
13708         if $test "$ans" = "$dflt"; then
13709                 : null
13710         else
13711                 randbits=''
13712         fi
13713         randfunc="$ans"
13714         if set $ans val -f; eval $csym; $val; then
13715                 cont=''
13716         else
13717                 dflt=y
13718                 rp="I cannot find function $ans. Use that name anyway?"
13719                 . ./myread
13720                 dflt=rand
13721                 case "$ans" in
13722                         [yY]*) cont='';;
13723                 esac
13724         fi
13725         case "$cont" in
13726         '')
13727                 case "$randfunc" in
13728                 drand48)
13729                         drand01="drand48()"
13730                         seedfunc="srand48"
13731                         randbits=48
13732                         randseedtype=long
13733                         ;;
13734                 rand|random)
13735                         case "$randbits" in
13736                         '')
13737 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13738                                 $cat >try.c <<EOCP
13739 #$i_unistd I_UNISTD
13740 #$i_stdlib I_STDLIB
13741 #include <stdio.h>
13742 #ifdef I_UNISTD
13743 #  include <unistd.h>
13744 #endif
13745 #ifdef I_STDLIB
13746 #  include <stdlib.h>
13747 #endif
13748 int main()
13749 {
13750         register int i;
13751         register unsigned long tmp;
13752         register unsigned long max = 0L;
13753
13754         for (i = 1000; i; i--) {
13755                 tmp = (unsigned long) $randfunc();
13756                 if (tmp > max) max = tmp;
13757         }
13758         for (i = 0; max; i++)
13759                 max /= 2;
13760         printf("%d\n",i);
13761 }
13762 EOCP
13763                                 set try
13764                                 if eval $compile_ok; then
13765                                         dflt=`try`
13766                                 else
13767                                         dflt='?'
13768                                         echo "(I can't seem to compile the test program...)"
13769                                 fi
13770                                 ;;
13771                         *)
13772                                 dflt="$randbits"
13773                                 ;;
13774                         esac
13775                         rp="How many bits does your $randfunc() function produce?"
13776                         . ./myread
13777                         randbits="$ans"
13778                         $rm -f try.c try
13779                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13780                         seedfunc="s$randfunc"
13781                         randseedtype=unsigned
13782                         ;;
13783                 *)
13784                         dflt="31"
13785                         rp="How many bits does your $randfunc() function produce?"
13786                         . ./myread
13787                         randbits="$ans"
13788                         seedfunc="s$randfunc"
13789                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13790                         if set $seedfunc val -f; eval $csym; $val; then
13791                                 echo "(Using $seedfunc() to seed random generator)"
13792                         else
13793                                 echo "(Warning: no $seedfunc() to seed random generator)"
13794                                 seedfunc=rand
13795                         fi
13796                         randseedtype=unsigned
13797                         ;;
13798                 esac
13799                 ;;
13800         esac
13801 done
13802
13803 echo " "
13804 echo "Determining whether or not we are on an EBCDIC system..." >&4
13805 $cat >try.c <<'EOM'
13806 int main()
13807 {
13808   if ('M'==0xd4) return 0;
13809   return 1;
13810 }
13811 EOM
13812
13813 val=$undef
13814 set try
13815 if eval $compile_ok; then
13816         if $run ./try; then
13817                 echo "You seem to speak EBCDIC." >&4
13818                 val="$define"
13819         else
13820                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13821         fi
13822 else
13823         echo "I'm unable to compile the test program." >&4
13824         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13825 fi
13826 $rm -f try try.*
13827 set ebcdic
13828 eval $setvar
13829
13830 echo " "
13831 $cat >&4 <<EOM
13832 Checking how to flush all pending stdio output...
13833 EOM
13834 # I only know how to find the first 32 possibly open files on SunOS.
13835 # See also hints/sunos_4_1.sh and util.c  --AD
13836 case "$osname" in
13837 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13838 esac
13839 $cat >>try.c <<EOCP
13840 #include <stdio.h>
13841 #$i_unistd I_UNISTD
13842 #ifdef I_UNISTD
13843 # include <unistd.h>
13844 #endif
13845 #$d_sysconf HAS_SYSCONF
13846 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13847 #ifdef HAS_STDIO_STREAM_ARRAY
13848 # define STDIO_STREAM_ARRAY $stdio_stream_array
13849 #endif
13850 int main() {
13851   FILE* p;
13852   unlink("try.out");
13853   p = fopen("try.out", "w");
13854 #ifdef TRY_FPUTC
13855   fputc('x', p);
13856 #else
13857 # ifdef TRY_FPRINTF
13858   fprintf(p, "x");
13859 # endif
13860 #endif
13861 #ifdef TRY_FFLUSH_NULL
13862   fflush(NULL);
13863 #endif
13864 #ifdef TRY_FFLUSH_ALL
13865   {
13866     long open_max = -1;
13867 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13868     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13869 # else
13870 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13871     open_max = sysconf(_SC_OPEN_MAX);
13872 #  else
13873 #   ifdef FOPEN_MAX
13874     open_max = FOPEN_MAX;
13875 #   else
13876 #    ifdef OPEN_MAX
13877     open_max = OPEN_MAX;
13878 #    else
13879 #     ifdef _NFILE
13880     open_max = _NFILE;
13881 #     endif
13882 #    endif
13883 #   endif
13884 #  endif
13885 # endif 
13886 # ifdef HAS_STDIO_STREAM_ARRAY
13887     if (open_max > 0) {
13888       long i;
13889       for (i = 0; i < open_max; i++)
13890             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13891                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13892                 STDIO_STREAM_ARRAY[i]._flag)
13893                 fflush(&STDIO_STREAM_ARRAY[i]);
13894     }   
13895   }
13896 # endif
13897 #endif
13898   _exit(42);
13899 }
13900 EOCP
13901 : first we have to find out how _not_ to flush
13902 $to try.c
13903 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13904     output=''
13905     set try -DTRY_FPUTC
13906     if eval $compile; then
13907             $run ./try 2>/dev/null
13908             code="$?"
13909             $from try.out
13910             if $test ! -s try.out -a "X$code" = X42; then
13911                 output=-DTRY_FPUTC
13912             fi
13913     fi
13914     case "$output" in
13915     '')
13916             set try -DTRY_FPRINTF
13917             if eval $compile; then
13918                     $run ./try 2>/dev/null
13919                     code="$?"
13920                     $from try.out
13921                     if $test ! -s try.out -a "X$code" = X42; then
13922                         output=-DTRY_FPRINTF
13923                     fi
13924             fi
13925         ;;
13926     esac
13927 fi
13928 : check for fflush NULL behaviour
13929 case "$fflushNULL" in
13930 '')     set try -DTRY_FFLUSH_NULL $output
13931         if eval $compile; then
13932                 $run ./try 2>/dev/null
13933                 code="$?"
13934                 $from try.out
13935                 if $test -s try.out -a "X$code" = X42; then
13936                         fflushNULL="`$cat try.out`"
13937                 else
13938                         if $test "X$code" != X42; then
13939                                 $cat >&4 <<EOM
13940 (If this test failed, don't worry, we'll try another method shortly.)
13941 EOM
13942                         fi
13943                 fi
13944         fi
13945         $rm -f core try.core core.try.*
13946         case "$fflushNULL" in
13947         x)      $cat >&4 <<EOM
13948 Your fflush(NULL) works okay for output streams.
13949 Let's see if it clobbers input pipes...
13950 EOM
13951 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13952 # bug that improperly flushes the input end of pipes.  So we avoid the
13953 # autoflush on fork/system/exec support for now. :-(
13954 $cat >tryp.c <<EOCP
13955 #include <stdio.h>
13956 int
13957 main(int argc, char **argv)
13958 {
13959     char buf[1024];
13960     int i;
13961     char *bp = buf;
13962     while (1) {
13963         while ((i = getc(stdin)) != -1
13964                && (*bp++ = i) != '\n'
13965                && bp < &buf[1024])
13966         /* DO NOTHING */ ;
13967         *bp = '\0';
13968         fprintf(stdout, "%s", buf);
13969         fflush(NULL);
13970         if (i == -1)
13971             return 0;
13972         bp = buf;
13973     }
13974 }
13975 EOCP
13976                 fflushNULL="$define"
13977                 set tryp
13978                 if eval $compile; then
13979                     $rm -f tryp.out
13980                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13981                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13982                        $cat >&4 <<EOM
13983 fflush(NULL) seems to behave okay with input streams.
13984 EOM
13985                         fflushNULL="$define"
13986                     else
13987                         $cat >&4 <<EOM
13988 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13989 EOM
13990                         fflushNULL="$undef"
13991                     fi
13992                 fi
13993                 $rm -f core tryp.c tryp.core core.tryp.*
13994                 ;;
13995         '')     $cat >&4 <<EOM
13996 Your fflush(NULL) isn't working (contrary to ANSI C).
13997 EOM
13998                 fflushNULL="$undef"
13999                 ;;
14000         *)      $cat >&4 <<EOM
14001 Cannot figure out whether your fflush(NULL) works or not.
14002 I'm assuming it doesn't (contrary to ANSI C).
14003 EOM
14004                 fflushNULL="$undef"
14005                 ;;
14006         esac
14007         ;;
14008 $define|true|[yY]*)
14009         fflushNULL="$define"
14010         ;;
14011 *)
14012         fflushNULL="$undef"
14013         ;;
14014 esac
14015 : check explicit looping only if NULL did not work, and if the pipe
14016 : bug does not show up on an explicit flush too
14017 case "$fflushNULL" in
14018 "$undef")
14019         $cat >tryp.c <<EOCP
14020 #include <stdio.h>
14021 int
14022 main(int argc, char **argv)
14023 {
14024     char buf[1024];
14025     int i;
14026     char *bp = buf;
14027     while (1) {
14028         while ((i = getc(stdin)) != -1
14029                && (*bp++ = i) != '\n'
14030                && bp < &buf[1024])
14031         /* DO NOTHING */ ;
14032         *bp = '\0';
14033         fprintf(stdout, "%s", buf);
14034         fflush(stdin);
14035         if (i == -1)
14036             return 0;
14037         bp = buf;
14038     }
14039 }
14040 EOCP
14041         set tryp
14042         if eval $compile; then
14043             $rm -f tryp.out
14044             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14045             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14046                $cat >&4 <<EOM
14047 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14048 EOM
14049                 : now check for fflushall behaviour
14050                 case "$fflushall" in
14051                 '')     set try -DTRY_FFLUSH_ALL $output
14052                         if eval $compile; then
14053                                 $cat >&4 <<EOM
14054 (Now testing the other method--but note that this also may fail.)
14055 EOM
14056                                 $run ./try 2>/dev/null
14057                                 code=$?
14058                                 $from try.out
14059                                 if $test -s try.out -a "X$code" = X42; then
14060                                         fflushall="`$cat try.out`"
14061                                 fi
14062                         fi
14063                         $rm -f core try.core core.try.*
14064                         case "$fflushall" in
14065                         x)      $cat >&4 <<EOM
14066 Whew. Flushing explicitly all the stdio streams works.
14067 EOM
14068                                 fflushall="$define"
14069                                 ;;
14070                         '')     $cat >&4 <<EOM
14071 Sigh. Flushing explicitly all the stdio streams doesn't work.
14072 EOM
14073                                 fflushall="$undef"
14074                                 ;;
14075                         *)      $cat >&4 <<EOM
14076 Cannot figure out whether flushing stdio streams explicitly works or not.
14077 I'm assuming it doesn't.
14078 EOM
14079                                 fflushall="$undef"
14080                                 ;;
14081                         esac
14082                         ;;
14083                 "$define"|true|[yY]*)
14084                         fflushall="$define"
14085                         ;;
14086                 *)
14087                         fflushall="$undef"
14088                         ;;
14089                 esac
14090             else
14091                 $cat >&4 <<EOM
14092 All is futile.  Even fflush(stdin) clobbers input pipes!
14093 EOM
14094                 fflushall="$undef"
14095             fi
14096         else
14097             fflushall="$undef"
14098         fi
14099         $rm -f core tryp.c tryp.core core.tryp.*
14100         ;;
14101 *)      fflushall="$undef"
14102         ;;
14103 esac
14104
14105 case "$fflushNULL$fflushall" in
14106 undefundef)
14107         $cat <<EOM
14108 OK, I give up.  I cannot figure out how to flush pending stdio output.
14109 We won't be flushing handles at all before fork/exec/popen.
14110 EOM
14111         ;;
14112 esac
14113 $rm -f try.* try$exe_ext
14114
14115 : Store the full pathname to the ar program for use in the C program
14116 : Respect a hint or command line value for full_ar.
14117 case "$full_ar" in
14118 '') full_ar=$ar ;;
14119 esac
14120
14121 : Store the full pathname to the sed program for use in the C program
14122 full_sed=$sed
14123
14124 : see what type gids are declared as in the kernel
14125 echo " "
14126 echo "Looking for the type for group ids returned by getgid()."
14127 set gid_t gidtype xxx stdio.h sys/types.h
14128 eval $typedef
14129 case "$gidtype" in
14130 xxx)
14131         xxx=`./findhdr sys/user.h`
14132         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14133         case $1 in
14134         unsigned) dflt="$1 $2" ;;
14135         *) dflt="$1" ;;
14136         esac
14137         ;;
14138 *) dflt="$gidtype";;
14139 esac
14140 case "$gidtype" in
14141 gid_t) echo "gid_t found." ;;
14142 *)      rp="What is the type for group ids returned by getgid()?"
14143         . ./myread
14144         gidtype="$ans"
14145         ;;
14146 esac
14147
14148 echo " "
14149 case "$gidtype" in
14150 *_t) zzz="$gidtype"     ;;
14151 *)   zzz="gid"          ;;
14152 esac
14153 echo "Checking the size of $zzz..." >&4 
14154 cat > try.c <<EOCP
14155 #include <sys/types.h>
14156 #include <stdio.h>
14157 int main() {
14158     printf("%d\n", (int)sizeof($gidtype));
14159     exit(0);
14160 }
14161 EOCP
14162 set try
14163 if eval $compile_ok; then
14164         yyy=`$run ./try`
14165         case "$yyy" in
14166         '')     gidsize=4
14167                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14168                 ;;
14169         *)      gidsize=$yyy
14170                 echo "Your $zzz is $gidsize bytes long."
14171                 ;;
14172         esac
14173 else
14174         gidsize=4
14175         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14176 fi
14177
14178
14179 echo " "
14180 case "$gidtype" in
14181 *_t) zzz="$gidtype"     ;;
14182 *)   zzz="gid"          ;;
14183 esac
14184 echo "Checking the sign of $zzz..." >&4 
14185 cat > try.c <<EOCP
14186 #include <sys/types.h>
14187 #include <stdio.h>
14188 int main() {
14189         $gidtype foo = -1;
14190         if (foo < 0)
14191                 printf("-1\n");
14192         else
14193                 printf("1\n");
14194 }
14195 EOCP
14196 set try
14197 if eval $compile; then
14198         yyy=`$run ./try`
14199         case "$yyy" in
14200         '')     gidsign=1
14201                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14202                 ;;
14203         *)      gidsign=$yyy
14204                 case "$gidsign" in
14205                  1) echo "Your $zzz is unsigned." ;;
14206                 -1) echo "Your $zzz is signed."   ;;
14207                 esac
14208                 ;;
14209         esac
14210 else
14211         gidsign=1
14212         echo "(I can't compile the test program--guessing unsigned.)" >&4
14213 fi
14214
14215
14216 echo " "
14217
14218 if $test X"$quadtype" != X; then
14219
14220 echo "Checking how to print 64-bit integers..." >&4
14221
14222 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14223         $cat >try.c <<'EOCP'
14224 #include <sys/types.h>
14225 #include <stdio.h>
14226 int main() {
14227   int q = 12345678901;
14228   printf("%ld\n", q);
14229 }
14230 EOCP
14231         set try
14232         if eval $compile; then
14233                 yyy=`$run ./try`
14234                 case "$yyy" in
14235                 12345678901)
14236                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14237                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14238                         echo "We will use %d."
14239                         ;;
14240                 esac
14241         fi
14242 fi
14243
14244 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14245         $cat >try.c <<'EOCP'
14246 #include <sys/types.h>
14247 #include <stdio.h>
14248 int main() {
14249   long q = 12345678901;
14250   printf("%ld\n", q);
14251 }
14252 EOCP
14253         set try
14254         if eval $compile; then
14255                 yyy=`$run ./try`
14256                 case "$yyy" in
14257                 12345678901)
14258                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14259                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14260                         echo "We will use %ld."
14261                         ;;
14262                 esac
14263         fi
14264 fi
14265
14266 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14267         $cat >try.c <<'EOCP'
14268 #include <sys/types.h>
14269 #include <inttypes.h>
14270 #include <stdio.h>
14271 int main() {
14272   int64_t q = 12345678901;
14273   printf("%" PRId64 "\n", q);
14274 }
14275 EOCP
14276         set try
14277         if eval $compile; then
14278                 yyy=`$run ./try`
14279                 case "$yyy" in
14280                 12345678901)
14281                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14282                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14283                         echo "We will use the C9X style."
14284                         ;;
14285                 esac
14286         fi
14287 fi
14288
14289 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14290         $cat >try.c <<EOCP
14291 #include <sys/types.h>
14292 #include <stdio.h>
14293 int main() {
14294   $quadtype q = 12345678901;
14295   printf("%Ld\n", q);
14296 }
14297 EOCP
14298         set try
14299         if eval $compile; then
14300                 yyy=`$run ./try`
14301                 case "$yyy" in
14302                 12345678901)
14303                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14304                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14305                         echo "We will use %Ld."
14306                         ;;
14307                 esac
14308         fi
14309 fi
14310
14311 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14312         $cat >try.c <<'EOCP'
14313 #include <sys/types.h>
14314 #include <stdio.h>
14315 int main() {
14316   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14317   printf("%lld\n", q);
14318 }
14319 EOCP
14320         set try
14321         if eval $compile; then
14322                 yyy=`$run ./try`
14323                 case "$yyy" in
14324                 12345678901)
14325                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14326                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14327                         echo "We will use the %lld style."
14328                         ;;
14329                 esac
14330         fi
14331 fi
14332
14333 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14334         $cat >try.c <<EOCP
14335 #include <sys/types.h>
14336 #include <stdio.h>
14337 int main() {
14338   $quadtype q = 12345678901;
14339   printf("%qd\n", q);
14340 }
14341 EOCP
14342         set try
14343         if eval $compile; then
14344                 yyy=`$run ./try`
14345                 case "$yyy" in
14346                 12345678901)
14347                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14348                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14349                         echo "We will use %qd."
14350                         ;;
14351                 esac
14352         fi
14353 fi
14354
14355 if $test X"$sPRId64" = X; then
14356         echo "Cannot figure out how to print 64-bit integers." >&4
14357 fi
14358
14359 $rm -f try try.*
14360
14361 fi
14362
14363 case "$sPRId64" in
14364 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14365         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14366         ;;
14367 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14368         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14369         ;;
14370 esac
14371
14372
14373 echo " "
14374 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14375
14376 if $test X"$ivsize" = X8; then
14377         ivdformat="$sPRId64"
14378         uvuformat="$sPRIu64"
14379         uvoformat="$sPRIo64"
14380         uvxformat="$sPRIx64"
14381         uvXUformat="$sPRIXU64"
14382 else
14383         if $test X"$ivsize" = X"$longsize"; then
14384                 ivdformat='"ld"'
14385                 uvuformat='"lu"'
14386                 uvoformat='"lo"'
14387                 uvxformat='"lx"'
14388                 uvXUformat='"lX"'
14389         else
14390                 if $test X"$ivsize" = X"$intsize"; then
14391                         ivdformat='"d"'
14392                         uvuformat='"u"'
14393                         uvoformat='"o"'
14394                         uvxformat='"x"'
14395                         uvXUformat='"X"'
14396                 else
14397                         : far out
14398                         if $test X"$ivsize" = X"$shortsize"; then
14399                                 ivdformat='"hd"'
14400                                 uvuformat='"hu"'
14401                                 uvoformat='"ho"'
14402                                 uvxformat='"hx"'
14403                                 uvXUformat='"hX"'
14404                         fi
14405                 fi
14406         fi
14407 fi
14408
14409 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14410         nveformat="$sPRIeldbl"
14411         nvfformat="$sPRIfldbl"
14412         nvgformat="$sPRIgldbl"
14413         nvEUformat="$sPRIEUldbl"
14414         nvFUformat="$sPRIFUldbl"
14415         nvGUformat="$sPRIGUldbl"
14416 else
14417         nveformat='"e"'
14418         nvfformat='"f"'
14419         nvgformat='"g"'
14420         nvEUformat='"E"'
14421         nvFUformat='"F"'
14422         nvGUformat='"G"'
14423 fi
14424
14425 case "$ivdformat" in
14426 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14427     exit 1
14428     ;;
14429 esac
14430
14431
14432 echo " "
14433 $echo "Checking the format string to be used for gids..." >&4
14434
14435 case "$gidsign" in
14436 -1)     if $test X"$gidsize" = X"$ivsize"; then
14437                 gidformat="$ivdformat"
14438         else
14439                 if $test X"$gidsize" = X"$longsize"; then
14440                         gidformat='"ld"'
14441                 else
14442                         if $test X"$gidsize" = X"$intsize"; then
14443                                 gidformat='"d"'
14444                         else
14445                                 if $test X"$gidsize" = X"$shortsize"; then
14446                                         gidformat='"hd"'
14447                                 fi
14448                         fi
14449                 fi
14450         fi
14451         ;;
14452 *)      if $test X"$gidsize" = X"$uvsize"; then
14453                 gidformat="$uvuformat"
14454         else
14455                 if $test X"$gidsize" = X"$longsize"; then
14456                         gidformat='"lu"'
14457                 else
14458                         if $test X"$gidsize" = X"$intsize"; then
14459                                 gidformat='"u"'
14460                         else
14461                                 if $test X"$gidsize" = X"$shortsize"; then
14462                                         gidformat='"hu"'
14463                                 fi
14464                         fi
14465                 fi
14466         fi
14467         ;;
14468 esac
14469
14470 : see if getgroups exists
14471 set getgroups d_getgrps
14472 eval $inlibc
14473
14474 : see if setgroups exists
14475 set setgroups d_setgrps
14476 eval $inlibc
14477
14478
14479 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14480 echo " "
14481 case "$d_getgrps$d_setgrps" in
14482 *define*)
14483         case "$groupstype" in
14484         '') dflt="$gidtype" ;;
14485         *)  dflt="$groupstype" ;;
14486         esac
14487         $cat <<EOM
14488 What type of pointer is the second argument to getgroups() and setgroups()?
14489 Usually this is the same as group ids, $gidtype, but not always.
14490
14491 EOM
14492         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14493         . ./myread
14494         groupstype="$ans"
14495         ;;
14496 *)  groupstype="$gidtype";;
14497 esac
14498
14499 echo " "
14500 echo "Checking if your $make program sets \$(MAKE)..." >&4
14501 case "$make_set_make" in
14502 '')
14503         $sed 's/^X //' > testmake.mak << 'EOF'
14504 Xall:
14505 X       @echo 'maketemp="$(MAKE)"'
14506 EOF
14507         case "`$make -f testmake.mak 2>/dev/null`" in
14508         *maketemp=*) make_set_make='#' ;;
14509         *)      make_set_make="MAKE=$make" ;;
14510         esac
14511         $rm -f testmake.mak
14512         ;;
14513 esac
14514 case "$make_set_make" in
14515 '#') echo "Yup, it does.";;
14516 *) echo "Nope, it doesn't.";;
14517 esac
14518
14519 : see what type is used for mode_t
14520 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14521 set mode_t modetype int stdio.h sys/types.h
14522 eval $typedef_ask
14523
14524 : see if stdarg is available
14525 echo " "
14526 if $test `./findhdr stdarg.h`; then
14527         echo "<stdarg.h> found." >&4
14528         valstd="$define"
14529 else
14530         echo "<stdarg.h> NOT found." >&4
14531         valstd="$undef"
14532 fi
14533
14534 : see if varags is available
14535 echo " "
14536 if $test `./findhdr varargs.h`; then
14537         echo "<varargs.h> found." >&4
14538 else
14539         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14540 fi
14541
14542 : set up the varargs testing programs
14543 $cat > varargs.c <<EOP
14544 #ifdef I_STDARG
14545 #include <stdarg.h>
14546 #endif
14547 #ifdef I_VARARGS
14548 #include <varargs.h>
14549 #endif
14550
14551 #ifdef I_STDARG
14552 int f(char *p, ...)
14553 #else
14554 int f(va_alist)
14555 va_dcl
14556 #endif
14557 {
14558         va_list ap;
14559 #ifndef I_STDARG
14560         char *p;
14561 #endif
14562 #ifdef I_STDARG
14563         va_start(ap,p);
14564 #else
14565         va_start(ap);
14566         p = va_arg(ap, char *);
14567 #endif
14568         va_end(ap);
14569 }
14570 EOP
14571 $cat > varargs <<EOP
14572 $startsh
14573 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14574         echo "true"
14575 else
14576         echo "false"
14577 fi
14578 $rm -f varargs$_o
14579 EOP
14580 chmod +x varargs
14581
14582 : now check which varargs header should be included
14583 echo " "
14584 i_varhdr=''
14585 case "$valstd" in
14586 "$define")
14587         if `./varargs I_STDARG`; then
14588                 val='stdarg.h'
14589         elif `./varargs I_VARARGS`; then
14590                 val='varargs.h'
14591         fi
14592         ;;
14593 *)
14594         if `./varargs I_VARARGS`; then
14595                 val='varargs.h'
14596         fi
14597         ;;
14598 esac
14599 case "$val" in
14600 '')
14601 echo "I could not find the definition for va_dcl... You have problems..." >&4
14602         val="$undef"; set i_stdarg; eval $setvar
14603         val="$undef"; set i_varargs; eval $setvar
14604         ;;
14605 *) 
14606         set i_varhdr
14607         eval $setvar
14608         case "$i_varhdr" in
14609         stdarg.h)
14610                 val="$define"; set i_stdarg; eval $setvar
14611                 val="$undef"; set i_varargs; eval $setvar
14612                 ;;
14613         varargs.h)
14614                 val="$undef"; set i_stdarg; eval $setvar
14615                 val="$define"; set i_varargs; eval $setvar
14616                 ;;
14617         esac
14618         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14619 esac
14620 $rm -f varargs*
14621
14622 : see if we need va_copy
14623 echo " "
14624 case "$i_stdarg" in
14625 "$define")
14626         $cat >try.c <<EOCP
14627 #include <stdarg.h>
14628 #include <stdio.h>
14629 #$i_stdlib I_STDLIB
14630 #ifdef I_STDLIB
14631 #include <stdlib.h>
14632 #endif
14633 #include <signal.h>
14634
14635 int
14636 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14637 {
14638   return vfprintf(f, fmt, *valp);
14639 }
14640  
14641 int    
14642 myvfprintf(FILE *f, const  char *fmt, va_list val)
14643 {
14644   return ivfprintf(f, fmt, &val);
14645 }
14646       
14647 int
14648 myprintf(char *fmt, ...) 
14649 {
14650   va_list val;
14651   va_start(val, fmt);
14652   return myvfprintf(stdout, fmt, val); 
14653 }         
14654
14655 int
14656 main(int ac, char **av)
14657 {
14658   signal(SIGSEGV, exit);
14659
14660   myprintf("%s%cs all right, then\n", "that", '\'');                            
14661   exit(0);      
14662 }
14663 EOCP
14664         set try
14665         if eval $compile && $run ./try 2>&1 >/dev/null; then
14666                 case "`$run ./try`" in
14667                 "that's all right, then")
14668                         okay=yes
14669                         ;;
14670                 esac
14671         fi
14672         case "$okay" in
14673         yes)    echo "It seems that you don't need va_copy()." >&4
14674                 need_va_copy="$undef"
14675                 ;;
14676         *)      echo "It seems that va_copy() or similar will be needed." >&4
14677                 need_va_copy="$define"
14678                 ;;
14679         esac
14680         $rm -f try.* core core.* *.core *.core.*
14681         ;;
14682 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14683         ;;
14684 esac
14685
14686 : define a fucntion to check prototypes
14687 $cat > protochk <<EOSH
14688 $startsh
14689 cc="$cc"
14690 optimize="$optimize"
14691 ccflags="$ccflags"
14692 prototype="$prototype"
14693 define="$define"
14694 rm=$rm
14695 EOSH
14696
14697 $cat >> protochk <<'EOSH'
14698
14699 $rm -f try.c
14700 foo="$1"
14701 shift
14702 while test $# -ge 2; do
14703         case "$1" in
14704                 $define) echo "#include <$2>" >> try.c ;;
14705                 literal) echo "$2" >> try.c ;;
14706         esac
14707     shift 2
14708 done
14709 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14710 cat >> try.c <<'EOCP'
14711 #ifdef CAN_PROTOTYPE
14712 #define _(args) args
14713 #else
14714 #define _(args) ()
14715 #endif
14716 EOCP
14717 echo "$foo" >> try.c
14718 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14719 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14720 status=$?
14721 $rm -f try.[co]
14722 exit $status
14723 EOSH
14724 chmod +x protochk
14725 $eunicefix protochk
14726
14727 : see what type is used for size_t
14728 rp="What is the type used for the length parameter for string functions?"
14729 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14730 eval $typedef_ask
14731
14732 : check for type of arguments to gethostbyaddr. 
14733 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14734         case "$d_gethbyaddr" in
14735         $define)
14736                 $cat <<EOM
14737
14738 Checking to see what type of arguments are accepted by gethostbyaddr().
14739 EOM
14740                 hdrs="$define sys/types.h
14741                         $d_socket sys/socket.h 
14742                         $i_niin netinet/in.h 
14743                         $i_netdb netdb.h
14744                         $i_unistd unistd.h"
14745                 : The first arg can 'char *' or 'void *'
14746                 : The second arg is some of integral type
14747                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14748                         for yyy in size_t long int; do
14749                                 case "$netdb_host_type" in
14750                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14751                                         if ./protochk "$try" $hdrs; then
14752                                                 echo "Your system accepts $xxx for the first arg."
14753                                                 echo "...and $yyy for the second arg."
14754                                                 netdb_host_type="$xxx"
14755                                                 netdb_hlen_type="$yyy"
14756                                         fi
14757                                         ;;
14758                                 esac
14759                         done
14760                 done
14761                 : In case none of those worked, prompt the user.
14762                 case "$netdb_host_type" in
14763                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14764                         dflt='char *'
14765                         . ./myread
14766                         netdb_host_type=$ans
14767                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14768                         dflt="$sizetype"
14769                         . ./myread
14770                         netdb_hlen_type=$ans
14771                         ;;
14772                 esac
14773                 ;;
14774         *)      : no gethostbyaddr, so pick harmless defaults
14775                 netdb_host_type='char *'
14776                 netdb_hlen_type="$sizetype"
14777                 ;;
14778         esac
14779         # Remove the "const" if needed. -- but then we'll have a 
14780         # prototype clash!
14781         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14782 fi
14783
14784 : check for type of argument to gethostbyname. 
14785 if test "X$netdb_name_type" = X ; then
14786         case "$d_gethbyname" in
14787         $define)
14788                 $cat <<EOM
14789
14790 Checking to see what type of argument is accepted by gethostbyname().
14791 EOM
14792                 hdrs="$define sys/types.h
14793                         $d_socket sys/socket.h 
14794                         $i_niin netinet/in.h 
14795                         $i_netdb netdb.h
14796                         $i_unistd unistd.h"
14797                 for xxx in "const char *" "char *"; do
14798                         case "$netdb_name_type" in
14799                         '')     try="extern struct hostent *gethostbyname($xxx);"
14800                                 if ./protochk "$try" $hdrs; then
14801                                         echo "Your system accepts $xxx."
14802                                         netdb_name_type="$xxx"
14803                                 fi
14804                                 ;;
14805                         esac
14806                 done
14807                 : In case none of those worked, prompt the user.
14808                 case "$netdb_name_type" in
14809                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14810                         dflt='char *'
14811                         . ./myread
14812                         netdb_name_type=$ans
14813                         ;;
14814                 esac
14815                 ;;
14816         *)      : no gethostbyname, so pick harmless default
14817                 netdb_name_type='char *'
14818                 ;;
14819         esac
14820 fi
14821
14822 : check for type of 1st argument to getnetbyaddr. 
14823 if test "X$netdb_net_type" = X ; then
14824         case "$d_getnbyaddr" in
14825         $define)
14826                 $cat <<EOM
14827
14828 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14829 EOM
14830                 hdrs="$define sys/types.h
14831                         $d_socket sys/socket.h 
14832                         $i_niin netinet/in.h 
14833                         $i_netdb netdb.h
14834                         $i_unistd unistd.h"
14835                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14836                         case "$netdb_net_type" in
14837                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14838                                 if ./protochk "$try" $hdrs; then
14839                                         echo "Your system accepts $xxx."
14840                                         netdb_net_type="$xxx"
14841                                 fi
14842                                 ;;
14843                         esac
14844                 done
14845                 : In case none of those worked, prompt the user.
14846                 case "$netdb_net_type" in
14847                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14848                         dflt='long'
14849                         . ./myread
14850                         netdb_net_type=$ans
14851                         ;;
14852                 esac
14853                 ;;
14854         *)      : no getnetbyaddr, so pick harmless default
14855                 netdb_net_type='long'
14856                 ;;
14857         esac
14858 fi
14859 : locate the preferred pager for this system
14860 case "$pager" in
14861 '')
14862         dflt=''
14863         case "$pg" in
14864         /*) dflt=$pg;;
14865         [a-zA-Z]:/*) dflt=$pg;;
14866         esac
14867         case "$more" in
14868         /*) dflt=$more;;
14869         [a-zA-Z]:/*) dflt=$more;;
14870         esac
14871         case "$less" in
14872         /*) dflt=$less;;
14873         [a-zA-Z]:/*) dflt=$less;;
14874         esac
14875         case "$dflt" in
14876         '') dflt=/usr/ucb/more;;
14877         esac
14878         ;;
14879 *) dflt="$pager";;
14880 esac
14881 echo " "
14882 fn=f/
14883 rp='What pager is used on your system?'
14884 . ./getfile
14885 pager="$ans"
14886
14887 : see what type pids are declared as in the kernel
14888 rp="What is the type of process ids on this system?"
14889 set pid_t pidtype int stdio.h sys/types.h
14890 eval $typedef_ask
14891
14892 : Find earliest binary compatible site_perl subdirectory perl can use.
14893 case "$bincompat5005" in
14894 "$define") xs_apiversion='5.005' ;;
14895 *) xs_apiversion=$version ;;   # The current site_perl version.
14896 esac
14897 : Find earliest pure perl site_perl subdirectory perl can use.
14898 : The versioned directories started at 5.005.
14899 pm_apiversion='5.005'
14900
14901 : see if ar generates random libraries by itself
14902 echo " "
14903 echo "Checking how to generate random libraries on your machine..." >&4
14904 echo 'int bar1() { return bar2(); }' > bar1.c
14905 echo 'int bar2() { return 2; }' > bar2.c
14906 $cat > foo.c <<'EOP'
14907 int main() { printf("%d\n", bar1()); exit(0); }
14908 EOP
14909 $cc $ccflags -c bar1.c >/dev/null 2>&1
14910 $cc $ccflags -c bar2.c >/dev/null 2>&1
14911 $cc $ccflags -c foo.c >/dev/null 2>&1
14912 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14913 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14914         $run ./foobar >/dev/null 2>&1; then
14915         echo "$ar appears to generate random libraries itself."
14916         orderlib=false
14917         ranlib=":"
14918 elif $ar ts bar$_a >/dev/null 2>&1 &&
14919         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14920         $run ./foobar >/dev/null 2>&1; then
14921                 echo "a table of contents needs to be added with '$ar ts'."
14922                 orderlib=false
14923                 ranlib="$ar ts"
14924 else
14925         case "$ranlib" in
14926         :) ranlib='';;
14927         '')
14928                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14929                 $test -f $ranlib || ranlib=''
14930                 ;;
14931         esac
14932         if $test -n "$ranlib"; then
14933                 echo "your system has '$ranlib'; we'll use that."
14934                 orderlib=false
14935         else
14936                 echo "your system doesn't seem to support random libraries"
14937                 echo "so we'll use lorder and tsort to order the libraries."
14938                 orderlib=true
14939                 ranlib=":"
14940         fi
14941 fi
14942 $rm -f foo* bar* 
14943
14944 : check for type of arguments to select. 
14945 case "$selecttype" in
14946 '') case "$d_select" in
14947         $define)
14948                 echo " "
14949                 $cat <<EOM
14950 Checking to see what type of arguments are accepted by select().
14951 EOM
14952                 hdrs="$define sys/types.h
14953                         $i_systime sys/time.h 
14954                         $i_sysselct sys/select.h
14955                         $d_socket sys/socket.h"
14956                 : The first arg can be int, unsigned, or size_t
14957                 : The last arg may or may not be 'const'
14958                 val=''
14959                 : void pointer has been seen but using that
14960                 : breaks the selectminbits test
14961                 for xxx in 'fd_set *' 'int *'; do
14962                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14963                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14964                                         case "$val" in
14965                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14966                                                 if ./protochk "$try" $hdrs; then
14967                                                         echo "Your system accepts $xxx."
14968                                                         val="$xxx"
14969                                                 fi
14970                                                 ;;
14971                                         esac
14972                                 done
14973                         done
14974                 done
14975                 case "$val" in
14976                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14977                         case "$d_fd_set" in
14978                                 $define) dflt="fd_set *" ;;
14979                                 *)              dflt="int *" ;;
14980                         esac
14981                         . ./myread
14982                         val=$ans
14983                         ;;
14984                 esac
14985                 selecttype="$val"
14986                 ;;
14987         *)      : no select, so pick a harmless default
14988                 selecttype='int *'
14989                 ;;
14990         esac
14991         ;;
14992 esac
14993
14994 : check for the select 'width'
14995 case "$selectminbits" in
14996 '') case "$d_select" in
14997         $define)
14998                 $cat <<EOM
14999
15000 Checking to see on how many bits at a time your select() operates...
15001 EOM
15002                 $cat >try.c <<EOCP
15003 #include <sys/types.h>
15004 #$i_time I_TIME
15005 #$i_systime I_SYS_TIME
15006 #$i_systimek I_SYS_TIME_KERNEL
15007 #ifdef I_TIME
15008 #   include <time.h>
15009 #endif
15010 #ifdef I_SYS_TIME
15011 #   ifdef I_SYS_TIME_KERNEL
15012 #       define KERNEL
15013 #   endif
15014 #   include <sys/time.h>
15015 #   ifdef I_SYS_TIME_KERNEL
15016 #       undef KERNEL
15017 #   endif
15018 #endif
15019 #$i_sysselct I_SYS_SELECT
15020 #ifdef I_SYS_SELECT
15021 #include <sys/select.h>
15022 #endif
15023 #$d_socket HAS_SOCKET
15024 #ifdef HAS_SOCKET
15025 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15026 #endif
15027 #include <stdio.h>
15028 $selecttype b;
15029 #define S sizeof(*(b))
15030 #define MINBITS 64
15031 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15032 #define NBITS  (NBYTES * 8)
15033 int main() {
15034     char s[NBYTES];
15035     struct timeval t;
15036     int i;
15037     FILE* fp;
15038     int fd;
15039
15040     fclose(stdin);
15041     fp = fopen("try.c", "r");
15042     if (fp == 0)
15043       exit(1);
15044     fd = fileno(fp);
15045     if (fd < 0)
15046       exit(2);
15047     b = ($selecttype)s;
15048     for (i = 0; i < NBITS; i++)
15049         FD_SET(i, b);
15050     t.tv_sec  = 0;
15051     t.tv_usec = 0;
15052     select(fd + 1, b, 0, 0, &t);
15053     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15054     printf("%d\n", i + 1);
15055     return 0;
15056 }
15057 EOCP
15058                 set try
15059                 if eval $compile_ok; then
15060                         selectminbits=`$run ./try`
15061                         case "$selectminbits" in
15062                         '')     cat >&4 <<EOM
15063 Cannot figure out on how many bits at a time your select() operates.
15064 I'll play safe and guess it is 32 bits.
15065 EOM
15066                                 selectminbits=32
15067                                 bits="32 bits"
15068                                 ;;
15069                         1)      bits="1 bit" ;;
15070                         *)      bits="$selectminbits bits" ;;
15071                         esac
15072                         echo "Your select() operates on $bits at a time." >&4
15073                 else
15074                         rp='What is the minimum number of bits your select() operates on?'
15075                         case "$byteorder" in
15076                         1234|12345678)  dflt=32 ;;
15077                         *)              dflt=1  ;;
15078                         esac
15079                         . ./myread
15080                         val=$ans
15081                         selectminbits="$val"
15082                 fi
15083                 $rm -f try.* try
15084                 ;;
15085         *)      : no select, so pick a harmless default
15086                 selectminbits='32'
15087                 ;;
15088         esac
15089         ;;
15090 esac
15091
15092 : Trace out the files included by signal.h, then look for SIGxxx names.
15093 : Remove SIGARRAYSIZE used by HPUX.
15094 : Remove SIGSTKSIZE used by Linux.
15095 : Remove SIGSTKSZ used by Posix.
15096 : Remove SIGTYP void lines used by OS2.
15097 : Some cpps, like os390, dont give the file name anywhere
15098 if [ "X$fieldn" = X ]; then
15099         : Just make some guesses.  We check them later.
15100         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15101 else
15102         xxx=`echo '#include <signal.h>' |
15103         $cppstdin $cppminus $cppflags 2>/dev/null |
15104         $grep '^[       ]*#.*include' | 
15105         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15106 fi
15107 : Check this list of files to be sure we have parsed the cpp output ok.
15108 : This will also avoid potentially non-existent files, such 
15109 : as ../foo/bar.h
15110 xxxfiles=''
15111 for xx in $xxx /dev/null ; do
15112         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15113 done
15114 : If we have found no files, at least try signal.h
15115 case "$xxxfiles" in
15116 '')     xxxfiles=`./findhdr signal.h` ;;
15117 esac
15118 xxx=`awk '
15119 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15120         print substr($2, 4, 20)
15121 }
15122 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15123         print substr($3, 4, 20)
15124 }' $xxxfiles`
15125 : Append some common names just in case the awk scan failed.
15126 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15127 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15128 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15129 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15130 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15131
15132 : generate a few handy files for later
15133 $cat > signal.c <<'EOCP'
15134 #include <sys/types.h>
15135 #include <signal.h>
15136 #include <stdio.h>
15137 int main() {
15138
15139 /* Strange style to avoid deeply-nested #if/#else/#endif */
15140 #ifndef NSIG
15141 #  ifdef _NSIG
15142 #    define NSIG (_NSIG)
15143 #  endif
15144 #endif
15145
15146 #ifndef NSIG
15147 #  ifdef SIGMAX
15148 #    define NSIG (SIGMAX+1)
15149 #  endif
15150 #endif
15151
15152 #ifndef NSIG
15153 #  ifdef SIG_MAX
15154 #    define NSIG (SIG_MAX+1)
15155 #  endif
15156 #endif
15157
15158 #ifndef NSIG
15159 #  ifdef MAXSIG
15160 #    define NSIG (MAXSIG+1)
15161 #  endif
15162 #endif
15163
15164 #ifndef NSIG
15165 #  ifdef MAX_SIG
15166 #    define NSIG (MAX_SIG+1)
15167 #  endif
15168 #endif
15169
15170 #ifndef NSIG
15171 #  ifdef SIGARRAYSIZE
15172 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15173 #  endif
15174 #endif
15175
15176 #ifndef NSIG
15177 #  ifdef _sys_nsig
15178 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15179 #  endif
15180 #endif
15181
15182 /* Default to some arbitrary number that's big enough to get most
15183    of the common signals.
15184 */
15185 #ifndef NSIG
15186 #    define NSIG 50
15187 #endif
15188
15189 printf("NSIG %d\n", NSIG);
15190
15191 #ifndef JUST_NSIG
15192
15193 EOCP
15194
15195 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15196 {
15197         printf "#ifdef SIG"; printf $1; printf "\n"
15198         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15199         printf $1; printf ");\n"
15200         printf "#endif\n"
15201 }
15202 END {
15203         printf "#endif /* JUST_NSIG */\n";
15204         printf "exit(0);\n}\n";
15205 }
15206 ' >>signal.c
15207 $cat >signal.awk <<'EOP'
15208 BEGIN { ndups = 0 }
15209 $1 ~ /^NSIG$/ { nsig = $2 }
15210 ($1 !~ /^NSIG$/) && (NF == 2) {
15211     if ($2 > maxsig) { maxsig = $2 }
15212     if (sig_name[$2]) {
15213         dup_name[ndups] = $1
15214         dup_num[ndups] = $2
15215         ndups++ 
15216     }
15217     else {
15218         sig_name[$2] = $1
15219         sig_num[$2] = $2
15220     }
15221 }
15222 END { 
15223     if (nsig == 0) {
15224         nsig = maxsig + 1
15225     }
15226     printf("NSIG %d\n", nsig);
15227     for (n = 1; n < nsig; n++) {
15228         if (sig_name[n]) {
15229             printf("%s %d\n", sig_name[n], sig_num[n])
15230         }
15231         else {
15232             printf("NUM%d %d\n", n, n) 
15233         }
15234     }
15235     for (n = 0; n < ndups; n++) {
15236         printf("%s %d\n", dup_name[n], dup_num[n])
15237     }
15238 }
15239 EOP
15240 $cat >signal_cmd <<EOS
15241 $startsh
15242 if $test -s signal.lst; then
15243     echo "Using your existing signal.lst file"
15244         exit 0
15245 fi
15246 xxx="$xxx"
15247 EOS
15248 $cat >>signal_cmd <<'EOS'
15249
15250 set signal
15251 if eval $compile_ok; then
15252         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15253 else
15254         echo "(I can't seem be able to compile the whole test program)" >&4
15255         echo "(I'll try it in little pieces.)" >&4
15256         set signal -DJUST_NSIG
15257         if eval $compile_ok; then
15258                 $run ./signal$_exe > signal.nsg
15259                 $cat signal.nsg
15260         else
15261                 echo "I can't seem to figure out how many signals you have." >&4
15262                 echo "Guessing 50." >&4
15263                 echo 'NSIG 50' > signal.nsg
15264         fi
15265         : Now look at all the signal names, one at a time.
15266         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15267                 $cat > signal.c <<EOCP
15268 #include <sys/types.h>
15269 #include <signal.h>
15270 #include <stdio.h>
15271 int main() {
15272 printf("$xx %d\n", SIG${xx});
15273 return 0;
15274 }
15275 EOCP
15276                 set signal
15277                 if eval $compile; then
15278                         echo "SIG${xx} found."
15279                         $run ./signal$_exe  >> signal.ls1
15280                 else
15281                         echo "SIG${xx} NOT found."
15282                 fi
15283         done
15284         if $test -s signal.ls1; then
15285                 $cat signal.nsg signal.ls1 |
15286                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15287         fi
15288
15289 fi
15290 if $test -s signal.lst; then
15291         :
15292 else
15293         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15294         echo 'kill -l' >signal
15295         set X `csh -f <signal`
15296         $rm -f signal
15297         shift
15298         case $# in
15299         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15300         esac
15301         echo $@ | $tr ' ' $trnl | \
15302             $awk '{ printf "%s %d\n", $1, ++s; }
15303                   END { printf "NSIG %d\n", ++s }' >signal.lst
15304 fi
15305 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15306 EOS
15307 chmod a+x signal_cmd
15308 $eunicefix signal_cmd
15309
15310 : generate list of signal names
15311 echo " "
15312 case "$sig_name_init" in
15313 '') doinit=yes ;;
15314 *)  case "$sig_num_init" in
15315     ''|*,*) doinit=yes ;;
15316     esac ;;
15317 esac
15318 case "$doinit" in
15319 yes)
15320         echo "Generating a list of signal names and numbers..." >&4
15321         . ./signal_cmd
15322         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15323         sig_name=`$awk 'BEGIN { printf "ZERO " }
15324                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15325         sig_num=`$awk  'BEGIN { printf "0 " }
15326                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15327         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15328                              !/^NSIG/   { printf "\"%s\", ", $1 }
15329                              END        { printf "0\n" }' signal.lst`
15330         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15331                              !/^NSIG/   { printf "%d, ", $2}
15332                              END        { printf "0\n"}' signal.lst`
15333         ;;
15334 esac
15335 echo "The following $sig_count signals are available:"
15336 echo " "
15337 echo $sig_name | $awk \
15338 'BEGIN { linelen = 0 }
15339 {
15340         for (i = 1; i <= NF; i++) {
15341                 name = "SIG" $i " "
15342                 linelen = linelen + length(name)
15343                 if (linelen > 70) {
15344                         printf "\n"
15345                         linelen = length(name)
15346                 }
15347                 printf "%s", name
15348         }
15349         printf "\n"
15350 }'
15351 sig_size=`echo $sig_name | awk '{print NF}'`
15352 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15353
15354 echo " "
15355 case "$sizetype" in
15356 *_t) zzz="$sizetype"    ;;
15357 *)   zzz="filesize"     ;;
15358 esac
15359 echo "Checking the size of $zzz..." >&4 
15360 cat > try.c <<EOCP
15361 #include <sys/types.h>
15362 #include <stdio.h>
15363 int main() {
15364     printf("%d\n", (int)sizeof($sizetype));
15365     exit(0);
15366 }
15367 EOCP
15368 set try
15369 if eval $compile_ok; then
15370         yyy=`$run ./try`
15371         case "$yyy" in
15372         '')     sizesize=4
15373                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15374                 ;;
15375         *)      sizesize=$yyy
15376                 echo "Your $zzz size is $sizesize bytes."
15377                 ;;
15378         esac
15379 else
15380         sizesize=4
15381         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15382 fi
15383
15384
15385 : check for socklen_t
15386 echo " "
15387 echo "Checking to see if you have socklen_t..." >&4
15388 $cat >try.c <<EOCP
15389 #include <sys/types.h>
15390 #$d_socket HAS_SOCKET
15391 #ifdef HAS_SOCKET
15392 #include <sys/socket.h>
15393 #endif
15394 int main() { socklen_t x = 16; }
15395 EOCP
15396 set try
15397 if eval $compile; then
15398         val="$define"
15399         echo "You have socklen_t."
15400 else
15401         val="$undef"
15402         echo "You do not have socklen_t."
15403         case "$sizetype" in
15404         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15405         esac
15406 fi
15407 $rm -f try try.*
15408 set d_socklen_t
15409 eval $setvar
15410
15411 : see if this is a socks.h system
15412 set socks.h i_socks
15413 eval $inhdr
15414
15415 : check for type of the size argument to socket calls
15416 case "$d_socket" in
15417 "$define")
15418         $cat <<EOM
15419
15420 Checking to see what type is the last argument of accept().
15421 EOM
15422         yyy=''
15423         case "$d_socklen_t" in
15424         "$define") yyy="$yyy socklen_t"
15425         esac
15426         yyy="$yyy $sizetype int long unsigned"
15427         for xxx in $yyy; do
15428                 case "$socksizetype" in
15429                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15430                         case "$usesocks" in
15431                         "$define")
15432                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15433                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15434                                         socksizetype="$xxx"
15435                                 fi
15436                                 ;;
15437                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15438                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15439                                         socksizetype="$xxx"
15440                                 fi
15441                                 ;;
15442                         esac
15443                         ;;
15444                 esac
15445         done
15446 : In case none of those worked, prompt the user.
15447         case "$socksizetype" in
15448         '')     rp='What is the type for socket address structure sizes?'
15449                 dflt='int'
15450                 . ./myread
15451                 socksizetype=$ans
15452                 ;;
15453         esac
15454         ;;
15455 *)      : no sockets, so pick relatively harmless default
15456         socksizetype='int'
15457         ;;
15458 esac
15459
15460 : see what type is used for signed size_t
15461 set ssize_t ssizetype int stdio.h sys/types.h
15462 eval $typedef
15463 dflt="$ssizetype"
15464 $cat > try.c <<EOM
15465 #include <stdio.h>
15466 #include <sys/types.h>
15467 #define Size_t $sizetype
15468 #define SSize_t $dflt
15469 int main()
15470 {
15471         if (sizeof(Size_t) == sizeof(SSize_t))
15472                 printf("$dflt\n");
15473         else if (sizeof(Size_t) == sizeof(int))
15474                 printf("int\n");
15475         else 
15476                 printf("long\n");
15477         exit(0);
15478 }
15479 EOM
15480 echo " "
15481 set try
15482 if eval $compile_ok && $run ./try > /dev/null; then
15483         ssizetype=`$run ./try`
15484         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15485 else
15486         $cat >&4 <<EOM
15487 Help! I can't compile and run the ssize_t test program: please enlighten me!
15488 (This is probably a misconfiguration in your system or libraries, and
15489 you really ought to fix it.  Still, I'll try anyway.)
15490
15491 I need a type that is the same size as $sizetype, but is guaranteed to
15492 be signed.  Common values are ssize_t, int and long.
15493
15494 EOM
15495         rp="What signed type is the same size as $sizetype?"
15496         . ./myread
15497         ssizetype="$ans"
15498 fi
15499 $rm -f try try.*
15500
15501 : see what type of char stdio uses.
15502 echo " "
15503 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15504 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15505         echo "Your stdio uses unsigned chars." >&4
15506         stdchar="unsigned char"
15507 else
15508         echo "Your stdio uses signed chars." >&4
15509         stdchar="char"
15510 fi
15511 $rm -f stdioh
15512
15513
15514
15515 : see if time exists
15516 echo " "
15517 if test "X$d_time" = X -o X"$timetype" = X; then
15518     if set time val -f d_time; eval $csym; $val; then
15519                 echo 'time() found.' >&4
15520                 val="$define"
15521                 rp="What is the type returned by time() on this system?"
15522                 set time_t timetype long stdio.h sys/types.h
15523                 eval $typedef_ask
15524     else
15525                 echo 'time() not found, hope that will do.' >&4
15526                 val="$undef"
15527                 timetype='int';
15528     fi
15529     set d_time
15530     eval $setvar
15531 fi
15532
15533 : see what type uids are declared as in the kernel
15534 echo " "
15535 echo "Looking for the type for user ids returned by getuid()."
15536 set uid_t uidtype xxx stdio.h sys/types.h
15537 eval $typedef
15538 case "$uidtype" in
15539 xxx)
15540         xxx=`./findhdr sys/user.h`
15541         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15542         case $1 in
15543         unsigned) dflt="$1 $2" ;;
15544         *) dflt="$1" ;;
15545         esac
15546         ;;
15547 *) dflt="$uidtype";;
15548 esac
15549 case "$uidtype" in
15550 uid_t)  echo "uid_t found." ;;
15551 *)      rp="What is the type for user ids returned by getuid()?"
15552         . ./myread
15553         uidtype="$ans"
15554         ;;
15555 esac
15556
15557 echo " "
15558 case "$uidtype" in
15559 *_t) zzz="$uidtype"     ;;
15560 *)   zzz="uid"          ;;
15561 esac
15562 echo "Checking the size of $zzz..." >&4 
15563 cat > try.c <<EOCP
15564 #include <sys/types.h>
15565 #include <stdio.h>
15566 int main() {
15567     printf("%d\n", (int)sizeof($uidtype));
15568     exit(0);
15569 }
15570 EOCP
15571 set try
15572 if eval $compile_ok; then
15573         yyy=`$run ./try`
15574         case "$yyy" in
15575         '')     uidsize=4
15576                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15577                 ;;
15578         *)      uidsize=$yyy
15579                 echo "Your $zzz is $uidsize bytes long."
15580                 ;;
15581         esac
15582 else
15583         uidsize=4
15584         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15585 fi
15586
15587 echo " "
15588 case "$uidtype" in
15589 *_t) zzz="$uidtype"     ;;
15590 *)   zzz="uid"          ;;
15591 esac
15592 echo "Checking the sign of $zzz..." >&4
15593 cat > try.c <<EOCP
15594 #include <sys/types.h>
15595 #include <stdio.h>
15596 int main() {
15597         $uidtype foo = -1;
15598         if (foo < 0)
15599                 printf("-1\n");
15600         else
15601                 printf("1\n");
15602 }
15603 EOCP
15604 set try
15605 if eval $compile; then
15606         yyy=`$run ./try`
15607         case "$yyy" in
15608         '')     uidsign=1
15609                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15610                 ;;
15611         *)      uidsign=$yyy
15612                 case "$uidsign" in
15613                  1) echo "Your $zzz is unsigned." ;;
15614                 -1) echo "Your $zzz is signed."   ;;
15615                 esac
15616                 ;;
15617         esac
15618 else
15619         uidsign=1
15620         echo "(I can't compile the test program--guessing unsigned.)" >&4
15621 fi
15622
15623
15624
15625 echo " "
15626 $echo "Checking the format string to be used for uids..." >&4
15627
15628 case "$uidsign" in
15629 -1)     if $test X"$uidsize" = X"$ivsize"; then
15630                 uidformat="$ivdformat"
15631         else
15632                 if $test X"$uidsize" = X"$longsize"; then
15633                         uidformat='"ld"'
15634                 else
15635                         if $test X"$uidsize" = X"$intsize"; then
15636                                 uidformat='"d"'
15637                         else
15638                                 if $test X"$uidsize" = X"$shortsize"; then
15639                                         uidformat='"hd"'
15640                                 fi
15641                         fi
15642                 fi
15643         fi
15644         ;;
15645 *)      if $test X"$uidsize" = X"$uvsize"; then
15646                 uidformat="$uvuformat"
15647         else
15648                 if $test X"$uidsize" = X"$longsize"; then
15649                         uidformat='"lu"'
15650                 else
15651                         if $test X"$uidsize" = X"$intsize"; then
15652                                 uidformat='"u"'
15653                         else
15654                                 if $test X"$uidsize" = X"$shortsize"; then
15655                                         uidformat='"hu"'
15656                                 fi
15657                         fi
15658                 fi
15659         fi
15660         ;;
15661 esac
15662
15663 : determine compiler compiler
15664 case "$yacc" in
15665 '')
15666         dflt=yacc;;
15667 *)
15668         dflt="$yacc";;
15669 esac
15670 echo " "
15671 comp='yacc'
15672 if $test -f "$byacc"; then
15673         dflt="$byacc"
15674         comp="byacc or $comp"
15675 fi
15676 if $test -f "$bison"; then
15677         comp="$comp or bison -y"
15678 fi
15679 rp="Which compiler compiler ($comp) shall I use?"
15680 . ./myread
15681 yacc="$ans"
15682 case "$yacc" in
15683 *bis*)
15684         case "$yacc" in
15685         *-y*) ;;
15686         *)
15687                 yacc="$yacc -y"
15688                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15689                 ;;
15690         esac
15691         ;;
15692 esac
15693
15694 : see if fcntl.h is there
15695 val=''
15696 set fcntl.h val
15697 eval $inhdr
15698
15699 : see if we can include fcntl.h
15700 case "$val" in
15701 "$define")
15702         echo " "
15703         if $h_fcntl; then
15704                 val="$define"
15705                 echo "We'll be including <fcntl.h>." >&4
15706         else
15707                 val="$undef"
15708                 if $h_sysfile; then
15709         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15710                 else
15711                         echo "We won't be including <fcntl.h>." >&4
15712                 fi
15713         fi
15714         ;;
15715 *)
15716         h_fcntl=false
15717         val="$undef"
15718         ;;
15719 esac
15720 set i_fcntl
15721 eval $setvar
15722
15723 : see if this is a iconv.h system
15724 set iconv.h i_iconv
15725 eval $inhdr
15726
15727 : see if this is a ieeefp.h system
15728 set ieeefp.h i_ieeefp
15729 eval $inhdr
15730
15731 : see if this is a libutil.h system
15732 set libutil.h i_libutil
15733 eval $inhdr
15734
15735 : see if locale.h is available
15736 set locale.h i_locale
15737 eval $inhdr
15738
15739 : see if mach cthreads are available
15740 if test "X$usethreads" = "X$define"; then
15741         set mach/cthreads.h i_machcthr
15742         eval $inhdr
15743 else
15744         i_machcthr="$undef"
15745 fi
15746
15747
15748
15749 : see if this is a math.h system
15750 set math.h i_math
15751 eval $inhdr
15752
15753 : see if this is a mntent.h system
15754 set mntent.h i_mntent
15755 eval $inhdr
15756
15757 : see if ndbm.h is available
15758 set ndbm.h t_ndbm
15759 eval $inhdr
15760 case "$t_ndbm" in
15761 $define)
15762         : see if dbm_open exists
15763         set dbm_open d_dbm_open
15764         eval $inlibc
15765         case "$d_dbm_open" in
15766         $undef)
15767                 t_ndbm="$undef"
15768                 echo "We won't be including <ndbm.h>"
15769                 ;;
15770         esac
15771         ;;
15772 esac
15773 val="$t_ndbm"
15774 set i_ndbm
15775 eval $setvar
15776
15777 : see if net/errno.h is available
15778 val=''
15779 set net/errno.h val
15780 eval $inhdr
15781
15782 : Unfortunately, it causes problems on some systems.  Arrgh.
15783 case "$val" in
15784 $define)
15785         cat > try.c <<'EOM'
15786 #include <stdio.h>
15787 #include <errno.h>
15788 #include <net/errno.h>
15789 int func()
15790 {
15791         return ENOTSOCK;
15792 }
15793 EOM
15794         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15795                 echo "We'll be including <net/errno.h>." >&4
15796         else
15797                 echo "We won't be including <net/errno.h>." >&4
15798                 val="$undef"
15799         fi
15800         $rm -f try.* try
15801         ;;
15802 esac
15803 set i_neterrno
15804 eval $setvar
15805
15806 : see if netinet/tcp.h is available
15807 set netinet/tcp.h i_netinettcp
15808 eval $inhdr
15809
15810 : see if this is a poll.h system
15811 set poll.h i_poll
15812 eval $inhdr
15813
15814 : see if this is a prot.h system
15815 set prot.h i_prot
15816 eval $inhdr
15817
15818 echo " "
15819 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15820 $cat <<'EOSH' > Cppsym.know
15821 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15822 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15823 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15824 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15825 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15826 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15827 bull c cadmus clipper CMU COFF COMPILER_VERSION
15828 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15829 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15830 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15831 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15832 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15833 H3050R H3050RX hbullx20 hcx host_mips
15834 hp200 hp300 hp700 HP700 hp800 hp9000
15835 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15836 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15837 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15838 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15839 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15840 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15841 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15842 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15843 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15844 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15845 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15846 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15847 MATH_HAS_NO_SIDE_EFFECTS
15848 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15849 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15850 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15851 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15852 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15853 NetBSD news1500 news1700 news1800 news1900 news3700
15854 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15855 ns32016 ns32332 ns32k nsc32000
15856 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15857 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15858 pc532 pdp11 PGC PIC plexus PORTAR posix
15859 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15860 POSIX_C_SOURCE POSIX_SOURCE POWER
15861 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15862 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15863 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15864 sony sony_news sonyrisc sparc sparclite spectrum
15865 stardent stdc STDC_EXT stratos sun sun3 sun386
15866 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15867 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15868 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15869 sysV68 sysV88 Tek4132 Tek4300 titan
15870 TM3200 TM5400 TM5600
15871 tower tower32 tower32_200 tower32_600 tower32_700
15872 tower32_800 tower32_850 tss
15873 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15874 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15875 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15876 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15877 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15878 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15879 z8000
15880 EOSH
15881 # Maybe put other stuff here too.
15882 cat <<EOSH >>Cppsym.know
15883 $osname
15884 EOSH
15885 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15886 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15887 $cat Cppsym.know > Cppsym.c
15888 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15889 $rm -f Cppsym.a Cppsym.b Cppsym.c
15890 cat <<EOSH > Cppsym
15891 $startsh
15892 if $test \$# -gt 0; then
15893     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15894     if $test -s Cppsym.got; then
15895         $rm -f Cppsym.got
15896         exit 0
15897     fi
15898     $rm -f Cppsym.got
15899     exit 1
15900 else
15901     $tr " " "$trnl" | ./Cppsym.try
15902     exit 0
15903 fi
15904 EOSH
15905 chmod +x Cppsym
15906 $eunicefix Cppsym
15907 cat <<EOSH > Cppsym.try
15908 $startsh
15909 cat <<'EOCP' > try.c
15910 #include <stdio.h>
15911 int main() {
15912 EOCP
15913 $awk \\
15914 EOSH
15915 cat <<'EOSH' >> Cppsym.try
15916 'length($1) > 0 {
15917     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15918     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15919     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15920     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15921 }'       >> try.c
15922 echo 'return 0;}' >> try.c
15923 EOSH
15924 cat <<EOSH >> Cppsym.try
15925 ccflags="$ccflags"
15926 case "$osname-$gccversion" in
15927 irix-) ccflags="\$ccflags -woff 1178" ;;
15928 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15929 esac
15930 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15931 EOSH
15932 chmod +x Cppsym.try
15933 $eunicefix Cppsym.try
15934 ./Cppsym < Cppsym.know > Cppsym.true
15935 : now check the C compiler for additional symbols
15936 postprocess_cc_v=''
15937 case "$osname" in
15938 aix) postprocess_cc_v="|$tr , ' '" ;;
15939 esac
15940 $cat >ccsym <<EOS
15941 $startsh
15942 $cat >tmp.c <<EOF
15943 extern int foo;
15944 EOF
15945 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15946 do
15947         case "\$i" in
15948         -D*) echo "\$i" | $sed 's/^-D//';;
15949         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15950         esac
15951 done
15952 $rm -f try.c
15953 EOS
15954 postprocess_cc_v=''
15955 chmod +x ccsym
15956 $eunicefix ccsym
15957 ./ccsym > ccsym1.raw
15958 if $test -s ccsym1.raw; then
15959        $sort ccsym1.raw | $uniq >ccsym.raw
15960 else
15961        mv ccsym1.raw ccsym.raw
15962 fi
15963
15964 $awk '/\=/ { print $0; next }
15965         { print $0"=1" }' ccsym.raw >ccsym.list
15966 $awk '/\=/ { print $0; next }
15967         { print $0"=1" }' Cppsym.true >ccsym.true
15968 $comm -13 ccsym.true ccsym.list >ccsym.own
15969 $comm -12 ccsym.true ccsym.list >ccsym.com
15970 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15971 also=''
15972 if $test -z ccsym.raw; then
15973         echo "Your C compiler doesn't seem to define any symbols!" >&4
15974         echo " "
15975         echo "However, your C preprocessor defines the following symbols:"
15976         $cat Cppsym.true
15977         ccsymbols=''
15978         cppsymbols=`$cat Cppsym.true`
15979         cppsymbols=`echo $cppsymbols`
15980         cppccsymbols="$cppsymbols"
15981 else
15982         if $test -s ccsym.com; then
15983                 echo "Your C compiler and pre-processor define these symbols:"
15984                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15985                 also='also '
15986                 symbols='ones'
15987                 cppccsymbols=`$cat ccsym.com`
15988                 cppccsymbols=`echo $cppccsymbols`
15989                 $test "$silent" || sleep 1
15990         fi
15991         if $test -s ccsym.cpp; then
15992                 $test "$also" && echo " "
15993                 echo "Your C pre-processor ${also}defines the following symbols:"
15994                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15995                 also='further '
15996                 cppsymbols=`$cat ccsym.cpp`
15997                 cppsymbols=`echo $cppsymbols`
15998                 $test "$silent" || sleep 1
15999         fi
16000         if $test -s ccsym.own; then
16001                 $test "$also" && echo " "
16002                 echo "Your C compiler ${also}defines the following cpp symbols:"
16003                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16004                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16005                 ccsymbols=`$cat ccsym.own`
16006                 ccsymbols=`echo $ccsymbols`
16007                 $test "$silent" || sleep 1
16008         fi
16009 fi
16010
16011 : see if this is a termio system
16012 val="$undef"
16013 val2="$undef"
16014 val3="$undef"
16015 if $test `./findhdr termios.h`; then
16016         set tcsetattr i_termios
16017         eval $inlibc
16018         val3="$i_termios"
16019 fi
16020 echo " "
16021 case "$val3" in
16022 "$define") echo "You have POSIX termios.h... good!" >&4;;
16023 *) if ./Cppsym pyr; then
16024                 case "`/bin/universe`" in
16025                 ucb) if $test `./findhdr sgtty.h`; then
16026                                 val2="$define"
16027                                 echo "<sgtty.h> found." >&4
16028                         else
16029                                 echo "System is pyramid with BSD universe."
16030                                 echo "<sgtty.h> not found--you could have problems." >&4
16031                         fi;;
16032                 *) if $test `./findhdr termio.h`; then
16033                                 val="$define"
16034                                 echo "<termio.h> found." >&4
16035                         else
16036                                 echo "System is pyramid with USG universe."
16037                                 echo "<termio.h> not found--you could have problems." >&4
16038                         fi;;
16039                 esac
16040         elif ./usg; then
16041                 if $test `./findhdr termio.h`; then
16042                         echo "<termio.h> found." >&4
16043                         val="$define"
16044                 elif $test `./findhdr sgtty.h`; then
16045                         echo "<sgtty.h> found." >&4
16046                         val2="$define"
16047                 else
16048 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16049                 fi
16050         else
16051                 if $test `./findhdr sgtty.h`; then
16052                         echo "<sgtty.h> found." >&4
16053                         val2="$define"
16054                 elif $test `./findhdr termio.h`; then
16055                         echo "<termio.h> found." >&4
16056                         val="$define"
16057                 else
16058 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16059                 fi
16060         fi;;
16061 esac
16062 set i_termio; eval $setvar
16063 val=$val2; set i_sgtty; eval $setvar
16064 val=$val3; set i_termios; eval $setvar
16065
16066 : see if this is a shadow.h system
16067 set shadow.h i_shadow
16068 eval $inhdr
16069
16070 : see if stddef is available
16071 set stddef.h i_stddef
16072 eval $inhdr
16073
16074 : see if this is a sunmath.h system
16075 set sunmath.h i_sunmath
16076 eval $inhdr
16077
16078 : see if sys/access.h is available
16079 set sys/access.h i_sysaccess
16080 eval $inhdr
16081
16082 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16083 set sys/filio.h i_sysfilio
16084 eval $inhdr
16085 echo " "
16086 if $test `./findhdr sys/ioctl.h`; then
16087         val="$define"
16088         echo '<sys/ioctl.h> found.' >&4
16089 else
16090         val="$undef"
16091         if $test $i_sysfilio = "$define"; then
16092             echo '<sys/ioctl.h> NOT found.' >&4
16093         else
16094                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16095                 $test $i_termio = "$define" && xxx="termio.h"
16096                 $test $i_termios = "$define" && xxx="termios.h"
16097 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16098         fi
16099 fi
16100 set i_sysioctl
16101 eval $setvar
16102
16103 : see if socket ioctl defs are in sys/sockio.h
16104 echo " "
16105 xxx=`./findhdr sys/sockio.h`
16106 if $test "$xxx"; then
16107         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16108                 val="$define"
16109                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16110         else
16111                 val="$undef"
16112                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16113         fi
16114 else
16115         val="$undef"
16116         $cat <<EOM
16117 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16118 EOM
16119 fi
16120 set i_syssockio
16121 eval $setvar
16122
16123
16124 : see if this is a syslog.h system
16125 set syslog.h i_syslog
16126 eval $inhdr
16127
16128
16129 : see if this is a sys/mode.h system
16130 set sys/mode.h i_sysmode
16131 eval $inhdr
16132
16133 : see if sys/resource.h has to be included
16134 set sys/resource.h i_sysresrc
16135 eval $inhdr
16136
16137 : see if sys/security.h is available
16138 set sys/security.h i_syssecrt
16139 eval $inhdr
16140
16141 : see if this is a sys/statvfs.h system
16142 set sys/statvfs.h i_sysstatvfs
16143 eval $inhdr
16144
16145 : see if this is a sys/un.h system
16146 set sys/un.h i_sysun
16147 eval $inhdr
16148
16149
16150 : see if this is a sys/utsname.h system
16151 set sys/utsname.h i_sysutsname
16152 eval $inhdr
16153
16154 : see if this is a syswait system
16155 set sys/wait.h i_syswait
16156 eval $inhdr
16157
16158 : see if this is a ustat.h system
16159 set ustat.h i_ustat
16160 eval $inhdr
16161
16162 : see if this is an utime system
16163 set utime.h i_utime
16164 eval $inhdr
16165
16166 : see if this is a values.h system
16167 set values.h i_values
16168 eval $inhdr
16169
16170 : see if this is a vfork system
16171 case "$d_vfork" in
16172 "$define")
16173         set vfork.h i_vfork
16174         eval $inhdr
16175         ;;
16176 *)
16177         i_vfork="$undef"
16178         ;;
16179 esac
16180
16181 : see if gdbm.h is available
16182 set gdbm.h t_gdbm
16183 eval $inhdr
16184 case "$t_gdbm" in
16185 $define)
16186         : see if gdbm_open exists
16187         set gdbm_open d_gdbm_open
16188         eval $inlibc
16189         case "$d_gdbm_open" in
16190         $undef)
16191                 t_gdbm="$undef"
16192                 echo "We won't be including <gdbm.h>"
16193                 ;;
16194         esac
16195         ;;
16196 esac
16197 val="$t_gdbm"
16198 set i_gdbm
16199 eval $setvar
16200
16201 echo " "
16202 echo "Looking for extensions..." >&4
16203 : If we are using the old config.sh, known_extensions may contain
16204 : old or inaccurate or duplicate values.
16205 known_extensions=''
16206 nonxs_extensions=''
16207 : We do not use find because it might not be available.
16208 : We do not just use MANIFEST because the user may have dropped
16209 : some additional extensions into the source tree and expect them
16210 : to be built.
16211
16212 : Function to recursively find available extensions, ignoring DynaLoader
16213 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16214 find_extensions='
16215     for xxx in *; do
16216        case "$xxx" in
16217            DynaLoader|dynaload) ;;
16218            *)
16219            if $test -f $xxx/$xxx.xs; then
16220                known_extensions="$known_extensions $1$xxx";
16221            elif $test -f $xxx/Makefile.PL; then
16222                nonxs_extensions="$nonxs_extensions $1$xxx";
16223            else
16224                if $test -d $xxx -a $# -lt 10; then
16225                    set $1$xxx/ $*;
16226                    cd $xxx;
16227                    eval $find_extensions;
16228                    cd ..;
16229                    shift;
16230                fi;
16231            fi
16232            ;;
16233        esac;
16234     done'
16235 tdir=`pwd`
16236 cd $rsrc/ext
16237 set X
16238 shift
16239 eval $find_extensions
16240 set X $nonxs_extensions
16241 shift
16242 nonxs_extensions="$*"
16243 set X $known_extensions
16244 shift
16245 known_extensions="$*"
16246 cd $tdir
16247
16248 : Now see which are supported on this system.
16249 avail_ext=''
16250 for xxx in $known_extensions ; do
16251         case "$xxx" in
16252         DB_File|db_file)
16253                 case "$i_db" in
16254                 $define) avail_ext="$avail_ext $xxx" ;;
16255                 esac
16256                 ;;
16257         GDBM_File|gdbm_fil)
16258                 case "$i_gdbm" in 
16259                 $define) avail_ext="$avail_ext $xxx" ;;
16260                 esac
16261                 ;;
16262         I18N/Langinfo|i18n_lan)
16263                 case "$i_langinfo$d_nl_langinfo" in 
16264                 $define$define) avail_ext="$avail_ext $xxx" ;;
16265                 esac
16266                 ;;
16267         NDBM_File|ndbm_fil)
16268                 case "$i_ndbm" in
16269                 $define)
16270                     case "$osname-$use64bitint" in
16271                     cygwin-*|hpux-define)
16272                         case "$libs" in
16273                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16274                         esac
16275                         ;;
16276                     *) avail_ext="$avail_ext $xxx" ;;
16277                     esac
16278                     ;;
16279                 esac
16280                 ;;
16281         ODBM_File|odbm_fil) 
16282                 case "${i_dbm}${i_rpcsvcdbm}" in
16283                 *"${define}"*)
16284                     case "$osname-$use64bitint" in
16285                     cygwin-*|hpux-define)
16286                         case "$libs" in
16287                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16288                         esac
16289                         ;;
16290                     *) avail_ext="$avail_ext $xxx" ;;
16291                     esac
16292                     ;;
16293                 esac
16294                 ;;
16295         POSIX|posix)
16296                 case "$useposix" in
16297                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16298                 esac
16299                 ;;
16300         Opcode|opcode)
16301                 case "$useopcode" in
16302                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16303                 esac
16304                 ;;
16305         Socket|socket)
16306                 case "$d_socket" in 
16307                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16308                 esac
16309                 ;;
16310         Sys/Syslog|sys/syslog)
16311                 : XXX syslog requires socket
16312                 case "$d_socket" in 
16313                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16314                 esac
16315                 ;;
16316         Thread|thread)
16317                 case "$usethreads" in
16318                 true|$define|y)
16319                         case "$useithreads" in
16320                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16321                         esac
16322                 esac
16323                 ;;
16324         IPC/SysV|ipc/sysv)
16325                 : XXX Do we need a useipcsysv variable here
16326                 case "${d_msg}${d_sem}${d_shm}" in 
16327                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16328                 esac
16329                 ;;
16330         *)      avail_ext="$avail_ext $xxx"
16331                 ;;
16332         esac
16333 done
16334
16335 set X $avail_ext
16336 shift
16337 avail_ext="$*"
16338
16339 : Now see which nonxs extensions are supported on this system.
16340 : For now assume all are.
16341 nonxs_ext=''
16342 for xxx in $nonxs_extensions ; do
16343         case "$xxx" in
16344         *)      nonxs_ext="$nonxs_ext $xxx"
16345                 ;;
16346         esac
16347 done
16348
16349 set X $nonxs_ext
16350 shift
16351 nonxs_ext="$*"
16352
16353 case $usedl in
16354 $define)
16355         $cat <<EOM
16356 A number of extensions are supplied with $package.  You may choose to
16357 compile these extensions for dynamic loading (the default), compile
16358 them into the $package executable (static loading), or not include
16359 them at all.  Answer "none" to include no extensions.
16360 Note that DynaLoader is always built and need not be mentioned here.
16361
16362 EOM
16363         case "$dynamic_ext" in
16364         '') dflt="$avail_ext" ;;
16365         *)      dflt="$dynamic_ext"
16366                 # Perhaps we are reusing an old out-of-date config.sh.
16367                 case "$hint" in
16368                 previous)
16369                         if test X"$dynamic_ext" != X"$avail_ext"; then
16370                                 $cat <<EOM
16371 NOTICE:  Your previous config.sh list may be incorrect. 
16372 The extensions now available to you are 
16373         ${avail_ext}
16374 but the default list from your previous config.sh is
16375         ${dynamic_ext} 
16376
16377 EOM
16378                         fi
16379                         ;;
16380                 esac
16381                 ;;
16382         esac
16383         case "$dflt" in
16384         '')     dflt=none;;
16385         esac
16386         rp="What extensions do you wish to load dynamically?"
16387         . ./myread
16388         case "$ans" in
16389         none) dynamic_ext=' ' ;;
16390         *) dynamic_ext="$ans" ;;
16391         esac
16392
16393         case "$static_ext" in
16394         '')
16395                 : Exclude those already listed in dynamic linking
16396                 dflt=''
16397                 for xxx in $avail_ext; do
16398                         case " $dynamic_ext " in
16399                         *" $xxx "*) ;;
16400                         *) dflt="$dflt $xxx" ;;
16401                         esac
16402                 done
16403                 set X $dflt
16404                 shift
16405                 dflt="$*"
16406                 ;;
16407         *)  dflt="$static_ext" 
16408                 ;;
16409         esac
16410
16411         case "$dflt" in
16412         '')     dflt=none;;
16413         esac
16414         rp="What extensions do you wish to load statically?"
16415         . ./myread
16416         case "$ans" in
16417         none) static_ext=' ' ;;
16418         *) static_ext="$ans" ;;
16419         esac
16420         ;;
16421 *)
16422         $cat <<EOM
16423 A number of extensions are supplied with $package.  Answer "none" 
16424 to include no extensions. 
16425 Note that DynaLoader is always built and need not be mentioned here.
16426
16427 EOM
16428         case "$static_ext" in
16429         '') dflt="$avail_ext" ;;
16430         *)      dflt="$static_ext"
16431                 # Perhaps we are reusing an old out-of-date config.sh.
16432                 case "$hint" in
16433                 previous)
16434                         if test X"$static_ext" != X"$avail_ext"; then
16435                                 $cat <<EOM
16436 NOTICE:  Your previous config.sh list may be incorrect. 
16437 The extensions now available to you are 
16438         ${avail_ext}
16439 but the default list from your previous config.sh is
16440         ${static_ext} 
16441
16442 EOM
16443                         fi
16444                         ;;
16445                 esac
16446                 ;;
16447         esac
16448         : Exclude those that are not xs extensions
16449         case "$dflt" in
16450         '')     dflt=none;;
16451         esac
16452         rp="What extensions do you wish to include?"
16453         . ./myread
16454         case "$ans" in
16455         none) static_ext=' ' ;;
16456         *) static_ext="$ans" ;;
16457         esac
16458         ;;
16459 esac
16460
16461 set X $dynamic_ext $static_ext $nonxs_ext
16462 shift
16463 extensions="$*"
16464
16465 : Remove libraries needed only for extensions
16466 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16467 : The exception is SunOS 4.x, which needs them.
16468 case "${osname}X${osvers}" in
16469 sunos*X4*)
16470     perllibs="$libs"
16471     ;;
16472 *) case "$usedl" in
16473     $define|true|[yY]*)
16474             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16475             shift
16476             perllibs="$*"
16477             ;;
16478     *)  perllibs="$libs"
16479             ;;
16480     esac
16481     ;;
16482 esac
16483
16484 : Remove build directory name from cppstdin so it can be used from
16485 : either the present location or the final installed location.
16486 echo " "
16487 : Get out of the UU directory to get correct path name.
16488 cd ..
16489 case "$cppstdin" in
16490 `pwd`/cppstdin)
16491         echo "Stripping down cppstdin path name"
16492         cppstdin=cppstdin
16493         ;;
16494 esac
16495 cd UU
16496
16497 : end of configuration questions
16498 echo " "
16499 echo "End of configuration questions."
16500 echo " "
16501
16502 : back to where it started
16503 if test -d ../UU; then
16504         cd ..
16505 fi
16506
16507 : configuration may be patched via a 'config.over' file
16508 if $test -f config.over; then
16509         echo " "
16510         dflt=y
16511         rp='I see a config.over file.  Do you wish to load it?'
16512         . UU/myread
16513         case "$ans" in
16514         n*) echo "OK, I'll ignore it.";;
16515         *)      . ./config.over
16516                 echo "Configuration override changes have been loaded."
16517                 ;;
16518         esac
16519 fi
16520
16521 : in case they want portability, strip down executable paths
16522 case "$d_portable" in
16523 "$define")
16524         echo " "
16525         echo "Stripping down executable paths..." >&4
16526         for file in $loclist $trylist; do
16527                 eval temp=\$$file
16528                 eval $file=`basename $temp`
16529         done
16530         ;;
16531 esac
16532
16533 : create config.sh file
16534 echo " "
16535 echo "Creating config.sh..." >&4
16536 $spitshell <<EOT >config.sh
16537 $startsh
16538 #
16539 # This file was produced by running the Configure script. It holds all the
16540 # definitions figured out by Configure. Should you modify one of these values,
16541 # do not forget to propagate your changes by running "Configure -der". You may
16542 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16543 #
16544
16545 # Package name      : $package
16546 # Source directory  : $src
16547 # Configuration time: $cf_time
16548 # Configured by     : $cf_by
16549 # Target system     : $myuname
16550
16551 Author='$Author'
16552 Date='$Date'
16553 Header='$Header'
16554 Id='$Id'
16555 Locker='$Locker'
16556 Log='$Log'
16557 Mcc='$Mcc'
16558 RCSfile='$RCSfile'
16559 Revision='$Revision'
16560 Source='$Source'
16561 State='$State'
16562 _a='$_a'
16563 _exe='$_exe'
16564 _o='$_o'
16565 afs='$afs'
16566 afsroot='$afsroot'
16567 alignbytes='$alignbytes'
16568 ansi2knr='$ansi2knr'
16569 aphostname='$aphostname'
16570 api_revision='$api_revision'
16571 api_subversion='$api_subversion'
16572 api_version='$api_version'
16573 api_versionstring='$api_versionstring'
16574 ar='$ar'
16575 archlib='$archlib'
16576 archlibexp='$archlibexp'
16577 archname64='$archname64'
16578 archname='$archname'
16579 archobjs='$archobjs'
16580 awk='$awk'
16581 baserev='$baserev'
16582 bash='$bash'
16583 bin='$bin'
16584 bincompat5005='$bincompat5005'
16585 binexp='$binexp'
16586 bison='$bison'
16587 byacc='$byacc'
16588 byteorder='$byteorder'
16589 c='$c'
16590 castflags='$castflags'
16591 cat='$cat'
16592 cc='$cc'
16593 cccdlflags='$cccdlflags'
16594 ccdlflags='$ccdlflags'
16595 ccflags='$ccflags'
16596 ccflags_uselargefiles='$ccflags_uselargefiles'
16597 ccname='$ccname'
16598 ccsymbols='$ccsymbols'
16599 ccversion='$ccversion'
16600 cf_by='$cf_by'
16601 cf_email='$cf_email'
16602 cf_time='$cf_time'
16603 charsize='$charsize'
16604 chgrp='$chgrp'
16605 chmod='$chmod'
16606 chown='$chown'
16607 clocktype='$clocktype'
16608 comm='$comm'
16609 compress='$compress'
16610 contains='$contains'
16611 cp='$cp'
16612 cpio='$cpio'
16613 cpp='$cpp'
16614 cpp_stuff='$cpp_stuff'
16615 cppccsymbols='$cppccsymbols'
16616 cppflags='$cppflags'
16617 cpplast='$cpplast'
16618 cppminus='$cppminus'
16619 cpprun='$cpprun'
16620 cppstdin='$cppstdin'
16621 cppsymbols='$cppsymbols'
16622 cryptlib='$cryptlib'
16623 csh='$csh'
16624 d_Gconvert='$d_Gconvert'
16625 d_PRIEUldbl='$d_PRIEUldbl'
16626 d_PRIFUldbl='$d_PRIFUldbl'
16627 d_PRIGUldbl='$d_PRIGUldbl'
16628 d_PRIXU64='$d_PRIXU64'
16629 d_PRId64='$d_PRId64'
16630 d_PRIeldbl='$d_PRIeldbl'
16631 d_PRIfldbl='$d_PRIfldbl'
16632 d_PRIgldbl='$d_PRIgldbl'
16633 d_PRIi64='$d_PRIi64'
16634 d_PRIo64='$d_PRIo64'
16635 d_PRIu64='$d_PRIu64'
16636 d_PRIx64='$d_PRIx64'
16637 d_SCNfldbl='$d_SCNfldbl'
16638 d__fwalk='$d__fwalk'
16639 d_access='$d_access'
16640 d_accessx='$d_accessx'
16641 d_alarm='$d_alarm'
16642 d_archlib='$d_archlib'
16643 d_atolf='$d_atolf'
16644 d_atoll='$d_atoll'
16645 d_attribut='$d_attribut'
16646 d_bcmp='$d_bcmp'
16647 d_bcopy='$d_bcopy'
16648 d_bincompat5005='$d_bincompat5005'
16649 d_bsd='$d_bsd'
16650 d_bsdgetpgrp='$d_bsdgetpgrp'
16651 d_bsdsetpgrp='$d_bsdsetpgrp'
16652 d_bzero='$d_bzero'
16653 d_casti32='$d_casti32'
16654 d_castneg='$d_castneg'
16655 d_charvspr='$d_charvspr'
16656 d_chown='$d_chown'
16657 d_chroot='$d_chroot'
16658 d_chsize='$d_chsize'
16659 d_closedir='$d_closedir'
16660 d_cmsghdr_s='$d_cmsghdr_s'
16661 d_const='$d_const'
16662 d_crypt='$d_crypt'
16663 d_csh='$d_csh'
16664 d_cuserid='$d_cuserid'
16665 d_dbl_dig='$d_dbl_dig'
16666 d_dbminitproto='$d_dbminitproto'
16667 d_difftime='$d_difftime'
16668 d_dirnamlen='$d_dirnamlen'
16669 d_dlerror='$d_dlerror'
16670 d_dlopen='$d_dlopen'
16671 d_dlsymun='$d_dlsymun'
16672 d_dosuid='$d_dosuid'
16673 d_drand48proto='$d_drand48proto'
16674 d_dup2='$d_dup2'
16675 d_eaccess='$d_eaccess'
16676 d_endgrent='$d_endgrent'
16677 d_endhent='$d_endhent'
16678 d_endnent='$d_endnent'
16679 d_endpent='$d_endpent'
16680 d_endpwent='$d_endpwent'
16681 d_endsent='$d_endsent'
16682 d_eofnblk='$d_eofnblk'
16683 d_eunice='$d_eunice'
16684 d_fchdir='$d_fchdir'
16685 d_fchmod='$d_fchmod'
16686 d_fchown='$d_fchown'
16687 d_fcntl='$d_fcntl'
16688 d_fcntl_can_lock='$d_fcntl_can_lock'
16689 d_fd_macros='$d_fd_macros'
16690 d_fd_set='$d_fd_set'
16691 d_fds_bits='$d_fds_bits'
16692 d_fgetpos='$d_fgetpos'
16693 d_flexfnam='$d_flexfnam'
16694 d_flock='$d_flock'
16695 d_flockproto='$d_flockproto'
16696 d_fork='$d_fork'
16697 d_fpathconf='$d_fpathconf'
16698 d_fpos64_t='$d_fpos64_t'
16699 d_frexpl='$d_frexpl'
16700 d_fs_data_s='$d_fs_data_s'
16701 d_fseeko='$d_fseeko'
16702 d_fsetpos='$d_fsetpos'
16703 d_fstatfs='$d_fstatfs'
16704 d_fstatvfs='$d_fstatvfs'
16705 d_fsync='$d_fsync'
16706 d_ftello='$d_ftello'
16707 d_ftime='$d_ftime'
16708 d_getcwd='$d_getcwd'
16709 d_getespwnam='$d_getespwnam'
16710 d_getfsstat='$d_getfsstat'
16711 d_getgrent='$d_getgrent'
16712 d_getgrps='$d_getgrps'
16713 d_gethbyaddr='$d_gethbyaddr'
16714 d_gethbyname='$d_gethbyname'
16715 d_gethent='$d_gethent'
16716 d_gethname='$d_gethname'
16717 d_gethostprotos='$d_gethostprotos'
16718 d_getitimer='$d_getitimer'
16719 d_getlogin='$d_getlogin'
16720 d_getmnt='$d_getmnt'
16721 d_getmntent='$d_getmntent'
16722 d_getnbyaddr='$d_getnbyaddr'
16723 d_getnbyname='$d_getnbyname'
16724 d_getnent='$d_getnent'
16725 d_getnetprotos='$d_getnetprotos'
16726 d_getpagsz='$d_getpagsz'
16727 d_getpbyname='$d_getpbyname'
16728 d_getpbynumber='$d_getpbynumber'
16729 d_getpent='$d_getpent'
16730 d_getpgid='$d_getpgid'
16731 d_getpgrp2='$d_getpgrp2'
16732 d_getpgrp='$d_getpgrp'
16733 d_getppid='$d_getppid'
16734 d_getprior='$d_getprior'
16735 d_getprotoprotos='$d_getprotoprotos'
16736 d_getprpwnam='$d_getprpwnam'
16737 d_getpwent='$d_getpwent'
16738 d_getsbyname='$d_getsbyname'
16739 d_getsbyport='$d_getsbyport'
16740 d_getsent='$d_getsent'
16741 d_getservprotos='$d_getservprotos'
16742 d_getspnam='$d_getspnam'
16743 d_gettimeod='$d_gettimeod'
16744 d_gnulibc='$d_gnulibc'
16745 d_grpasswd='$d_grpasswd'
16746 d_hasmntopt='$d_hasmntopt'
16747 d_htonl='$d_htonl'
16748 d_iconv='$d_iconv'
16749 d_index='$d_index'
16750 d_inetaton='$d_inetaton'
16751 d_int64_t='$d_int64_t'
16752 d_isascii='$d_isascii'
16753 d_isnan='$d_isnan'
16754 d_isnanl='$d_isnanl'
16755 d_killpg='$d_killpg'
16756 d_lchown='$d_lchown'
16757 d_ldbl_dig='$d_ldbl_dig'
16758 d_link='$d_link'
16759 d_locconv='$d_locconv'
16760 d_lockf='$d_lockf'
16761 d_longdbl='$d_longdbl'
16762 d_longlong='$d_longlong'
16763 d_lseekproto='$d_lseekproto'
16764 d_lstat='$d_lstat'
16765 d_madvise='$d_madvise'
16766 d_mblen='$d_mblen'
16767 d_mbstowcs='$d_mbstowcs'
16768 d_mbtowc='$d_mbtowc'
16769 d_memchr='$d_memchr'
16770 d_memcmp='$d_memcmp'
16771 d_memcpy='$d_memcpy'
16772 d_memmove='$d_memmove'
16773 d_memset='$d_memset'
16774 d_mkdir='$d_mkdir'
16775 d_mkdtemp='$d_mkdtemp'
16776 d_mkfifo='$d_mkfifo'
16777 d_mkstemp='$d_mkstemp'
16778 d_mkstemps='$d_mkstemps'
16779 d_mktime='$d_mktime'
16780 d_mmap='$d_mmap'
16781 d_modfl='$d_modfl'
16782 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16783 d_mprotect='$d_mprotect'
16784 d_msg='$d_msg'
16785 d_msg_ctrunc='$d_msg_ctrunc'
16786 d_msg_dontroute='$d_msg_dontroute'
16787 d_msg_oob='$d_msg_oob'
16788 d_msg_peek='$d_msg_peek'
16789 d_msg_proxy='$d_msg_proxy'
16790 d_msgctl='$d_msgctl'
16791 d_msgget='$d_msgget'
16792 d_msghdr_s='$d_msghdr_s'
16793 d_msgrcv='$d_msgrcv'
16794 d_msgsnd='$d_msgsnd'
16795 d_msync='$d_msync'
16796 d_munmap='$d_munmap'
16797 d_mymalloc='$d_mymalloc'
16798 d_nice='$d_nice'
16799 d_nl_langinfo='$d_nl_langinfo'
16800 d_nv_preserves_uv='$d_nv_preserves_uv'
16801 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16802 d_off64_t='$d_off64_t'
16803 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16804 d_oldpthreads='$d_oldpthreads'
16805 d_oldsock='$d_oldsock'
16806 d_open3='$d_open3'
16807 d_pathconf='$d_pathconf'
16808 d_pause='$d_pause'
16809 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16810 d_phostname='$d_phostname'
16811 d_pipe='$d_pipe'
16812 d_poll='$d_poll'
16813 d_portable='$d_portable'
16814 d_pthread_atfork='$d_pthread_atfork'
16815 d_pthread_yield='$d_pthread_yield'
16816 d_pwage='$d_pwage'
16817 d_pwchange='$d_pwchange'
16818 d_pwclass='$d_pwclass'
16819 d_pwcomment='$d_pwcomment'
16820 d_pwexpire='$d_pwexpire'
16821 d_pwgecos='$d_pwgecos'
16822 d_pwpasswd='$d_pwpasswd'
16823 d_pwquota='$d_pwquota'
16824 d_qgcvt='$d_qgcvt'
16825 d_quad='$d_quad'
16826 d_readdir='$d_readdir'
16827 d_readlink='$d_readlink'
16828 d_readv='$d_readv'
16829 d_recvmsg='$d_recvmsg'
16830 d_rename='$d_rename'
16831 d_rewinddir='$d_rewinddir'
16832 d_rmdir='$d_rmdir'
16833 d_safebcpy='$d_safebcpy'
16834 d_safemcpy='$d_safemcpy'
16835 d_sanemcmp='$d_sanemcmp'
16836 d_sbrkproto='$d_sbrkproto'
16837 d_sched_yield='$d_sched_yield'
16838 d_scm_rights='$d_scm_rights'
16839 d_seekdir='$d_seekdir'
16840 d_select='$d_select'
16841 d_sem='$d_sem'
16842 d_semctl='$d_semctl'
16843 d_semctl_semid_ds='$d_semctl_semid_ds'
16844 d_semctl_semun='$d_semctl_semun'
16845 d_semget='$d_semget'
16846 d_semop='$d_semop'
16847 d_sendmsg='$d_sendmsg'
16848 d_setegid='$d_setegid'
16849 d_seteuid='$d_seteuid'
16850 d_setgrent='$d_setgrent'
16851 d_setgrps='$d_setgrps'
16852 d_sethent='$d_sethent'
16853 d_setitimer='$d_setitimer'
16854 d_setlinebuf='$d_setlinebuf'
16855 d_setlocale='$d_setlocale'
16856 d_setnent='$d_setnent'
16857 d_setpent='$d_setpent'
16858 d_setpgid='$d_setpgid'
16859 d_setpgrp2='$d_setpgrp2'
16860 d_setpgrp='$d_setpgrp'
16861 d_setprior='$d_setprior'
16862 d_setproctitle='$d_setproctitle'
16863 d_setpwent='$d_setpwent'
16864 d_setregid='$d_setregid'
16865 d_setresgid='$d_setresgid'
16866 d_setresuid='$d_setresuid'
16867 d_setreuid='$d_setreuid'
16868 d_setrgid='$d_setrgid'
16869 d_setruid='$d_setruid'
16870 d_setsent='$d_setsent'
16871 d_setsid='$d_setsid'
16872 d_setvbuf='$d_setvbuf'
16873 d_sfio='$d_sfio'
16874 d_shm='$d_shm'
16875 d_shmat='$d_shmat'
16876 d_shmatprototype='$d_shmatprototype'
16877 d_shmctl='$d_shmctl'
16878 d_shmdt='$d_shmdt'
16879 d_shmget='$d_shmget'
16880 d_sigaction='$d_sigaction'
16881 d_sigprocmask='$d_sigprocmask'
16882 d_sigsetjmp='$d_sigsetjmp'
16883 d_sockatmark='$d_sockatmark'
16884 d_sockatmarkproto='$d_sockatmarkproto'
16885 d_socket='$d_socket'
16886 d_socklen_t='$d_socklen_t'
16887 d_sockpair='$d_sockpair'
16888 d_socks5_init='$d_socks5_init'
16889 d_sqrtl='$d_sqrtl'
16890 d_sresgproto='$d_sresgproto'
16891 d_sresuproto='$d_sresuproto'
16892 d_statblks='$d_statblks'
16893 d_statfs_f_flags='$d_statfs_f_flags'
16894 d_statfs_s='$d_statfs_s'
16895 d_statvfs='$d_statvfs'
16896 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16897 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16898 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16899 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16900 d_stdio_stream_array='$d_stdio_stream_array'
16901 d_stdiobase='$d_stdiobase'
16902 d_stdstdio='$d_stdstdio'
16903 d_strchr='$d_strchr'
16904 d_strcoll='$d_strcoll'
16905 d_strctcpy='$d_strctcpy'
16906 d_strerrm='$d_strerrm'
16907 d_strerror='$d_strerror'
16908 d_strftime='$d_strftime'
16909 d_strtod='$d_strtod'
16910 d_strtol='$d_strtol'
16911 d_strtold='$d_strtold'
16912 d_strtoll='$d_strtoll'
16913 d_strtoq='$d_strtoq'
16914 d_strtoul='$d_strtoul'
16915 d_strtoull='$d_strtoull'
16916 d_strtouq='$d_strtouq'
16917 d_strxfrm='$d_strxfrm'
16918 d_suidsafe='$d_suidsafe'
16919 d_symlink='$d_symlink'
16920 d_syscall='$d_syscall'
16921 d_syscallproto='$d_syscallproto'
16922 d_sysconf='$d_sysconf'
16923 d_sysernlst='$d_sysernlst'
16924 d_syserrlst='$d_syserrlst'
16925 d_system='$d_system'
16926 d_tcgetpgrp='$d_tcgetpgrp'
16927 d_tcsetpgrp='$d_tcsetpgrp'
16928 d_telldir='$d_telldir'
16929 d_telldirproto='$d_telldirproto'
16930 d_time='$d_time'
16931 d_times='$d_times'
16932 d_truncate='$d_truncate'
16933 d_tzname='$d_tzname'
16934 d_u32align='$d_u32align'
16935 d_ualarm='$d_ualarm'
16936 d_umask='$d_umask'
16937 d_uname='$d_uname'
16938 d_union_semun='$d_union_semun'
16939 d_usleep='$d_usleep'
16940 d_usleepproto='$d_usleepproto'
16941 d_ustat='$d_ustat'
16942 d_vendorarch='$d_vendorarch'
16943 d_vendorbin='$d_vendorbin'
16944 d_vendorlib='$d_vendorlib'
16945 d_vfork='$d_vfork'
16946 d_void_closedir='$d_void_closedir'
16947 d_voidsig='$d_voidsig'
16948 d_voidtty='$d_voidtty'
16949 d_volatile='$d_volatile'
16950 d_vprintf='$d_vprintf'
16951 d_wait4='$d_wait4'
16952 d_waitpid='$d_waitpid'
16953 d_wcstombs='$d_wcstombs'
16954 d_wctomb='$d_wctomb'
16955 d_writev='$d_writev'
16956 d_xenix='$d_xenix'
16957 date='$date'
16958 db_hashtype='$db_hashtype'
16959 db_prefixtype='$db_prefixtype'
16960 db_version_major='$db_version_major'
16961 db_version_minor='$db_version_minor'
16962 db_version_patch='$db_version_patch'
16963 defvoidused='$defvoidused'
16964 direntrytype='$direntrytype'
16965 dlext='$dlext'
16966 dlsrc='$dlsrc'
16967 doublesize='$doublesize'
16968 drand01='$drand01'
16969 dynamic_ext='$dynamic_ext'
16970 eagain='$eagain'
16971 ebcdic='$ebcdic'
16972 echo='$echo'
16973 egrep='$egrep'
16974 emacs='$emacs'
16975 eunicefix='$eunicefix'
16976 exe_ext='$exe_ext'
16977 expr='$expr'
16978 extensions='$extensions'
16979 fflushNULL='$fflushNULL'
16980 fflushall='$fflushall'
16981 find='$find'
16982 firstmakefile='$firstmakefile'
16983 flex='$flex'
16984 fpossize='$fpossize'
16985 fpostype='$fpostype'
16986 freetype='$freetype'
16987 from='$from'
16988 full_ar='$full_ar'
16989 full_csh='$full_csh'
16990 full_sed='$full_sed'
16991 gccosandvers='$gccosandvers'
16992 gccversion='$gccversion'
16993 gidformat='$gidformat'
16994 gidsign='$gidsign'
16995 gidsize='$gidsize'
16996 gidtype='$gidtype'
16997 glibpth='$glibpth'
16998 grep='$grep'
16999 groupcat='$groupcat'
17000 groupstype='$groupstype'
17001 gzip='$gzip'
17002 h_fcntl='$h_fcntl'
17003 h_sysfile='$h_sysfile'
17004 hint='$hint'
17005 hostcat='$hostcat'
17006 i16size='$i16size'
17007 i16type='$i16type'
17008 i32size='$i32size'
17009 i32type='$i32type'
17010 i64size='$i64size'
17011 i64type='$i64type'
17012 i8size='$i8size'
17013 i8type='$i8type'
17014 i_arpainet='$i_arpainet'
17015 i_bsdioctl='$i_bsdioctl'
17016 i_db='$i_db'
17017 i_dbm='$i_dbm'
17018 i_dirent='$i_dirent'
17019 i_dld='$i_dld'
17020 i_dlfcn='$i_dlfcn'
17021 i_fcntl='$i_fcntl'
17022 i_float='$i_float'
17023 i_gdbm='$i_gdbm'
17024 i_grp='$i_grp'
17025 i_iconv='$i_iconv'
17026 i_ieeefp='$i_ieeefp'
17027 i_inttypes='$i_inttypes'
17028 i_langinfo='$i_langinfo'
17029 i_libutil='$i_libutil'
17030 i_limits='$i_limits'
17031 i_locale='$i_locale'
17032 i_machcthr='$i_machcthr'
17033 i_malloc='$i_malloc'
17034 i_math='$i_math'
17035 i_memory='$i_memory'
17036 i_mntent='$i_mntent'
17037 i_ndbm='$i_ndbm'
17038 i_netdb='$i_netdb'
17039 i_neterrno='$i_neterrno'
17040 i_netinettcp='$i_netinettcp'
17041 i_niin='$i_niin'
17042 i_poll='$i_poll'
17043 i_prot='$i_prot'
17044 i_pthread='$i_pthread'
17045 i_pwd='$i_pwd'
17046 i_rpcsvcdbm='$i_rpcsvcdbm'
17047 i_sfio='$i_sfio'
17048 i_sgtty='$i_sgtty'
17049 i_shadow='$i_shadow'
17050 i_socks='$i_socks'
17051 i_stdarg='$i_stdarg'
17052 i_stddef='$i_stddef'
17053 i_stdlib='$i_stdlib'
17054 i_string='$i_string'
17055 i_sunmath='$i_sunmath'
17056 i_sysaccess='$i_sysaccess'
17057 i_sysdir='$i_sysdir'
17058 i_sysfile='$i_sysfile'
17059 i_sysfilio='$i_sysfilio'
17060 i_sysin='$i_sysin'
17061 i_sysioctl='$i_sysioctl'
17062 i_syslog='$i_syslog'
17063 i_sysmman='$i_sysmman'
17064 i_sysmode='$i_sysmode'
17065 i_sysmount='$i_sysmount'
17066 i_sysndir='$i_sysndir'
17067 i_sysparam='$i_sysparam'
17068 i_sysresrc='$i_sysresrc'
17069 i_syssecrt='$i_syssecrt'
17070 i_sysselct='$i_sysselct'
17071 i_syssockio='$i_syssockio'
17072 i_sysstat='$i_sysstat'
17073 i_sysstatfs='$i_sysstatfs'
17074 i_sysstatvfs='$i_sysstatvfs'
17075 i_systime='$i_systime'
17076 i_systimek='$i_systimek'
17077 i_systimes='$i_systimes'
17078 i_systypes='$i_systypes'
17079 i_sysuio='$i_sysuio'
17080 i_sysun='$i_sysun'
17081 i_sysutsname='$i_sysutsname'
17082 i_sysvfs='$i_sysvfs'
17083 i_syswait='$i_syswait'
17084 i_termio='$i_termio'
17085 i_termios='$i_termios'
17086 i_time='$i_time'
17087 i_unistd='$i_unistd'
17088 i_ustat='$i_ustat'
17089 i_utime='$i_utime'
17090 i_values='$i_values'
17091 i_varargs='$i_varargs'
17092 i_varhdr='$i_varhdr'
17093 i_vfork='$i_vfork'
17094 ignore_versioned_solibs='$ignore_versioned_solibs'
17095 inc_version_list='$inc_version_list'
17096 inc_version_list_init='$inc_version_list_init'
17097 incpath='$incpath'
17098 inews='$inews'
17099 installarchlib='$installarchlib'
17100 installbin='$installbin'
17101 installman1dir='$installman1dir'
17102 installman3dir='$installman3dir'
17103 installprefix='$installprefix'
17104 installprefixexp='$installprefixexp'
17105 installprivlib='$installprivlib'
17106 installscript='$installscript'
17107 installsitearch='$installsitearch'
17108 installsitebin='$installsitebin'
17109 installsitelib='$installsitelib'
17110 installstyle='$installstyle'
17111 installusrbinperl='$installusrbinperl'
17112 installvendorarch='$installvendorarch'
17113 installvendorbin='$installvendorbin'
17114 installvendorlib='$installvendorlib'
17115 intsize='$intsize'
17116 issymlink='$issymlink'
17117 ivdformat='$ivdformat'
17118 ivsize='$ivsize'
17119 ivtype='$ivtype'
17120 known_extensions='$known_extensions'
17121 ksh='$ksh'
17122 ld='$ld'
17123 lddlflags='$lddlflags'
17124 ldflags='$ldflags'
17125 ldflags_uselargefiles='$ldflags_uselargefiles'
17126 ldlibpthname='$ldlibpthname'
17127 less='$less'
17128 lib_ext='$lib_ext'
17129 libc='$libc'
17130 libperl='$libperl'
17131 libpth='$libpth'
17132 libs='$libs'
17133 libsdirs='$libsdirs'
17134 libsfiles='$libsfiles'
17135 libsfound='$libsfound'
17136 libspath='$libspath'
17137 libswanted='$libswanted'
17138 libswanted_uselargefiles='$libswanted_uselargefiles'
17139 line='$line'
17140 lint='$lint'
17141 lkflags='$lkflags'
17142 ln='$ln'
17143 lns='$lns'
17144 locincpth='$locincpth'
17145 loclibpth='$loclibpth'
17146 longdblsize='$longdblsize'
17147 longlongsize='$longlongsize'
17148 longsize='$longsize'
17149 lp='$lp'
17150 lpr='$lpr'
17151 ls='$ls'
17152 lseeksize='$lseeksize'
17153 lseektype='$lseektype'
17154 mail='$mail'
17155 mailx='$mailx'
17156 make='$make'
17157 make_set_make='$make_set_make'
17158 mallocobj='$mallocobj'
17159 mallocsrc='$mallocsrc'
17160 malloctype='$malloctype'
17161 man1dir='$man1dir'
17162 man1direxp='$man1direxp'
17163 man1ext='$man1ext'
17164 man3dir='$man3dir'
17165 man3direxp='$man3direxp'
17166 man3ext='$man3ext'
17167 mips_type='$mips_type'
17168 mkdir='$mkdir'
17169 mmaptype='$mmaptype'
17170 modetype='$modetype'
17171 more='$more'
17172 multiarch='$multiarch'
17173 mv='$mv'
17174 myarchname='$myarchname'
17175 mydomain='$mydomain'
17176 myhostname='$myhostname'
17177 myuname='$myuname'
17178 n='$n'
17179 need_va_copy='$need_va_copy'
17180 netdb_hlen_type='$netdb_hlen_type'
17181 netdb_host_type='$netdb_host_type'
17182 netdb_name_type='$netdb_name_type'
17183 netdb_net_type='$netdb_net_type'
17184 nm='$nm'
17185 nm_opt='$nm_opt'
17186 nm_so_opt='$nm_so_opt'
17187 nonxs_ext='$nonxs_ext'
17188 nroff='$nroff'
17189 nvEUformat='$nvEUformat'
17190 nvFUformat='$nvFUformat'
17191 nvGUformat='$nvGUformat'
17192 nveformat='$nveformat'
17193 nvfformat='$nvfformat'
17194 nvgformat='$nvgformat'
17195 nvsize='$nvsize'
17196 nvtype='$nvtype'
17197 o_nonblock='$o_nonblock'
17198 obj_ext='$obj_ext'
17199 old_pthread_create_joinable='$old_pthread_create_joinable'
17200 optimize='$optimize'
17201 orderlib='$orderlib'
17202 osname='$osname'
17203 osvers='$osvers'
17204 otherlibdirs='$otherlibdirs'
17205 package='$package'
17206 pager='$pager'
17207 passcat='$passcat'
17208 patchlevel='$patchlevel'
17209 path_sep='$path_sep'
17210 perl5='$perl5'
17211 perl='$perl'
17212 perl_patchlevel='$perl_patchlevel'
17213 perladmin='$perladmin'
17214 perllibs='$perllibs'
17215 perlpath='$perlpath'
17216 pg='$pg'
17217 phostname='$phostname'
17218 pidtype='$pidtype'
17219 plibpth='$plibpth'
17220 pm_apiversion='$pm_apiversion'
17221 pmake='$pmake'
17222 pr='$pr'
17223 prefix='$prefix'
17224 prefixexp='$prefixexp'
17225 privlib='$privlib'
17226 privlibexp='$privlibexp'
17227 prototype='$prototype'
17228 ptrsize='$ptrsize'
17229 quadkind='$quadkind'
17230 quadtype='$quadtype'
17231 randbits='$randbits'
17232 randfunc='$randfunc'
17233 randseedtype='$randseedtype'
17234 ranlib='$ranlib'
17235 rd_nodata='$rd_nodata'
17236 revision='$revision'
17237 rm='$rm'
17238 rmail='$rmail'
17239 run='$run'
17240 runnm='$runnm'
17241 sPRIEUldbl='$sPRIEUldbl'
17242 sPRIFUldbl='$sPRIFUldbl'
17243 sPRIGUldbl='$sPRIGUldbl'
17244 sPRIXU64='$sPRIXU64'
17245 sPRId64='$sPRId64'
17246 sPRIeldbl='$sPRIeldbl'
17247 sPRIfldbl='$sPRIfldbl'
17248 sPRIgldbl='$sPRIgldbl'
17249 sPRIi64='$sPRIi64'
17250 sPRIo64='$sPRIo64'
17251 sPRIu64='$sPRIu64'
17252 sPRIx64='$sPRIx64'
17253 sSCNfldbl='$sSCNfldbl'
17254 sched_yield='$sched_yield'
17255 scriptdir='$scriptdir'
17256 scriptdirexp='$scriptdirexp'
17257 sed='$sed'
17258 seedfunc='$seedfunc'
17259 selectminbits='$selectminbits'
17260 selecttype='$selecttype'
17261 sendmail='$sendmail'
17262 sh='$sh'
17263 shar='$shar'
17264 sharpbang='$sharpbang'
17265 shmattype='$shmattype'
17266 shortsize='$shortsize'
17267 shrpenv='$shrpenv'
17268 shsharp='$shsharp'
17269 sig_count='$sig_count'
17270 sig_name='$sig_name'
17271 sig_name_init='$sig_name_init'
17272 sig_num='$sig_num'
17273 sig_num_init='$sig_num_init'
17274 sig_size='$sig_size'
17275 signal_t='$signal_t'
17276 sitearch='$sitearch'
17277 sitearchexp='$sitearchexp'
17278 sitebin='$sitebin'
17279 sitebinexp='$sitebinexp'
17280 sitelib='$sitelib'
17281 sitelib_stem='$sitelib_stem'
17282 sitelibexp='$sitelibexp'
17283 siteprefix='$siteprefix'
17284 siteprefixexp='$siteprefixexp'
17285 sizesize='$sizesize'
17286 sizetype='$sizetype'
17287 sleep='$sleep'
17288 smail='$smail'
17289 so='$so'
17290 sockethdr='$sockethdr'
17291 socketlib='$socketlib'
17292 socksizetype='$socksizetype'
17293 sort='$sort'
17294 spackage='$spackage'
17295 spitshell='$spitshell'
17296 src='$src'
17297 ssizetype='$ssizetype'
17298 startperl='$startperl'
17299 startsh='$startsh'
17300 static_ext='$static_ext'
17301 stdchar='$stdchar'
17302 stdio_base='$stdio_base'
17303 stdio_bufsiz='$stdio_bufsiz'
17304 stdio_cnt='$stdio_cnt'
17305 stdio_filbuf='$stdio_filbuf'
17306 stdio_ptr='$stdio_ptr'
17307 stdio_stream_array='$stdio_stream_array'
17308 strings='$strings'
17309 submit='$submit'
17310 subversion='$subversion'
17311 sysman='$sysman'
17312 tail='$tail'
17313 tar='$tar'
17314 targetarch='$targetarch'
17315 tbl='$tbl'
17316 tee='$tee'
17317 test='$test'
17318 timeincl='$timeincl'
17319 timetype='$timetype'
17320 to='$to'
17321 touch='$touch'
17322 tr='$tr'
17323 trnl='$trnl'
17324 troff='$troff'
17325 u16size='$u16size'
17326 u16type='$u16type'
17327 u32size='$u32size'
17328 u32type='$u32type'
17329 u64size='$u64size'
17330 u64type='$u64type'
17331 u8size='$u8size'
17332 u8type='$u8type'
17333 uidformat='$uidformat'
17334 uidsign='$uidsign'
17335 uidsize='$uidsize'
17336 uidtype='$uidtype'
17337 uname='$uname'
17338 uniq='$uniq'
17339 uquadtype='$uquadtype'
17340 use5005threads='$use5005threads'
17341 use64bitall='$use64bitall'
17342 use64bitint='$use64bitint'
17343 usecrosscompile='$usecrosscompile'
17344 usedl='$usedl'
17345 useithreads='$useithreads'
17346 uselargefiles='$uselargefiles'
17347 uselongdouble='$uselongdouble'
17348 usemorebits='$usemorebits'
17349 usemultiplicity='$usemultiplicity'
17350 usemymalloc='$usemymalloc'
17351 usenm='$usenm'
17352 useopcode='$useopcode'
17353 useperlio='$useperlio'
17354 useposix='$useposix'
17355 usereentrant='$usereentrant'
17356 usesfio='$usesfio'
17357 useshrplib='$useshrplib'
17358 usesocks='$usesocks'
17359 usethreads='$usethreads'
17360 usevendorprefix='$usevendorprefix'
17361 usevfork='$usevfork'
17362 usrinc='$usrinc'
17363 uuname='$uuname'
17364 uvXUformat='$uvXUformat'
17365 uvoformat='$uvoformat'
17366 uvsize='$uvsize'
17367 uvtype='$uvtype'
17368 uvuformat='$uvuformat'
17369 uvxformat='$uvxformat'
17370 vendorarch='$vendorarch'
17371 vendorarchexp='$vendorarchexp'
17372 vendorbin='$vendorbin'
17373 vendorbinexp='$vendorbinexp'
17374 vendorlib='$vendorlib'
17375 vendorlib_stem='$vendorlib_stem'
17376 vendorlibexp='$vendorlibexp'
17377 vendorprefix='$vendorprefix'
17378 vendorprefixexp='$vendorprefixexp'
17379 version='$version'
17380 version_patchlevel_string='$version_patchlevel_string'
17381 versiononly='$versiononly'
17382 vi='$vi'
17383 voidflags='$voidflags'
17384 xlibpth='$xlibpth'
17385 xs_apiversion='$xs_apiversion'
17386 yacc='$yacc'
17387 yaccflags='$yaccflags'
17388 zcat='$zcat'
17389 zip='$zip'
17390 EOT
17391
17392 : Add in command line options if available
17393 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17394
17395 : add special variables
17396 $test -f $src/patchlevel.h && \
17397 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17398 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17399 echo "PERL_CONFIG_SH=true" >>config.sh
17400
17401 : propagate old symbols
17402 if $test -f UU/config.sh; then
17403         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17404         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17405         $sort | $uniq -u >UU/oldsyms
17406         set X `cat UU/oldsyms`
17407         shift
17408         case $# in
17409         0) ;;
17410         *)
17411                 cat <<EOM
17412 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17413 EOM
17414                 echo "# Variables propagated from previous config.sh file." >>config.sh
17415                 for sym in `cat UU/oldsyms`; do
17416                         echo "    Propagating $hint variable "'$'"$sym..."
17417                         eval 'tmp="$'"${sym}"'"'
17418                         echo "$tmp" | \
17419                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17420                 done
17421                 ;;
17422         esac
17423 fi
17424
17425 : Finish up by extracting the .SH files
17426 case "$alldone" in
17427 exit)
17428         $rm -rf UU
17429         echo "Extraction done."
17430         exit 0
17431         ;;
17432 cont)
17433         ;;
17434 '')
17435         dflt=''
17436         nostick=true
17437         $cat <<EOM
17438
17439 If you'd like to make any changes to the config.sh file before I begin
17440 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17441
17442 EOM
17443         rp="Press return or use a shell escape to edit config.sh:"
17444         . UU/myread
17445         nostick=''
17446         case "$ans" in
17447         '') ;;
17448         *) : in case they cannot read
17449                 sh 1>&4 -c "$ans";;
17450         esac
17451         ;;
17452 esac
17453
17454 : if this fails, just run all the .SH files by hand
17455 . ./config.sh
17456
17457 echo " "
17458 exec 1>&4
17459 pwd=`pwd`
17460 . ./UU/extract
17461 cd $pwd
17462
17463 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17464         dflt=y
17465         case "$silent" in
17466         true) ;;
17467         *)
17468                 $cat <<EOM
17469
17470 Now you need to generate make dependencies by running "$make depend".
17471 You might prefer to run it in background: "$make depend > makedepend.out &"
17472 It can take a while, so you might not want to run it right now.
17473
17474 EOM
17475                 ;;
17476         esac
17477         rp="Run $make depend now?"
17478         . UU/myread
17479         case "$ans" in
17480         y*)
17481                 $make depend && echo "Now you must run '$make'."
17482                 ;;
17483         *)
17484                 echo "You must run '$make depend' then '$make'."
17485                 ;;
17486         esac
17487 elif test -f [Mm]akefile; then
17488         echo " "
17489         echo "Now you must run a $make."
17490 else
17491         echo "Configure done."
17492 fi
17493
17494 if $test -f Policy.sh; then
17495     $cat <<EOM
17496
17497 If you compile $package on a different machine or from a different object
17498 directory, copy the Policy.sh file from this object directory to the
17499 new one before you run Configure -- this will help you with most of
17500 the policy defaults.
17501
17502 EOM
17503 fi
17504 if $test -f config.msg; then
17505     echo "Hmm.  I also noted the following information while running:"
17506     echo " "
17507     $cat config.msg >&4
17508     $rm -f config.msg
17509 fi
17510 $rm -f kit*isdone ark*isdone
17511 $rm -rf UU
17512
17513 : End of Configure
17514