This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Retract #11166 (and #11237).
[perl5.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  8 20:08:04 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_yield=''
481 d_sched_yield=''
482 sched_yield=''
483 d_qgcvt=''
484 d_readdir=''
485 d_rewinddir=''
486 d_seekdir=''
487 d_telldir=''
488 d_readlink=''
489 d_readv=''
490 d_recvmsg=''
491 d_rename=''
492 d_rmdir=''
493 d_safebcpy=''
494 d_safemcpy=''
495 d_sanemcmp=''
496 d_sbrkproto=''
497 d_select=''
498 d_sem=''
499 d_semctl=''
500 d_semget=''
501 d_semop=''
502 d_sendmsg=''
503 d_setegid=''
504 d_seteuid=''
505 d_setgrent=''
506 d_setgrps=''
507 d_sethent=''
508 d_setitimer=''
509 d_setlinebuf=''
510 d_setlocale=''
511 d_setnent=''
512 d_setpent=''
513 d_setpgid=''
514 d_setpgrp2=''
515 d_bsdsetpgrp=''
516 d_setpgrp=''
517 d_setprior=''
518 d_setproctitle=''
519 d_setpwent=''
520 d_setregid=''
521 d_setresgid=''
522 d_setresuid=''
523 d_setreuid=''
524 d_setrgid=''
525 d_setruid=''
526 d_setsent=''
527 d_setsid=''
528 d_setvbuf=''
529 d_sfio=''
530 usesfio=''
531 d_shm=''
532 d_shmat=''
533 d_shmatprototype=''
534 shmattype=''
535 d_shmctl=''
536 d_shmdt=''
537 d_shmget=''
538 d_sigaction=''
539 d_sigprocmask=''
540 d_sigsetjmp=''
541 d_sockatmark=''
542 d_sockatmarkproto=''
543 d_msg_ctrunc=''
544 d_msg_dontroute=''
545 d_msg_oob=''
546 d_msg_peek=''
547 d_msg_proxy=''
548 d_oldsock=''
549 d_scm_rights=''
550 d_socket=''
551 d_sockpair=''
552 sockethdr=''
553 socketlib=''
554 d_socklen_t=''
555 d_socks5_init=''
556 d_sqrtl=''
557 d_sresgproto=''
558 d_sresuproto=''
559 d_statblks=''
560 d_statfs_f_flags=''
561 d_statfs_s=''
562 d_fstatvfs=''
563 d_statvfs=''
564 d_stdio_cnt_lval=''
565 d_stdio_ptr_lval=''
566 d_stdio_ptr_lval_nochange_cnt=''
567 d_stdio_ptr_lval_sets_cnt=''
568 d_stdiobase=''
569 d_stdstdio=''
570 stdio_base=''
571 stdio_bufsiz=''
572 stdio_cnt=''
573 stdio_filbuf=''
574 stdio_ptr=''
575 d_index=''
576 d_strchr=''
577 d_strcoll=''
578 d_strctcpy=''
579 d_strerrm=''
580 d_strerror=''
581 d_sysernlst=''
582 d_syserrlst=''
583 d_strftime=''
584 d_strtod=''
585 d_strtol=''
586 d_strtold=''
587 d_strtoll=''
588 d_strtoq=''
589 d_strtoul=''
590 d_strtoull=''
591 d_strtouq=''
592 d_strxfrm=''
593 d_symlink=''
594 d_syscall=''
595 d_syscallproto=''
596 d_sysconf=''
597 d_system=''
598 d_tcgetpgrp=''
599 d_tcsetpgrp=''
600 d_telldirproto=''
601 d_time=''
602 timetype=''
603 clocktype=''
604 d_times=''
605 d_truncate=''
606 d_tzname=''
607 d_u32align=''
608 d_ualarm=''
609 d_umask=''
610 d_semctl_semid_ds=''
611 d_semctl_semun=''
612 d_union_semun=''
613 d_usleep=''
614 d_usleepproto=''
615 d_ustat=''
616 d_vfork=''
617 usevfork=''
618 d_voidsig=''
619 signal_t=''
620 d_volatile=''
621 d_charvspr=''
622 d_vprintf=''
623 d_wait4=''
624 d_waitpid=''
625 d_wcstombs=''
626 d_wctomb=''
627 d_writev=''
628 dlext=''
629 cccdlflags=''
630 ccdlflags=''
631 dlsrc=''
632 ld=''
633 lddlflags=''
634 usedl=''
635 doublesize=''
636 ebcdic=''
637 fflushNULL=''
638 fflushall=''
639 fpossize=''
640 fpostype=''
641 gccosandvers=''
642 gccversion=''
643 gidformat=''
644 gidsign=''
645 gidsize=''
646 gidtype=''
647 groupstype=''
648 h_fcntl=''
649 h_sysfile=''
650 i_arpainet=''
651 db_hashtype=''
652 db_prefixtype=''
653 db_version_major=''
654 db_version_minor=''
655 db_version_patch=''
656 i_db=''
657 i_dbm=''
658 i_rpcsvcdbm=''
659 d_dirnamlen=''
660 direntrytype=''
661 i_dirent=''
662 i_dld=''
663 i_dlfcn=''
664 i_fcntl=''
665 i_float=''
666 i_gdbm=''
667 d_grpasswd=''
668 i_grp=''
669 i_iconv=''
670 i_ieeefp=''
671 i_inttypes=''
672 i_langinfo=''
673 i_libutil=''
674 i_limits=''
675 i_locale=''
676 i_machcthr=''
677 i_malloc=''
678 i_math=''
679 i_memory=''
680 i_mntent=''
681 i_ndbm=''
682 i_netdb=''
683 i_neterrno=''
684 i_netinettcp=''
685 i_niin=''
686 i_sysin=''
687 i_poll=''
688 i_prot=''
689 i_pthread=''
690 d_pwage=''
691 d_pwchange=''
692 d_pwclass=''
693 d_pwcomment=''
694 d_pwexpire=''
695 d_pwgecos=''
696 d_pwpasswd=''
697 d_pwquota=''
698 i_pwd=''
699 i_sfio=''
700 i_shadow=''
701 i_socks=''
702 i_stddef=''
703 i_stdlib=''
704 i_string=''
705 strings=''
706 i_sunmath=''
707 i_sysaccess=''
708 i_sysdir=''
709 i_sysfile=''
710 d_voidtty=''
711 i_bsdioctl=''
712 i_sysfilio=''
713 i_sysioctl=''
714 i_syssockio=''
715 i_syslog=''
716 i_sysmman=''
717 i_sysmode=''
718 i_sysmount=''
719 i_sysndir=''
720 i_sysparam=''
721 i_sysresrc=''
722 i_syssecrt=''
723 i_sysselct=''
724 i_sysstat=''
725 i_sysstatfs=''
726 i_sysstatvfs=''
727 i_systimes=''
728 i_systypes=''
729 i_sysuio=''
730 i_sysun=''
731 i_sysutsname=''
732 i_sysvfs=''
733 i_syswait=''
734 i_sgtty=''
735 i_termio=''
736 i_termios=''
737 i_systime=''
738 i_systimek=''
739 i_time=''
740 timeincl=''
741 i_unistd=''
742 i_ustat=''
743 i_utime=''
744 i_values=''
745 i_stdarg=''
746 i_varargs=''
747 i_varhdr=''
748 i_vfork=''
749 inc_version_list=''
750 inc_version_list_init=''
751 installprefix=''
752 installprefixexp=''
753 installstyle=''
754 installusrbinperl=''
755 intsize=''
756 longsize=''
757 shortsize=''
758 issymlink=''
759 libc=''
760 ldlibpthname=''
761 libperl=''
762 shrpenv=''
763 useshrplib=''
764 glibpth=''
765 libpth=''
766 loclibpth=''
767 plibpth=''
768 xlibpth=''
769 ignore_versioned_solibs=''
770 libs=''
771 libsdirs=''
772 libsfiles=''
773 libsfound=''
774 libspath=''
775 lns=''
776 d_PRIEUldbl=''
777 d_PRIFUldbl=''
778 d_PRIGUldbl=''
779 d_PRIeldbl=''
780 d_PRIfldbl=''
781 d_PRIgldbl=''
782 d_SCNfldbl=''
783 sPRIEUldbl=''
784 sPRIFUldbl=''
785 sPRIGUldbl=''
786 sPRIeldbl=''
787 sPRIfldbl=''
788 sPRIgldbl=''
789 sSCNfldbl=''
790 lseeksize=''
791 lseektype=''
792 make_set_make=''
793 d_mymalloc=''
794 freetype=''
795 mallocobj=''
796 mallocsrc=''
797 malloctype=''
798 usemymalloc=''
799 installman1dir=''
800 man1dir=''
801 man1direxp=''
802 man1ext=''
803 installman3dir=''
804 man3dir=''
805 man3direxp=''
806 man3ext=''
807 modetype=''
808 multiarch=''
809 mydomain=''
810 myhostname=''
811 phostname=''
812 c=''
813 n=''
814 d_eofnblk=''
815 eagain=''
816 o_nonblock=''
817 rd_nodata=''
818 need_va_copy=''
819 netdb_hlen_type=''
820 netdb_host_type=''
821 netdb_name_type=''
822 netdb_net_type=''
823 groupcat=''
824 hostcat=''
825 passcat=''
826 orderlib=''
827 ranlib=''
828 d_perl_otherlibdirs=''
829 otherlibdirs=''
830 package=''
831 spackage=''
832 pager=''
833 api_revision=''
834 api_subversion=''
835 api_version=''
836 api_versionstring=''
837 patchlevel=''
838 perl_patchlevel=''
839 revision=''
840 subversion=''
841 version=''
842 perl5=''
843 perladmin=''
844 perlpath=''
845 d_nv_preserves_uv=''
846 d_nv_preserves_uv_bits=''
847 i16size=''
848 i16type=''
849 i32size=''
850 i32type=''
851 i64size=''
852 i64type=''
853 i8size=''
854 i8type=''
855 ivsize=''
856 ivtype=''
857 nvsize=''
858 nvtype=''
859 u16size=''
860 u16type=''
861 u32size=''
862 u32type=''
863 u64size=''
864 u64type=''
865 u8size=''
866 u8type=''
867 uvsize=''
868 uvtype=''
869 ivdformat=''
870 nvEUformat=''
871 nvFUformat=''
872 nvGUformat=''
873 nveformat=''
874 nvfformat=''
875 nvgformat=''
876 uvXUformat=''
877 uvoformat=''
878 uvuformat=''
879 uvxformat=''
880 pidtype=''
881 prefix=''
882 prefixexp=''
883 installprivlib=''
884 privlib=''
885 privlibexp=''
886 prototype=''
887 ptrsize=''
888 d_PRIXU64=''
889 d_PRId64=''
890 d_PRIi64=''
891 d_PRIo64=''
892 d_PRIu64=''
893 d_PRIx64=''
894 sPRIXU64=''
895 sPRId64=''
896 sPRIi64=''
897 sPRIo64=''
898 sPRIu64=''
899 sPRIx64=''
900 d_quad=''
901 quadkind=''
902 quadtype=''
903 uquadtype=''
904 drand01=''
905 randbits=''
906 randfunc=''
907 randseedtype=''
908 seedfunc=''
909 installscript=''
910 scriptdir=''
911 scriptdirexp=''
912 selectminbits=''
913 selecttype=''
914 sh=''
915 sig_count=''
916 sig_name=''
917 sig_name_init=''
918 sig_num=''
919 sig_num_init=''
920 sig_size=''
921 installsitearch=''
922 sitearch=''
923 sitearchexp=''
924 installsitebin=''
925 sitebin=''
926 sitebinexp=''
927 installsitelib=''
928 sitelib=''
929 sitelib_stem=''
930 sitelibexp=''
931 siteprefix=''
932 siteprefixexp=''
933 sizesize=''
934 sizetype=''
935 so=''
936 socksizetype=''
937 sharpbang=''
938 shsharp=''
939 spitshell=''
940 src=''
941 ssizetype=''
942 startperl=''
943 startsh=''
944 stdchar=''
945 d_stdio_stream_array=''
946 stdio_stream_array=''
947 sysman=''
948 trnl=''
949 uidformat=''
950 uidsign=''
951 uidsize=''
952 uidtype=''
953 archname64=''
954 use64bitall=''
955 use64bitint=''
956 ccflags_uselargefiles=''
957 ldflags_uselargefiles=''
958 libswanted_uselargefiles=''
959 uselargefiles=''
960 uselongdouble=''
961 usemorebits=''
962 usemultiplicity=''
963 nm_opt=''
964 nm_so_opt=''
965 runnm=''
966 usenm=''
967 useperlio=''
968 usesocks=''
969 d_oldpthreads=''
970 use5005threads=''
971 useithreads=''
972 usereentrant=''
973 usethreads=''
974 incpath=''
975 mips_type=''
976 usrinc=''
977 d_vendorarch=''
978 installvendorarch=''
979 vendorarch=''
980 vendorarchexp=''
981 d_vendorbin=''
982 installvendorbin=''
983 vendorbin=''
984 vendorbinexp=''
985 d_vendorlib=''
986 installvendorlib=''
987 vendorlib=''
988 vendorlib_stem=''
989 vendorlibexp=''
990 usevendorprefix=''
991 vendorprefix=''
992 vendorprefixexp=''
993 versiononly=''
994 defvoidused=''
995 voidflags=''
996 pm_apiversion=''
997 xs_apiversion=''
998 yacc=''
999 yaccflags=''
1000 CONFIG=''
1001
1002 define='define'
1003 undef='undef'
1004 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1005 rmlist=''
1006
1007 : We must find out about Eunice early
1008 eunicefix=':'
1009 if test -f /etc/unixtovms; then
1010         eunicefix=/etc/unixtovms
1011 fi
1012 if test -f /etc/unixtovms.exe; then
1013         eunicefix=/etc/unixtovms.exe
1014 fi
1015
1016 i_whoami=''
1017 ccname=''
1018 ccversion=''
1019 perllibs=''
1020 : set useposix=false in your hint file to disable the POSIX extension.
1021 useposix=true
1022 : set useopcode=false in your hint file to disable the Opcode extension.
1023 useopcode=true
1024 : Trailing extension.  Override this in a hint file, if needed.
1025 _exe=''
1026 : Extra object files, if any, needed on this platform.
1027 archobjs=''
1028 archname=''
1029 : Possible local include directories to search.
1030 : Set locincpth to "" in a hint file to defeat local include searches.
1031 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1032 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1033 :
1034 : no include file wanted by default
1035 inclwanted=''
1036
1037 groupstype=''
1038 libnames=''
1039 : change the next line if compiling for Xenix/286 on Xenix/386
1040 xlibpth='/usr/lib/386 /lib/386'
1041 : Possible local library directories to search.
1042 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1043 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1044
1045 : general looking path for locating libraries
1046 glibpth="/lib /usr/lib $xlibpth"
1047 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1048 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1049 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1050
1051 : Private path used by Configure to find libraries.  Its value
1052 : is prepended to libpth. This variable takes care of special
1053 : machines, like the mips.  Usually, it should be empty.
1054 plibpth=''
1055
1056 : default library list
1057 libswanted=''
1058 : some systems want to use only the non-versioned libso:s
1059 ignore_versioned_solibs=''
1060 archname64=''
1061 ccflags_uselargefiles=''
1062 ldflags_uselargefiles=''
1063 libswanted_uselargefiles=''
1064 : set usemultiplicity on the Configure command line to enable multiplicity.
1065 : set usesocks on the Configure command line to enable socks.
1066 : set usethreads on the Configure command line to enable threads.
1067 usereentrant='undef'
1068 : full support for void wanted by default
1069 defvoidused=15
1070
1071 : List of libraries we want.
1072 : If anyone needs -lnet, put it in a hint file.
1073 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1074 libswanted="$libswanted dld ld sun m c cposix posix"
1075 libswanted="$libswanted ndir dir crypt sec"
1076 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1077 : We probably want to search /usr/shlib before most other libraries.
1078 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1079 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1080 glibpth="/usr/shlib $glibpth"
1081 : Do not use vfork unless overridden by a hint file.
1082 usevfork=false
1083
1084 : Find the basic shell for Bourne shell scripts
1085 case "$sh" in
1086 '')
1087         case "$SYSTYPE" in
1088         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1089         *) xxx='/bin/sh';;
1090         esac
1091         if test -f "$xxx"; then
1092                 sh="$xxx"
1093         else
1094                 : Build up a list and do a single loop so we can 'break' out.
1095                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1096                 for xxx in sh bash ksh pdksh ash; do
1097                         for p in $pth; do
1098                                 try="$try ${p}/${xxx}"
1099                         done
1100                 done
1101                 for xxx in $try; do
1102                         if test -f "$xxx"; then
1103                                 sh="$xxx";
1104                                 break
1105                         elif test -f "$xxx.exe"; then
1106                                 sh="$xxx";
1107                                 break
1108                         fi
1109                 done
1110         fi
1111         ;;
1112 esac
1113
1114 case "$sh" in
1115 '')     cat <<EOM >&2
1116 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1117
1118 Usually it's in /bin/sh.  How did you even get this far?
1119 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1120 we'll try to straighten this all out.
1121 EOM
1122         exit 1
1123         ;;
1124 esac
1125
1126 : see if sh knows # comments
1127 if `$sh -c '#' >/dev/null 2>&1`; then
1128         shsharp=true
1129         spitshell=cat
1130         xcat=/bin/cat
1131         test -f $xcat || xcat=/usr/bin/cat
1132         echo "#!$xcat" >sharp
1133         $eunicefix sharp
1134         chmod +x sharp
1135         ./sharp > today
1136         if test -s today; then
1137                 sharpbang='#!'
1138         else
1139                 echo "#! $xcat" > sharp
1140                 $eunicefix sharp
1141                 chmod +x sharp
1142                 ./sharp > today
1143                 if test -s today; then
1144                         sharpbang='#! '
1145                 else
1146                         sharpbang=': use '
1147                 fi
1148         fi
1149 else
1150         echo " "
1151         echo "Your $sh doesn't grok # comments--I will strip them later on."
1152         shsharp=false
1153         cd ..
1154         echo "exec grep -v '^[  ]*#'" >spitshell
1155         chmod +x spitshell
1156         $eunicefix spitshell
1157         spitshell=`pwd`/spitshell
1158         cd UU
1159         echo "I presume that if # doesn't work, #! won't work either!"
1160         sharpbang=': use '
1161 fi
1162 rm -f sharp today
1163
1164 : figure out how to guarantee sh startup
1165 case "$startsh" in
1166 '') startsh=${sharpbang}${sh} ;;
1167 *)
1168 esac
1169 cat >sharp <<EOSS
1170 $startsh
1171 set abc
1172 test "$?abc" != 1
1173 EOSS
1174
1175 chmod +x sharp
1176 $eunicefix sharp
1177 if ./sharp; then
1178         : echo "Yup, it does."
1179 else
1180         echo "Hmm... '$startsh' does not guarantee sh startup..."
1181         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1182 fi
1183 rm -f sharp
1184
1185
1186 : Save command line options in file UU/cmdline.opt for later use in
1187 : generating config.sh.
1188 cat > cmdline.opt <<EOSH
1189 # Configure command line arguments.
1190 config_arg0='$0'
1191 config_args='$*'
1192 config_argc=$#
1193 EOSH
1194 argn=1
1195 args_exp=''
1196 args_sep=''
1197 for arg in "$@"; do
1198         cat >>cmdline.opt <<EOSH
1199 config_arg$argn='$arg'
1200 EOSH
1201         # Extreme backslashitis: replace each ' by '"'"'
1202         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1203 $arg
1204 EOC
1205         arg_exp=`cat cmdl.opt`
1206         args_exp="$args_exp$args_sep'$arg_exp'"
1207         argn=`expr $argn + 1`
1208         args_sep=' '
1209 done
1210 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1211 # used by ./hints/os2.sh
1212 rm -f cmdl.opt
1213
1214 : produce awk script to parse command line options
1215 cat >options.awk <<'EOF'
1216 BEGIN {
1217         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1218
1219         len = length(optstr);
1220         for (i = 1; i <= len; i++) {
1221                 c = substr(optstr, i, 1);
1222                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1223                 if (a == ":") {
1224                         arg[c] = 1;
1225                         i++;
1226                 }
1227                 opt[c] = 1;
1228         }
1229 }
1230 {
1231         expect = 0;
1232         str = $0;
1233         if (substr(str, 1, 1) != "-") {
1234                 printf("'%s'\n", str);
1235                 next;
1236         }
1237         len = length($0);
1238         for (i = 2; i <= len; i++) {
1239                 c = substr(str, i, 1);
1240                 if (!opt[c]) {
1241                         printf("-%s\n", substr(str, i));
1242                         next;
1243                 }
1244                 printf("-%s\n", c);
1245                 if (arg[c]) {
1246                         if (i < len)
1247                                 printf("'%s'\n", substr(str, i + 1));
1248                         else
1249                                 expect = 1;
1250                         next;
1251                 }
1252         }
1253 }
1254 END {
1255         if (expect)
1256                 print "?";
1257 }
1258 EOF
1259
1260 : process the command line options
1261 set X `for arg in "$@"; do echo "X$arg"; done |
1262         sed -e s/X// | awk -f options.awk`
1263 eval "set $*"
1264 shift
1265 rm -f options.awk
1266
1267 : set up default values
1268 fastread=''
1269 reuseval=false
1270 config_sh=''
1271 alldone=''
1272 error=''
1273 silent=''
1274 extractsh=''
1275 override=''
1276 knowitall=''
1277 rm -f optdef.sh posthint.sh
1278 cat >optdef.sh <<EOS
1279 $startsh
1280 EOS
1281
1282
1283 : option parsing
1284 while test $# -gt 0; do
1285         case "$1" in
1286         -d) shift; fastread=yes;;
1287         -e) shift; alldone=cont;;
1288         -f)
1289                 shift
1290                 cd ..
1291                 if test -r "$1"; then
1292                         config_sh="$1"
1293                 else
1294                         echo "$me: cannot read config file $1." >&2
1295                         error=true
1296                 fi
1297                 cd UU
1298                 shift;;
1299         -h) shift; error=true;;
1300         -r) shift; reuseval=true;;
1301         -s) shift; silent=true; realsilent=true;;
1302         -E) shift; alldone=exit;;
1303         -K) shift; knowitall=true;;
1304         -O) shift; override=true;;
1305         -S) shift; silent=true; extractsh=true;;
1306         -D)
1307                 shift
1308                 case "$1" in
1309                 *=)
1310                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1311                         echo "$me: ignoring -D $1" >&2
1312                         ;;
1313                 *=*) echo "$1" | \
1314                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1315                 *) echo "$1='define'" >> optdef.sh;;
1316                 esac
1317                 shift
1318                 ;;
1319         -U)
1320                 shift
1321                 case "$1" in
1322                 *=) echo "$1" >> optdef.sh;;
1323                 *=*)
1324                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1325                         echo "$me: ignoring -U $1" >&2
1326                         ;;
1327                 *) echo "$1='undef'" >> optdef.sh;;
1328                 esac
1329                 shift
1330                 ;;
1331         -A)
1332             shift
1333             xxx=''
1334             yyy="$1"
1335             zzz=''
1336             uuu=undef
1337             case "$yyy" in
1338             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1339                  case "$zzz" in
1340                  *:*) zzz='' ;;
1341                  *)   xxx=append
1342                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1343                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1344                  esac
1345                  ;;
1346             esac
1347             case "$xxx" in
1348             '')  case "$yyy" in
1349                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1350                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1351                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1352                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1353                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1354                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1355                  esac
1356                  ;;       
1357             esac
1358             case "$xxx" in
1359             append)
1360                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1361             clear)
1362                 echo "$yyy=''"                  >> posthint.sh ;;
1363             define)
1364                 case "$zzz" in
1365                 '') zzz=define ;;
1366                 esac
1367                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1368             eval)
1369                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1370             prepend)
1371                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1372             undef)
1373                 case "$zzz" in
1374                 '') zzz="$uuu" ;;
1375                 esac
1376                 echo "$yyy=$zzz"                >> posthint.sh ;;
1377             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1378             esac
1379             shift
1380             ;;
1381         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1382             exit 0;;
1383         --) break;;
1384         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1385         *) break;;
1386         esac
1387 done
1388
1389 case "$error" in
1390 true)
1391         cat >&2 <<EOM
1392 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1393                  [-U symbol] [-U symbol=] [-A command:symbol...]
1394   -d : use defaults for all answers.
1395   -e : go on without questioning past the production of config.sh.
1396   -f : specify an alternate default configuration file.
1397   -h : print this help message and exit (with an error status).
1398   -r : reuse C symbols value if possible (skips costly nm extraction).
1399   -s : silent mode, only echoes questions and essential information.
1400   -D : define symbol to have some value:
1401          -D symbol         symbol gets the value 'define'
1402          -D symbol=value   symbol gets the value 'value'
1403   -E : stop at the end of questions, after having produced config.sh.
1404   -K : do not use unless you know what you are doing.
1405   -O : let -D and -U override definitions from loaded configuration file.
1406   -S : perform variable substitutions on all .SH files (can mix with -f)
1407   -U : undefine symbol:
1408          -U symbol    symbol gets the value 'undef'
1409          -U symbol=   symbol gets completely empty
1410   -A : manipulate symbol after the platform specific hints have been applied:
1411          -A symbol=value                append " "value to symbol
1412          -A append:symbol=value         append value to symbol
1413          -A define:symbol=value         define symbol to have value
1414          -A clear:symbol                define symbol to be ''
1415          -A define:symbol               define symbol to be 'define'
1416          -A eval:symbol=value           define symbol to be eval of value
1417          -A prepend:symbol=value        prepend value to symbol
1418          -A undef:symbol                define symbol to be 'undef'
1419          -A undef:symbol=               define symbol to be ''
1420   -V : print version number and exit (with a zero status).
1421 EOM
1422         exit 1
1423         ;;
1424 esac
1425
1426 : Sanity checks
1427 case "$fastread$alldone" in
1428 yescont|yesexit) ;;
1429 *)
1430         case "$extractsh" in
1431         true) ;;
1432         *)
1433                 if test ! -t 0; then
1434                         echo "Say 'sh Configure', not 'sh <Configure'"
1435                         exit 1
1436                 fi
1437                 ;;
1438         esac
1439         ;;
1440 esac
1441
1442 exec 4>&1
1443 case "$silent" in
1444 true) exec 1>/dev/null;;
1445 esac
1446
1447 : run the defines and the undefines, if any, but leave the file out there...
1448 touch optdef.sh
1449 . ./optdef.sh
1450 : create the posthint manipulation script and leave the file out there...
1451 touch posthint.sh
1452
1453 : set package name
1454 package=perl5
1455 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1456 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1457 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1458 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1459 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1460 esac
1461
1462 : Some greps do not return status, grrr.
1463 echo "grimblepritz" >grimble
1464 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1465         contains=contains
1466 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1467         contains=grep
1468 else
1469         contains=contains
1470 fi
1471 rm -f grimble
1472 : the following should work in any shell
1473 case "$contains" in
1474 contains*)
1475         echo " "
1476         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1477         cat >contains <<'EOSS'
1478 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1479 EOSS
1480 chmod +x contains
1481 esac
1482
1483 : Find the path to the source tree
1484 case "$src" in
1485 '') case "$0" in
1486     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1487          case "$src" in
1488          /*)    ;;
1489          .)     ;;
1490          *)     src=`cd ../$src && pwd` ;;
1491          esac
1492          ;;
1493     *)   src='.';;
1494     esac;;
1495 esac
1496 case "$src" in
1497 '')     src=/
1498         rsrc=/
1499         ;;
1500 /*) rsrc="$src";;
1501 *) rsrc="../$src";;
1502 esac
1503 if test -f $rsrc/Configure && \
1504         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1505 then
1506    : found it, so we are ok.
1507 else
1508         rsrc=''
1509         for src in . .. ../.. ../../.. ../../../..; do
1510                 if test -f ../$src/Configure && \
1511                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1512                 then
1513                         rsrc=../$src
1514                         break
1515                 fi
1516         done
1517 fi
1518 case "$rsrc" in
1519 '')
1520         cat <<EOM >&4
1521
1522 Sorry, I can't seem to locate the source dir for $package.  Please start
1523 Configure with an explicit path -- i.e. /some/path/Configure.
1524
1525 EOM
1526         exit 1
1527         ;;
1528 ../.)   rsrc='..';;
1529 *)
1530         echo " "
1531         echo "Sources for $package found in \"$src\"." >&4
1532         ;;
1533 esac
1534
1535 : script used to extract .SH files with variable substitutions
1536 cat >extract <<'EOS'
1537 PERL_CONFIG_SH=true
1538 echo "Doing variable substitutions on .SH files..."
1539 if test -f MANIFEST; then
1540         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1541 else
1542         echo "(Looking for .SH files under the source directory.)"
1543         set x `(cd $src; find . -name "*.SH" -print)`
1544 fi
1545 shift
1546 case $# in
1547 0) set x `(cd $src; echo *.SH)`; shift;;
1548 esac
1549 if test ! -f $src/$1; then
1550         shift
1551 fi
1552 mkdir_p='
1553 name=$1;
1554 create="";
1555 while test $name; do
1556         if test ! -d "$name"; then
1557                 create="$name $create";
1558                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1559                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1560         else
1561                 name="";
1562         fi;
1563 done;
1564 for file in $create; do
1565         mkdir $file;
1566 done
1567 '
1568 for file in $*; do
1569         case "$src" in
1570         ".")
1571                 case "$file" in
1572                 */*)
1573                         dir=`expr X$file : 'X\(.*\)/'`
1574                         file=`expr X$file : 'X.*/\(.*\)'`
1575                         (cd $dir && . ./$file)
1576                         ;;
1577                 *)
1578                         . ./$file
1579                         ;;
1580                 esac
1581                 ;;
1582         *)
1583                 case "$file" in
1584                 */*)
1585                         dir=`expr X$file : 'X\(.*\)/'`
1586                         file=`expr X$file : 'X.*/\(.*\)'`
1587                         (set x $dir; shift; eval $mkdir_p)
1588                         sh <$src/$dir/$file
1589                         ;;
1590                 *)
1591                         sh <$src/$file
1592                         ;;
1593                 esac
1594                 ;;
1595         esac
1596 done
1597 if test -f $src/config_h.SH; then
1598         if test ! -f config.h; then
1599         : oops, they left it out of MANIFEST, probably, so do it anyway.
1600         . $src/config_h.SH
1601         fi
1602 fi
1603 EOS
1604
1605 : extract files and exit if asked to do so
1606 case "$extractsh" in
1607 true)
1608         case "$realsilent" in
1609         true) ;;
1610         *) exec 1>&4;;
1611         esac
1612         case "$config_sh" in
1613         '') config_sh='config.sh';;
1614         esac
1615         echo " "
1616         echo "Fetching answers from $config_sh..."
1617         cd ..
1618         . $config_sh
1619         test "$override" && . ./optdef.sh
1620         echo " "
1621         . UU/extract
1622         rm -rf UU
1623         echo "Extraction done."
1624         exit 0
1625         ;;
1626 esac
1627
1628 : Eunice requires " " instead of "", can you believe it
1629 echo " "
1630 : Here we go...
1631 echo "Beginning of configuration questions for $package."
1632
1633 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1634
1635 : first determine how to suppress newline on echo command
1636 echo " "
1637 echo "Checking echo to see how to suppress newlines..."
1638 (echo "hi there\c" ; echo " ") >.echotmp
1639 if $contains c .echotmp >/dev/null 2>&1 ; then
1640         echo "...using -n."
1641         n='-n'
1642         c=''
1643 else
1644         cat <<'EOM'
1645 ...using \c
1646 EOM
1647         n=''
1648         c='\c'
1649 fi
1650 echo $n "The star should be here-->$c"
1651 echo '*'
1652 rm -f .echotmp
1653
1654 : Now test for existence of everything in MANIFEST
1655 echo " "
1656 if test -f $rsrc/MANIFEST; then
1657         echo "First let's make sure your kit is complete.  Checking..." >&4
1658         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1659         rm -f missing
1660         tmppwd=`pwd`
1661         for filelist in x??; do
1662                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1663         done
1664         if test -s missing; then
1665                 cat missing >&4
1666                 cat >&4 <<'EOM'
1667
1668 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1669
1670 You have the option of continuing the configuration process, despite the
1671 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1672 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1673 and contact the author (perlbug@perl.org).
1674
1675 EOM
1676                 echo $n "Continue? [n] $c" >&4
1677                 read ans
1678                 case "$ans" in
1679                 y*)
1680                         echo "Continuing..." >&4
1681                         rm -f missing
1682                         ;;
1683                 *)
1684                         echo "ABORTING..." >&4
1685                         kill $$
1686                         ;;
1687                 esac
1688         else
1689                 echo "Looks good..."
1690         fi
1691 else
1692         echo "There is no MANIFEST file.  I hope your kit is complete !"
1693 fi
1694 rm -f missing x??
1695
1696 echo " "
1697 : Find the appropriate value for a newline for tr
1698 if test -n "$DJGPP"; then
1699        trnl='\012'
1700 fi
1701 if test X"$trnl" = X; then
1702         case "`echo foo|tr '\n' x 2>/dev/null`" in
1703         foox) trnl='\n' ;;
1704         esac
1705 fi
1706 if test X"$trnl" = X; then
1707         case "`echo foo|tr '\012' x 2>/dev/null`" in
1708         foox) trnl='\012' ;;
1709         esac
1710 fi
1711 if test X"$trnl" = X; then
1712         cat <<EOM >&2
1713
1714 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1715
1716 EOM
1717         exit 1
1718 fi
1719
1720 : compute the number of columns on the terminal for proper question formatting
1721 case "$COLUMNS" in
1722 '') COLUMNS='80';;
1723 esac
1724
1725 : set up the echo used in my read
1726 myecho="case \"\$xxxm\" in
1727 '') echo $n \"\$rp $c\" >&4;;
1728 *) case \"\$rp\" in
1729         '') echo $n \"[\$xxxm] $c\";;
1730         *)
1731                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1732                         echo \"\$rp\" >&4
1733                         echo $n \"[\$xxxm] $c\" >&4
1734                 else
1735                         echo $n \"\$rp [\$xxxm] $c\" >&4
1736                 fi
1737                 ;;
1738         esac;;
1739 esac"
1740
1741 : now set up to do reads with possible shell escape and default assignment
1742 cat <<EOSC >myread
1743 $startsh
1744 xxxm=\$dflt
1745 $myecho
1746 ans='!'
1747 case "\$fastread" in
1748 yes) case "\$dflt" in
1749         '') ;;
1750         *) ans='';
1751                 case "\$silent-\$rp" in
1752                 true-) ;;
1753                 *) echo " " >&4;;
1754                 esac;;
1755         esac;;
1756 *) case "\$silent" in
1757         true) case "\$rp" in
1758                 '') ans='';;
1759                 esac;;
1760         esac;;
1761 esac
1762 while expr "X\$ans" : "X!" >/dev/null; do
1763         read answ
1764         set x \$xxxm
1765         shift
1766         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1767         case  "\$answ" in
1768         "!")
1769                 sh 1>&4
1770                 echo " "
1771                 $myecho
1772                 ;;
1773         !*)
1774                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1775                 shift
1776                 sh 1>&4 -c "\$*"
1777                 echo " "
1778                 $myecho
1779                 ;;
1780         "\$ans")
1781                 case "\$ans" in
1782                 \\&*)
1783                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1784                         shift
1785                         case "\$1" in
1786                         -d)
1787                                 fastread=yes
1788                                 echo "(OK, I'll run with -d after this question.)" >&4
1789                                 ;;
1790                         -*)
1791                                 echo "*** Sorry, \$1 not supported yet." >&4
1792                                 ;;
1793                         esac
1794                         $myecho
1795                         ans=!
1796                         ;;
1797                 esac;;
1798         *)
1799                 case "\$aok" in
1800                 y)
1801                         echo "*** Substitution done -- please confirm."
1802                         xxxm="\$ans"
1803                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1804                         xxxm="\$ans"
1805                         ans=!
1806                         ;;
1807                 *)
1808                         echo "*** Error -- try again."
1809                         ans=!
1810                         ;;
1811                 esac
1812                 $myecho
1813                 ;;
1814         esac
1815         case "\$ans\$xxxm\$nostick" in
1816         '')
1817                 ans=!
1818                 $myecho
1819                 ;;
1820         esac
1821 done
1822 case "\$ans" in
1823 '') ans="\$xxxm";;
1824 esac
1825 EOSC
1826
1827 : create .config dir to save info across Configure sessions
1828 test -d ../.config || mkdir ../.config
1829 cat >../.config/README <<EOF
1830 This directory created by Configure to save information that should
1831 persist across sessions for $package.
1832
1833 You may safely delete it if you wish.
1834 EOF
1835
1836 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1837 case "$usedevel" in
1838 $define|true|[yY]*) ;;
1839 *) case "$xversion" in
1840    *[13579])
1841         cat >&4 <<EOH
1842 *** WHOA THERE!!! ***
1843
1844     This is an UNSTABLE DEVELOPMENT release.
1845     The version of this $package distribution is $xversion, that is, odd,
1846     (as opposed to even) and that signifies a development release.
1847     If you want a maintenance release, you want an even-numbered version.
1848
1849     Do ***NOT*** install this into production use.
1850     Data corruption and crashes are possible.
1851
1852     It is most seriously suggested that you do not continue any further
1853     unless you want to help in developing and debugging Perl.
1854
1855     If you *still* want to build perl, you can answer 'y' now,
1856     or pass -Dusedevel to Configure.
1857
1858 EOH
1859         rp='Do you really want to continue?'
1860         dflt='n'
1861         . ./myread
1862         case "$ans" in
1863         [yY]) echo >&4 "Okay, continuing."
1864               usedevel="$define" ;;
1865         *) echo >&4 "Okay, bye."
1866            exit 1
1867            ;;
1868         esac
1869         ;;
1870     esac
1871     ;;
1872 esac
1873 case "$usedevel" in
1874 $define|true|[yY]*)
1875         case "$versiononly" in
1876         '') versiononly="$define" ;;
1877         esac
1878         case "$installusrbinperl" in
1879         '') installusrbinperl="$undef" ;;
1880         esac
1881         ;;
1882 esac
1883
1884 : general instructions
1885 needman=true
1886 firsttime=true
1887 user=`(logname) 2>/dev/null`
1888 case "$user" in
1889 '') user=`whoami 2>&1`;;
1890 esac
1891 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1892         firsttime=false
1893         echo " "
1894         rp='Would you like to see the instructions?'
1895         dflt=n
1896         . ./myread
1897         case "$ans" in
1898         [yY]*) ;;
1899         *) needman=false;;
1900         esac
1901 fi
1902 if $needman; then
1903         cat <<EOH
1904
1905 This installation shell script will examine your system and ask you questions
1906 to determine how the perl5 package should be installed. If you get
1907 stuck on a question, you may use a ! shell escape to start a subshell or
1908 execute a command.  Many of the questions will have default answers in square
1909 brackets; typing carriage return will give you the default.
1910
1911 On some of the questions which ask for file or directory names you are allowed
1912 to use the ~name construct to specify the login directory belonging to "name",
1913 even if you don't have a shell which knows about that.  Questions where this is
1914 allowed will be marked "(~name ok)".
1915
1916 EOH
1917         rp=''
1918         dflt='Type carriage return to continue'
1919         . ./myread
1920         cat <<'EOH'
1921
1922 The prompter used in this script allows you to use shell variables and
1923 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1924 in the default answer, as if the default line was a set of arguments given to a
1925 script shell.  This means you may also use $* to repeat the whole default line,
1926 so you do not have to re-type everything to add something to the default.
1927
1928 Everytime there is a substitution, you will have to confirm.  If there is an
1929 error (e.g. an unmatched backtick), the default answer will remain unchanged
1930 and you will be prompted again.
1931
1932 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1933 the questions and use the computed defaults (or the previous answers if there
1934 was already a config.sh file). Type 'Configure -h' for a list of options.
1935 You may also start interactively and then answer '& -d' at any prompt to turn
1936 on the non-interactive behaviour for the remainder of the execution.
1937
1938 EOH
1939         . ./myread
1940         cat <<EOH
1941
1942 Much effort has been expended to ensure that this shell script will run on any
1943 Unix system.  If despite that it blows up on yours, your best bet is to edit
1944 Configure and run it again.  If you can't run Configure for some reason,
1945 you'll have to generate a config.sh file by hand.  Whatever problems you
1946 have, let me (perlbug@perl.org) know how I blew it.
1947
1948 This installation script affects things in two ways:
1949
1950 1) it may do direct variable substitutions on some of the files included
1951    in this kit.
1952 2) it builds a config.h file for inclusion in C programs.  You may edit
1953    any of these files as the need arises after running this script.
1954
1955 If you make a mistake on a question, there is no easy way to back up to it
1956 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1957 files.  Configure will offer to let you do this before it runs the SH files.
1958
1959 EOH
1960         dflt='Type carriage return to continue'
1961         . ./myread
1962         case "$firsttime" in
1963         true) echo $user >>../.config/instruct;;
1964         esac
1965 fi
1966
1967 : find out where common programs are
1968 echo " "
1969 echo "Locating common programs..." >&4
1970 cat <<EOSC >loc
1971 $startsh
1972 case \$# in
1973 0) exit 1;;
1974 esac
1975 thing=\$1
1976 shift
1977 dflt=\$1
1978 shift
1979 for dir in \$*; do
1980         case "\$thing" in
1981         .)
1982         if test -d \$dir/\$thing; then
1983                 echo \$dir
1984                 exit 0
1985         fi
1986         ;;
1987         *)
1988         for thisthing in \$dir/\$thing; do
1989                 : just loop through to pick last item
1990         done
1991         if test -f \$thisthing; then
1992                 echo \$thisthing
1993                 exit 0
1994         elif test -f \$dir/\$thing.exe; then
1995                 if test -n "$DJGPP"; then
1996                         echo \$dir/\$thing.exe
1997                 else
1998                         : on Eunice apparently
1999                         echo \$dir/\$thing
2000                 fi
2001                 exit 0
2002         fi
2003         ;;
2004         esac
2005 done
2006 echo \$dflt
2007 exit 1
2008 EOSC
2009 chmod +x loc
2010 $eunicefix loc
2011 loclist="
2012 awk
2013 cat
2014 chmod
2015 comm
2016 cp
2017 echo
2018 expr
2019 grep
2020 ls
2021 make
2022 mkdir
2023 rm
2024 sed
2025 sort
2026 touch
2027 tr
2028 uniq
2029 "
2030 trylist="
2031 Mcc
2032 ar
2033 bison
2034 byacc
2035 cpp
2036 csh
2037 date
2038 egrep
2039 gzip
2040 less
2041 ln
2042 more
2043 nm
2044 nroff
2045 pg
2046 test
2047 uname
2048 zip
2049 "
2050 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2051 pth="$pth /lib /usr/lib"
2052 for file in $loclist; do
2053         eval xxx=\$$file
2054         case "$xxx" in
2055         /*|?:[\\/]*)
2056                 if test -f "$xxx"; then
2057                         : ok
2058                 else
2059                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2060                         xxx=`./loc $file $file $pth`
2061                 fi
2062                 ;;
2063         '') xxx=`./loc $file $file $pth`;;
2064         *) xxx=`./loc $xxx $xxx $pth`;;
2065         esac
2066         eval $file=$xxx
2067         eval _$file=$xxx
2068         case "$xxx" in
2069         /*)
2070                 echo $file is in $xxx.
2071                 ;;
2072         ?:[\\/]*)
2073                 echo $file is in $xxx.
2074                 ;;
2075         *)
2076                 echo "I don't know where '$file' is, and my life depends on it." >&4
2077                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2078                 exit 1
2079                 ;;
2080         esac
2081 done
2082 echo " "
2083 echo "Don't worry if any of the following aren't found..."
2084 say=offhand
2085 for file in $trylist; do
2086         eval xxx=\$$file
2087         case "$xxx" in
2088         /*|?:[\\/]*)
2089                 if test -f "$xxx"; then
2090                         : ok
2091                 else
2092                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2093                         xxx=`./loc $file $file $pth`
2094                 fi
2095                 ;;
2096         '') xxx=`./loc $file $file $pth`;;
2097         *) xxx=`./loc $xxx $xxx $pth`;;
2098         esac
2099         eval $file=$xxx
2100         eval _$file=$xxx
2101         case "$xxx" in
2102         /*)
2103                 echo $file is in $xxx.
2104                 ;;
2105         ?:[\\/]*)
2106                 echo $file is in $xxx.
2107                 ;;
2108         *)
2109                 echo "I don't see $file out there, $say."
2110                 say=either
2111                 ;;
2112         esac
2113 done
2114 case "$egrep" in
2115 egrep)
2116         echo "Substituting grep for egrep."
2117         egrep=$grep
2118         ;;
2119 esac
2120 case "$ln" in
2121 ln)
2122         echo "Substituting cp for ln."
2123         ln=$cp
2124         ;;
2125 esac
2126 case "$test" in
2127 test)
2128         echo "Hopefully test is built into your sh."
2129         ;;
2130 *)
2131         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2132                 echo "Using the test built into your sh."
2133                 test=test
2134                 _test=test
2135         fi
2136         ;;
2137 esac
2138 case "$echo" in
2139 echo)
2140         echo "Hopefully echo is built into your sh."
2141         ;;
2142 '') ;;
2143 *)
2144         echo " "
2145 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2146         $echo $n "hi there$c" >foo1
2147         echo $n "hi there$c" >foo2
2148         if cmp foo1 foo2 >/dev/null 2>&1; then
2149                 echo "They are compatible.  In fact, they may be identical."
2150         else
2151                 case "$n" in
2152                 '-n') n='' c='\c';;
2153                 *) n='-n' c='';;
2154                 esac
2155                 cat <<FOO
2156 They are not compatible!  You are probably running ksh on a non-USG system.
2157 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2158 have echo built in and we may have to run some Bourne shell scripts.  That
2159 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2160
2161 FOO
2162                 $echo $n "The star should be here-->$c"
2163                 $echo "*"
2164         fi
2165         $rm -f foo1 foo2
2166         ;;
2167 esac
2168
2169 cat <<EOS >checkcc
2170 $startsh
2171 EOS
2172 cat <<'EOSC' >>checkcc
2173 case "$cc" in
2174 '') ;;
2175 *)  $rm -f try try.*
2176     $cat >try.c <<EOM
2177 int main(int argc, char *argv[]) {
2178   return 0;
2179 }
2180 EOM
2181     if $cc -o try $ccflags $ldflags try.c; then
2182        :
2183     else
2184         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2185         despair=yes
2186         trygcc=yes
2187         case "$cc" in
2188         *gcc*) trygcc=no ;;
2189         esac
2190         case "`$cc -v -c try.c 2>&1`" in
2191         *gcc*) trygcc=no ;;
2192         esac
2193         if $test X"$trygcc" = Xyes; then
2194             if gcc -o try -c try.c; then
2195                 echo " "
2196                 echo "You seem to have a working gcc, though." >&4
2197                 rp="Would you like to use it?"
2198                 dflt=y
2199                 if $test -f myread; then
2200                     . ./myread
2201                 else
2202                     if $test -f UU/myread; then
2203                         . ./UU/myread
2204                     else
2205                         echo "Cannot find myread, sorry.  Aborting." >&2
2206                         exit 1
2207                     fi
2208                 fi  
2209                 case "$ans" in
2210                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2211                 esac
2212             fi
2213         fi
2214         if $test X"$despair" = Xyes; then
2215             $cat >&4 <<EOM
2216 You need to find a working C compiler.
2217 Either (purchase and) install the C compiler supplied by your OS vendor,
2218 or for a free C compiler try http://gcc.gnu.org/
2219 I cannot continue any further, aborting.
2220 EOM
2221             exit 1
2222         fi
2223     fi
2224     $rm -f try try.*
2225     ;;
2226 esac
2227 EOSC
2228
2229 : determine whether symbolic links are supported
2230 echo " "
2231 $touch blurfl
2232 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2233         echo "Symbolic links are supported." >&4
2234         lns="$ln -s"
2235 else
2236         echo "Symbolic links are NOT supported." >&4
2237         lns="$ln"
2238 fi
2239 $rm -f blurfl sym
2240
2241 : determine whether symbolic links are supported
2242 echo " "
2243 case "$lns" in
2244 *"ln -s")
2245         echo "Checking how to test for symbolic links..." >&4
2246         $lns blurfl sym
2247         if $test "X$issymlink" = X; then
2248                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2249                 if test $? = 0; then
2250                         issymlink="test -h"
2251                 fi              
2252         fi
2253         if $test "X$issymlink" = X; then
2254                 if  $test -h >/dev/null 2>&1; then
2255                         issymlink="$test -h"
2256                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2257                 fi              
2258         fi
2259         if $test "X$issymlink" = X; then
2260                 if $test -L sym 2>/dev/null; then
2261                         issymlink="$test -L"
2262                 fi
2263         fi
2264         if $test "X$issymlink" != X; then
2265                 echo "You can test for symbolic links with '$issymlink'." >&4
2266         else
2267                 echo "I do not know how you can test for symbolic links." >&4
2268         fi
2269         $rm -f blurfl sym
2270         ;;
2271 *)      echo "No symbolic links, so not testing for their testing..." >&4
2272         ;;
2273 esac
2274 echo " "
2275
2276
2277 case "$mksymlinks" in
2278 $define|true|[yY]*)
2279         case "$src" in
2280         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2281                 exit 1
2282                 ;;
2283         *)      case "$lns:$issymlink" in
2284                 *"ln -s:"*"test -"?)
2285                         echo "Creating the symbolic links..." >&4
2286                         echo "(First creating the subdirectories...)" >&4
2287                         cd ..
2288                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2289                                 read directory
2290                                 test -z "$directory" && break
2291                                 mkdir -p $directory
2292                         done
2293                         # Sanity check 1.
2294                         if test ! -d t/base; then
2295                                 echo "Failed to create the subdirectories.  Aborting." >&4
2296                                 exit 1
2297                         fi
2298                         echo "(Then creating the symlinks...)" >&4
2299                         awk '{print $1}' $src/MANIFEST | while true; do
2300                                 read filename
2301                                 test -z "$filename" && break
2302                                 if test -f $filename; then
2303                                         if $issymlink $filename; then
2304                                                 rm -f $filename
2305                                         fi
2306                                 fi
2307                                 if test -f $filename; then
2308                                         echo "$filename already exists, not symlinking."
2309                                 else
2310                                         ln -s $src/$filename $filename
2311                                 fi
2312                         done
2313                         # Sanity check 2.
2314                         if test ! -f t/base/commonsense.t; then
2315                                 echo "Failed to create the symlinks.  Aborting." >&4
2316                                 exit 1
2317                         fi
2318                         cd UU
2319                         ;;
2320                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2321                         ;;
2322                 esac
2323                 ;;
2324         esac
2325         ;;
2326 esac
2327
2328
2329 case "$usecrosscompile" in
2330 $define|true|[yY]*)
2331         $echo "Cross-compiling..."
2332         croak=''
2333         case "$cc" in
2334         *-*-gcc) # A cross-compiling gcc, probably.
2335             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2336             ar=$targetarch-ar
2337             # leave out ld, choosing it is more complex
2338             nm=$targetarch-nm
2339             ranlib=$targetarch-ranlib
2340             $echo 'extern int foo;' > try.c
2341             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2342             shift
2343             if $test $# -gt 0; then
2344                 incpth="$incpth $*"
2345                 incpth="`$echo $incpth|$sed 's/^ //'`"
2346                 echo "Guessing incpth '$incpth'." >&4
2347                 for i in $*; do
2348                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2349                     if $test -d $j; then
2350                         libpth="$libpth $j"
2351                     fi
2352                 done   
2353                 libpth="`$echo $libpth|$sed 's/^ //'`"
2354                 echo "Guessing libpth '$libpth'." >&4
2355             fi
2356             $rm -f try.c
2357             ;;
2358         esac
2359         case "$targetarch" in
2360         '') echo "Targetarch not defined." >&4; croak=y ;;
2361         *)  echo "Using targetarch $targetarch." >&4 ;;
2362         esac
2363         case "$incpth" in
2364         '') echo "Incpth not defined." >&4; croak=y ;;
2365         *)  echo "Using incpth '$incpth'." >&4 ;;
2366         esac
2367         case "$libpth" in
2368         '') echo "Libpth not defined." >&4; croak=y ;;
2369         *)  echo "Using libpth '$libpth'." >&4 ;;
2370         esac
2371         case "$usrinc" in
2372         '') for i in $incpth; do
2373                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2374                     usrinc=$i
2375                     echo "Guessing usrinc $usrinc." >&4
2376                     break
2377                 fi
2378             done
2379             case "$usrinc" in
2380             '') echo "Usrinc not defined." >&4; croak=y ;;
2381             esac
2382             ;;
2383         *)  echo "Using usrinc $usrinc." >&4 ;;
2384         esac
2385         case "$targethost" in
2386         '') echo "Targethost not defined." >&4; croak=y ;;
2387         *)  echo "Using targethost $targethost." >&4
2388         esac
2389         locincpth=' '
2390         loclibpth=' '
2391         case "$croak" in
2392         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2393         esac
2394         case "$src" in
2395         /*) run=$src/Cross/run
2396             targetmkdir=$src/Cross/mkdir
2397             to=$src/Cross/to
2398             from=$src/Cross/from
2399             ;;
2400         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2401             run=$pwd/Cross/run
2402             targetmkdir=$pwd/Cross/mkdir
2403             to=$pwd/Cross/to
2404             from=$pwd/Cross/from
2405             ;;
2406         esac
2407         case "$targetrun" in
2408         '') targetrun=ssh ;;
2409         esac
2410         case "$targetto" in
2411         '') targetto=scp ;;
2412         esac
2413         case "$targetfrom" in
2414         '') targetfrom=scp ;;
2415         esac
2416         run=$run-$targetrun
2417         to=$to-$targetto
2418         from=$from-$targetfrom
2419         case "$targetdir" in
2420         '')  targetdir=/tmp
2421              echo "Guessing targetdir $targetdir." >&4
2422              ;;
2423         esac
2424         case "$targetuser" in
2425         '')  targetuser=root
2426              echo "Guessing targetuser $targetuser." >&4
2427              ;;
2428         esac
2429         case "$targetfrom" in
2430         scp)    q=-q ;;
2431         *)      q='' ;;
2432         esac
2433         case "$targetrun" in
2434         ssh|rsh)
2435             cat >$run <<EOF
2436 #!/bin/sh
2437 case "\$1" in
2438 -cwd)
2439   shift
2440   cwd=\$1
2441   shift
2442   ;;
2443 esac
2444 case "\$cwd" in
2445 '') cwd=$targetdir ;;
2446 esac
2447 exe=\$1
2448 shift
2449 if $test ! -f \$exe.xok; then
2450   $to \$exe
2451   $touch \$exe.xok
2452 fi
2453 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2454 EOF
2455             ;;
2456         *)  echo "Unknown targetrun '$targetrun'" >&4
2457             exit 1
2458             ;;
2459         esac
2460         case "$targetmkdir" in
2461         */Cross/mkdir)
2462             cat >$targetmkdir <<EOF
2463 #!/bin/sh
2464 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2465 EOF
2466             $chmod a+rx $targetmkdir
2467             ;;
2468         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2469             exit 1
2470             ;;
2471         esac
2472         case "$targetto" in
2473         scp|rcp)
2474             cat >$to <<EOF
2475 #!/bin/sh
2476 for f in \$@
2477 do
2478   case "\$f" in
2479   /*)
2480     $targetmkdir \`dirname \$f\`
2481     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2482     ;;
2483   *)
2484     $targetmkdir $targetdir/\`dirname \$f\`
2485     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2486     ;;
2487   esac
2488 done
2489 exit 0
2490 EOF
2491             ;;
2492         cp) cat >$to <<EOF
2493 #!/bin/sh
2494 for f in \$@
2495 do
2496   case "\$f" in
2497   /*)
2498     $mkdir -p $targetdir/\`dirname \$f\`
2499     $cp \$f $targetdir/\$f || exit 1
2500     ;;
2501   *)
2502     $targetmkdir $targetdir/\`dirname \$f\`
2503     $cp \$f $targetdir/\$f || exit 1
2504     ;;
2505   esac
2506 done
2507 exit 0
2508 EOF
2509             ;;
2510         *)  echo "Unknown targetto '$targetto'" >&4
2511             exit 1
2512             ;;
2513         esac
2514         case "$targetfrom" in
2515         scp|rcp)
2516           cat >$from <<EOF
2517 #!/bin/sh
2518 for f in \$@
2519 do
2520   $rm -f \$f
2521   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2522 done
2523 exit 0
2524 EOF
2525             ;;
2526         cp) cat >$from <<EOF
2527 #!/bin/sh
2528 for f in \$@
2529 do
2530   $rm -f \$f
2531   cp $targetdir/\$f . || exit 1
2532 done
2533 exit 0
2534 EOF
2535             ;;
2536         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2537             exit 1
2538             ;;
2539         esac
2540         if $test ! -f $run; then
2541             echo "Target 'run' script '$run' not found." >&4
2542         else
2543             $chmod a+rx $run
2544         fi
2545         if $test ! -f $to; then
2546             echo "Target 'to' script '$to' not found." >&4
2547         else
2548             $chmod a+rx $to
2549         fi
2550         if $test ! -f $from; then
2551             echo "Target 'from' script '$from' not found." >&4
2552         else
2553             $chmod a+rx $from
2554         fi
2555         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2556             exit 1
2557         fi
2558         cat >&4 <<EOF
2559 Using '$run' for remote execution,
2560 and '$from' and '$to'
2561 for remote file transfer.
2562 EOF
2563         ;;
2564 *)      run=''
2565         to=:
2566         from=:
2567         usecrosscompile='undef'
2568         targetarch=''
2569         ;;
2570 esac
2571
2572 : see whether [:lower:] and [:upper:] are supported character classes
2573 echo " "
2574 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2575 ABYZ)
2576         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2577         up='[:upper:]'
2578         low='[:lower:]'
2579         ;;
2580 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2581         # (0xc9 and 0xd1), therefore that is a nice testing point.
2582         if test "X$up" = X -o "X$low" = X; then
2583             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2584             ij) up='[A-Z]'
2585                 low='[a-z]'
2586                 ;;
2587             esac
2588         fi
2589         if test "X$up" = X -o "X$low" = X; then
2590             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2591             ij) up='A-Z'
2592                 low='a-z'
2593                 ;;
2594             esac
2595         fi
2596         if test "X$up" = X -o "X$low" = X; then
2597             case "`echo IJ | od -x 2>/dev/null`" in
2598             *C9D1*|*c9d1*)
2599                 echo "Hey, this might be EBCDIC." >&4
2600                 if test "X$up" = X -o "X$low" = X; then
2601                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2602                     ij) up='[A-IJ-RS-Z]'
2603                         low='[a-ij-rs-z]'
2604                         ;;
2605                     esac
2606                 fi
2607                 if test "X$up" = X -o "X$low" = X; then
2608                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2609                     ij) up='A-IJ-RS-Z'
2610                         low='a-ij-rs-z'
2611                         ;;
2612                     esac
2613                 fi
2614                 ;;
2615             esac
2616         fi
2617 esac
2618 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2619 ij)
2620     echo "Using $up and $low to convert case." >&4
2621     ;;
2622 *)
2623     echo "I don't know how to translate letters from upper to lower case." >&4
2624     echo "Your tr is not acting any way I know of." >&4
2625     exit 1
2626     ;;
2627 esac
2628 : set up the translation script tr, must be called with ./tr of course
2629 cat >tr <<EOSC
2630 $startsh
2631 case "\$1\$2" in
2632 '[A-Z][a-z]') exec $tr '$up' '$low';;
2633 '[a-z][A-Z]') exec $tr '$low' '$up';;
2634 esac
2635 exec $tr "\$@"
2636 EOSC
2637 chmod +x tr
2638 $eunicefix tr
2639
2640 : Try to determine whether config.sh was made on this system
2641 case "$config_sh" in
2642 '')
2643 myuname=`$uname -a 2>/dev/null`
2644 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2645 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2646 # because the A-Z/a-z are not consecutive.
2647 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2648         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2649 newmyuname="$myuname"
2650 dflt=n
2651 case "$knowitall" in
2652 '')
2653         if test -f ../config.sh; then
2654                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2655                         eval "`grep myuname= ../config.sh`"
2656                 fi
2657                 if test "X$myuname" = "X$newmyuname"; then
2658                         dflt=y
2659                 fi
2660         fi
2661         ;;
2662 *) dflt=y;;
2663 esac
2664
2665 : Get old answers from old config file if Configure was run on the
2666 : same system, otherwise use the hints.
2667 hint=default
2668 cd ..
2669 if test -f config.sh; then
2670         echo " "
2671         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2672         . UU/myread
2673         case "$ans" in
2674         n*|N*) echo "OK, I'll ignore it."
2675                 mv config.sh config.sh.old
2676                 myuname="$newmyuname"
2677                 ;;
2678         *)  echo "Fetching default answers from your old config.sh file..." >&4
2679                 tmp_n="$n"
2680                 tmp_c="$c"
2681                 tmp_sh="$sh"
2682                 . ./config.sh
2683                 cp config.sh UU
2684                 n="$tmp_n"
2685                 c="$tmp_c"
2686                 : Older versions did not always set $sh.  Catch re-use of such
2687                 : an old config.sh.
2688                 case "$sh" in
2689                 '') sh="$tmp_sh" ;;
2690                 esac
2691                 hint=previous
2692                 ;;
2693         esac
2694 fi
2695 . ./UU/checkcc
2696 if test ! -f config.sh; then
2697         $cat <<EOM
2698
2699 First time through, eh?  I have some defaults handy for some systems
2700 that need some extra help getting the Configure answers right:
2701
2702 EOM
2703         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2704         dflt=''
2705         : Half the following guesses are probably wrong... If you have better
2706         : tests or hints, please send them to perlbug@perl.org
2707         : The metaconfig authors would also appreciate a copy...
2708         $test -f /irix && osname=irix
2709         $test -f /xenix && osname=sco_xenix
2710         $test -f /dynix && osname=dynix
2711         $test -f /dnix && osname=dnix
2712         $test -f /lynx.os && osname=lynxos
2713         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2714         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2715         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2716         $test -f /bin/mips && /bin/mips && osname=mips
2717         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2718                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2719         $test -d /usr/apollo/bin && osname=apollo
2720         $test -f /etc/saf/_sactab && osname=svr4
2721         $test -d /usr/include/minix && osname=minix
2722         if $test -d /MachTen -o -d /MachTen_Folder; then
2723                 osname=machten
2724                 if $test -x /sbin/version; then
2725                         osvers=`/sbin/version | $awk '{print $2}' |
2726                         $sed -e 's/[A-Za-z]$//'`
2727                 elif $test -x /usr/etc/version; then
2728                         osvers=`/usr/etc/version | $awk '{print $2}' |
2729                         $sed -e 's/[A-Za-z]$//'`
2730                 else
2731                         osvers="$2.$3"
2732                 fi
2733         fi
2734
2735         $test -f /sys/posix.dll &&
2736                 $test -f /usr/bin/what &&
2737                 set X `/usr/bin/what /sys/posix.dll` &&
2738                 $test "$3" = UWIN &&
2739                 osname=uwin &&
2740                 osvers="$5"
2741
2742         if $test -f $uname; then
2743                 set X $myuname
2744                 shift
2745
2746                 case "$5" in
2747                 fps*) osname=fps ;;
2748                 mips*)
2749                         case "$4" in
2750                         umips) osname=umips ;;
2751                         *) osname=mips ;;
2752                         esac;;
2753                 [23]100) osname=mips ;;
2754                 next*) osname=next ;;
2755                 i386*)
2756                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2757                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2758                                 osname='sco'
2759                                 osvers=$tmp
2760                         elif $test -f /etc/kconfig; then
2761                                 osname=isc
2762                                 if test "$lns" = "$ln -s"; then
2763                                         osvers=4
2764                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2765                                         osvers=3
2766                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2767                                         osvers=2
2768                                 fi
2769                         fi
2770                         tmp=''
2771                         ;;
2772                 pc*)
2773                         if test -n "$DJGPP"; then
2774                                 osname=dos
2775                                 osvers=djgpp
2776                         fi
2777                         ;;
2778                 esac
2779
2780                 case "$1" in
2781                 aix) osname=aix
2782                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2783                         case "$tmp" in
2784                         'not found') osvers="$4"."$3" ;;
2785                         '<3240'|'<>3240') osvers=3.2.0 ;;
2786                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2787                         '=3250'|'>3250') osvers=3.2.5 ;;
2788                         *) osvers=$tmp;;
2789                         esac
2790                         ;;
2791                 bsd386) osname=bsd386
2792                         osvers=`$uname -r`
2793                         ;;
2794                 cygwin*) osname=cygwin
2795                         osvers="$3"
2796                         ;;
2797                 *dc.osx) osname=dcosx
2798                         osvers="$3"
2799                         ;;
2800                 dnix) osname=dnix
2801                         osvers="$3"
2802                         ;;
2803                 domainos) osname=apollo
2804                         osvers="$3"
2805                         ;;
2806                 dgux) osname=dgux 
2807                         osvers="$3"
2808                         ;;
2809                 dynixptx*) osname=dynixptx
2810                         osvers=`echo "$4"|sed 's/^v//'`
2811                         ;;
2812                 freebsd) osname=freebsd 
2813                         osvers="$3" ;;
2814                 genix) osname=genix ;;
2815                 hp*) osname=hpux 
2816                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2817                         ;;
2818                 irix*) osname=irix
2819                         case "$3" in
2820                         4*) osvers=4 ;;
2821                         5*) osvers=5 ;;
2822                         *)      osvers="$3" ;;
2823                         esac
2824                         ;;
2825                 linux) osname=linux
2826                         case "$3" in
2827                         *)      osvers="$3" ;;
2828                         esac
2829                         ;;
2830                 MiNT) osname=mint
2831                         ;;
2832                 netbsd*) osname=netbsd
2833                         osvers="$3"
2834                         ;;
2835                 news-os) osvers="$3"
2836                         case "$3" in
2837                         4*) osname=newsos4 ;;
2838                         *) osname=newsos ;;
2839                         esac
2840                         ;;
2841                 next*) osname=next ;;
2842                 nonstop-ux) osname=nonstopux ;;
2843                 POSIX-BC | posix-bc ) osname=posix-bc
2844                         osvers="$3"
2845                         ;;
2846                 powerux | power_ux | powermax_os | powermaxos | \
2847                 powerunix | power_unix) osname=powerux
2848                         osvers="$3"
2849                         ;;
2850                 qnx) osname=qnx
2851                         osvers="$4"
2852                         ;;
2853                 solaris) osname=solaris
2854                         case "$3" in
2855                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2856                         *)      osvers="$3" ;;
2857                         esac
2858                         ;;
2859                 sunos) osname=sunos
2860                         case "$3" in
2861                         5*) osname=solaris
2862                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2863                         *)      osvers="$3" ;;
2864                         esac
2865                         ;;
2866                 titanos) osname=titanos
2867                         case "$3" in
2868                         1*) osvers=1 ;;
2869                         2*) osvers=2 ;;
2870                         3*) osvers=3 ;;
2871                         4*) osvers=4 ;;
2872                         *)      osvers="$3" ;;
2873                         esac
2874                         ;;
2875                 ultrix) osname=ultrix
2876                         osvers="$3"
2877                         ;;
2878                 osf1|mls+)      case "$5" in
2879                                 alpha)
2880                                         osname=dec_osf
2881                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2882                                         case "$osvers" in
2883                                         [1-9].[0-9]*) ;;
2884                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2885                                         esac
2886                                         ;;
2887                         hp*)    osname=hp_osf1  ;;
2888                         mips)   osname=mips_osf1 ;;
2889                         esac
2890                         ;;
2891                 unixware) osname=svr5
2892                         osvers="$4"
2893                         ;;
2894                 uts) osname=uts
2895                         osvers="$3"
2896                         ;;
2897                 $2) case "$osname" in
2898                         *isc*) ;;
2899                         *freebsd*) ;;
2900                         svr*)
2901                                 : svr4.x or possibly later
2902                                 case "svr$3" in 
2903                                 ${osname}*)
2904                                         osname=svr$3
2905                                         osvers=$4
2906                                         ;;
2907                                 esac
2908                                 case "$osname" in
2909                                 svr4.0)
2910                                         : Check for ESIX
2911                                         if test -f /stand/boot ; then
2912                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2913                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2914                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2915                                                         if test -n "$isesix"; then
2916                                                                 osname=esix4
2917                                                         fi
2918                                                 fi
2919                                         fi
2920                                         ;;
2921                                 esac
2922                                 ;;
2923                         *)      if test -f /etc/systemid; then
2924                                         osname=sco
2925                                         set `echo $3 | $sed 's/\./ /g'` $4
2926                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2927                                                 osvers=$1.$2.$3
2928                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2929                                                 osvers=$1.$2
2930                                         elif $test -f $src/hints/sco_$1.sh; then
2931                                                 osvers=$1
2932                                         fi
2933                                 else
2934                                         case "$osname" in
2935                                         '') : Still unknown.  Probably a generic Sys V.
2936                                                 osname="sysv"
2937                                                 osvers="$3"
2938                                                 ;;
2939                                         esac
2940                                 fi
2941                                 ;;
2942                         esac
2943                         ;;
2944                 *)      case "$osname" in
2945                         '') : Still unknown.  Probably a generic BSD.
2946                                 osname="$1"
2947                                 osvers="$3"
2948                                 ;;
2949                         esac
2950                         ;;
2951                 esac
2952         else
2953                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2954                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2955                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2956                                 osname=news_os
2957                         fi
2958                         $rm -f UU/kernel.what
2959                 elif test -d c:/.; then
2960                         set X $myuname
2961                         osname=os2
2962                         osvers="$5"
2963                 fi
2964         fi
2965         
2966         case "$targetarch" in
2967         '') ;;
2968         *)  hostarch=$osname
2969             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2970             osvers=''
2971             ;;
2972         esac
2973
2974         : Now look for a hint file osname_osvers, unless one has been
2975         : specified already.
2976         case "$hintfile" in
2977         ''|' ')
2978                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2979                 : Also try without trailing minor version numbers.
2980                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2981                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2982                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2983                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2984                 case "$file" in
2985                 '') dflt=none ;;
2986                 *)  case "$osvers" in
2987                         '') dflt=$file
2988                                 ;;
2989                         *)  if $test -f $src/hints/$file.sh ; then
2990                                         dflt=$file
2991                                 elif $test -f $src/hints/$xfile.sh ; then
2992                                         dflt=$xfile
2993                                 elif $test -f $src/hints/$xxfile.sh ; then
2994                                         dflt=$xxfile
2995                                 elif $test -f $src/hints/$xxxfile.sh ; then
2996                                         dflt=$xxxfile
2997                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2998                                         dflt=$xxxxfile
2999                                 elif $test -f "$src/hints/${osname}.sh" ; then
3000                                         dflt="${osname}"
3001                                 else
3002                                         dflt=none
3003                                 fi
3004                                 ;;
3005                         esac
3006                         ;;
3007                 esac
3008                 if $test -f Policy.sh ; then
3009                         case "$dflt" in
3010                         *Policy*) ;;
3011                         none) dflt="Policy" ;;
3012                         *) dflt="Policy $dflt" ;;
3013                         esac
3014                 fi
3015                 ;;
3016         *)
3017                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3018                 ;;
3019         esac
3020
3021         if $test -f Policy.sh ; then
3022                 $cat <<EOM
3023
3024 There's also a Policy hint file available, which should make the
3025 site-specific (policy) questions easier to answer.
3026 EOM
3027
3028         fi
3029
3030         $cat <<EOM
3031
3032 You may give one or more space-separated answers, or "none" if appropriate.
3033 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3034 is a good thing.  DO NOT give a wrong version or a wrong OS.
3035
3036 EOM
3037
3038         rp="Which of these apply, if any?"
3039         . UU/myread
3040         tans=$ans
3041         for file in $tans; do
3042                 if $test X$file = XPolicy -a -f Policy.sh; then
3043                         . Policy.sh
3044                         $cat Policy.sh >> UU/config.sh
3045                 elif $test -f $src/hints/$file.sh; then
3046                         . $src/hints/$file.sh
3047                         $cat $src/hints/$file.sh >> UU/config.sh
3048                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3049                         : nothing
3050                 else
3051                         : Give one chance to correct a possible typo.
3052                         echo "$file.sh does not exist"
3053                         dflt=$file
3054                         rp="hint to use instead?"
3055                         . UU/myread
3056                         for file in $ans; do
3057                                 if $test -f "$src/hints/$file.sh"; then
3058                                         . $src/hints/$file.sh
3059                                         $cat $src/hints/$file.sh >> UU/config.sh
3060                                 elif $test X$ans = X -o X$ans = Xnone ; then
3061                                         : nothing
3062                                 else
3063                                         echo "$file.sh does not exist -- ignored."
3064                                 fi
3065                         done
3066                 fi
3067         done
3068
3069         hint=recommended
3070         : Remember our hint file for later.
3071         if $test -f "$src/hints/$file.sh" ; then
3072                 hintfile="$file"
3073         else
3074                 hintfile=''
3075         fi
3076 fi
3077 cd UU
3078 ;;
3079 *)
3080         echo " "
3081         echo "Fetching default answers from $config_sh..." >&4
3082         tmp_n="$n"
3083         tmp_c="$c"
3084         cd ..
3085         cp $config_sh config.sh 2>/dev/null
3086         chmod +w config.sh
3087         . ./config.sh
3088         cd UU
3089         cp ../config.sh .
3090         n="$tmp_n"
3091         c="$tmp_c"
3092         hint=previous
3093         ;;
3094 esac
3095 test "$override" && . ./optdef.sh
3096
3097 : Restore computed paths
3098 for file in $loclist $trylist; do
3099         eval $file="\$_$file"
3100 done
3101
3102 cat << EOM
3103
3104 Configure uses the operating system name and version to set some defaults.
3105 The default value is probably right if the name rings a bell. Otherwise,
3106 since spelling matters for me, either accept the default or answer "none"
3107 to leave it blank.
3108
3109 EOM
3110 case "$osname" in
3111         ''|' ')
3112                 case "$hintfile" in
3113                 ''|' '|none) dflt=none ;;
3114                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3115                 esac
3116                 ;;
3117         *) dflt="$osname" ;;
3118 esac
3119 rp="Operating system name?"
3120 . ./myread
3121 case "$ans" in
3122 none)  osname='' ;;
3123 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3124 esac
3125 echo " "
3126 case "$osvers" in
3127         ''|' ')
3128                 case "$hintfile" in
3129                 ''|' '|none) dflt=none ;;
3130                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3131                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3132                         case "$dflt" in
3133                         ''|' ') dflt=none ;;
3134                         esac
3135                         ;;
3136                 esac
3137                 ;;
3138         *) dflt="$osvers" ;;
3139 esac
3140 rp="Operating system version?"
3141 . ./myread
3142 case "$ans" in
3143 none)  osvers='' ;;
3144 *) osvers="$ans" ;;
3145 esac
3146
3147
3148 . ./posthint.sh
3149
3150 : who configured the system
3151 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3152 cf_by=`(logname) 2>/dev/null`
3153 case "$cf_by" in
3154 "")
3155         cf_by=`(whoami) 2>/dev/null`
3156         case "$cf_by" in
3157         "") cf_by=unknown ;;
3158         esac ;;
3159 esac
3160
3161 : set up the script used to warn in case of inconsistency
3162 cat <<EOS >whoa
3163 $startsh
3164 EOS
3165 cat <<'EOSC' >>whoa
3166 dflt=y
3167 echo " "
3168 echo "*** WHOA THERE!!! ***" >&4
3169 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3170 rp="    Keep the $hint value?"
3171 . ./myread
3172 case "$ans" in
3173 y) td=$was; tu=$was;;
3174 esac
3175 EOSC
3176
3177 : function used to set $1 to $val
3178 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3179 case "$val$was" in
3180 $define$undef) . ./whoa; eval "$var=\$td";;
3181 $undef$define) . ./whoa; eval "$var=\$tu";;
3182 *) eval "$var=$val";;
3183 esac'
3184
3185 case "$usethreads" in
3186 $define|true|[yY]*)     dflt='y';;
3187 *) dflt='n';;
3188 esac
3189 cat <<EOM
3190
3191 Perl can be built to take advantage of threads on some systems.
3192 To do so, Configure can be run with -Dusethreads.
3193
3194 Note that threading is a highly experimental feature, and
3195 some known race conditions still remain.  If you choose to try
3196 it, be very sure to not actually deploy it for production
3197 purposes.  README.threads has more details, and is required
3198 reading if you enable threads.
3199
3200 If this doesn't make any sense to you, just accept the default '$dflt'.
3201 EOM
3202 rp='Build a threading Perl?'
3203 . ./myread
3204 case "$ans" in
3205 y|Y)    val="$define" ;;
3206 *)      val="$undef" ;;
3207 esac
3208 set usethreads
3209 eval $setvar
3210
3211 case "$usethreads" in
3212 $define)
3213         $cat <<EOM
3214
3215 As of 5.5.640, Perl has two different internal threading implementations,
3216 the 5.005 version (5005threads) and an interpreter-based version
3217 (ithreads) that has one interpreter per thread.  Both are very 
3218 experimental.  This arrangement exists to help developers work out
3219 which one is better.
3220
3221 If you're a casual user, you probably don't want interpreter-threads
3222 at this time.  There doesn't yet exist a way to create threads from
3223 within Perl in this model, i.e., "use Thread;" will NOT work.
3224 EOM
3225         : Default to ithreads unless overridden on command line or with
3226         : old config.sh
3227         dflt='y'
3228         case "$use5005threads" in
3229                 $define|true|[yY]*) dflt='n';;
3230         esac
3231         case "$useithreads" in
3232                 $undef|false|[nN]*) dflt='n';;
3233         esac
3234         rp='Use interpreter-based ithreads?'
3235         . ./myread
3236         case "$ans" in
3237         y|Y)    val="$define" ;;
3238         *)      val="$undef" ;;
3239         esac
3240         set useithreads
3241         eval $setvar
3242         : Now set use5005threads to the opposite value.
3243         case "$useithreads" in
3244         $define) val="$undef" ;;
3245         *) val="$define" ;;
3246         esac
3247         set use5005threads
3248         eval $setvar
3249         ;;
3250 *)
3251         useithreads="$undef"
3252         use5005threads="$undef"
3253         ;;
3254 esac
3255
3256 case "$useithreads$use5005threads" in
3257 "$define$define")
3258         $cat >&4 <<EOM
3259
3260 You cannot have both the ithreads and the 5.005 threads enabled
3261 at the same time.  Disabling the 5.005 threads since they are
3262 much less stable than the ithreads.
3263
3264 EOM
3265         use5005threads="$undef"
3266         ;;
3267 esac
3268
3269 case "$d_oldpthreads" in
3270 '')     : Configure tests would be welcome here.  For now, assume undef.
3271         val="$undef" ;;
3272 *)      val="$d_oldpthreads" ;;
3273 esac
3274 set d_oldpthreads
3275 eval $setvar
3276
3277
3278 case "$usethreads" in
3279 "$define"|true|[yY]*)
3280 : Look for a hint-file generated 'call-back-unit'.  If the
3281 : user has specified that a threading perl is to be built,
3282 : we may need to set or change some other defaults.
3283         if $test -f usethreads.cbu; then
3284                 echo "Your platform has some specific hints for threaded builds, using them..."
3285                 . ./usethreads.cbu
3286         else
3287                 $cat <<EOM
3288 (Your platform doesn't have any specific hints for threaded builds.
3289  Assuming POSIX threads, then.)
3290 EOM
3291         fi
3292         ;;
3293 esac
3294
3295 cat <<EOM
3296
3297 Perl can be built so that multiple Perl interpreters can coexist
3298 within the same Perl executable.
3299 EOM
3300
3301 case "$useithreads" in
3302 $define)
3303         cat <<EOM
3304 This multiple interpreter support is required for interpreter-based threads.
3305 EOM
3306         val="$define"
3307         ;;
3308 *)      case "$usemultiplicity" in
3309         $define|true|[yY]*)     dflt='y';;
3310         *) dflt='n';;
3311         esac
3312         echo " "
3313         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3314         rp='Build Perl for multiplicity?'
3315         . ./myread
3316         case "$ans" in
3317         y|Y)    val="$define" ;;
3318         *)      val="$undef" ;;
3319         esac
3320         ;;
3321 esac
3322 set usemultiplicity
3323 eval $setvar
3324
3325
3326 case "$usemorebits" in
3327 "$define"|true|[yY]*)
3328         use64bitint="$define"
3329         uselongdouble="$define"
3330         usemorebits="$define"
3331         ;;
3332 *)      usemorebits="$undef"
3333         ;;
3334 esac
3335
3336 : make some quick guesses about what we are up against
3337 echo " "
3338 $echo $n "Hmm...  $c"
3339 echo exit 1 >bsd
3340 echo exit 1 >usg
3341 echo exit 1 >v7
3342 echo exit 1 >osf1
3343 echo exit 1 >eunice
3344 echo exit 1 >xenix
3345 echo exit 1 >venix
3346 echo exit 1 >os2
3347 d_bsd="$undef"
3348 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3349 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3350 then
3351         echo "Looks kind of like an OSF/1 system, but we'll see..."
3352         echo exit 0 >osf1
3353 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3354         xxx=`./loc addbib blurfl $pth`
3355         if $test -f $xxx; then
3356         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3357                 echo exit 0 >bsd
3358                 echo exit 0 >usg
3359         else
3360                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3361                         echo "Looks kind of like an extended USG system, but we'll see..."
3362                 else
3363                         echo "Looks kind of like a USG system, but we'll see..."
3364                 fi
3365                 echo exit 0 >usg
3366         fi
3367 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3368         echo "Looks kind of like a BSD system, but we'll see..."
3369         d_bsd="$define"
3370         echo exit 0 >bsd
3371 else
3372         echo "Looks kind of like a Version 7 system, but we'll see..."
3373         echo exit 0 >v7
3374 fi
3375 case "$eunicefix" in
3376 *unixtovms*)
3377         $cat <<'EOI'
3378 There is, however, a strange, musty smell in the air that reminds me of
3379 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3380 EOI
3381         echo exit 0 >eunice
3382         d_eunice="$define"
3383 : it so happens the Eunice I know will not run shell scripts in Unix format
3384         ;;
3385 *)
3386         echo " "
3387         echo "Congratulations.  You aren't running Eunice."
3388         d_eunice="$undef"
3389         ;;
3390 esac
3391 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3392 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3393 : semicolon as a patch separator
3394 case "$p_" in
3395 :) ;;
3396 *)
3397         $cat <<'EOI'
3398 I have the feeling something is not exactly right, however...don't tell me...
3399 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3400 (Or you may be running DOS with DJGPP.)
3401 EOI
3402         echo exit 0 >os2
3403         ;;
3404 esac
3405 if test -f /xenix; then
3406         echo "Actually, this looks more like a XENIX system..."
3407         echo exit 0 >xenix
3408         d_xenix="$define"
3409 else
3410         echo " "
3411         echo "It's not Xenix..."
3412         d_xenix="$undef"
3413 fi
3414 chmod +x xenix
3415 $eunicefix xenix
3416 if test -f /venix; then
3417         echo "Actually, this looks more like a VENIX system..."
3418         echo exit 0 >venix
3419 else
3420         echo " "
3421         if ./xenix; then
3422                 : null
3423         else
3424                 echo "Nor is it Venix..."
3425         fi
3426 fi
3427 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3428 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3429 $rm -f foo
3430
3431 case "$cc" in
3432 '') dflt=cc;;
3433 *) dflt="$cc";;
3434 esac
3435 rp="Use which C compiler?"
3436 . ./myread
3437 cc="$ans"
3438 : Look for a hint-file generated 'call-back-unit'.  Now that the
3439 : user has specified the compiler, we may need to set or change some
3440 : other defaults.
3441 if $test -f cc.cbu; then
3442     . ./cc.cbu
3443 fi
3444 . ./checkcc
3445
3446 echo " "
3447 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3448 $cat >try.c <<EOM
3449 #include <stdio.h>
3450 int main() {
3451 #ifdef __GNUC__
3452 #ifdef __VERSION__
3453         printf("%s\n", __VERSION__);
3454 #else
3455         printf("%s\n", "1");
3456 #endif
3457 #endif
3458         exit(0);
3459 }
3460 EOM
3461 if $cc -o try $ccflags $ldflags try.c; then
3462         gccversion=`$run ./try`
3463         case "$gccversion" in
3464         '') echo "You are not using GNU cc." ;;
3465         *)  echo "You are using GNU cc $gccversion."
3466             ccname=gcc  
3467             ;;
3468         esac
3469 else
3470         echo " "
3471         echo "*** WHOA THERE!!! ***" >&4
3472         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3473         case "$knowitall" in
3474         '')
3475         echo "    You'd better start hunting for one and let me know about it." >&4
3476                 exit 1
3477                 ;;
3478         esac
3479 fi
3480 $rm -f try try.*
3481 case "$gccversion" in
3482 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3483 esac
3484 case "$gccversion" in
3485 '') gccosandvers='' ;;
3486 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3487    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3488    gccshortvers=''
3489    case "$gccosandvers" in
3490    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3491    $osname$osvers) ;; # looking good
3492    $osname*) cat <<EOM >&4
3493
3494 *** WHOA THERE!!! ***
3495
3496     Your gcc has not been compiled for the exact release of
3497     your operating system ($gccosandvers versus $osname$osvers).
3498
3499     In general it is a good idea to keep gcc synchronized with
3500     the operating system because otherwise serious problems
3501     may ensue when trying to compile software, like Perl.
3502
3503     I'm trying to be optimistic here, though, and will continue.
3504     If later during the configuration and build icky compilation
3505     problems appear (headerfile conflicts being the most common
3506     manifestation), I suggest reinstalling the gcc to match
3507     your operating system release.
3508
3509 EOM
3510       ;;
3511    *) gccosandvers='' ;; # failed to parse, better be silent
3512    esac
3513    ;;
3514 esac
3515 case "$ccname" in
3516 '') ccname="$cc" ;;
3517 esac
3518
3519 case "$gccversion" in
3520 '') ;;
3521 *)  case "$ccflags" in
3522     *-Wall*) ;;
3523     *) ccflags="$ccflags -Wall" ;;
3524     esac
3525     ;;
3526 esac
3527
3528 : decide how portable to be.  Allow command line overrides.
3529 case "$d_portable" in
3530 "$undef") ;;
3531 *)      d_portable="$define" ;;
3532 esac
3533
3534 : set up shell script to do ~ expansion
3535 cat >filexp <<EOSS
3536 $startsh
3537 : expand filename
3538 case "\$1" in
3539  ~/*|~)
3540         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3541         ;;
3542  ~*)
3543         if $test -f /bin/csh; then
3544                 /bin/csh -f -c "glob \$1"
3545                 failed=\$?
3546                 echo ""
3547                 exit \$failed
3548         else
3549                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3550                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3551                 if $test ! -d "\$dir"; then
3552                         me=\`basename \$0\`
3553                         echo "\$me: can't locate home directory for: \$name" >&2
3554                         exit 1
3555                 fi
3556                 case "\$1" in
3557                 */*)
3558                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3559                         ;;
3560                 *)
3561                         echo \$dir
3562                         ;;
3563                 esac
3564         fi
3565         ;;
3566 *)
3567         echo \$1
3568         ;;
3569 esac
3570 EOSS
3571 chmod +x filexp
3572 $eunicefix filexp
3573
3574 : now set up to get a file name
3575 cat <<EOS >getfile
3576 $startsh
3577 EOS
3578 cat <<'EOSC' >>getfile
3579 tilde=''
3580 fullpath=''
3581 already=''
3582 skip=''
3583 none_ok=''
3584 exp_file=''
3585 nopath_ok=''
3586 orig_rp="$rp"
3587 orig_dflt="$dflt"
3588 case "$gfpth" in
3589 '') gfpth='.' ;;
3590 esac
3591
3592 case "$fn" in
3593 *\(*)
3594         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3595         fn=`echo $fn | sed 's/(.*)//'`
3596         ;;
3597 esac
3598
3599 case "$fn" in
3600 *:*)
3601         loc_file=`expr $fn : '.*:\(.*\)'`
3602         fn=`expr $fn : '\(.*\):.*'`
3603         ;;
3604 esac
3605
3606 case "$fn" in
3607 *~*) tilde=true;;
3608 esac
3609 case "$fn" in
3610 */*) fullpath=true;;
3611 esac
3612 case "$fn" in
3613 *+*) skip=true;;
3614 esac
3615 case "$fn" in
3616 *n*) none_ok=true;;
3617 esac
3618 case "$fn" in
3619 *e*) exp_file=true;;
3620 esac
3621 case "$fn" in
3622 *p*) nopath_ok=true;;
3623 esac
3624
3625 case "$fn" in
3626 *f*) type='File';;
3627 *d*) type='Directory';;
3628 *l*) type='Locate';;
3629 esac
3630
3631 what="$type"
3632 case "$what" in
3633 Locate) what='File';;
3634 esac
3635
3636 case "$exp_file" in
3637 '')
3638         case "$d_portable" in
3639         "$define") ;;
3640         *) exp_file=true;;
3641         esac
3642         ;;
3643 esac
3644
3645 cd ..
3646 while test "$type"; do
3647         redo=''
3648         rp="$orig_rp"
3649         dflt="$orig_dflt"
3650         case "$tilde" in
3651         true) rp="$rp (~name ok)";;
3652         esac
3653         . UU/myread
3654         if test -f UU/getfile.ok && \
3655                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3656         then
3657                 value="$ans"
3658                 ansexp="$ans"
3659                 break
3660         fi
3661         case "$ans" in
3662         none)
3663                 value=''
3664                 ansexp=''
3665                 case "$none_ok" in
3666                 true) type='';;
3667                 esac
3668                 ;;
3669         *)
3670                 case "$tilde" in
3671                 '') value="$ans"
3672                         ansexp="$ans";;
3673                 *)
3674                         value=`UU/filexp $ans`
3675                         case $? in
3676                         0)
3677                                 if test "$ans" != "$value"; then
3678                                         echo "(That expands to $value on this system.)"
3679                                 fi
3680                                 ;;
3681                         *) value="$ans";;
3682                         esac
3683                         ansexp="$value"
3684                         case "$exp_file" in
3685                         '') value="$ans";;
3686                         esac
3687                         ;;
3688                 esac
3689                 case "$fullpath" in
3690                 true)
3691                         case "$ansexp" in
3692                         /*) value="$ansexp" ;;
3693                         [a-zA-Z]:/*) value="$ansexp" ;;
3694                         *)
3695                                 redo=true
3696                                 case "$already" in
3697                                 true)
3698                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3699                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3700                                         ;;
3701                                 *)
3702                                 echo "Please give a full path name, starting with slash." >&4
3703                                         case "$tilde" in
3704                                         true)
3705                                 echo "Note that using ~name is ok provided it expands well." >&4
3706                                                 already=true
3707                                                 ;;
3708                                         esac
3709                                 esac
3710                                 ;;
3711                         esac
3712                         ;;
3713                 esac
3714                 case "$redo" in
3715                 '')
3716                         case "$type" in
3717                         File)
3718                                 for fp in $gfpth; do
3719                                         if test "X$fp" = X.; then
3720                                             pf="$ansexp"
3721                                         else    
3722                                             pf="$fp/$ansexp"
3723                                         fi
3724                                         if test -f "$pf"; then
3725                                                 type=''
3726                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3727                                         then
3728                                                 echo "($value is not a plain file, but that's ok.)"
3729                                                 type=''
3730                                         fi
3731                                         if test X"$type" = X; then
3732                                             value="$pf"
3733                                             break
3734                                         fi
3735                                 done
3736                                 ;;
3737                         Directory)
3738                                 for fp in $gfpth; do
3739                                         if test "X$fp" = X.; then
3740                                             dir="$ans"
3741                                             direxp="$ansexp"
3742                                         else    
3743                                             dir="$fp/$ansexp"
3744                                             direxp="$fp/$ansexp"
3745                                         fi
3746                                         if test -d "$direxp"; then
3747                                                 type=''
3748                                                 value="$dir"
3749                                                 break
3750                                         fi
3751                                 done
3752                                 ;;
3753                         Locate)
3754                                 if test -d "$ansexp"; then
3755                                         echo "(Looking for $loc_file in directory $value.)"
3756                                         value="$value/$loc_file"
3757                                         ansexp="$ansexp/$loc_file"
3758                                 fi
3759                                 if test -f "$ansexp"; then
3760                                         type=''
3761                                 fi
3762                                 case "$nopath_ok" in
3763                                 true)   case "$value" in
3764                                         */*) ;;
3765                                         *)      echo "Assuming $value will be in people's path."
3766                                                 type=''
3767                                                 ;;
3768                                         esac
3769                                         ;;
3770                                 esac
3771                                 ;;
3772                         esac
3773
3774                         case "$skip" in
3775                         true) type='';
3776                         esac
3777
3778                         case "$type" in
3779                         '') ;;
3780                         *)
3781                                 if test "$fastread" = yes; then
3782                                         dflt=y
3783                                 else
3784                                         dflt=n
3785                                 fi
3786                                 rp="$what $value doesn't exist.  Use that name anyway?"
3787                                 . UU/myread
3788                                 dflt=''
3789                                 case "$ans" in
3790                                 y*) type='';;
3791                                 *) echo " ";;
3792                                 esac
3793                                 ;;
3794                         esac
3795                         ;;
3796                 esac
3797                 ;;
3798         esac
3799 done
3800 cd UU
3801 ans="$value"
3802 rp="$orig_rp"
3803 dflt="$orig_dflt"
3804 rm -f getfile.ok
3805 test "X$gfpthkeep" != Xy && gfpth=""
3806 EOSC
3807
3808 : What should the include directory be ?
3809 echo " "
3810 $echo $n "Hmm...  $c"
3811 dflt='/usr/include'
3812 incpath=''
3813 mips_type=''
3814 if $test -f /bin/mips && /bin/mips; then
3815         echo "Looks like a MIPS system..."
3816         $cat >usr.c <<'EOCP'
3817 #ifdef SYSTYPE_BSD43
3818 /bsd43
3819 #endif
3820 EOCP
3821         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3822                 dflt='/bsd43/usr/include'
3823                 incpath='/bsd43'
3824                 mips_type='BSD 4.3'
3825         else
3826                 mips_type='System V'
3827         fi
3828         $rm -f usr.c usr.out
3829         echo "and you're compiling with the $mips_type compiler and libraries."
3830         xxx_prompt=y
3831         echo "exit 0" >mips
3832 else
3833         echo "Doesn't look like a MIPS system."
3834         xxx_prompt=n
3835         echo "exit 1" >mips
3836 fi
3837 chmod +x mips
3838 $eunicefix mips
3839 case "$usrinc" in
3840 '') ;;
3841 *) dflt="$usrinc";;
3842 esac
3843 case "$xxx_prompt" in
3844 y)      fn=d/
3845         echo " "
3846         rp='Where are the include files you want to use?'
3847         . ./getfile
3848         usrinc="$ans"
3849         ;;
3850 *)      usrinc="$dflt"
3851         ;;
3852 esac
3853
3854 : see how we invoke the C preprocessor
3855 echo " "
3856 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3857 cat <<'EOT' >testcpp.c
3858 #define ABC abc
3859 #define XYZ xyz
3860 ABC.XYZ
3861 EOT
3862 cd ..
3863 if test ! -f cppstdin; then
3864         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3865                 # AIX cc -E doesn't show the absolute headerfile
3866                 # locations but we'll cheat by using the -M flag.
3867                 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
3868         else
3869                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3870         fi
3871 else
3872         echo "Keeping your $hint cppstdin wrapper."
3873 fi
3874 chmod 755 cppstdin
3875 wrapper=`pwd`/cppstdin
3876 ok='false'
3877 cd UU
3878
3879 if $test "X$cppstdin" != "X" && \
3880         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3881         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3882 then
3883         echo "You used to use $cppstdin $cppminus so we'll use that again."
3884         case "$cpprun" in
3885         '') echo "But let's see if we can live without a wrapper..." ;;
3886         *)
3887                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3888                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3889                 then
3890                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3891                         ok='true'
3892                 else
3893                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3894                 fi
3895                 ;;
3896         esac
3897 else
3898         case "$cppstdin" in
3899         '') ;;
3900         *)
3901                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3902                 ;;
3903         esac
3904 fi
3905
3906 if $ok; then
3907         : nothing
3908 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3909         $cc -E <testcpp.c >testcpp.out 2>&1; \
3910         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3911         echo "Yup, it does."
3912         x_cpp="$cc -E"
3913         x_minus='';
3914 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3915         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3916         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3917         echo "Yup, it does."
3918         x_cpp="$cc -E"
3919         x_minus='-';
3920 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3921         $cc -P <testcpp.c >testcpp.out 2>&1; \
3922         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3923         echo "Yipee, that works!"
3924         x_cpp="$cc -P"
3925         x_minus='';
3926 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3927         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3928         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3929         echo "At long last!"
3930         x_cpp="$cc -P"
3931         x_minus='-';
3932 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3933         $cpp <testcpp.c >testcpp.out 2>&1; \
3934         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3935         echo "It works!"
3936         x_cpp="$cpp"
3937         x_minus='';
3938 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3939         $cpp - <testcpp.c >testcpp.out 2>&1; \
3940         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3941         echo "Hooray, it works!  I was beginning to wonder."
3942         x_cpp="$cpp"
3943         x_minus='-';
3944 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3945         $wrapper <testcpp.c >testcpp.out 2>&1; \
3946         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3947         x_cpp="$wrapper"
3948         x_minus=''
3949         echo "Eureka!"
3950 else
3951         dflt=''
3952         rp="No dice.  I can't find a C preprocessor.  Name one:"
3953         . ./myread
3954         x_cpp="$ans"
3955         x_minus=''
3956         $x_cpp <testcpp.c >testcpp.out 2>&1
3957         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958                 echo "OK, that will do." >&4
3959         else
3960 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3961                 exit 1
3962         fi
3963 fi
3964
3965 case "$ok" in
3966 false)
3967         cppstdin="$x_cpp"
3968         cppminus="$x_minus"
3969         cpprun="$x_cpp"
3970         cpplast="$x_minus"
3971         set X $x_cpp
3972         shift
3973         case "$1" in
3974         "$cpp")
3975                 echo "Perhaps can we force $cc -E using a wrapper..."
3976                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3977                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3978                 then
3979                         echo "Yup, we can."
3980                         cppstdin="$wrapper"
3981                         cppminus='';
3982                 else
3983                         echo "Nope, we'll have to live without it..."
3984                 fi
3985                 ;;
3986         esac
3987         case "$cpprun" in
3988         "$wrapper")
3989                 cpprun=''
3990                 cpplast=''
3991                 ;;
3992         esac
3993         ;;
3994 esac
3995
3996 case "$cppstdin" in
3997 "$wrapper"|'cppstdin') ;;
3998 *) $rm -f $wrapper;;
3999 esac
4000 $rm -f testcpp.c testcpp.out
4001
4002 : Set private lib path
4003 case "$plibpth" in
4004 '') if ./mips; then
4005                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4006         fi;;
4007 esac
4008 case "$libpth" in
4009 ' ') dlist='';;
4010 '') dlist="$loclibpth $plibpth $glibpth";;
4011 *) dlist="$libpth";;
4012 esac
4013
4014 : Now check and see which directories actually exist, avoiding duplicates
4015 libpth=''
4016 for xxx in $dlist
4017 do
4018     if $test -d $xxx; then
4019                 case " $libpth " in
4020                 *" $xxx "*) ;;
4021                 *) libpth="$libpth $xxx";;
4022                 esac
4023     fi
4024 done
4025 $cat <<'EOM'
4026
4027 Some systems have incompatible or broken versions of libraries.  Among
4028 the directories listed in the question below, please remove any you
4029 know not to be holding relevant libraries, and add any that are needed.
4030 Say "none" for none.
4031
4032 EOM
4033 case "$libpth" in
4034 '') dflt='none';;
4035 *)
4036         set X $libpth
4037         shift
4038         dflt=${1+"$@"}
4039         ;;
4040 esac
4041 rp="Directories to use for library searches?"
4042 . ./myread
4043 case "$ans" in
4044 none) libpth=' ';;
4045 *) libpth="$ans";;
4046 esac
4047
4048 : compute shared library extension
4049 case "$so" in
4050 '')
4051         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4052                 dflt='sl'
4053         else
4054                 dflt='so'
4055         fi
4056         ;;
4057 *) dflt="$so";;
4058 esac
4059 $cat <<EOM
4060
4061 On some systems, shared libraries may be available.  Answer 'none' if
4062 you want to suppress searching of shared libraries for the remainder
4063 of this configuration.
4064
4065 EOM
4066 rp='What is the file extension used for shared libraries?'
4067 . ./myread
4068 so="$ans"
4069
4070 : Define several unixisms.
4071 : Hints files or command line option can be used to override them.
4072 : The convoluted testing is in case hints files set either the old
4073 : or the new name.
4074 case "$_exe" in
4075 '')     case "$exe_ext" in
4076     '') ;;
4077         *)      _exe="$exe_ext" ;;
4078         esac
4079         ;;
4080 esac
4081 case "$_a" in
4082 '')     case "$lib_ext" in
4083     '') _a='.a';;
4084         *)      _a="$lib_ext" ;;
4085         esac
4086         ;;
4087 esac
4088 case "$_o" in
4089 '') case "$obj_ext" in
4090         '')     _o='.o';;
4091         *)      _o="$obj_ext";;
4092         esac
4093         ;;
4094 esac
4095 case "$p_" in
4096 '') case "$path_sep" in
4097         '')     p_=':';;
4098         *)      p_="$path_sep";;
4099         esac
4100         ;;
4101 esac
4102 exe_ext=$_exe
4103 lib_ext=$_a
4104 obj_ext=$_o
4105 path_sep=$p_
4106
4107 : Which makefile gets called first.  This is used by make depend.
4108 case "$firstmakefile" in
4109 '') firstmakefile='makefile';;
4110 esac
4111
4112 case "$usesocks" in
4113 $define|true|[yY]*)     dflt='y';;
4114 *) dflt='n';;
4115 esac
4116 cat <<EOM
4117
4118 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4119 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4120 to use the PerlIO abstraction layer, this will be implicitly selected.
4121
4122 If this doesn't make any sense to you, just accept the default '$dflt'.
4123 EOM
4124 rp='Build Perl for SOCKS?'
4125 . ./myread
4126 case "$ans" in
4127 y|Y)    val="$define" ;;     
4128 *)      val="$undef" ;;
4129 esac
4130 set usesocks
4131 eval $setvar
4132
4133 case "$usesocks" in
4134 $define|true|[yY]*) useperlio="$define";;
4135 esac
4136
4137 : Looking for optional libraries
4138 echo " "
4139 echo "Checking for optional libraries..." >&4
4140 case "$libs" in
4141 ' '|'') dflt='';;
4142 *) dflt="$libs";;
4143 esac
4144 case "$libswanted" in
4145 '') libswanted='c_s';;
4146 esac
4147 case "$usesocks" in
4148 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4149 esac
4150 libsfound=''
4151 libsfiles=''
4152 libsdirs=''
4153 libspath=''
4154 for thisdir in $libpth $xlibpth; do
4155   test -d $thisdir && libspath="$libspath $thisdir"
4156 done
4157 for thislib in $libswanted; do
4158         for thisdir in $libspath; do
4159             xxx=''
4160             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4161                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4162                 $test -f "$xxx" && eval $libscheck
4163                 $test -f "$xxx" && libstyle=shared
4164             fi
4165             if test ! -f "$xxx"; then
4166                 xxx=$thisdir/lib$thislib.$so
4167                 $test -f "$xxx" && eval $libscheck
4168                 $test -f "$xxx" && libstyle=shared
4169             fi  
4170             if test ! -f "$xxx"; then
4171                 xxx=$thisdir/lib$thislib$_a
4172                 $test -f "$xxx" && eval $libscheck
4173                 $test -f "$xxx" && libstyle=static
4174             fi
4175             if test ! -f "$xxx"; then
4176                 xxx=$thisdir/$thislib$_a
4177                 $test -f "$xxx" && eval $libscheck
4178                 $test -f "$xxx" && libstyle=static
4179             fi
4180             if test ! -f "$xxx"; then
4181                 xxx=$thisdir/lib${thislib}_s$_a
4182                 $test -f "$xxx" && eval $libscheck
4183                 $test -f "$xxx" && libstyle=static
4184                 $test -f "$xxx" && thislib=${thislib}_s
4185             fi
4186             if test ! -f "$xxx"; then
4187                 xxx=$thisdir/Slib$thislib$_a
4188                 $test -f "$xxx" && eval $libscheck
4189                 $test -f "$xxx" && libstyle=static
4190             fi
4191             if $test -f "$xxx"; then
4192                 case "$libstyle" in
4193                 shared) echo "Found -l$thislib (shared)." ;;
4194                 static) echo "Found -l$thislib." ;;
4195                 *)      echo "Found -l$thislib ($libstyle)." ;;
4196                 esac
4197                 case " $dflt " in
4198                 *"-l$thislib "*);;
4199                 *) dflt="$dflt -l$thislib"
4200                    libsfound="$libsfound $xxx"
4201                    yyy=`basename $xxx`
4202                    libsfiles="$libsfiles $yyy"
4203                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4204                    case " $libsdirs " in
4205                    *" $yyy "*) ;;
4206                    *) libsdirs="$libsdirs $yyy" ;;
4207                    esac
4208                    ;;
4209                 esac
4210                 break
4211             fi  
4212         done
4213         if $test ! -f "$xxx"; then
4214             echo "No -l$thislib."
4215         fi
4216 done
4217 set X $dflt
4218 shift
4219 dflt="$*"
4220 case "$libs" in
4221 '') dflt="$dflt";;
4222 *) dflt="$libs";;
4223 esac
4224 case "$dflt" in
4225 ' '|'') dflt='none';;
4226 esac
4227
4228 $cat <<EOM
4229
4230 In order to compile $package on your machine, a number of libraries
4231 are usually needed.  Include any other special libraries here as well.
4232 Say "none" for none.  The default list is almost always right.
4233 EOM
4234
4235 echo " "
4236 rp="What libraries to use?"
4237 . ./myread
4238 case "$ans" in
4239 none) libs=' ';;
4240 *) libs="$ans";;
4241 esac
4242
4243 : determine optimization, if desired, or use for debug flag also
4244 case "$optimize" in
4245 ' '|$undef) dflt='none';;
4246 '') dflt='-O';;
4247 *) dflt="$optimize";;
4248 esac
4249 $cat <<EOH
4250
4251 By default, $package compiles with the -O flag to use the optimizer.
4252 Alternately, you might want to use the symbolic debugger, which uses
4253 the -g flag (on traditional Unix systems).  Either flag can be
4254 specified here.  To use neither flag, specify the word "none".
4255
4256 EOH
4257 rp="What optimizer/debugger flag should be used?"
4258 . ./myread
4259 optimize="$ans"
4260 case "$optimize" in
4261 'none') optimize=" ";;
4262 esac
4263
4264 dflt=''
4265 : We will not override a previous value, but we might want to
4266 : augment a hint file
4267 case "$hint" in
4268 default|recommended)
4269         case "$gccversion" in
4270         1*) dflt='-fpcc-struct-return' ;;
4271         esac
4272         case "$optimize" in
4273         *-g*) dflt="$dflt -DDEBUGGING";;
4274         esac
4275         case "$gccversion" in
4276         2*) if test -d /etc/conf/kconfig.d &&
4277                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4278                 then
4279                         dflt="$dflt -posix"
4280                 fi
4281                 ;;
4282         esac
4283         case "$gccversion" in
4284         1*) ;;
4285         2.[0-8]*) ;;
4286         ?*)     echo " "
4287                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4288                 echo 'int main(void) { return 0; }' > gcctest.c
4289                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4290                         echo "Yes, it does." 2>&1
4291                         case "$ccflags" in
4292                         *strict-aliasing*) 
4293                                 echo "Leaving current flags $ccflags alone." 2>&1
4294                                 ;;
4295                         *) dflt="$dflt -fno-strict-aliasing" ;;
4296                         esac
4297                 else
4298                         echo "Nope, it doesn't, but that's ok." 2>&1
4299                 fi
4300                 ;;
4301         esac
4302         ;;
4303 esac
4304
4305 case "$mips_type" in
4306 *BSD*|'') inclwanted="$locincpth $usrinc";;
4307 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4308 esac
4309 for thisincl in $inclwanted; do
4310         if $test -d $thisincl; then
4311                 if $test x$thisincl != x$usrinc; then
4312                         case "$dflt" in
4313                         *" -I$thisincl "*);;
4314                         *) dflt="$dflt -I$thisincl ";;
4315                         esac
4316                 fi
4317         fi
4318 done
4319
4320 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4321         xxx=true;
4322 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4323         xxx=true;
4324 else
4325         xxx=false;
4326 fi;
4327 if $xxx; then
4328         case "$dflt" in
4329         *$2*);;
4330         *) dflt="$dflt -D$2";;
4331         esac;
4332 fi'
4333
4334 set signal.h LANGUAGE_C; eval $inctest
4335
4336 case "$usesocks" in
4337 $define)
4338         ccflags="$ccflags -DSOCKS"
4339         ;;
4340 esac
4341
4342 case "$hint" in
4343 default|recommended) dflt="$ccflags $dflt" ;;
4344 *) dflt="$ccflags";;
4345 esac
4346
4347 case "$dflt" in
4348 ''|' ') dflt=none;;
4349 esac
4350
4351 $cat <<EOH
4352
4353 Your C compiler may want other flags.  For this question you should include
4354 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4355 but you should NOT include libraries or ld flags like -lwhatever.  If you
4356 want $package to honor its debug switch, you should include -DDEBUGGING here.
4357 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4358
4359 To use no flags, specify the word "none".
4360
4361 EOH
4362 set X $dflt
4363 shift
4364 dflt=${1+"$@"}
4365 rp="Any additional cc flags?"
4366 . ./myread
4367 case "$ans" in
4368 none) ccflags='';;
4369 *) ccflags="$ans";;
4370 esac
4371
4372 : the following weeds options from ccflags that are of no interest to cpp
4373 case "$cppflags" in
4374 '') cppflags="$ccflags" ;;
4375 *)  cppflags="$cppflags $ccflags" ;;
4376 esac
4377 case "$gccversion" in
4378 1*) cppflags="$cppflags -D__GNUC__"
4379 esac
4380 case "$mips_type" in
4381 '');;
4382 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4383 esac
4384 case "$cppflags" in
4385 '');;
4386 *)
4387         echo " "
4388         echo "Let me guess what the preprocessor flags are..." >&4
4389         set X $cppflags
4390         shift
4391         cppflags=''
4392         $cat >cpp.c <<'EOM'
4393 #define BLURFL foo
4394
4395 BLURFL xx LFRULB
4396 EOM
4397         previous=''
4398         for flag in $*
4399         do
4400                 case "$flag" in
4401                 -*) ftry="$flag";;
4402                 *) ftry="$previous $flag";;
4403                 esac
4404                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4405                         >cpp1.out 2>/dev/null && \
4406                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4407                         >cpp2.out 2>/dev/null && \
4408                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4409                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4410                 then
4411                         cppflags="$cppflags $ftry"
4412                         previous=''
4413                 else
4414                         previous="$flag"
4415                 fi
4416         done
4417         set X $cppflags
4418         shift
4419         cppflags=${1+"$@"}
4420         case "$cppflags" in
4421         *-*)  echo "They appear to be: $cppflags";;
4422         esac
4423         $rm -f cpp.c cpp?.out
4424         ;;
4425 esac
4426
4427 : flags used in final linking phase
4428 case "$ldflags" in
4429 '') if ./venix; then
4430                 dflt='-i -z'
4431         else
4432                 dflt=''
4433         fi
4434         case "$ccflags" in
4435         *-posix*) dflt="$dflt -posix" ;;
4436         esac
4437         ;;
4438 *) dflt="$ldflags";;
4439 esac
4440
4441 : Try to guess additional flags to pick up local libraries.
4442 for thislibdir in $libpth; do
4443         case " $loclibpth " in
4444         *" $thislibdir "*)
4445                 case "$dflt " in 
4446                 *"-L$thislibdir "*) ;;
4447                 *)  dflt="$dflt -L$thislibdir" ;;
4448                 esac
4449                 ;;
4450         esac
4451 done
4452
4453 case "$dflt" in
4454 '') dflt='none' ;;
4455 esac
4456
4457 $cat <<EOH
4458
4459 Your C linker may need flags.  For this question you should
4460 include -L/whatever and any other flags used by the C linker, but you
4461 should NOT include libraries like -lwhatever.
4462
4463 Make sure you include the appropriate -L/path flags if your C linker
4464 does not normally search all of the directories you specified above,
4465 namely
4466         $libpth
4467 To use no flags, specify the word "none".
4468
4469 EOH
4470
4471 rp="Any additional ld flags (NOT including libraries)?"
4472 . ./myread
4473 case "$ans" in
4474 none) ldflags='';;
4475 *) ldflags="$ans";;
4476 esac
4477 rmlist="$rmlist pdp11"
4478
4479 : coherency check
4480 echo " "
4481 echo "Checking your choice of C compiler and flags for coherency..." >&4
4482 $cat > try.c <<'EOF'
4483 #include <stdio.h>
4484 int main() { printf("Ok\n"); exit(0); }
4485 EOF
4486 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4487 shift
4488 $cat >try.msg <<'EOM'
4489 I've tried to compile and run the following simple program:
4490
4491 EOM
4492 $cat try.c >> try.msg
4493
4494 $cat >> try.msg <<EOM
4495
4496 I used the command:
4497
4498         $*
4499         $run ./try
4500
4501 and I got the following output:
4502
4503 EOM
4504 dflt=y
4505 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4506         if $sh -c "$run ./try" >>try.msg 2>&1; then
4507                 xxx=`$run ./try`
4508                 case "$xxx" in
4509                 "Ok") dflt=n ;;
4510                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4511                         case " $libs " in
4512                         *" -lsfio "*)
4513                                 cat >> try.msg <<'EOQS'
4514 If $libs contains -lsfio, and sfio is mis-configured, then it
4515 sometimes (apparently) runs and exits with a 0 status, but with no
4516 output!  It may have to do with sfio's use of _exit vs. exit.
4517
4518 EOQS
4519                                 rp="You have a big problem.  Shall I abort Configure"
4520                                 dflt=y
4521                                 ;;
4522                         esac
4523                         ;;
4524                 esac
4525         else
4526                 echo "The program compiled OK, but exited with status $?." >>try.msg
4527                 rp="You have a problem.  Shall I abort Configure"
4528                 dflt=y
4529         fi
4530 else
4531         echo "I can't compile the test program." >>try.msg
4532         rp="You have a BIG problem.  Shall I abort Configure"
4533         dflt=y
4534 fi
4535 case "$dflt" in
4536 y)
4537         $cat try.msg >&4
4538         case "$knowitall" in
4539         '')
4540                 echo "(The supplied flags or libraries might be incorrect.)"
4541                 ;;
4542         *) dflt=n;;
4543         esac
4544         echo " "
4545         . ./myread
4546         case "$ans" in
4547         n*|N*) ;;
4548         *)      echo "Ok.  Stopping Configure." >&4
4549                 exit 1
4550                 ;;
4551         esac
4552         ;;
4553 n) echo "OK, that should do.";;
4554 esac
4555 $rm -f try try.* core
4556
4557 : define a shorthand compile call
4558 compile='
4559 mc_file=$1;
4560 shift;
4561 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4562 : define a shorthand compile call for compilations that should be ok.
4563 compile_ok='
4564 mc_file=$1;
4565 shift;
4566 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4567
4568 : check for lengths of integral types
4569 echo " "
4570 case "$intsize" in
4571 '')
4572         echo "Checking to see how big your integers are..." >&4
4573         $cat >try.c <<'EOCP'
4574 #include <stdio.h>
4575 int main()
4576 {
4577         printf("intsize=%d;\n", (int)sizeof(int));
4578         printf("longsize=%d;\n", (int)sizeof(long));
4579         printf("shortsize=%d;\n", (int)sizeof(short));
4580         exit(0);
4581 }
4582 EOCP
4583         set try
4584         if eval $compile_ok && $run ./try > /dev/null; then
4585                 eval `$run ./try`
4586                 echo "Your integers are $intsize bytes long."
4587                 echo "Your long integers are $longsize bytes long."
4588                 echo "Your short integers are $shortsize bytes long."
4589         else
4590                 $cat >&4 <<EOM
4591 !
4592 Help! I can't compile and run the intsize test program: please enlighten me!
4593 (This is probably a misconfiguration in your system or libraries, and
4594 you really ought to fix it.  Still, I'll try anyway.)
4595 !
4596 EOM
4597                 dflt=4
4598                 rp="What is the size of an integer (in bytes)?"
4599                 . ./myread
4600                 intsize="$ans"
4601                 dflt=$intsize
4602                 rp="What is the size of a long integer (in bytes)?"
4603                 . ./myread
4604                 longsize="$ans"
4605                 dflt=2
4606                 rp="What is the size of a short integer (in bytes)?"
4607                 . ./myread
4608                 shortsize="$ans"
4609         fi
4610         ;;
4611 esac
4612 $rm -f try try.*
4613
4614 : check for void type
4615 echo " "
4616 echo "Checking to see how well your C compiler groks the void type..." >&4
4617 case "$voidflags" in
4618 '')
4619         $cat >try.c <<'EOCP'
4620 #if TRY & 1
4621 void sub() {
4622 #else
4623 sub() {
4624 #endif
4625         extern void moo();      /* function returning void */
4626         void (*goo)();          /* ptr to func returning void */
4627 #if TRY & 8
4628         void *hue;              /* generic ptr */
4629 #endif
4630 #if TRY & 2
4631         void (*foo[10])();
4632 #endif
4633
4634 #if TRY & 4
4635         if(goo == moo) {
4636                 exit(0);
4637         }
4638 #endif
4639         exit(0);
4640 }
4641 int main() { sub(); }
4642 EOCP
4643         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4644                 voidflags=$defvoidused
4645         echo "Good.  It appears to support void to the level $package wants.">&4
4646                 if $contains warning .out >/dev/null 2>&1; then
4647                         echo "However, you might get some warnings that look like this:"
4648                         $cat .out
4649                 fi
4650         else
4651 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4652                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4653                         echo "It supports 1..."
4654                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4655                                 echo "It also supports 2..."
4656                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4657                                         voidflags=7
4658                                         echo "And it supports 4 but not 8 definitely."
4659                                 else
4660                                         echo "It doesn't support 4..."
4661                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4662                                                 voidflags=11
4663                                                 echo "But it supports 8."
4664                                         else
4665                                                 voidflags=3
4666                                                 echo "Neither does it support 8."
4667                                         fi
4668                                 fi
4669                         else
4670                                 echo "It does not support 2..."
4671                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4672                                         voidflags=13
4673                                         echo "But it supports 4 and 8."
4674                                 else
4675                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4676                                                 voidflags=5
4677                                                 echo "And it supports 4 but has not heard about 8."
4678                                         else
4679                                                 echo "However it supports 8 but not 4."
4680                                         fi
4681                                 fi
4682                         fi
4683                 else
4684                         echo "There is no support at all for void."
4685                         voidflags=0
4686                 fi
4687         fi
4688 esac
4689 case "$voidflags" in
4690 "$defvoidused") ;;
4691 *)      $cat >&4 <<'EOM'
4692   Support flag bits are:
4693     1: basic void declarations.
4694     2: arrays of pointers to functions returning void.
4695     4: operations between pointers to and addresses of void functions.
4696     8: generic void pointers.
4697 EOM
4698         dflt="$voidflags";
4699         rp="Your void support flags add up to what?"
4700         . ./myread
4701         voidflags="$ans"
4702         ;;
4703 esac
4704 $rm -f try.* .out
4705
4706 : check for length of pointer
4707 echo " "
4708 case "$ptrsize" in
4709 '')
4710         echo "Checking to see how big your pointers are..." >&4
4711         if test "$voidflags" -gt 7; then
4712                 echo '#define VOID_PTR char *' > try.c
4713         else
4714                 echo '#define VOID_PTR void *' > try.c
4715         fi
4716         $cat >>try.c <<'EOCP'
4717 #include <stdio.h>
4718 int main()
4719 {
4720     printf("%d\n", (int)sizeof(VOID_PTR));
4721     exit(0);
4722 }
4723 EOCP
4724         set try
4725         if eval $compile_ok; then
4726                 ptrsize=`$run ./try`
4727                 echo "Your pointers are $ptrsize bytes long."
4728         else
4729                 dflt='4'
4730                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4731                 rp="What is the size of a pointer (in bytes)?"
4732                 . ./myread
4733                 ptrsize="$ans"
4734         fi
4735         ;;
4736 esac
4737 $rm -f try.c try
4738
4739 : check for long long
4740 echo " "
4741 echo "Checking to see if you have long long..." >&4
4742 echo 'int main() { long long x = 7; return 0; }' > try.c
4743 set try
4744 if eval $compile; then
4745         val="$define"
4746         echo "You have long long."
4747 else
4748         val="$undef"
4749         echo "You do not have long long."
4750 fi
4751 $rm try.*
4752 set d_longlong
4753 eval $setvar
4754
4755 : check for length of long long
4756 case "${d_longlong}${longlongsize}" in
4757 $define)
4758         echo " "
4759         echo "Checking to see how big your long longs are..." >&4
4760         $cat >try.c <<'EOCP'
4761 #include <stdio.h>
4762 int main()
4763 {
4764     printf("%d\n", (int)sizeof(long long));
4765     return(0);
4766 }
4767 EOCP
4768         set try
4769         if eval $compile_ok; then
4770                 longlongsize=`$run ./try`
4771                 echo "Your long longs are $longlongsize bytes long."
4772         else
4773                 dflt='8'
4774                 echo " "
4775                 echo "(I can't seem to compile the test program.  Guessing...)"
4776                 rp="What is the size of a long long (in bytes)?"
4777                 . ./myread
4778                 longlongsize="$ans"
4779         fi
4780         if $test "X$longsize" = "X$longlongsize"; then
4781                 echo "(That isn't any different from an ordinary long.)"
4782         fi      
4783         ;;
4784 esac
4785 $rm -f try.* try
4786
4787 : determine filename position in cpp output
4788 echo " "
4789 echo "Computing filename position in cpp output for #include directives..." >&4
4790 echo '#include <stdio.h>' > foo.c
4791 $cat >fieldn <<EOF
4792 $startsh
4793 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4794 $grep '^[       ]*#.*stdio\.h' | \
4795 while read cline; do
4796         pos=1
4797         set \$cline
4798         while $test \$# -gt 0; do
4799                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4800                         echo "\$pos"
4801                         exit 0
4802                 fi
4803                 shift
4804                 pos=\`expr \$pos + 1\`
4805         done
4806 done
4807 EOF
4808 chmod +x fieldn
4809 fieldn=`./fieldn`
4810 $rm -f foo.c fieldn
4811 case $fieldn in
4812 '') pos='???';;
4813 1) pos=first;;
4814 2) pos=second;;
4815 3) pos=third;;
4816 *) pos="${fieldn}th";;
4817 esac
4818 echo "Your cpp writes the filename in the $pos field of the line."
4819
4820 : locate header file
4821 $cat >findhdr <<EOF
4822 $startsh
4823 wanted=\$1
4824 name=''
4825 for usrincdir in $usrinc
4826 do
4827         if test -f \$usrincdir/\$wanted; then
4828                 echo "\$usrincdir/\$wanted"
4829                 exit 0
4830         fi
4831 done
4832 awkprg='{ print \$$fieldn }'
4833 echo "#include <\$wanted>" > foo\$\$.c
4834 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4835 $grep "^[       ]*#.*\$wanted" | \
4836 while read cline; do
4837         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4838         case "\$name" in
4839         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4840         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4841         *) exit 2;;
4842         esac;
4843 done;
4844 #
4845 # status = 0: grep returned 0 lines, case statement not executed
4846 # status = 1: headerfile found
4847 # status = 2: while loop executed, no headerfile found
4848 #
4849 status=\$?
4850 $rm -f foo\$\$.c;
4851 if test \$status -eq 1; then
4852         exit 0;
4853 fi
4854 exit 1
4855 EOF
4856 chmod +x findhdr
4857
4858 : define an alternate in-header-list? function
4859 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4860 cont=true; xxf="echo \"<\$1> found.\" >&4";
4861 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4862 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4863 esac;
4864 case $# in 4) instead=instead;; *) instead="at last";; esac;
4865 while $test "$cont"; do
4866         xxx=`./findhdr $1`
4867         var=$2; eval "was=\$$2";
4868         if $test "$xxx" && $test -r "$xxx";
4869         then eval $xxf;
4870         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4871                 cont="";
4872         else eval $xxnf;
4873         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4874         set $yyy; shift; shift; yyy=$@;
4875         case $# in 0) cont="";;
4876         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4877                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4878         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4879                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4880         esac;
4881 done;
4882 while $test "$yyy";
4883 do set $yyy; var=$2; eval "was=\$$2";
4884         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4885         set $yyy; shift; shift; yyy=$@;
4886 done'
4887
4888 : see if inttypes.h is available
4889 : we want a real compile instead of Inhdr because some systems
4890 : have an inttypes.h which includes non-existent headers
4891 echo " "
4892 $cat >try.c <<EOCP
4893 #include <inttypes.h>
4894 int main() {
4895         static int32_t foo32 = 0x12345678;
4896 }
4897 EOCP
4898 set try
4899 if eval $compile; then
4900         echo "<inttypes.h> found." >&4
4901         val="$define"
4902 else
4903         echo "<inttypes.h> NOT found." >&4
4904         val="$undef"
4905 fi
4906 $rm -f try.c try
4907 set i_inttypes
4908 eval $setvar
4909
4910 : check for int64_t
4911 echo " "
4912 echo "Checking to see if you have int64_t..." >&4
4913 $cat >try.c <<EOCP
4914 #include <sys/types.h>
4915 #$i_inttypes I_INTTYPES
4916 #ifdef I_INTTYPES
4917 #include <inttypes.h>
4918 #endif
4919 int main() { int64_t x = 7; }
4920 EOCP
4921 set try
4922 if eval $compile; then
4923         val="$define"
4924         echo "You have int64_t."
4925 else
4926         val="$undef"
4927         echo "You do not have int64_t."
4928 fi
4929 $rm -f try try.*
4930 set d_int64_t
4931 eval $setvar
4932
4933
4934 echo " "
4935 echo "Checking which 64-bit integer type we could use..." >&4
4936
4937 case "$intsize" in
4938 8) val=int
4939    set quadtype
4940    eval $setvar
4941    val='"unsigned int"'
4942    set uquadtype
4943    eval $setvar
4944    quadkind=1
4945    ;;
4946 *) case "$longsize" in
4947    8) val=long
4948       set quadtype
4949       eval $setvar
4950       val='"unsigned long"'
4951       set uquadtype
4952       eval $setvar
4953       quadkind=2
4954       ;;
4955    *) case "$d_longlong:$longlongsize" in
4956       define:8)
4957         val='"long long"'
4958         set quadtype
4959         eval $setvar
4960         val='"unsigned long long"'
4961         set uquadtype
4962         eval $setvar
4963         quadkind=3
4964         ;;
4965       *) case "$d_int64_t" in
4966          define)
4967            val=int64_t
4968            set quadtype
4969            eval $setvar
4970            val=uint64_t
4971            set uquadtype
4972            eval $setvar
4973            quadkind=4
4974            ;;
4975          esac
4976          ;;
4977       esac
4978       ;;
4979    esac
4980    ;;
4981 esac
4982
4983 case "$quadtype" in
4984 '')     echo "Alas, no 64-bit integer types in sight." >&4
4985         d_quad="$undef"
4986         ;;
4987 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4988         d_quad="$define"
4989         ;;
4990 esac
4991
4992
4993 case "$uselonglong" in
4994 "$define"|true|[yY]*)
4995         cat <<EOM >&4
4996
4997 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4998 EOM
4999         use64bitint="$define"
5000         ;;
5001 esac                          
5002 case "$use64bits" in
5003 "$define"|true|[yY]*)
5004         cat <<EOM >&4
5005
5006 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5007 EOM
5008         use64bitint="$define"
5009         ;;
5010 esac                          
5011 case "$use64bitints" in
5012 "$define"|true|[yY]*)
5013         cat <<EOM >&4
5014
5015 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5016 EOM
5017         use64bitint="$define"
5018         ;;
5019 esac                          
5020 case "$use64bitsint" in
5021 "$define"|true|[yY]*)
5022         cat <<EOM >&4
5023
5024 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5025 EOM
5026         use64bitint="$define"
5027         ;;
5028 esac                          
5029 case "$uselonglongs" in
5030 "$define"|true|[yY]*)
5031         cat <<EOM >&4
5032
5033 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5034 EOM
5035         use64bitint="$define"
5036         ;;
5037 esac                          
5038 case "$use64bitsall" in
5039 "$define"|true|[yY]*)
5040         cat <<EOM >&4
5041
5042 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5043 EOM
5044         use64bitall="$define"
5045         ;;
5046 esac                          
5047
5048 case "$ccflags" in
5049 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5050 esac
5051 case "$use64bitall" in
5052 "$define"|true|[yY]*) use64bitint="$define" ;;
5053 esac
5054
5055 case "$longsize" in
5056 8) cat <<EOM
5057
5058 You have natively 64-bit long integers.
5059 EOM
5060    val="$define"
5061    ;;
5062 *) case "$use64bitint" in
5063    "$define"|true|[yY]*) dflt='y';;
5064    *) dflt='n';;
5065    esac
5066    case "$d_quad" in
5067    "$define") ;;
5068    *) dflt='n' ;;
5069    esac
5070    cat <<EOM
5071
5072 Perl can be built to take advantage of 64-bit integer types
5073 on some systems.  To do so, Configure can be run with -Duse64bitint.
5074 Choosing this option will most probably introduce binary incompatibilities.
5075
5076 If this doesn't make any sense to you, just accept the default '$dflt'.
5077 (The default has been chosen based on your configuration.)
5078 EOM
5079    rp='Try to use 64-bit integers, if available?'
5080    . ./myread
5081    case "$ans" in
5082    [yY]*) val="$define" ;;
5083    *)     val="$undef"  ;;
5084    esac
5085    ;;
5086 esac
5087 set use64bitint
5088 eval $setvar
5089
5090 case "$use64bitall" in
5091 "$define"|true|[yY]*) dflt='y' ;;
5092 *) case "$longsize" in
5093    8) dflt='y' ;;
5094    *) dflt='n' ;;
5095    esac
5096    ;;
5097 esac    
5098 cat <<EOM
5099
5100 You may also choose to try maximal 64-bitness.  It means using as much
5101 64-bitness as possible on the platform.  This in turn means even more
5102 binary incompatibilities.  On the other hand, your platform may not
5103 have any more 64-bitness available than what you already have chosen.
5104
5105 If this doesn't make any sense to you, just accept the default '$dflt'.
5106 (The default has been chosen based on your configuration.)
5107 EOM
5108 rp='Try to use maximal 64-bit support, if available?'
5109 . ./myread
5110 case "$ans" in
5111 [yY]*) val="$define" ;;
5112 *)     val="$undef"  ;;
5113 esac
5114 set use64bitall
5115 eval $setvar
5116 case "$use64bitall" in
5117 "$define")
5118         case "$use64bitint" in
5119         "$undef")
5120                 cat <<EOM
5121
5122 Since you have chosen a maximally 64-bit build, I'm also turning on
5123 the use of 64-bit integers.
5124 EOM
5125                 use64bitint="$define" ;;
5126         esac
5127         ;;
5128 esac
5129
5130 case "$use64bitall" in
5131 "$define"|true|[yY]*)
5132         case "$ptrsize" in
5133         4)      cat <<EOM >&4
5134
5135 *** You have chosen a maximally 64-bit build, but your pointers
5136 *** are only 4 bytes wide, disabling maximal 64-bitness.
5137
5138 EOM
5139                 use64bitall="$undef"
5140                 case "$use64bitint" in
5141                 "$define"|true|[yY]*) ;;
5142                 *)      cat <<EOM >&4
5143
5144 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5145
5146 EOM
5147                         use64bitint="$define"
5148                         ;;
5149                 esac
5150                 ;;
5151         esac
5152         ;;
5153 esac
5154
5155 case "$use64bitint" in
5156 "$define"|true|[yY]*)
5157 : Look for a hint-file generated 'call-back-unit'.  If the
5158 : user has specified that a 64-bit perl is to be built,
5159 : we may need to set or change some other defaults.
5160         if $test -f use64bitint.cbu; then
5161                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5162                 . ./use64bitint.cbu
5163         fi
5164         case "$longsize" in
5165         4) case "$archname64" in
5166            '') archname64=64int ;;
5167            esac
5168            ;;
5169         esac
5170         ;;
5171 esac
5172
5173 case "$use64bitall" in
5174 "$define"|true|[yY]*)
5175 : Look for a hint-file generated 'call-back-unit'.  If the
5176 : user has specified that a maximally 64-bit perl is to be built,
5177 : we may need to set or change some other defaults.
5178         if $test -f use64bitall.cbu; then
5179                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5180                 . ./use64bitall.cbu
5181         fi
5182         case "$longsize" in
5183         4) case "$archname64" in
5184            ''|64int) archname64=64all ;;
5185            esac
5186            ;;
5187         esac
5188         ;;
5189 esac
5190
5191 echo " "
5192 echo "Checking for GNU C Library..." >&4
5193 cat >try.c <<EOM
5194 #include <stdio.h>
5195 int main()
5196 {
5197 #ifdef __GLIBC__
5198     exit(0);
5199 #else
5200     exit(1);
5201 #endif
5202 }
5203 EOM
5204 set try
5205 if eval $compile_ok && $run ./try; then
5206         val="$define"
5207         echo "You are using the GNU C Library"
5208 else
5209         val="$undef"
5210         echo "You are not using the GNU C Library"
5211 fi
5212 $rm -f try try.*
5213 set d_gnulibc
5214 eval $setvar
5215
5216 : see if nm is to be used to determine whether a symbol is defined or not
5217 case "$usenm" in
5218 '')
5219         dflt=''
5220         case "$d_gnulibc" in
5221         "$define")
5222                 echo " "
5223                 echo "nm probably won't work on the GNU C Library." >&4
5224                 dflt=n
5225                 ;;
5226         esac
5227         case "$dflt" in
5228         '') 
5229                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5230                         echo " "
5231                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5232                         echo "'nm' won't be sufficient on this sytem." >&4
5233                         dflt=n
5234                 fi
5235                 ;;
5236         esac
5237         case "$dflt" in
5238         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5239                 if $test $dflt -gt 20; then
5240                         dflt=y
5241                 else
5242                         dflt=n
5243                 fi
5244                 ;;
5245         esac
5246         ;;
5247 *)
5248         case "$usenm" in
5249         true|$define) dflt=y;;
5250         *) dflt=n;;
5251         esac
5252         ;;
5253 esac
5254 $cat <<EOM
5255
5256 I can use $nm to extract the symbols from your C libraries. This
5257 is a time consuming task which may generate huge output on the disk (up
5258 to 3 megabytes) but that should make the symbols extraction faster. The
5259 alternative is to skip the 'nm' extraction part and to compile a small
5260 test program instead to determine whether each symbol is present. If
5261 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5262 this may be the best solution.
5263
5264 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5265
5266 EOM
5267 rp="Shall I use $nm to extract C symbols from the libraries?"
5268 . ./myread
5269 case "$ans" in
5270 [Nn]*) usenm=false;;
5271 *) usenm=true;;
5272 esac
5273
5274 runnm=$usenm
5275 case "$reuseval" in
5276 true) runnm=false;;
5277 esac
5278
5279 : nm options which may be necessary
5280 case "$nm_opt" in
5281 '') if $test -f /mach_boot; then
5282                 nm_opt=''       # Mach
5283         elif $test -d /usr/ccs/lib; then
5284                 nm_opt='-p'     # Solaris (and SunOS?)
5285         elif $test -f /dgux; then
5286                 nm_opt='-p'     # DG-UX
5287         elif $test -f /lib64/rld; then
5288                 nm_opt='-p'     # 64-bit Irix
5289         else
5290                 nm_opt=''
5291         fi;;
5292 esac
5293
5294 : nm options which may be necessary for shared libraries but illegal
5295 : for archive libraries.  Thank you, Linux.
5296 case "$nm_so_opt" in
5297 '')     case "$myuname" in
5298         *linux*)
5299                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5300                         nm_so_opt='--dynamic'
5301                 fi
5302                 ;;
5303         esac
5304         ;;
5305 esac
5306
5307 case "$runnm" in
5308 true)
5309 : get list of predefined functions in a handy place
5310 echo " "
5311 case "$libc" in
5312 '') libc=unknown
5313         case "$libs" in
5314         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5315         esac
5316         ;;
5317 esac
5318 case "$libs" in
5319 '') ;;
5320 *)  for thislib in $libs; do
5321         case "$thislib" in
5322         -lc|-lc_s)
5323                 : Handle C library specially below.
5324                 ;;
5325         -l*)
5326                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5327                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5328                         :
5329                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5330                         :
5331                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5332                         :
5333                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5334                         :
5335                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5340                         :
5341                 else
5342                         try=''
5343                 fi
5344                 libnames="$libnames $try"
5345                 ;;
5346         *) libnames="$libnames $thislib" ;;
5347         esac
5348         done
5349         ;;
5350 esac
5351 xxx=normal
5352 case "$libc" in
5353 unknown)
5354         set /lib/libc.$so
5355         for xxx in $libpth; do
5356                 $test -r $1 || set $xxx/libc.$so
5357                 : The messy sed command sorts on library version numbers.
5358                 $test -r $1 || \
5359                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5360                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5361                                 h
5362                                 s/[0-9][0-9]*/0000&/g
5363                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5364                                 G
5365                                 s/\n/ /' | \
5366                          $sort | $sed -e 's/^.* //'`
5367                 eval set \$$#
5368         done
5369         $test -r $1 || set /usr/ccs/lib/libc.$so
5370         $test -r $1 || set /lib/libsys_s$_a
5371         ;;
5372 *)
5373         set blurfl
5374         ;;
5375 esac
5376 if $test -r "$1"; then
5377         echo "Your (shared) C library seems to be in $1."
5378         libc="$1"
5379 elif $test -r /lib/libc && $test -r /lib/clib; then
5380         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5381         xxx=apollo
5382         libc='/lib/clib /lib/libc'
5383         if $test -r /lib/syslib; then
5384                 echo "(Your math library is in /lib/syslib.)"
5385                 libc="$libc /lib/syslib"
5386         fi
5387 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5388         echo "Your C library seems to be in $libc, as you said before."
5389 elif $test -r $incpath/usr/lib/libc$_a; then
5390         libc=$incpath/usr/lib/libc$_a;
5391         echo "Your C library seems to be in $libc.  That's fine."
5392 elif $test -r /lib/libc$_a; then
5393         libc=/lib/libc$_a;
5394         echo "Your C library seems to be in $libc.  You're normal."
5395 else
5396         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5397                 :
5398         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5399                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5400         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5401                 :
5402         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5403                 :
5404         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405                 :
5406         else
5407                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5408         fi
5409         if $test -r "$tans"; then
5410                 echo "Your C library seems to be in $tans, of all places."
5411                 libc=$tans
5412         else
5413                 libc='blurfl'
5414         fi
5415 fi
5416 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5417         dflt="$libc"
5418         cat <<EOM
5419
5420 If the guess above is wrong (which it might be if you're using a strange
5421 compiler, or your machine supports multiple models), you can override it here.
5422
5423 EOM
5424 else
5425         dflt=''
5426         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5427         cat >&4 <<EOM
5428 I can't seem to find your C library.  I've looked in the following places:
5429
5430 EOM
5431         $sed 's/^/      /' libpath
5432         cat <<EOM
5433
5434 None of these seems to contain your C library. I need to get its name...
5435
5436 EOM
5437 fi
5438 fn=f
5439 rp='Where is your C library?'
5440 . ./getfile
5441 libc="$ans"
5442
5443 echo " "
5444 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5445 set X `cat libnames`
5446 shift
5447 xxx=files
5448 case $# in 1) xxx=file; esac
5449 echo "Extracting names from the following $xxx for later perusal:" >&4
5450 echo " "
5451 $sed 's/^/      /' libnames >&4
5452 echo " "
5453 $echo $n "This may take a while...$c" >&4
5454
5455 for file in $*; do
5456         case $file in
5457         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5458         *) $nm $nm_opt $file 2>/dev/null;;
5459         esac
5460 done >libc.tmp
5461
5462 $echo $n ".$c"
5463 $grep fprintf libc.tmp > libc.ptf
5464 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5465 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5466 xxx='[ADTSIW]'
5467 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5468         eval $xscan;\
5469         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5470                 eval $xrun
5471 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5472         eval $xscan;\
5473         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5474                 eval $xrun
5475 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5476         eval $xscan;\
5477         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478                 eval $xrun
5479 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5480         eval $xscan;\
5481         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482                 eval $xrun
5483 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5484         eval $xscan;\
5485         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486                 eval $xrun
5487 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5488         eval $xscan;\
5489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490                 eval $xrun
5491 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5492                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5493         eval $xscan;\
5494         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495                 eval $xrun
5496 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5497         eval $xscan;\
5498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499                 eval $xrun
5500 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5501         eval $xscan;\
5502         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503                 eval $xrun
5504 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5505         eval $xscan;\
5506         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507                 eval $xrun
5508 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5509         eval $xscan;\
5510         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511                 eval $xrun
5512 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5513         eval $xscan;\
5514         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515                 eval $xrun
5516 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5517         eval $xscan;\
5518         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519                 eval $xrun
5520 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5521         eval $xscan;\
5522         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523                 eval $xrun
5524 else
5525         $nm -p $* 2>/dev/null >libc.tmp
5526         $grep fprintf libc.tmp > libc.ptf
5527         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5528                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5529         then
5530                 nm_opt='-p'
5531                 eval $xrun
5532         else
5533                 echo " "
5534                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5535                 com=''
5536                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5537                         for thisname in $libnames $libc; do
5538                                 $ar t $thisname >>libc.tmp
5539                         done
5540                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5541                         echo "Ok." >&4
5542                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5543                         # Repeat libc to extract forwarders to DLL entries too
5544                         for thisname in $libnames $libc; do
5545                                 $ar tv $thisname >>libc.tmp
5546                                 # Revision 50 of EMX has bug in $ar.
5547                                 # it will not extract forwarders to DLL entries
5548                                 # Use emximp which will extract exactly them.
5549                                 emximp -o tmp.imp $thisname \
5550                                     2>/dev/null && \
5551                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5552                                     < tmp.imp >>libc.tmp
5553                                 $rm tmp.imp
5554                         done
5555                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5556                         echo "Ok." >&4
5557                 else
5558                         echo "$ar didn't seem to work right." >&4
5559                         echo "Maybe this is a Cray...trying bld instead..." >&4
5560                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5561                         then
5562                                 for thisname in $libnames; do
5563                                         bld t $libnames | \
5564                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5565                                         $ar t $thisname >>libc.tmp
5566                                 done
5567                                 echo "Ok." >&4
5568                         else
5569                                 echo "That didn't work either.  Giving up." >&4
5570                                 exit 1
5571                         fi
5572                 fi
5573         fi
5574 fi
5575 nm_extract="$com"
5576 if $test -f /lib/syscalls.exp; then
5577         echo " "
5578         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5579         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5580 fi
5581 ;;
5582 esac
5583 $rm -f libnames libpath
5584
5585 : is a C symbol defined?
5586 csym='tlook=$1;
5587 case "$3" in
5588 -v) tf=libc.tmp; tc=""; tdc="";;
5589 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5590 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5591 esac;
5592 tx=yes;
5593 case "$reuseval-$4" in
5594 true-) ;;
5595 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5596 esac;
5597 case "$tx" in
5598 yes)
5599         case "$runnm" in
5600         true)
5601                 if $contains $tlook $tf >/dev/null 2>&1;
5602                 then tval=true;
5603                 else tval=false;
5604                 fi;;
5605         *)
5606                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5607                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5608                 then tval=true;
5609                 else tval=false;
5610                 fi;
5611                 $rm -f t t.c;;
5612         esac;;
5613 *)
5614         case "$tval" in
5615         $define) tval=true;;
5616         *) tval=false;;
5617         esac;;
5618 esac;
5619 eval "$2=$tval"'
5620
5621 : define an is-in-libc? function
5622 inlibc='echo " "; td=$define; tu=$undef;
5623 sym=$1; var=$2; eval "was=\$$2";
5624 tx=yes;
5625 case "$reuseval$was" in
5626 true) ;;
5627 true*) tx=no;;
5628 esac;
5629 case "$tx" in
5630 yes)
5631         set $sym tres -f;
5632         eval $csym;
5633         case "$tres" in
5634         true)
5635                 echo "$sym() found." >&4;
5636                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5637         *)
5638                 echo "$sym() NOT found." >&4;
5639                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5640         esac;;
5641 *)
5642         case "$was" in
5643         $define) echo "$sym() found." >&4;;
5644         *) echo "$sym() NOT found." >&4;;
5645         esac;;
5646 esac'
5647
5648 : see if sqrtl exists
5649 set sqrtl d_sqrtl
5650 eval $inlibc
5651
5652 case "$ccflags" in
5653 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5654 esac
5655
5656 case "$uselongdouble" in
5657 $define|true|[yY]*)     dflt='y';;
5658 *) dflt='n';;
5659 esac
5660 cat <<EOM
5661
5662 Perl can be built to take advantage of long doubles which
5663 (if available) may give more accuracy and range for floating point numbers.
5664
5665 If this doesn't make any sense to you, just accept the default '$dflt'.
5666 EOM
5667 rp='Try to use long doubles if available?'
5668 . ./myread
5669 case "$ans" in
5670 y|Y)    val="$define"   ;;
5671 *)      val="$undef"    ;;
5672 esac
5673 set uselongdouble
5674 eval $setvar
5675
5676 case "$uselongdouble" in
5677 true|[yY]*) uselongdouble="$define" ;;
5678 esac
5679
5680 case "$uselongdouble" in
5681 $define)
5682 : Look for a hint-file generated 'call-back-unit'.  If the
5683 : user has specified that long doubles should be used,
5684 : we may need to set or change some other defaults.
5685         if $test -f uselongdouble.cbu; then
5686                 echo "Your platform has some specific hints for long doubles, using them..."
5687                 . ./uselongdouble.cbu
5688         else
5689                 $cat <<EOM
5690 (Your platform doesn't have any specific hints for long doubles.)
5691 EOM
5692         fi
5693         ;;
5694 esac
5695
5696 case "$uselongdouble:$d_sqrtl" in
5697 $define:$undef)
5698                 $cat <<EOM >&4
5699
5700 *** You requested the use of long doubles but you do not seem to have
5701 *** the mathematic functions for long doubles.  I'm disabling the use
5702 *** of long doubles.
5703
5704 EOM
5705         uselongdouble=$undef
5706         ;;
5707 esac
5708
5709 : check for length of double
5710 echo " "
5711 case "$doublesize" in
5712 '')
5713         echo "Checking to see how big your double precision numbers are..." >&4
5714         $cat >try.c <<'EOCP'
5715 #include <stdio.h>
5716 int main()
5717 {
5718     printf("%d\n", (int)sizeof(double));
5719     exit(0);
5720 }
5721 EOCP
5722         set try
5723         if eval $compile_ok; then
5724                 doublesize=`$run ./try`
5725                 echo "Your double is $doublesize bytes long."
5726         else
5727                 dflt='8'
5728                 echo "(I can't seem to compile the test program.  Guessing...)"
5729                 rp="What is the size of a double precision number (in bytes)?"
5730                 . ./myread
5731                 doublesize="$ans"
5732         fi
5733         ;;
5734 esac
5735 $rm -f try.c try
5736
5737 : check for long doubles
5738 echo " "
5739 echo "Checking to see if you have long double..." >&4
5740 echo 'int main() { long double x = 7.0; }' > try.c
5741 set try
5742 if eval $compile; then
5743         val="$define"
5744         echo "You have long double."
5745 else
5746         val="$undef"
5747         echo "You do not have long double."
5748 fi
5749 $rm try.*
5750 set d_longdbl
5751 eval $setvar
5752
5753 : check for length of long double
5754 case "${d_longdbl}${longdblsize}" in
5755 $define)
5756         echo " "
5757         echo "Checking to see how big your long doubles are..." >&4
5758         $cat >try.c <<'EOCP'
5759 #include <stdio.h>
5760 int main()
5761 {
5762         printf("%d\n", sizeof(long double));
5763 }
5764 EOCP
5765         set try
5766         set try
5767         if eval $compile; then
5768                 longdblsize=`$run ./try`
5769                 echo "Your long doubles are $longdblsize bytes long."
5770         else
5771                 dflt='8'
5772                 echo " "
5773                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5774                 rp="What is the size of a long double (in bytes)?"
5775                 . ./myread
5776                 longdblsize="$ans"
5777         fi
5778         if $test "X$doublesize" = "X$longdblsize"; then
5779                 echo "(That isn't any different from an ordinary double.)"
5780         fi      
5781         ;;
5782 esac
5783 $rm -f try.* try
5784
5785 case "$useperlio" in
5786 $define|true|[yY]*|'')  dflt='y';;
5787 *) dflt='n';;
5788 esac
5789 cat <<EOM
5790
5791 Previous version of $package used the standard IO mechanisms as
5792 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5793 alternate IO mechanisms via the PerlIO abstraction layer, but the
5794 stdio mechanism is still available if needed.  The abstraction layer
5795 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5796 Using PerlIO with sfio may cause problems with some extension modules.
5797
5798 If this doesn't make any sense to you, just accept the default '$dflt'.
5799 EOM
5800 rp='Use the PerlIO abstraction layer?'
5801 . ./myread
5802 case "$ans" in
5803 y|Y) 
5804         val="$define"
5805         ;;
5806 *)      
5807         echo "Ok, doing things the stdio way."
5808         val="$undef"
5809         ;;
5810 esac
5811 set useperlio
5812 eval $setvar 
5813
5814 case "$usesocks" in
5815 $define|true|[yY]*)
5816         case "$useperlio" in
5817         $define|true|[yY]*) ;;
5818         *)      cat >&4 <<EOM
5819
5820 You are using the SOCKS proxy protocol library which means that you
5821 should also use the PerlIO layer.  You may be headed for trouble.
5822
5823 EOM
5824                 ;;
5825         esac
5826         ;;
5827 esac
5828
5829         
5830 : determine the architecture name
5831 echo " "
5832 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5833         tarch=`arch`"-$osname"
5834 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5835         if uname -m > tmparch 2>&1 ; then
5836                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5837                         -e 's/$/'"-$osname/" tmparch`
5838         else
5839                 tarch="$osname"
5840         fi
5841         $rm -f tmparch
5842 else
5843         tarch="$osname"
5844 fi
5845 case "$myarchname" in
5846 ''|"$tarch") ;;
5847 *)
5848         echo "(Your architecture name used to be $myarchname.)"
5849         archname=''
5850         ;;
5851 esac
5852 case "$targetarch" in
5853 '') ;;
5854 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5855 esac
5856 myarchname="$tarch"
5857 case "$archname" in
5858 '') dflt="$tarch";;
5859 *) dflt="$archname";;
5860 esac
5861 rp='What is your architecture name'
5862 . ./myread
5863 archname="$ans"
5864 case "$usethreads" in
5865 $define)
5866         echo "Threads selected." >&4
5867         case "$archname" in
5868         *-thread*) echo "...and architecture name already has -thread." >&4
5869                 ;;
5870         *)      archname="$archname-thread"
5871                 echo "...setting architecture name to $archname." >&4
5872                 ;;
5873         esac
5874         ;;
5875 esac
5876 case "$usemultiplicity" in
5877 $define)
5878         echo "Multiplicity selected." >&4
5879         case "$archname" in
5880         *-multi*) echo "...and architecture name already has -multi." >&4
5881                 ;;
5882         *)      archname="$archname-multi"
5883                 echo "...setting architecture name to $archname." >&4
5884                 ;;
5885         esac
5886         ;;
5887 esac
5888 case "$use64bitint$use64bitall" in
5889 *"$define"*)
5890         case "$archname64" in
5891         '')
5892                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5893                 ;;
5894         *)
5895                 case "$use64bitint" in
5896                 "$define") echo "64 bit integers selected." >&4 ;;
5897                 esac
5898                 case "$use64bitall" in
5899                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5900                 esac
5901                 case "$archname" in
5902                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5903                         ;;
5904                 *)      archname="$archname-$archname64"
5905                         echo "...setting architecture name to $archname." >&4
5906                         ;;
5907                 esac
5908                 ;;
5909         esac
5910 esac
5911 case "$uselongdouble" in
5912 $define)
5913         echo "Long doubles selected." >&4
5914         case "$longdblsize" in
5915         $doublesize)
5916                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5917                 ;;
5918         *)
5919                 case "$archname" in
5920                 *-ld*) echo "...and architecture name already has -ld." >&4
5921                         ;;
5922                 *)      archname="$archname-ld"
5923                         echo "...setting architecture name to $archname." >&4
5924                         ;;
5925                 esac
5926                 ;;
5927         esac
5928         ;;
5929 esac
5930 case "$useperlio" in
5931 $define)
5932         echo "Perlio selected." >&4
5933         ;;
5934 *)
5935         echo "Perlio not selected, using stdio." >&4
5936         case "$archname" in
5937         *-stdio*) echo "...and architecture name already has -stdio." >&4
5938                 ;;
5939         *)      archname="$archname-stdio"
5940                 echo "...setting architecture name to $archname." >&4
5941                 ;;
5942         esac
5943         ;;
5944 esac
5945
5946 : determine root of directory hierarchy where package will be installed.
5947 case "$prefix" in
5948 '')
5949         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5950         ;;
5951 *)
5952         dflt="$prefix"
5953         ;;
5954 esac
5955 $cat <<EOM
5956
5957 By default, $package will be installed in $dflt/bin, manual pages
5958 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5959 installation directories. Typically this is something like /usr/local.
5960 If you wish to have binaries under /usr/bin but other parts of the
5961 installation under /usr/local, that's ok: you will be prompted
5962 separately for each of the installation directories, the prefix being
5963 only used to set the defaults.
5964
5965 EOM
5966 fn=d~
5967 rp='Installation prefix to use?'
5968 . ./getfile
5969 oldprefix=''
5970 case "$prefix" in
5971 '') ;;
5972 *)
5973         case "$ans" in
5974         "$prefix") ;;
5975         *) oldprefix="$prefix";;
5976         esac
5977         ;;
5978 esac
5979 prefix="$ans"
5980 prefixexp="$ansexp"
5981
5982 case "$afsroot" in
5983 '')     afsroot=/afs ;;
5984 *)      afsroot=$afsroot ;;
5985 esac
5986
5987 : is AFS running?
5988 echo " "
5989 case "$afs" in
5990 $define|true)   afs=true ;;
5991 $undef|false)   afs=false ;;
5992 *)      if test -d $afsroot; then
5993                 afs=true
5994         else
5995                 afs=false
5996         fi
5997         ;;
5998 esac
5999 if $afs; then
6000         echo "AFS may be running... I'll be extra cautious then..." >&4
6001 else
6002         echo "AFS does not seem to be running..." >&4
6003 fi
6004
6005 : determine installation prefix for where package is to be installed.
6006 if $afs; then 
6007 $cat <<EOM
6008
6009 Since you are running AFS, I need to distinguish the directory in which
6010 files will reside from the directory in which they are installed (and from
6011 which they are presumably copied to the former directory by occult means).
6012
6013 EOM
6014         case "$installprefix" in
6015         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6016         *) dflt="$installprefix";;
6017         esac
6018 else
6019 $cat <<EOM
6020
6021 In some special cases, particularly when building $package for distribution,
6022 it is convenient to distinguish between the directory in which files should 
6023 be installed from the directory ($prefix) in which they 
6024 will eventually reside.  For most users, these two directories are the same.
6025
6026 EOM
6027         case "$installprefix" in
6028         '') dflt=$prefix ;;
6029         *) dflt=$installprefix;;
6030         esac
6031 fi
6032 fn=d~
6033 rp='What installation prefix should I use for installing files?'
6034 . ./getfile
6035 installprefix="$ans"
6036 installprefixexp="$ansexp"
6037
6038 : set the prefixit variable, to compute a suitable default value
6039 prefixit='case "$3" in
6040 ""|none)
6041         case "$oldprefix" in
6042         "") eval "$1=\"\$$2\"";;
6043         *)
6044                 case "$3" in
6045                 "") eval "$1=";;
6046                 none)
6047                         eval "tp=\"\$$2\"";
6048                         case "$tp" in
6049                         ""|" ") eval "$1=\"\$$2\"";;
6050                         *) eval "$1=";;
6051                         esac;;
6052                 esac;;
6053         esac;;
6054 *)
6055         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6056         case "$tp" in
6057         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6058         /*-$oldprefix/*|\~*-$oldprefix/*)
6059                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6060         *) eval "$1=\"\$$2\"";;
6061         esac;;
6062 esac'
6063
6064
6065 : get the patchlevel
6066 echo " "
6067 echo "Getting the current patchlevel..." >&4
6068 if $test -r $rsrc/patchlevel.h;then
6069         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6070         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6071         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6072         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6073         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6074         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6075        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6076 else
6077         revision=0
6078         patchlevel=0
6079         subversion=0
6080         api_revision=0
6081         api_version=0
6082         api_subversion=0
6083         perl_patchlevel=0
6084         $echo "(You do not have patchlevel.h.  Eek.)"
6085 fi
6086 if $test -r $rsrc/.patch ; then  
6087         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6088                 perl_patchlevel=`cat $rsrc/.patch`
6089         fi
6090 fi
6091 case "$perl_patchlevel" in
6092 0)  ;;
6093 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6094 *)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6095 esac
6096 case "$osname" in
6097 dos|vms)
6098         : XXX Should be a Configure test for double-dots in filenames.
6099         version=`echo $revision $patchlevel $subversion | \
6100                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6101         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6102                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6103         ;;
6104 *)
6105         version=`echo $revision $patchlevel $subversion | \
6106                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6107         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6109         ;;
6110 esac
6111 : Special case the 5.005_xx maintenance series, which used 5.005
6112 : without any subversion label as a subdirectory in $sitelib
6113 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6114         api_versionstring='5.005'
6115 fi
6116
6117 : determine installation style
6118 : For now, try to deduce it from prefix unless it is already set.
6119 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6120 case "$installstyle" in
6121 '')     case "$prefix" in
6122                 *perl*) dflt='lib';;
6123                 *) dflt='lib/perl5' ;;
6124         esac
6125         ;;
6126 *)      dflt="$installstyle" ;;
6127 esac
6128 : Probably not worth prompting for this since we prompt for all
6129 : the directories individually, and the prompt would be too long and
6130 : confusing anyway.
6131 installstyle=$dflt
6132
6133 : determine where private library files go
6134 : Usual default is /usr/local/lib/perl5/$version.
6135 : Also allow things like /opt/perl/lib/$version, since 
6136 : /opt/perl/lib/perl5... would be redundant.
6137 : The default "style" setting is made in installstyle.U
6138 case "$installstyle" in
6139 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6140 *)       set dflt privlib lib/$version ;;
6141 esac
6142 eval $prefixit
6143 $cat <<EOM
6144
6145 There are some auxiliary files for $package that need to be put into a
6146 private library directory that is accessible by everyone.
6147
6148 EOM
6149 fn=d~+
6150 rp='Pathname where the private library files will reside?'
6151 . ./getfile
6152 privlib="$ans"
6153 privlibexp="$ansexp"
6154 : Change installation prefix, if necessary.
6155 if $test X"$prefix" != X"$installprefix"; then
6156         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6157 else
6158         installprivlib="$privlibexp"
6159 fi
6160
6161 : set the prefixup variable, to restore leading tilda escape
6162 prefixup='case "$prefixexp" in
6163 "$prefix") ;;
6164 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6165 esac'
6166
6167 : determine where public architecture dependent libraries go
6168 set archlib archlib
6169 eval $prefixit
6170 : privlib default is /usr/local/lib/$package/$version
6171 : archlib default is /usr/local/lib/$package/$version/$archname
6172 : privlib may have an optional trailing /share.
6173 tdflt=`echo $privlib | $sed 's,/share$,,'`
6174 tdflt=$tdflt/$archname
6175 case "$archlib" in
6176 '')     dflt=$tdflt
6177         ;;
6178 *)      dflt="$archlib"
6179     ;;
6180 esac
6181 $cat <<EOM
6182
6183 $spackage contains architecture-dependent library files.  If you are
6184 sharing libraries in a heterogeneous environment, you might store
6185 these files in a separate location.  Otherwise, you can just include
6186 them with the rest of the public library files.
6187
6188 EOM
6189 fn=d+~
6190 rp='Where do you want to put the public architecture-dependent libraries?'
6191 . ./getfile
6192 archlib="$ans"
6193 archlibexp="$ansexp"
6194 if $test X"$archlib" = X"$privlib"; then
6195         d_archlib="$undef"
6196 else
6197         d_archlib="$define"
6198 fi
6199 : Change installation prefix, if necessary.
6200 if $test X"$prefix" != X"$installprefix"; then
6201         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6202 else
6203         installarchlib="$archlibexp"
6204 fi
6205
6206
6207 : Binary compatibility with 5.005 is not possible for builds
6208 : with advanced features
6209 case "$usethreads$usemultiplicity" in
6210 *define*)
6211         bincompat5005="$undef"
6212         d_bincompat5005="$undef"
6213         ;;
6214 *)      $cat <<EOM
6215
6216 This version of Perl can be compiled for binary compatibility with 5.005.
6217 If you decide to do so, you will be able to continue using most of the
6218 extensions that were compiled for Perl 5.005.
6219
6220 EOM
6221         case "$bincompat5005$d_bincompat5005" in
6222         *"$undef"*) dflt=n ;;
6223         *) dflt=y ;;
6224         esac
6225         rp='Binary compatibility with Perl 5.005?'
6226         . ./myread
6227         case "$ans" in
6228         y*) val="$define" ;;
6229         *)  val="$undef" ;;
6230         esac
6231         set d_bincompat5005
6232         eval $setvar
6233         case "$d_bincompat5005" in
6234         "$define")
6235                 bincompat5005="$define"
6236                 ;;
6237         *)      bincompat5005="$undef"
6238                 d_bincompat5005="$undef"
6239                 ;;
6240         esac
6241         ;;
6242 esac
6243
6244
6245 : see if setuid scripts can be secure
6246 $cat <<EOM
6247
6248 Some kernels have a bug that prevents setuid #! scripts from being
6249 secure.  Some sites have disabled setuid #! scripts because of this.
6250
6251 First let's decide if your kernel supports secure setuid #! scripts.
6252 (If setuid #! scripts would be secure but have been disabled anyway,
6253 don't say that they are secure if asked.)
6254
6255 EOM
6256
6257 val="$undef"
6258 if $test -d /dev/fd; then
6259         echo "#!$ls" >reflect
6260         chmod +x,u+s reflect
6261         ./reflect >flect 2>&1
6262         if $contains "/dev/fd" flect >/dev/null; then
6263                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6264                 val="$define"
6265         else
6266                 $cat <<EOM
6267 If you are not sure if they are secure, I can check but I'll need a
6268 username and password different from the one you are using right now.
6269 If you don't have such a username or don't want me to test, simply
6270 enter 'none'.
6271
6272 EOM
6273                 rp='Other username to test security of setuid scripts with?'
6274                 dflt='none'
6275                 . ./myread
6276                 case "$ans" in
6277                 n|none)
6278                         case "$d_suidsafe" in
6279                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6280                                 dflt=n;;
6281                         "$undef")
6282                                 echo "Well, the $hint value is *not* secure." >&4
6283                                 dflt=n;;
6284                         *)      echo "Well, the $hint value *is* secure." >&4
6285                                 dflt=y;;
6286                         esac
6287                         ;;
6288                 *)
6289                         $rm -f reflect flect
6290                         echo "#!$ls" >reflect
6291                         chmod +x,u+s reflect
6292                         echo >flect
6293                         chmod a+w flect
6294                         echo '"su" will (probably) prompt you for '"$ans's password."
6295                         su $ans -c './reflect >flect'
6296                         if $contains "/dev/fd" flect >/dev/null; then
6297                                 echo "Okay, it looks like setuid scripts are secure." >&4
6298                                 dflt=y
6299                         else
6300                                 echo "I don't think setuid scripts are secure." >&4
6301                                 dflt=n
6302                         fi
6303                         ;;
6304                 esac
6305                 rp='Does your kernel have *secure* setuid scripts?'
6306                 . ./myread
6307                 case "$ans" in
6308                 [yY]*)  val="$define";;
6309                 *)      val="$undef";;
6310                 esac
6311         fi
6312 else
6313         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6314         echo "(That's for file descriptors, not floppy disks.)"
6315         val="$undef"
6316 fi
6317 set d_suidsafe
6318 eval $setvar
6319
6320 $rm -f reflect flect
6321
6322 : now see if they want to do setuid emulation
6323 echo " "
6324 val="$undef"
6325 case "$d_suidsafe" in
6326 "$define")
6327         val="$undef"
6328         echo "No need to emulate SUID scripts since they are secure here." >& 4
6329         ;;
6330 *)
6331         $cat <<EOM
6332 Some systems have disabled setuid scripts, especially systems where
6333 setuid scripts cannot be secure.  On systems where setuid scripts have
6334 been disabled, the setuid/setgid bits on scripts are currently
6335 useless.  It is possible for $package to detect those bits and emulate
6336 setuid/setgid in a secure fashion.  This emulation will only work if
6337 setuid scripts have been disabled in your kernel.
6338
6339 EOM
6340         case "$d_dosuid" in
6341         "$define") dflt=y ;;
6342         *) dflt=n ;;
6343         esac
6344         rp="Do you want to do setuid/setgid emulation?"
6345         . ./myread
6346         case "$ans" in
6347         [yY]*)  val="$define";;
6348         *)      val="$undef";;
6349         esac
6350         ;;
6351 esac
6352 set d_dosuid
6353 eval $setvar
6354
6355 : see if this is a malloc.h system
6356 set malloc.h i_malloc
6357 eval $inhdr
6358
6359 : see if stdlib is available
6360 set stdlib.h i_stdlib
6361 eval $inhdr
6362
6363 : determine which malloc to compile in
6364 echo " "
6365 case "$usemymalloc" in
6366 [yY]*|true|$define)     dflt='y' ;;
6367 [nN]*|false|$undef)     dflt='n' ;;
6368 *)      case "$ptrsize" in
6369         4) dflt='y' ;;
6370         *) dflt='n' ;;
6371         esac
6372         ;;
6373 esac
6374 rp="Do you wish to attempt to use the malloc that comes with $package?"
6375 . ./myread
6376 usemymalloc="$ans"
6377 case "$ans" in
6378 y*|true)
6379         usemymalloc='y'
6380         mallocsrc='malloc.c'
6381         mallocobj="malloc$_o"
6382         d_mymalloc="$define"
6383         case "$libs" in
6384         *-lmalloc*)
6385                 : Remove malloc from list of libraries to use
6386                 echo "Removing unneeded -lmalloc from library list" >&4
6387                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6388                 shift
6389                 libs="$*"
6390                 echo "libs = $libs" >&4
6391                 ;;
6392         esac
6393         ;;
6394 *)
6395         usemymalloc='n'
6396         mallocsrc=''
6397         mallocobj=''
6398         d_mymalloc="$undef"
6399         ;;
6400 esac
6401
6402 : compute the return types of malloc and free
6403 echo " "
6404 $cat >malloc.c <<END
6405 #$i_malloc I_MALLOC
6406 #$i_stdlib I_STDLIB
6407 #include <stdio.h>
6408 #include <sys/types.h>
6409 #ifdef I_MALLOC
6410 #include <malloc.h>
6411 #endif
6412 #ifdef I_STDLIB
6413 #include <stdlib.h>
6414 #endif
6415 #ifdef TRY_MALLOC
6416 void *malloc();
6417 #endif
6418 #ifdef TRY_FREE
6419 void free();
6420 #endif
6421 END
6422 case "$malloctype" in
6423 '')
6424         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6425                 malloctype='void *'
6426         else
6427                 malloctype='char *'
6428         fi
6429         ;;
6430 esac
6431 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6432
6433 case "$freetype" in
6434 '')
6435         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6436                 freetype='void'
6437         else
6438                 freetype='int'
6439         fi
6440         ;;
6441 esac
6442 echo "Your system uses $freetype free(), it would seem." >&4
6443 $rm -f malloc.[co]
6444 $cat <<EOM
6445
6446 After $package is installed, you may wish to install various
6447 add-on modules and utilities.  Typically, these add-ons will
6448 be installed under $prefix with the rest
6449 of this package.  However, you may wish to install such add-ons
6450 elsewhere under a different prefix.
6451
6452 If you do not wish to put everything under a single prefix, that's
6453 ok.  You will be prompted for the individual locations; this siteprefix
6454 is only used to suggest the defaults.
6455
6456 The default should be fine for most people.
6457
6458 EOM
6459 fn=d~+
6460 rp='Installation prefix to use for add-on modules and utilities?'
6461 : XXX Here might be another good place for an installstyle setting.
6462 case "$siteprefix" in
6463 '') dflt=$prefix ;;
6464 *)  dflt=$siteprefix ;;
6465 esac
6466 . ./getfile
6467 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6468 oldsiteprefix=''
6469 case "$siteprefix" in
6470 '') ;;
6471 *)      case "$ans" in
6472         "$prefix") ;;
6473         *) oldsiteprefix="$prefix";;
6474         esac
6475         ;;
6476 esac
6477 siteprefix="$ans"
6478 siteprefixexp="$ansexp"
6479
6480 : determine where site specific libraries go.
6481 : Usual default is /usr/local/lib/perl5/site_perl/$version
6482 : The default "style" setting is made in installstyle.U
6483 : XXX No longer works with Prefixit stuff.
6484 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6485 case "$sitelib" in
6486 '') case "$installstyle" in
6487         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6488         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6489         esac
6490         ;;
6491 *)      dflt="$sitelib"
6492         ;;
6493 esac
6494 $cat <<EOM
6495
6496 The installation process will create a directory for
6497 site-specific extensions and modules.  Most users find it convenient
6498 to place all site-specific files in this directory rather than in the
6499 main distribution directory.
6500
6501 EOM
6502 fn=d~+
6503 rp='Pathname for the site-specific library files?'
6504 . ./getfile
6505 sitelib="$ans"
6506 sitelibexp="$ansexp"
6507 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6508 : Change installation prefix, if necessary.
6509 if $test X"$prefix" != X"$installprefix"; then
6510         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6511 else
6512         installsitelib="$sitelibexp"
6513 fi
6514
6515 : determine where site specific architecture-dependent libraries go.
6516 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6517 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6518 : sitelib may have an optional trailing /share.
6519 case "$sitearch" in
6520 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6521         dflt="$dflt/$archname"
6522         ;;
6523 *)      dflt="$sitearch"
6524         ;;
6525 esac
6526 set sitearch sitearch none
6527 eval $prefixit
6528 $cat <<EOM
6529
6530 The installation process will also create a directory for
6531 architecture-dependent site-specific extensions and modules.
6532
6533 EOM
6534 fn=d~+
6535 rp='Pathname for the site-specific architecture-dependent library files?'
6536 . ./getfile
6537 sitearch="$ans"
6538 sitearchexp="$ansexp"
6539 : Change installation prefix, if necessary.
6540 if $test X"$prefix" != X"$installprefix"; then
6541         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6542 else
6543         installsitearch="$sitearchexp"
6544 fi
6545
6546 $cat <<EOM
6547
6548 The installation process will also create a directory for
6549 vendor-supplied add-ons.  Vendors who supply perl with their system
6550 may find it convenient to place all vendor-supplied files in this
6551 directory rather than in the main distribution directory.  This will
6552 ease upgrades between binary-compatible maintenance versions of perl.
6553
6554 Of course you may also use these directories in whatever way you see
6555 fit.  For example, you might use them to access modules shared over a
6556 company-wide network.
6557
6558 The default answer should be fine for most people.
6559 This causes further questions about vendor add-ons to be skipped
6560 and no vendor-specific directories will be configured for perl.
6561
6562 EOM
6563 rp='Do you want to configure vendor-specific add-on directories?'
6564 case "$usevendorprefix" in
6565 define|true|[yY]*) dflt=y ;;
6566 *)      : User may have set vendorprefix directly on Configure command line.
6567         case "$vendorprefix" in
6568         ''|' ') dflt=n ;;
6569         *)      dflt=y ;;
6570         esac
6571         ;;
6572 esac
6573 . ./myread
6574 case "$ans" in
6575 [yY]*)  fn=d~+
6576         rp='Installation prefix to use for vendor-supplied add-ons?'
6577         case "$vendorprefix" in
6578         '') dflt='' ;;
6579         *)  dflt=$vendorprefix ;;
6580         esac
6581         . ./getfile
6582         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6583         oldvendorprefix=''
6584         case "$vendorprefix" in
6585         '') ;;
6586         *)      case "$ans" in
6587                 "$prefix") ;;
6588                 *) oldvendorprefix="$prefix";;
6589                 esac
6590                 ;;
6591         esac
6592         usevendorprefix="$define"
6593         vendorprefix="$ans"
6594         vendorprefixexp="$ansexp"
6595         ;;
6596 *)      usevendorprefix="$undef"
6597         vendorprefix=''
6598         vendorprefixexp=''
6599         ;;
6600 esac
6601
6602 case "$vendorprefix" in
6603 '')     d_vendorlib="$undef"
6604         vendorlib=''
6605         vendorlibexp=''
6606         ;;
6607 *)      d_vendorlib="$define"
6608         : determine where vendor-supplied modules go.
6609         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6610         case "$vendorlib" in
6611         '')
6612                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6613                 case "$installstyle" in
6614                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6615                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6616                 esac
6617                 ;;
6618         *)      dflt="$vendorlib"
6619                 ;;
6620         esac
6621         fn=d~+
6622         rp='Pathname for the vendor-supplied library files?'
6623         . ./getfile
6624         vendorlib="$ans"
6625         vendorlibexp="$ansexp"
6626         ;;
6627 esac
6628 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6629 : Change installation prefix, if necessary.
6630 if $test X"$prefix" != X"$installprefix"; then
6631         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6632 else
6633         installvendorlib="$vendorlibexp"
6634 fi
6635
6636 case "$vendorprefix" in
6637 '')     d_vendorarch="$undef"
6638         vendorarch=''
6639         vendorarchexp=''
6640         ;;
6641 *)      d_vendorarch="$define"
6642         : determine where vendor-supplied architecture-dependent libraries go.
6643         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6644         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6645         : vendorlib may have an optional trailing /share.
6646         case "$vendorarch" in
6647         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6648                 dflt="$dflt/$archname"
6649                 ;;
6650         *)      dflt="$vendorarch" ;;
6651         esac
6652         fn=d~+
6653         rp='Pathname for vendor-supplied architecture-dependent files?'
6654         . ./getfile
6655         vendorarch="$ans"
6656         vendorarchexp="$ansexp"
6657         ;;
6658 esac
6659 : Change installation prefix, if necessary.
6660 if $test X"$prefix" != X"$installprefix"; then
6661         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6662 else
6663         installvendorarch="$vendorarchexp"
6664 fi
6665
6666 : Final catch-all directories to search
6667 $cat <<EOM
6668
6669 Lastly, you can have perl look in other directories for extensions and
6670 modules in addition to those already specified.
6671 These directories will be searched after 
6672         $sitearch 
6673         $sitelib 
6674 EOM
6675 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6676 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6677 echo ' '
6678 case "$otherlibdirs" in
6679 ''|' ') dflt='none' ;;
6680 *)      dflt="$otherlibdirs" ;;
6681 esac
6682 $cat <<EOM
6683 Enter a colon-separated set of extra paths to include in perl's @INC
6684 search path, or enter 'none' for no extra paths.
6685
6686 EOM
6687
6688 rp='Colon-separated list of additional directories for perl to search?'
6689 . ./myread
6690 case "$ans" in
6691 ' '|''|none)    otherlibdirs=' ' ;;     
6692 *)      otherlibdirs="$ans" ;;
6693 esac
6694 case "$otherlibdirs" in
6695 ' ') val=$undef ;;
6696 *)      val=$define ;;
6697 esac
6698 set d_perl_otherlibdirs
6699 eval $setvar
6700
6701 : Cruising for prototypes
6702 echo " "
6703 echo "Checking out function prototypes..." >&4
6704 $cat >prototype.c <<'EOCP'
6705 int main(int argc, char *argv[]) {
6706         exit(0);}
6707 EOCP
6708 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6709         echo "Your C compiler appears to support function prototypes."
6710         val="$define"
6711 else
6712         echo "Your C compiler doesn't seem to understand function prototypes."
6713         val="$undef"
6714 fi
6715 set prototype
6716 eval $setvar
6717 $rm -f prototype*
6718
6719 case "$prototype" in
6720 "$define") ;;
6721 *)      ansi2knr='ansi2knr'
6722         echo " "
6723         cat <<EOM >&4
6724
6725 $me:  FATAL ERROR:
6726 This version of $package can only be compiled by a compiler that 
6727 understands function prototypes.  Unfortunately, your C compiler 
6728         $cc $ccflags
6729 doesn't seem to understand them.  Sorry about that.
6730
6731 If GNU cc is available for your system, perhaps you could try that instead.  
6732
6733 Eventually, we hope to support building Perl with pre-ANSI compilers.
6734 If you would like to help in that effort, please contact <perlbug@perl.org>.
6735
6736 Aborting Configure now.
6737 EOM
6738         exit 2
6739         ;;
6740 esac
6741
6742 : determine where public executables go
6743 echo " "
6744 set dflt bin bin
6745 eval $prefixit
6746 fn=d~
6747 rp='Pathname where the public executables will reside?'
6748 . ./getfile
6749 if $test "X$ansexp" != "X$binexp"; then
6750         installbin=''
6751 fi
6752 bin="$ans"
6753 binexp="$ansexp"
6754 : Change installation prefix, if necessary.
6755 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6756 if $test X"$prefix" != X"$installprefix"; then
6757         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6758 else
6759         installbin="$binexp"
6760 fi
6761
6762 : Find perl5.005 or later.
6763 echo "Looking for a previously installed perl5.005 or later... "
6764 case "$perl5" in
6765 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6766                 : Check if this perl is recent and can load a simple module
6767                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6768                         perl5=$tdir/perl
6769                         break;
6770                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6771                         perl5=$tdir/perl5
6772                         break;
6773                 fi
6774         done
6775         ;;
6776 *)      perl5="$perl5"
6777         ;;
6778 esac
6779 case "$perl5" in
6780 '')     echo "None found.  That's ok.";;
6781 *)      echo "Using $perl5." ;;
6782 esac
6783
6784 : Determine list of previous versions to include in @INC
6785 $cat > getverlist <<EOPL
6786 #!$perl5 -w
6787 use File::Basename;
6788 \$api_versionstring = "$api_versionstring";
6789 \$version = "$version";
6790 \$stem = "$sitelib_stem";
6791 \$archname = "$archname";
6792 EOPL
6793         $cat >> getverlist <<'EOPL'
6794 # Can't have leading @ because metaconfig interprets it as a command!
6795 ;@inc_version_list=();
6796 # XXX Redo to do opendir/readdir? 
6797 if (-d $stem) {
6798     chdir($stem);
6799     ;@candidates = glob("5.*");
6800 }
6801 else {
6802     ;@candidates = ();
6803 }
6804
6805 # XXX ToDo:  These comparisons must be reworked when two-digit
6806 # subversions come along, so that 5.7.10 compares as greater than
6807 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6808 # widespread that we can use the built-in version vectors rather
6809 # than reinventing them here.  For 5.6.0, however, we must
6810 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6811 foreach $d (@candidates) {
6812     if ($d lt $version) {
6813         if ($d ge $api_versionstring) {
6814             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6815         }
6816         elsif ($d ge "5.005") {
6817             unshift(@inc_version_list, grep { -d } $d);
6818         }
6819     }
6820     else {
6821         # Skip newer version.  I.e. don't look in
6822         # 5.7.0 if we're installing 5.6.1.
6823     }
6824 }
6825
6826 if (@inc_version_list) {
6827     print join(' ', @inc_version_list);
6828 }
6829 else {
6830     # Blank space to preserve value for next Configure run.
6831     print " ";
6832 }
6833 EOPL
6834 chmod +x getverlist
6835 case "$inc_version_list" in
6836 '')     if test -x "$perl5$exe_ext"; then
6837                 dflt=`$perl5 getverlist`
6838         else
6839                 dflt='none'
6840         fi
6841         ;;
6842 $undef) dflt='none' ;;
6843 *)  eval dflt=\"$inc_version_list\" ;;
6844 esac
6845 case "$dflt" in
6846 ''|' ') dflt=none ;;
6847 esac
6848 case "$dflt" in
6849 5.005) case "$bincompat5005" in
6850        $define|true|[yY]*) ;;
6851        *) dflt=none ;;
6852        esac
6853        ;;
6854 esac
6855 $cat <<'EOM'
6856
6857 In order to ease the process of upgrading, this version of perl 
6858 can be configured to use modules built and installed with earlier 
6859 versions of perl that were installed under $prefix.  Specify here
6860 the list of earlier versions that this version of perl should check.
6861 If Configure detected no earlier versions of perl installed under
6862 $prefix, then the list will be empty.  Answer 'none' to tell perl
6863 to not search earlier versions.
6864
6865 The default should almost always be sensible, so if you're not sure,
6866 just accept the default.
6867 EOM
6868
6869 rp='List of earlier versions to include in @INC?'
6870 . ./myread
6871 case "$ans" in
6872 [Nn]one|''|' ') inc_version_list=' ' ;;
6873 *) inc_version_list="$ans" ;;
6874 esac
6875 case "$inc_version_list" in
6876 ''|' ') 
6877         inc_version_list_init='0';;
6878 *)      inc_version_list_init=`echo $inc_version_list |
6879                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6880         ;;
6881 esac
6882 $rm -f getverlist
6883
6884 : determine whether to install perl also as /usr/bin/perl
6885
6886 echo " "
6887 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6888         $cat <<EOM
6889 Many scripts expect perl to be installed as /usr/bin/perl.
6890 I can install the perl you are about to compile also as /usr/bin/perl
6891 (in addition to $installbin/perl).
6892 EOM
6893         case "$installusrbinperl" in
6894         "$undef"|[nN]*) dflt='n';;
6895         *)              dflt='y';;
6896         esac
6897         rp="Do you want to install perl as /usr/bin/perl?"
6898         . ./myread
6899         case "$ans" in
6900         [yY]*)  val="$define";;
6901         *)      val="$undef" ;;
6902         esac
6903 else
6904         val="$undef"
6905 fi
6906 set installusrbinperl
6907 eval $setvar
6908
6909 : see if dld is available
6910 set dld.h i_dld
6911 eval $inhdr
6912
6913 : see if dlopen exists
6914 xxx_runnm="$runnm"
6915 runnm=false
6916 set dlopen d_dlopen
6917 eval $inlibc
6918 runnm="$xxx_runnm"
6919
6920 : determine which dynamic loading, if any, to compile in
6921 echo " "
6922 dldir="ext/DynaLoader"
6923 case "$usedl" in
6924 $define|y|true)
6925         dflt='y'
6926         usedl="$define"
6927         ;;
6928 $undef|n|false)
6929         dflt='n'
6930         usedl="$undef"
6931         ;;
6932 *) 
6933         dflt='n'
6934         case "$d_dlopen" in
6935             $define) dflt='y' ;;
6936         esac
6937         case "$i_dld" in
6938             $define) dflt='y' ;;
6939         esac
6940         : Does a dl_xxx.xs file exist for this operating system
6941         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6942         ;;
6943 esac
6944 rp="Do you wish to use dynamic loading?"
6945 . ./myread
6946 usedl="$ans"
6947 case "$ans" in
6948 y*) usedl="$define"
6949         case "$dlsrc" in
6950         '')
6951                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6952                         dflt="$dldir/dl_${osname}.xs"
6953                 elif $test "$d_dlopen" = "$define" ; then
6954                         dflt="$dldir/dl_dlopen.xs"
6955                 elif $test "$i_dld" = "$define" ; then
6956                         dflt="$dldir/dl_dld.xs"
6957                 else
6958                         dflt=''
6959                 fi
6960                 ;;
6961         *)      dflt="$dldir/$dlsrc"
6962                 ;;
6963         esac
6964     echo "The following dynamic loading files are available:"
6965         : Can not go over to $dldir because getfile has path hard-coded in.
6966         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6967         rp="Source file to use for dynamic loading"
6968         fn="fne"
6969         gfpth="$src"
6970         . ./getfile
6971         usedl="$define"
6972         : emulate basename
6973         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6974
6975         $cat << EOM
6976
6977 Some systems may require passing special flags to $cc -c to
6978 compile modules that will be used to create a shared library.
6979 To use no flags, say "none".
6980
6981 EOM
6982     case "$cccdlflags" in
6983     '') case "$gccversion" in
6984                 '') case "$osname" in
6985                         hpux)   dflt='+z' ;;
6986                         next)   dflt='none' ;;
6987                         irix*)  dflt='-KPIC' ;;
6988                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6989                         sunos)  dflt='-pic' ;;
6990                         *)      dflt='none' ;;
6991                     esac
6992                         ;;
6993                 *)  case "$osname" in
6994                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6995                         *)      dflt='-fpic' ;;
6996                     esac ;;
6997             esac ;;
6998         ' ') dflt='none' ;;
6999     *)  dflt="$cccdlflags" ;;
7000     esac
7001     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7002     . ./myread
7003     case "$ans" in
7004     none) cccdlflags=' ' ;;
7005     *) cccdlflags="$ans" ;;
7006     esac
7007
7008     cat << EOM
7009
7010 Some systems use ld to create libraries that can be dynamically loaded,
7011 while other systems (such as those using ELF) use $cc.
7012
7013 EOM
7014         case "$ld" in
7015         '')     $cat >try.c <<'EOM'
7016 /* Test for whether ELF binaries are produced */
7017 #include <fcntl.h>
7018 #include <stdlib.h>
7019 int main() {
7020         char b[4];
7021         int i = open("a.out",O_RDONLY);
7022         if(i == -1) 
7023                 exit(1); /* fail */
7024         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7025                 exit(0); /* succeed (yes, it's ELF) */
7026         else
7027                 exit(1); /* fail */
7028 }
7029 EOM
7030                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7031                         cat <<EOM
7032 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7033 EOM
7034                         dflt="$cc"
7035                 else
7036                         echo "I'll use ld to build dynamic libraries."
7037                         dflt='ld'
7038                 fi
7039                 rm -f try.c a.out
7040                 ;;
7041         *)      dflt="$ld"
7042                 ;;
7043         esac
7044
7045     rp="What command should be used to create dynamic libraries?"
7046     . ./myread
7047         ld="$ans"
7048
7049     cat << EOM
7050
7051 Some systems may require passing special flags to $ld to create a
7052 library that can be dynamically loaded.  If your ld flags include
7053 -L/other/path options to locate libraries outside your loader's normal
7054 search path, you may need to specify those -L options here as well.  To
7055 use no flags, say "none".
7056
7057 EOM
7058     case "$lddlflags" in
7059     '') case "$osname" in
7060                         beos) dflt='-nostart' ;;
7061                         hpux) dflt='-b';
7062                               case "$gccversion" in
7063                               '') dflt="$dflt +vnocompatwarnings" ;;
7064                               esac
7065                               ;;        
7066                         linux|irix*)    dflt='-shared' ;;
7067                         next)  dflt='none' ;;
7068                         solaris) dflt='-G' ;;
7069                         sunos) dflt='-assert nodefinitions' ;;
7070                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7071                 *)     dflt='none' ;;
7072                         esac
7073                         ;;
7074     *) dflt="$lddlflags" ;;
7075     esac
7076
7077         : Try to guess additional flags to pick up local libraries.
7078         : Be careful not to append to a plain 'none'
7079         case "$dflt" in
7080         none) dflt='' ;;
7081         esac
7082         for thisflag in $ldflags; do
7083                 case "$thisflag" in
7084                 -L*|-R*)
7085                         case " $dflt " in
7086                         *" $thisflag "*) ;;
7087                         *) dflt="$dflt $thisflag" ;;
7088                         esac
7089                         ;;
7090                 esac
7091         done
7092
7093         case "$dflt" in
7094         ''|' ') dflt='none' ;;
7095         esac
7096
7097     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7098     . ./myread
7099     case "$ans" in
7100     none) lddlflags=' ' ;;
7101     *) lddlflags="$ans" ;;
7102     esac
7103
7104         cat <<EOM
7105
7106 Some systems may require passing special flags to $cc to indicate that
7107 the resulting executable will use dynamic linking.  To use no flags,
7108 say "none".
7109
7110 EOM
7111     case "$ccdlflags" in
7112     '') case "$osname" in
7113                 hpux)   dflt='-Wl,-E' ;;
7114                 linux)  dflt='-rdynamic' ;;
7115                 next)   dflt='none' ;;
7116                 sunos)  dflt='none' ;;
7117                 *)      dflt='none' ;;
7118             esac ;;
7119     ' ')  dflt='none' ;;
7120     *)  dflt="$ccdlflags" ;;
7121     esac
7122     rp="Any special flags to pass to $cc to use dynamic linking?"
7123     . ./myread
7124     case "$ans" in
7125     none) ccdlflags=' ' ;;
7126     *) ccdlflags="$ans" ;;
7127     esac
7128     ;;
7129 *)  usedl="$undef"
7130         ld='ld'
7131     dlsrc='dl_none.xs'
7132     lddlflags=''
7133     ccdlflags=''
7134     ;;
7135 esac
7136
7137 also=''
7138 case "$usedl" in
7139 $undef)
7140         # No dynamic loading being used, so don't bother even to prompt.
7141         useshrplib='false'
7142         ;;
7143 *)      case "$useshrplib" in
7144         '')     case "$osname" in
7145                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7146                         dflt=y
7147                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7148                         ;;
7149                 next*)
7150                         case "$osvers" in
7151                         4*)     dflt=y
7152                                 also='Building a shared libperl is needed for MAB support.'
7153                                 ;;
7154                         *)      dflt=n
7155                                 ;;
7156                         esac
7157                         ;;
7158                 *)      dflt=n
7159                         ;;
7160                 esac
7161                 ;;
7162         $define|true|[Yy]*)
7163                 dflt=y
7164                 ;;
7165         *)      dflt=n
7166                 ;;
7167         esac
7168         $cat << EOM
7169
7170 The perl executable is normally obtained by linking perlmain.c with
7171 libperl${_a}, any static extensions (usually just DynaLoader), and
7172 any other libraries needed on this system (such as -lm, etc.).  Since
7173 your system supports dynamic loading, it is probably possible to build
7174 a shared libperl.$so.  If you will have more than one executable linked
7175 to libperl.$so, this will significantly reduce the size of each
7176 executable, but it may have a noticeable affect on performance.  The
7177 default is probably sensible for your system.
7178 $also
7179
7180 EOM
7181         rp="Build a shared libperl.$so (y/n)"
7182         . ./myread
7183         case "$ans" in
7184         true|$define|[Yy]*)
7185                 useshrplib='true'  ;;
7186         *)      useshrplib='false' ;;
7187         esac
7188         ;;
7189 esac
7190
7191 case "$useshrplib" in
7192 true)
7193         case "$libperl" in
7194         '')
7195                 # Figure out a good name for libperl.so.  Since it gets stored in
7196                 # a version-specific architecture-dependent library, the version
7197                 # number isn't really that important, except for making cc/ld happy.
7198                 #
7199                 # A name such as libperl.so.3.1
7200                 majmin="libperl.$so.$patchlevel.$subversion"
7201                 # A name such as libperl.so.301
7202                 majonly=`echo $patchlevel $subversion |
7203                         $awk '{printf "%d%02d", $1, $2}'`
7204                 majonly=libperl.$so.$majonly
7205                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7206                 # rely on figuring it out from the naming of libc.
7207                 case "${osname}${osvers}" in
7208                 next4*)
7209                         dflt=libperl.5.$so
7210                         # XXX How handle the --version stuff for MAB?
7211                         ;;
7212                 linux*)  # ld won't link with a bare -lperl otherwise.
7213                         dflt=libperl.$so
7214                         ;;
7215                 cygwin*) # include version
7216                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7217                         ;;
7218                 *)      # Try to guess based on whether libc has major.minor.
7219                         case "$libc" in
7220                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7221                         *libc.$so.[0-9]*) dflt=$majonly ;;
7222                         *)      dflt=libperl.$so ;;
7223                         esac
7224                         ;;
7225                 esac
7226                 ;;
7227         *)      dflt=$libperl
7228                 ;;
7229         esac
7230         cat << EOM
7231
7232 I need to select a good name for the shared libperl.  If your system uses
7233 library names with major and minor numbers, then you might want something
7234 like $majmin.  Alternatively, if your system uses a single version
7235 number for shared libraries, then you might want to use $majonly.
7236 Or, your system might be quite happy with a simple libperl.$so.
7237
7238 Since the shared libperl will get installed into a version-specific
7239 architecture-dependent directory, the version number of the shared perl
7240 library probably isn't important, so the default should be o.k.
7241
7242 EOM
7243         rp='What name do you want to give to the shared libperl?'
7244         . ./myread
7245         libperl=$ans
7246         echo "Ok, I'll use $libperl"
7247         ;;
7248 *)
7249         libperl="libperl${_a}"
7250         ;;
7251 esac
7252
7253 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7254 case "$shrpdir" in
7255 '') ;;
7256 *)      $cat >&4 <<EOM
7257 WARNING:  Use of the shrpdir variable for the installation location of
7258 the shared $libperl is not supported.  It was never documented and
7259 will not work in this version.  Let me (perlbug@perl.org)
7260 know of any problems this may cause.
7261
7262 EOM
7263         case "$shrpdir" in
7264         "$archlibexp/CORE")
7265                 $cat >&4 <<EOM
7266 But your current setting of $shrpdir is
7267 the default anyway, so it's harmless.
7268 EOM
7269                 ;;
7270         *)
7271                 $cat >&4 <<EOM
7272 Further, your current attempted setting of $shrpdir
7273 conflicts with the value of $archlibexp/CORE
7274 that installperl will use.
7275 EOM
7276                 ;;
7277         esac
7278         ;;
7279 esac
7280
7281 # How will the perl executable find the installed shared $libperl?
7282 # Add $xxx to ccdlflags.
7283 # If we can't figure out a command-line option, use $shrpenv to
7284 # set env LD_RUN_PATH.  The main perl makefile uses this.
7285 shrpdir=$archlibexp/CORE
7286 xxx=''
7287 tmp_shrpenv=''
7288 if "$useshrplib"; then
7289     case "$osname" in 
7290         aix)
7291                 # We'll set it in Makefile.SH...
7292                 ;;
7293         solaris|netbsd)
7294                 xxx="-R $shrpdir"
7295                 ;;
7296         freebsd)
7297                 xxx="-Wl,-R$shrpdir"
7298                 ;;
7299         linux|irix*|dec_osf)
7300                 xxx="-Wl,-rpath,$shrpdir"
7301                 ;;
7302         next)
7303                 # next doesn't like the default...
7304                 ;;
7305         beos)
7306                 # beos doesn't like the default, either.
7307                 ;;
7308         hpux*)
7309                 # hpux doesn't like the default, either.
7310                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7311                 ;;
7312         *)
7313                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7314                 ;;
7315         esac
7316         case "$xxx" in
7317         '') ;;
7318         *)      
7319                 # Only add $xxx if it isn't already in ccdlflags.
7320                 case " $ccdlflags " in
7321                 *" $xxx "*)     ;;
7322                 *)      ccdlflags="$ccdlflags $xxx"
7323                         cat <<EOM >&4
7324
7325 Adding $xxx to the flags
7326 passed to $ld so that the perl executable will find the 
7327 installed shared $libperl.
7328
7329 EOM
7330                         ;;
7331                 esac
7332                 ;;
7333         esac
7334 fi
7335 # Fix ccdlflags in AIX for building external extensions.
7336 # (For building Perl itself bare -bE:perl.exp is needed,
7337 #  Makefile.SH takes care of this.)
7338 case "$osname" in
7339 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7340 esac
7341 # Respect a hint or command-line value.
7342 case "$shrpenv" in
7343 '') shrpenv="$tmp_shrpenv" ;;
7344 esac
7345 case "$ldlibpthname" in
7346 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7347 none)   ldlibpthname='' ;;
7348 esac
7349
7350 : determine where manual pages are on this system
7351 echo " "
7352 case "$sysman" in
7353 '') 
7354         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7355         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7356         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7357         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7358         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7359         sysman=`./loc . /usr/man/man1 $syspath`
7360         ;;
7361 esac
7362 if $test -d "$sysman"; then
7363         echo "System manual is in $sysman." >&4
7364 else
7365         echo "Could not find manual pages in source form." >&4
7366 fi
7367
7368 : determine where manual pages go
7369 set man1dir man1dir none
7370 eval $prefixit
7371 $cat <<EOM
7372
7373 $spackage has manual pages available in source form.
7374 EOM
7375 case "$nroff" in
7376 nroff)
7377         echo "However, you don't have nroff, so they're probably useless to you."
7378         case "$man1dir" in
7379         '') man1dir="none";;
7380         esac;;
7381 esac
7382 echo "If you don't want the manual sources installed, answer 'none'."
7383 case "$man1dir" in
7384 ' ') dflt=none
7385         ;;
7386 '')
7387         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7388         lookpath="$lookpath $prefixexp/man/p_man/man1"
7389         lookpath="$lookpath $prefixexp/man/u_man/man1"
7390         lookpath="$lookpath $prefixexp/man/man.1"
7391         case "$sysman" in
7392         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7393         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7394         esac
7395         set dflt
7396         eval $prefixup
7397         ;;
7398 *)  dflt="$man1dir"
7399         ;;
7400 esac
7401 echo " "
7402 fn=dn+~
7403 rp="Where do the main $spackage manual pages (source) go?"
7404 . ./getfile
7405 if $test "X$man1direxp" != "X$ansexp"; then
7406         installman1dir=''
7407 fi
7408 man1dir="$ans"
7409 man1direxp="$ansexp"
7410 case "$man1dir" in
7411 '')     man1dir=' '
7412         installman1dir='';;
7413 esac
7414
7415 : Change installation prefix, if necessary.
7416 if $test X"$prefix" != X"$installprefix"; then
7417         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7418 else
7419         installman1dir="$man1direxp"
7420 fi
7421
7422 : What suffix to use on installed man pages
7423
7424 case "$man1dir" in
7425 ' ')
7426         man1ext='0'
7427         ;;
7428 *)
7429         rp="What suffix should be used for the main $spackage man pages?"
7430         case "$man1ext" in
7431         '')     case "$man1dir" in
7432                 *1)  dflt=1 ;;
7433                 *1p) dflt=1p ;;
7434                 *1pm) dflt=1pm ;;
7435                 *l) dflt=l;;
7436                 *n) dflt=n;;
7437                 *o) dflt=o;;
7438                 *p) dflt=p;;
7439                 *C) dflt=C;;
7440                 *L) dflt=L;;
7441                 *L1) dflt=L1;;
7442                 *) dflt=1;;
7443                 esac
7444                 ;;
7445         *)      dflt="$man1ext";;
7446         esac
7447         . ./myread
7448         man1ext="$ans"
7449         ;;
7450 esac
7451
7452 : see if we can have long filenames
7453 echo " "
7454 first=123456789abcdef
7455 $rm -f $first
7456 if (echo hi >$first) 2>/dev/null; then
7457         if $test -f 123456789abcde; then
7458                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7459                 val="$undef"
7460         else
7461                 echo 'You can have filenames longer than 14 characters.'>&4
7462                 val="$define"
7463         fi
7464 else
7465         $cat <<'EOM'
7466 You can't have filenames longer than 14 chars.
7467 You can't even think about them!
7468 EOM
7469         val="$undef"
7470 fi 
7471 set d_flexfnam
7472 eval $setvar
7473 $rm -rf 123456789abcde*
7474
7475 : determine where library module manual pages go
7476 set man3dir man3dir none
7477 eval $prefixit
7478 $cat <<EOM
7479
7480 $spackage has manual pages for many of the library modules.
7481 EOM
7482
7483 case "$nroff" in
7484 nroff)
7485         $cat <<'EOM'
7486 However, you don't have nroff, so they're probably useless to you.
7487 EOM
7488         case "$man3dir" in
7489         '') man3dir="none";;
7490         esac;;
7491 esac
7492
7493 case "$d_flexfnam" in
7494 undef)
7495         $cat <<'EOM'
7496 However, your system can't handle the long file names like File::Basename.3. 
7497 EOM
7498         case "$man3dir" in
7499         '') man3dir="none";;
7500         esac;;
7501 esac
7502
7503 echo "If you don't want the manual sources installed, answer 'none'."
7504 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7505 case "$man3dir" in
7506 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7507         if $test -d "$privlib/man/man3"; then
7508                 cat <<EOM >&4
7509
7510 WARNING:  Previous versions of perl installed man3 pages into
7511 $privlib/man/man3.  This version will suggest a 
7512 new default of $dflt.  
7513 EOM
7514                 tdflt=$dflt
7515                 dflt='n'
7516                 rp='Do you wish to preserve the old behavior?(y/n)'
7517                 . ./myread
7518                 case "$ans" in
7519                 y*) dflt="$privlib/man/man3" ;;
7520                 *)  dflt=$tdflt ;;
7521                 esac
7522     fi
7523         ;;
7524 *)      dflt="$man3dir" ;;
7525 esac
7526 case "$dflt" in
7527 ' ') dflt=none ;;
7528 esac
7529 echo " "
7530 fn=dn+~
7531 rp="Where do the $package library man pages (source) go?"
7532 . ./getfile
7533 man3dir="$ans"
7534 man3direxp="$ansexp"
7535 case "$man3dir" in
7536 '')     man3dir=' '
7537         installman3dir='';;
7538 esac
7539
7540 : Change installation prefix, if necessary.
7541 if $test X"$prefix" != X"$installprefix"; then
7542         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7543 else
7544         installman3dir="$man3direxp"
7545 fi
7546
7547 : What suffix to use on installed man pages
7548 case "$man3dir" in
7549 ' ')
7550         man3ext='0'
7551         ;;
7552 *)
7553         rp="What suffix should be used for the $package library man pages?"
7554         case "$man3ext" in
7555         '')     case "$man3dir" in
7556                 *3)  dflt=3 ;;
7557                 *3p) dflt=3p ;;
7558                 *3pm) dflt=3pm ;;
7559                 *l) dflt=l;;
7560                 *n) dflt=n;;
7561                 *o) dflt=o;;
7562                 *p) dflt=p;;
7563                 *C) dflt=C;;
7564                 *L) dflt=L;;
7565                 *L3) dflt=L3;;
7566                 *) dflt=3;;
7567                 esac
7568                 ;;
7569         *)      dflt="$man3ext";;
7570         esac
7571         . ./myread
7572         man3ext="$ans"
7573         ;;
7574 esac
7575
7576 : see if we have to deal with yellow pages, now NIS.
7577 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7578         if $test -f /usr/etc/nibindd; then
7579                 echo " "
7580                 echo "I'm fairly confident you're on a NeXT."
7581                 echo " "
7582                 rp='Do you get the hosts file via NetInfo?'
7583                 dflt=y
7584                 case "$hostcat" in
7585                 nidump*) ;;
7586                 '') ;;
7587                 *) dflt=n;;
7588                 esac
7589                 . ./myread
7590                 case "$ans" in
7591                 y*) hostcat='nidump hosts .';;
7592                 *)      case "$hostcat" in
7593                         nidump*) hostcat='';;
7594                         esac
7595                         ;;
7596                 esac
7597         fi
7598         case "$hostcat" in
7599         nidump*) ;;
7600         *)
7601                 case "$hostcat" in
7602                 *ypcat*) dflt=y;;
7603                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7604                                 dflt=y
7605                         else
7606                                 dflt=n
7607                         fi;;
7608                 *) dflt=n;;
7609                 esac
7610                 echo " "
7611                 rp='Are you getting the hosts file via yellow pages?'
7612                 . ./myread
7613                 case "$ans" in
7614                 y*) hostcat='ypcat hosts';;
7615                 *) hostcat='cat /etc/hosts';;
7616                 esac
7617                 ;;
7618         esac
7619 fi
7620 case "$hostcat" in
7621 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7622 esac
7623 case "$groupcat" in
7624 '') test -f /etc/group && groupcat='cat /etc/group';;
7625 esac
7626 case "$passcat" in
7627 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7628 esac
7629
7630 : now get the host name
7631 echo " "
7632 echo "Figuring out host name..." >&4
7633 case "$myhostname" in
7634 '') cont=true
7635         echo 'Maybe "hostname" will work...'
7636         if tans=`sh -c hostname 2>&1` ; then
7637                 myhostname=$tans
7638                 phostname=hostname
7639                 cont=''
7640         fi
7641         ;;
7642 *) cont='';;
7643 esac
7644 if $test "$cont"; then
7645         if ./xenix; then
7646                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7647                 if tans=`cat /etc/systemid 2>&1` ; then
7648                         myhostname=$tans
7649                         phostname='cat /etc/systemid'
7650                         echo "Whadyaknow.  Xenix always was a bit strange..."
7651                         cont=''
7652                 fi
7653         elif $test -r /etc/systemid; then
7654                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7655         fi
7656 fi
7657 if $test "$cont"; then
7658         echo 'No, maybe "uuname -l" will work...'
7659         if tans=`sh -c 'uuname -l' 2>&1` ; then
7660                 myhostname=$tans
7661                 phostname='uuname -l'
7662         else
7663                 echo 'Strange.  Maybe "uname -n" will work...'
7664                 if tans=`sh -c 'uname -n' 2>&1` ; then
7665                         myhostname=$tans
7666                         phostname='uname -n'
7667                 else
7668                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7669                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7670                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7671                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7672                         else
7673                                 case "$myhostname" in
7674                                 '') echo "Does this machine have an identity crisis or something?"
7675                                         phostname='';;
7676                                 *)
7677                                         echo "Well, you said $myhostname before..."
7678                                         phostname='echo $myhostname';;
7679                                 esac
7680                         fi
7681                 fi
7682         fi
7683 fi
7684 : you do not want to know about this
7685 set $myhostname
7686 myhostname=$1
7687
7688 : verify guess
7689 if $test "$myhostname" ; then
7690         dflt=y
7691         rp='Your host name appears to be "'$myhostname'".'" Right?"
7692         . ./myread
7693         case "$ans" in
7694         y*) ;;
7695         *) myhostname='';;
7696         esac
7697 fi
7698
7699 : bad guess or no guess
7700 while $test "X$myhostname" = X ; do
7701         dflt=''
7702         rp="Please type the (one word) name of your host:"
7703         . ./myread
7704         myhostname="$ans"
7705 done
7706
7707 : translate upper to lower if necessary
7708 case "$myhostname" in
7709 *[A-Z]*)
7710         echo "(Normalizing case in your host name)"
7711         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7712         ;;
7713 esac
7714
7715 case "$myhostname" in
7716 *.*)
7717         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7718         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7719         echo "(Trimming domain name from host name--host name is now $myhostname)"
7720         ;;
7721 *) case "$mydomain" in
7722         '')
7723                 {
7724                         test "X$hostcat" = "Xypcat hosts" &&
7725                         ypmatch "$myhostname" hosts 2>/dev/null |\
7726                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7727                         $test -s hosts
7728                 } || {
7729                         test "X$hostcat" != "X" &&
7730                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7731                                         /[       ]$myhostname[  . ]/p" > hosts
7732                 }
7733                 tmp_re="[       . ]"
7734                 if $test -f hosts; then
7735                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7736                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7737                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7738                                 hosts | $sort | $uniq | \
7739                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7740                         case `$echo X$dflt` in
7741                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7742                                 dflt=.
7743                                 ;;
7744                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7745                                 ;;
7746                         esac
7747                 else
7748                         echo "(I cannot locate a hosts database anywhere)"
7749                         dflt=.
7750                 fi
7751                 case "$dflt" in
7752                 .)
7753                         tans=`./loc resolv.conf X /etc /usr/etc`
7754                         if $test -f "$tans"; then
7755                                 echo "(Attempting domain name extraction from $tans)"
7756                                 dflt=.`$sed -n -e 's/   / /g' \
7757                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7758                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7759                                 case "$dflt" in
7760                                 .) dflt=.`$sed -n -e 's/        / /g' \
7761                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7762                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7763                                         ;;
7764                                 esac
7765                         fi
7766                         ;;
7767                 esac
7768                 case "$dflt" in
7769                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7770                         dflt=.`sh -c domainname 2>/dev/null`
7771                         case "$dflt" in
7772                         '') dflt='.';;
7773                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7774                         esac
7775                         ;;
7776                 esac
7777                 case "$dflt$osname" in
7778                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7779                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7780                         ;;
7781                 esac
7782                 case "$dflt" in
7783                 .) echo "(Lost all hope -- silly guess then)"
7784                         dflt='.uucp'
7785                         ;;
7786                 esac
7787                 $rm -f hosts
7788                 ;;
7789         *) dflt="$mydomain";;
7790         esac;;
7791 esac
7792 echo " "
7793 rp="What is your domain name?"
7794 . ./myread
7795 tans="$ans"
7796 case "$ans" in
7797 '') ;;
7798 .*) ;;
7799 *) tans=".$tans";;
7800 esac
7801 mydomain="$tans"
7802
7803 : translate upper to lower if necessary
7804 case "$mydomain" in
7805 *[A-Z]*)
7806         echo "(Normalizing case in your domain name)"
7807         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7808         ;;
7809 esac
7810
7811 : a little sanity check here
7812 case "$phostname" in
7813 '') ;;
7814 *)
7815         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7816         $myhostname$mydomain|$myhostname) ;;
7817         *)
7818                 case "$phostname" in
7819                 sed*)
7820                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7821                         ;;
7822                 *)
7823                         echo "(That doesn't agree with your $phostname command, by the way.)"
7824                         ;;
7825                 esac
7826         ;;
7827         esac
7828         ;;
7829 esac
7830
7831 $cat <<EOM
7832
7833 I need to get your e-mail address in Internet format if possible, i.e.
7834 something like user@host.domain. Please answer accurately since I have
7835 no easy means to double check it. The default value provided below
7836 is most probably close to reality but may not be valid from outside
7837 your organization...
7838
7839 EOM
7840 cont=x
7841 while test "$cont"; do
7842         case "$cf_email" in
7843         '') dflt="$cf_by@$myhostname$mydomain";;
7844         *) dflt="$cf_email";;
7845         esac
7846         rp='What is your e-mail address?'
7847         . ./myread
7848         cf_email="$ans"
7849         case "$cf_email" in
7850         *@*.*) cont='' ;;
7851         *)
7852                 rp='Address does not look like an Internet one.  Use it anyway?'
7853                 case "$fastread" in
7854                 yes) dflt=y ;;
7855                 *) dflt=n ;;
7856                 esac
7857                 . ./myread
7858                 case "$ans" in
7859                 y*) cont='' ;;
7860                 *) echo " " ;;
7861                 esac
7862                 ;;
7863         esac
7864 done
7865
7866 $cat <<EOM
7867
7868 If you or somebody else will be maintaining perl at your site, please
7869 fill in the correct e-mail address here so that they may be contacted
7870 if necessary. Currently, the "perlbug" program included with perl
7871 will send mail to this address in addition to perlbug@perl.org. You may
7872 enter "none" for no administrator.
7873
7874 EOM
7875 case "$perladmin" in
7876 '') dflt="$cf_email";;
7877 *) dflt="$perladmin";;
7878 esac
7879 rp='Perl administrator e-mail address'
7880 . ./myread
7881 perladmin="$ans"
7882
7883 : determine whether to only install version-specific parts.
7884 echo " "
7885 $cat <<EOM
7886 Do you want to install only the version-specific parts of the perl
7887 distribution?  Usually you do *not* want to do this.
7888 EOM
7889 case "$versiononly" in
7890 "$define"|[Yy]*|true) dflt='y' ;;
7891 *) dflt='n';
7892 esac
7893 rp="Do you want to install only the version-specific parts of perl?"
7894 . ./myread
7895 case "$ans" in
7896 [yY]*)  val="$define";;
7897 *)      val="$undef" ;;
7898 esac
7899 set versiononly
7900 eval $setvar
7901
7902 : figure out how to guarantee perl startup
7903 case "$startperl" in
7904 '')
7905         case "$sharpbang" in
7906         *!)
7907                 $cat <<EOH
7908
7909 I can use the #! construct to start perl on your system. This will
7910 make startup of perl scripts faster, but may cause problems if you
7911 want to share those scripts and perl is not in a standard place
7912 ($binexp/perl) on all your platforms. The alternative is to force
7913 a shell by starting the script with a single ':' character.
7914
7915 EOH
7916                 case "$versiononly" in
7917                 "$define")      dflt="$binexp/perl$version";;  
7918                 *)              dflt="$binexp/perl";;
7919                 esac
7920                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7921                 . ./myread
7922                 case "$ans" in
7923                 none)   startperl=": # use perl";;
7924                 *)      startperl="#!$ans"
7925                         if $test 30 -lt `echo "$ans" | wc -c`; then
7926                                 $cat >&4 <<EOM
7927
7928 WARNING:  Some systems limit the #! command to 32 characters.
7929 If you experience difficulty running Perl scripts with #!, try
7930 installing Perl in a directory with a shorter pathname.
7931
7932 EOM
7933                         fi ;;
7934                 esac
7935                 ;;
7936         *) startperl=": # use perl"
7937                 ;;
7938         esac
7939         ;;
7940 esac
7941 echo "I'll use $startperl to start perl scripts."
7942
7943 : figure best path for perl in scripts
7944 case "$perlpath" in
7945 '')
7946         perlpath="$binexp/perl"
7947         case "$startperl" in
7948         *!*) ;;
7949         *)
7950                 $cat <<EOH
7951
7952 I will use the "eval 'exec'" idiom to start Perl on your system.
7953 I can use the full path of your Perl binary for this purpose, but
7954 doing so may cause problems if you want to share those scripts and
7955 Perl is not always in a standard place ($binexp/perl).
7956
7957 EOH
7958                 dflt="$binexp/perl"
7959                 rp="What path shall I use in \"eval 'exec'\"?"
7960                 . ./myread
7961                 perlpath="$ans"
7962                 ;;
7963         esac
7964         ;;
7965 esac
7966 case "$startperl" in
7967 *!*)    ;;
7968 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7969 esac
7970
7971 : determine where public executable scripts go
7972 set scriptdir scriptdir
7973 eval $prefixit
7974 case "$scriptdir" in
7975 '')
7976         dflt="$bin"
7977         : guess some guesses
7978         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7979         $test -d /usr/share/bin     && dflt=/usr/share/bin
7980         $test -d /usr/local/script  && dflt=/usr/local/script
7981         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7982         $test -d $prefixexp/script  && dflt=$prefixexp/script
7983         set dflt
7984         eval $prefixup
7985         ;;
7986 *)  dflt="$scriptdir"
7987         ;;
7988 esac
7989 $cat <<EOM
7990  
7991 Some installations have a separate directory just for executable scripts so
7992 that they can mount it across multiple architectures but keep the scripts in
7993 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7994 Or you might just lump your scripts in with all your other executables.
7995  
7996 EOM
7997 fn=d~
7998 rp='Where do you keep publicly executable scripts?'
7999 . ./getfile
8000 if $test "X$ansexp" != "X$scriptdirexp"; then
8001         installscript=''
8002 fi
8003 scriptdir="$ans"
8004 scriptdirexp="$ansexp"
8005 : Change installation prefix, if necessary.
8006 if $test X"$prefix" != X"$installprefix"; then
8007         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8008 else
8009         installscript="$scriptdirexp"
8010 fi
8011
8012 : determine where add-on public executables go
8013 case "$sitebin" in
8014 '')     dflt=$siteprefix/bin ;;
8015 *)      dflt=$sitebin ;;
8016 esac
8017 fn=d~
8018 rp='Pathname where the add-on public executables should be installed?'
8019 . ./getfile
8020 sitebin="$ans"
8021 sitebinexp="$ansexp"
8022 : Change installation prefix, if necessary.
8023 if $test X"$prefix" != X"$installprefix"; then
8024         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8025 else
8026         installsitebin="$sitebinexp"
8027 fi
8028
8029 : define an is-a-typedef? function
8030 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8031 case "$inclist" in
8032 "") inclist="sys/types.h";;
8033 esac;
8034 eval "varval=\$$var";
8035 case "$varval" in
8036 "")
8037         $rm -f temp.c;
8038         for inc in $inclist; do
8039                 echo "#include <$inc>" >>temp.c;
8040         done;
8041         echo "#ifdef $type" >> temp.c;
8042         echo "printf(\"We have $type\");" >> temp.c;
8043         echo "#endif" >> temp.c;
8044         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8045         if $contains $type temp.E >/dev/null 2>&1; then
8046                 eval "$var=\$type";
8047         else
8048                 eval "$var=\$def";
8049         fi;
8050         $rm -f temp.?;;
8051 *) eval "$var=\$varval";;
8052 esac'
8053
8054 : define an is-a-typedef? function that prompts if the type is not available.
8055 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8056 case "$inclist" in
8057 "") inclist="sys/types.h";;
8058 esac;
8059 eval "varval=\$$var";
8060 case "$varval" in
8061 "")
8062         $rm -f temp.c;
8063         for inc in $inclist; do
8064                 echo "#include <$inc>" >>temp.c;
8065         done;
8066         echo "#ifdef $type" >> temp.c;
8067         echo "printf(\"We have $type\");" >> temp.c;
8068         echo "#endif" >> temp.c;
8069         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8070         echo " " ;
8071         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8072         if $contains $type temp.E >/dev/null 2>&1; then
8073                 echo "$type found." >&4;
8074                 eval "$var=\$type";
8075         else
8076                 echo "$type NOT found." >&4;
8077                 dflt="$def";
8078                 . ./myread ;
8079                 eval "$var=\$ans";
8080         fi;
8081         $rm -f temp.?;;
8082 *) eval "$var=\$varval";;
8083 esac'
8084
8085 : see what type lseek is declared as in the kernel
8086 rp="What is the type used for lseek's offset on this system?"
8087 set off_t lseektype long stdio.h sys/types.h
8088 eval $typedef_ask
8089
8090 echo " "
8091 echo "Checking to see how big your file offsets are..." >&4
8092 $cat >try.c <<EOCP
8093 #include <sys/types.h>
8094 #include <stdio.h>
8095 int main()
8096 {
8097     printf("%d\n", (int)sizeof($lseektype));
8098     return(0); 
8099 }
8100 EOCP
8101 set try
8102 if eval $compile_ok; then
8103         lseeksize=`$run ./try`
8104         echo "Your file offsets are $lseeksize bytes long."
8105 else
8106         dflt=$longsize
8107         echo " "
8108         echo "(I can't seem to compile the test program.  Guessing...)"
8109         rp="What is the size of your file offsets (in bytes)?"
8110         . ./myread
8111         lseeksize="$ans"
8112 fi
8113 $rm -f try.c try
8114
8115 : see what type file positions are declared as in the library
8116 rp="What is the type for file position used by fsetpos()?"
8117 set fpos_t fpostype long stdio.h sys/types.h
8118 eval $typedef_ask
8119
8120 echo " "
8121 case "$fpostype" in
8122 *_t) zzz="$fpostype"    ;;
8123 *)   zzz="fpos_t"       ;;
8124 esac
8125 echo "Checking the size of $zzz..." >&4 
8126 cat > try.c <<EOCP
8127 #include <sys/types.h>
8128 #include <stdio.h>
8129 int main() {
8130     printf("%d\n", (int)sizeof($fpostype));
8131     exit(0);
8132 }
8133 EOCP
8134 set try
8135 if eval $compile_ok; then
8136         yyy=`$run ./try`
8137         case "$yyy" in
8138         '')     fpossize=4
8139                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8140                 ;;
8141         *)      fpossize=$yyy
8142                 echo "Your $zzz is $fpossize bytes long."
8143                 ;;
8144         esac
8145 else
8146         dflt="$longsize"
8147         echo " " >&4
8148         echo "(I can't compile the test program.  Guessing...)" >&4
8149         rp="What is the size of your file positions (in bytes)?"
8150         . ./myread
8151         fpossize="$ans"
8152 fi
8153
8154
8155
8156 # Backward compatibility (uselfs is deprecated).
8157 case "$uselfs" in
8158 "$define"|true|[yY]*)
8159         cat <<EOM >&4
8160
8161 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8162 EOM
8163         uselargefiles="$define"
8164         ;;
8165 esac                          
8166
8167 case "$lseeksize:$fpossize" in
8168 8:8) cat <<EOM
8169
8170 You can have files larger than 2 gigabytes.
8171 EOM
8172    val="$define" ;;
8173 *)    case "$uselargefiles" in
8174    "$undef"|false|[nN]*) dflt='n' ;;
8175    *)   dflt='y' ;;
8176    esac
8177    cat <<EOM
8178
8179 Perl can be built to understand large files (files larger than 2 gigabytes)
8180 on some systems.  To do so, Configure can be run with -Duselargefiles.
8181
8182 If this doesn't make any sense to you, just accept the default '$dflt'.
8183 EOM
8184    rp='Try to understand large files, if available?'
8185    . ./myread
8186    case "$ans" in
8187    y|Y)         val="$define" ;;
8188    *)           val="$undef"  ;;
8189    esac
8190    ;;
8191 esac
8192 set uselargefiles
8193 eval $setvar
8194 case "$uselargefiles" in
8195 "$define")
8196 : Look for a hint-file generated 'call-back-unit'.  If the
8197 : user has specified that a large files perl is to be built,
8198 : we may need to set or change some other defaults.
8199         if $test -f uselargefiles.cbu; then
8200                 echo "Your platform has some specific hints for large file builds, using them..."
8201                 . ./uselargefiles.cbu
8202                 echo " "
8203                 echo "Rechecking to see how big your file offsets are..." >&4
8204                 $cat >try.c <<EOCP
8205 #include <sys/types.h>
8206 #include <stdio.h>
8207 int main()
8208 {
8209     printf("%d\n", (int)sizeof($lseektype));
8210     return(0); 
8211 }
8212 EOCP
8213                 set try
8214                 if eval $compile_ok; then
8215                         lseeksize=`$run ./try`
8216                         $echo "Your file offsets are now $lseeksize bytes long."
8217                 else
8218                         dflt="$lseeksize"
8219                         echo " "
8220                         echo "(I can't seem to compile the test program.  Guessing...)"
8221                         rp="What is the size of your file offsets (in bytes)?"
8222                         . ./myread
8223                         lseeksize="$ans"
8224                 fi
8225                 case "$fpostype" in
8226                 *_t) zzz="$fpostype"    ;;
8227                 *)   zzz="fpos_t"       ;;
8228                 esac
8229                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8230                 $cat > try.c <<EOCP
8231 #include <sys/types.h>
8232 #include <stdio.h>
8233 int main() {
8234     printf("%d\n", (int)sizeof($fpostype));
8235     exit(0);
8236 }
8237 EOCP
8238                 set try
8239                 if eval $compile_ok; then
8240                         yyy=`$run ./try`
8241                         dflt="$lseeksize"
8242                         case "$yyy" in
8243                         '')     echo " "
8244                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8245                                 ;;
8246                         *)      fpossize=$yyy
8247                                 echo " $fpossize bytes." >&4
8248                                 ;;
8249                         esac
8250                 else
8251                         dflt="$fpossize"
8252                         echo " "
8253                         echo "(I can't compile the test program.  Guessing...)" >&4
8254                         rp="What is the size of your file positions (in bytes)?"
8255                         . ./myread
8256                         fpossize="$ans"
8257                 fi
8258                 $rm -f try.c try
8259         fi
8260         ;;
8261 esac
8262
8263 case "$vendorprefix" in
8264 '')     d_vendorbin="$undef"
8265         vendorbin=''
8266         vendorbinexp=''
8267         ;;
8268 *)      d_vendorbin="$define"
8269         : determine where vendor-supplied executables go.
8270         case "$vendorbin" in
8271         '') dflt=$vendorprefix/bin ;;
8272         *)      dflt="$vendorbin" ;;
8273         esac
8274         fn=d~+
8275         rp='Pathname for the vendor-supplied executables directory?'
8276         . ./getfile
8277         vendorbin="$ans"
8278         vendorbinexp="$ansexp"
8279         ;;
8280 esac
8281 : Change installation prefix, if necessary.
8282 if $test X"$prefix" != X"$installprefix"; then
8283         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8284 else
8285         installvendorbin="$vendorbinexp"
8286 fi
8287
8288 : see if qgcvt exists
8289 set qgcvt d_qgcvt
8290 eval $inlibc
8291
8292 echo " "
8293
8294 if $test X"$d_longdbl" = X"$define"; then
8295
8296 echo "Checking how to print long doubles..." >&4
8297
8298 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8299         $cat >try.c <<'EOCP'
8300 #include <sys/types.h>
8301 #include <stdio.h>
8302 int main() {
8303   double d = 123.456;
8304   printf("%.3f\n", d);
8305 }
8306 EOCP
8307         set try
8308         if eval $compile; then
8309                 yyy=`$run ./try`
8310                 case "$yyy" in
8311                 123.456)
8312                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8313                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8314                         echo "We will use %f."
8315                         ;;
8316                 esac
8317         fi
8318 fi
8319
8320 if $test X"$sPRIfldbl" = X; then
8321         $cat >try.c <<'EOCP'
8322 #include <sys/types.h>
8323 #include <stdio.h>
8324 int main() {
8325   long double d = 123.456;
8326   printf("%.3Lf\n", d);
8327 }
8328 EOCP
8329         set try
8330         if eval $compile; then
8331                 yyy=`$run ./try`
8332                 case "$yyy" in
8333                 123.456)
8334                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8335                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8336                         echo "We will use %Lf."
8337                         ;;
8338                 esac
8339         fi
8340 fi
8341
8342 if $test X"$sPRIfldbl" = X; then
8343         $cat >try.c <<'EOCP'
8344 #include <sys/types.h>
8345 #include <stdio.h>
8346 int main() {
8347   long double d = 123.456;
8348   printf("%.3llf\n", d);
8349 }
8350 EOCP
8351         set try
8352         if eval $compile; then
8353                 yyy=`$run ./try`
8354                 case "$yyy" in
8355                 123.456)
8356                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8357                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8358                         echo "We will use %llf."
8359                         ;;
8360                 esac
8361         fi
8362 fi
8363
8364 if $test X"$sPRIfldbl" = X; then
8365         $cat >try.c <<'EOCP'
8366 #include <sys/types.h>
8367 #include <stdio.h>
8368 int main() {
8369   long double d = 123.456;
8370   printf("%.3lf\n", d);
8371 }
8372 EOCP
8373         set try
8374         if eval $compile; then
8375                 yyy=`$run ./try`
8376                 case "$yyy" in
8377                 123.456)
8378                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8379                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8380                         echo "We will use %lf."
8381                         ;;
8382                 esac
8383         fi
8384 fi
8385
8386 if $test X"$sPRIfldbl" = X; then
8387         echo "Cannot figure out how to print long doubles." >&4
8388 else
8389         sSCNfldbl=$sPRIfldbl    # expect consistency
8390 fi
8391
8392 $rm -f try try.*
8393
8394 fi # d_longdbl
8395
8396 case "$sPRIfldbl" in
8397 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8398         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8399         d_SCNfldbl="$undef";
8400         ;;
8401 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8402         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8403         d_SCNfldbl="$define";
8404         ;;
8405 esac
8406
8407 : Check how to convert floats to strings.
8408 echo " "
8409 echo "Checking for an efficient way to convert floats to strings."
8410 echo " " > try.c
8411 case "$uselongdouble" in
8412 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8413 esac
8414 case "$d_longdbl" in
8415 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8416 esac
8417 case "$d_PRIgldbl" in
8418 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8419 esac
8420 $cat >>try.c <<EOP
8421 #ifdef TRY_gconvert
8422 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8423 char *myname = "gconvert";
8424 #endif
8425 #ifdef TRY_gcvt
8426 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8427 char *myname = "gcvt";
8428 #endif
8429 #ifdef TRY_qgcvt
8430 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8431 char *myname = "qgcvt";
8432 #define DOUBLETYPE long double
8433 #endif
8434 #ifdef TRY_sprintf
8435 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8436 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8437 #else
8438 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8439 #endif
8440 char *myname = "sprintf";
8441 #endif
8442
8443 #ifndef DOUBLETYPE
8444 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8445 #define DOUBLETYPE long double
8446 #else
8447 #define DOUBLETYPE double
8448 #endif
8449 #endif
8450
8451 #include <stdio.h>
8452
8453 #define I_STDLIB $i_stdlib
8454 #ifdef I_STDLIB
8455 #include <stdlib.h>
8456 #endif
8457
8458 int
8459 checkit(expect, got)
8460 char *expect;
8461 char *got;
8462 {
8463     if (strcmp(expect, got)) {
8464                 printf("%s oddity:  Expected %s, got %s\n",
8465                         myname, expect, got);
8466                 exit(1);
8467         }
8468 }
8469
8470 int main()
8471
8472         char buf[64]; 
8473         buf[63] = '\0';
8474
8475         /* This must be 1st test on (which?) platform */
8476         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8477         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8478         checkit("0.1", buf);
8479
8480         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8481         checkit("1", buf);
8482
8483         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8484         checkit("1.1", buf);
8485
8486         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8487         checkit("1.01", buf);
8488
8489         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8490         checkit("1.001", buf);
8491
8492         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8493         checkit("1.0001", buf);
8494
8495         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8496         checkit("1.00001", buf);
8497
8498         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8499         checkit("1.000001", buf);
8500
8501         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8502         checkit("0", buf);
8503
8504         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8505         checkit("-1", buf);
8506
8507         /* Some Linux gcvt's give 1.e+5 here. */
8508         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8509         checkit("100000", buf);
8510         
8511         /* Some Linux gcvt's give -1.e+5 here. */
8512         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8513         checkit("-100000", buf);
8514
8515         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8516         checkit("123.456", buf);
8517
8518         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8519         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8520         if (strlen(buf) > 5)
8521             checkit("1e+030", buf); /* for Microsoft */
8522         else
8523             checkit("1e+30", buf);
8524
8525         exit(0);
8526 }
8527 EOP
8528 case "$d_Gconvert" in
8529 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8530 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8531 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8532 *) xxx_list='gconvert gcvt sprintf' ;;
8533 esac
8534
8535 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8536 "$define$define$define")
8537     # for long doubles prefer first qgcvt, then sprintf
8538     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8539     xxx_list="sprintf $xxx_list"
8540     case "$d_qgcvt" in
8541     "$define") xxx_list="qgcvt $xxx_list" ;;
8542     esac
8543     ;;
8544 esac
8545
8546 for xxx_convert in $xxx_list; do
8547         echo "Trying $xxx_convert..."
8548         $rm -f try try$_o
8549         set try -DTRY_$xxx_convert
8550         if eval $compile; then
8551                 echo "$xxx_convert() found." >&4
8552                 if $run ./try; then
8553                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8554                         break;
8555                 else
8556                         echo "...But $xxx_convert didn't work as I expected."
8557                 fi
8558         else
8559                 echo "$xxx_convert NOT found." >&4
8560         fi
8561 done
8562         
8563 case "$xxx_convert" in
8564 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8565 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8566 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8567 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8568    "$define$define$define")
8569       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8570    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8571    esac
8572    ;;  
8573 esac
8574
8575 : see if _fwalk exists
8576 set fwalk d__fwalk
8577 eval $inlibc
8578
8579 : Initialize h_fcntl
8580 h_fcntl=false
8581
8582 : Initialize h_sysfile
8583 h_sysfile=false
8584
8585 : access call always available on UNIX
8586 set access d_access
8587 eval $inlibc
8588
8589 : locate the flags for 'access()'
8590 case "$d_access" in
8591 "$define")
8592         echo " "
8593         $cat >access.c <<'EOCP'
8594 #include <sys/types.h>
8595 #ifdef I_FCNTL
8596 #include <fcntl.h>
8597 #endif
8598 #ifdef I_SYS_FILE
8599 #include <sys/file.h>
8600 #endif
8601 #ifdef I_UNISTD
8602 #include <unistd.h>
8603 #endif
8604 int main() {
8605         exit(R_OK);
8606 }
8607 EOCP
8608         : check sys/file.h first, no particular reason here
8609         if $test `./findhdr sys/file.h` && \
8610                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8611                 h_sysfile=true;
8612                 echo "<sys/file.h> defines the *_OK access constants." >&4
8613         elif $test `./findhdr fcntl.h` && \
8614                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8615                 h_fcntl=true;
8616                 echo "<fcntl.h> defines the *_OK access constants." >&4
8617         elif $test `./findhdr unistd.h` && \
8618                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8619                 echo "<unistd.h> defines the *_OK access constants." >&4
8620         else
8621                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8622         fi
8623         ;;
8624 esac
8625 $rm -f access*
8626
8627 : see if accessx exists
8628 set accessx d_accessx
8629 eval $inlibc
8630
8631 : see if alarm exists
8632 set alarm d_alarm
8633 eval $inlibc
8634
8635 : see if atolf exists
8636 set atolf d_atolf
8637 eval $inlibc
8638
8639 : see if atoll exists
8640 set atoll d_atoll
8641 eval $inlibc
8642
8643 : Look for GNU-cc style attribute checking
8644 echo " "
8645 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8646 $cat >attrib.c <<'EOCP'
8647 #include <stdio.h>
8648 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8649 EOCP
8650 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8651         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8652                 echo "Your C compiler doesn't fully support __attribute__."
8653                 val="$undef"
8654         else
8655                 echo "Your C compiler supports __attribute__."
8656                 val="$define"
8657         fi
8658 else
8659         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8660         val="$undef"
8661 fi
8662 set d_attribut
8663 eval $setvar
8664 $rm -f attrib*
8665
8666 : see if bcmp exists
8667 set bcmp d_bcmp
8668 eval $inlibc
8669
8670 : see if bcopy exists
8671 set bcopy d_bcopy
8672 eval $inlibc
8673
8674 : see if this is a unistd.h system
8675 set unistd.h i_unistd
8676 eval $inhdr
8677
8678 : see if getpgrp exists
8679 set getpgrp d_getpgrp
8680 eval $inlibc
8681
8682 case "$d_getpgrp" in
8683 "$define")
8684         echo " "
8685         echo "Checking to see which flavor of getpgrp is in use..."
8686         $cat >try.c <<EOP
8687 #$i_unistd I_UNISTD
8688 #include <sys/types.h>
8689 #ifdef I_UNISTD
8690 #  include <unistd.h>
8691 #endif
8692 int main()
8693 {
8694         if (getuid() == 0) {
8695                 printf("(I see you are running Configure as super-user...)\n");
8696                 setuid(1);
8697         }
8698 #ifdef TRY_BSD_PGRP
8699         if (getpgrp(1) == 0)
8700                 exit(0);
8701 #else
8702         if (getpgrp() > 0)
8703                 exit(0);
8704 #endif
8705         exit(1);
8706 }
8707 EOP
8708         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8709                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8710                 val="$define"
8711         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8712                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8713                 val="$undef"
8714         else
8715                 echo "I can't seem to compile and run the test program."
8716                 if ./usg; then
8717                         xxx="a USG one, i.e. you use getpgrp()."
8718                 else
8719                         # SVR4 systems can appear rather BSD-ish.
8720                         case "$i_unistd" in
8721                         $undef)
8722                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8723                                 val="$define"
8724                                 ;;
8725                         $define)
8726                                 xxx="probably a USG one, i.e. you use getpgrp()."
8727                                 val="$undef"
8728                                 ;;
8729                         esac
8730                 fi
8731                 echo "Assuming your getpgrp is $xxx" >&4
8732         fi
8733         ;;
8734 *) val="$undef";;
8735 esac
8736 set d_bsdgetpgrp
8737 eval $setvar
8738 $rm -f try try.*
8739
8740 : see if setpgrp exists
8741 set setpgrp d_setpgrp
8742 eval $inlibc
8743
8744 case "$d_setpgrp" in
8745 "$define")
8746         echo " "
8747         echo "Checking to see which flavor of setpgrp is in use..."
8748         $cat >try.c <<EOP
8749 #$i_unistd I_UNISTD
8750 #include <sys/types.h>
8751 #ifdef I_UNISTD
8752 #  include <unistd.h>
8753 #endif
8754 int main()
8755 {
8756         if (getuid() == 0) {
8757                 printf("(I see you are running Configure as super-user...)\n");
8758                 setuid(1);
8759         }
8760 #ifdef TRY_BSD_PGRP
8761         if (-1 == setpgrp(1, 1))
8762                 exit(0);
8763 #else
8764         if (setpgrp() != -1)
8765                 exit(0);
8766 #endif
8767         exit(1);
8768 }
8769 EOP
8770         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8771                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8772                 val="$define"
8773         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8774                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8775                 val="$undef"
8776         else
8777                 echo "(I can't seem to compile and run the test program.)"
8778                 if ./usg; then
8779                         xxx="a USG one, i.e. you use setpgrp()."
8780                 else
8781                         # SVR4 systems can appear rather BSD-ish.
8782                         case "$i_unistd" in
8783                         $undef)
8784                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8785                                 val="$define"
8786                                 ;;
8787                         $define)
8788                                 xxx="probably a USG one, i.e. you use setpgrp()."
8789                                 val="$undef"
8790                                 ;;
8791                         esac
8792                 fi
8793                 echo "Assuming your setpgrp is $xxx" >&4
8794         fi
8795         ;;
8796 *) val="$undef";;
8797 esac
8798 set d_bsdsetpgrp
8799 eval $setvar
8800 $rm -f try try.*
8801 : see if bzero exists
8802 set bzero d_bzero
8803 eval $inlibc
8804
8805 : see if signal is declared as pointer to function returning int or void
8806 echo " "
8807 xxx=`./findhdr signal.h`
8808 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8809 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8810         echo "You have int (*signal())() instead of void." >&4
8811         val="$undef"
8812 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8813         echo "You have void (*signal())()." >&4
8814         val="$define"
8815 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8816         echo "You have int (*signal())() instead of void." >&4
8817         val="$undef"
8818 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8819         echo "You have void (*signal())()." >&4
8820         val="$define"
8821 else
8822         case "$d_voidsig" in
8823         '')
8824         echo "I can't determine whether signal handler returns void or int..." >&4
8825                 dflt=void
8826                 rp="What type does your signal handler return?"
8827                 . ./myread
8828                 case "$ans" in
8829                 v*) val="$define";;
8830                 *) val="$undef";;
8831                 esac;;
8832         "$define")
8833                 echo "As you already told me, signal handler returns void." >&4
8834                 val="$define"
8835                 ;;
8836         *)      echo "As you already told me, signal handler returns int." >&4
8837                 val="$undef"
8838                 ;;
8839         esac
8840 fi
8841 set d_voidsig
8842 eval $setvar
8843 case "$d_voidsig" in
8844 "$define") signal_t="void";;
8845 *) signal_t="int";;
8846 esac
8847 $rm -f $$.tmp
8848
8849 : check for ability to cast large floats to 32-bit ints.
8850 echo " "
8851 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8852 if $test "$intsize" -ge 4; then
8853         xxx=int
8854 else
8855         xxx=long
8856 fi
8857 $cat >try.c <<EOCP
8858 #include <stdio.h>
8859 #include <sys/types.h>
8860 #include <signal.h>
8861 $signal_t blech(s) int s; { exit(3); }
8862 int main()
8863 {
8864         $xxx i32;
8865         double f, g;
8866         int result = 0;
8867         char str[16];
8868         signal(SIGFPE, blech);
8869
8870         /* Don't let compiler optimize the test away.  Store the number 
8871            in a writable string for gcc to pass to sscanf under HP/UX.
8872         */
8873         sprintf(str, "2147483647");
8874         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8875         g = 10 * f;
8876         i32  = ($xxx) g;
8877
8878         /* x86 processors will probably give 0x8000 0000, which is a
8879        sign change.  We don't want that.  We want to mimic SPARC
8880            behavior here, which is to preserve the sign and give
8881            back 0x7fff ffff.
8882         */
8883         if (i32 != ($xxx) f)
8884                 result |= 1;
8885         exit(result);
8886 }
8887 EOCP
8888 set try
8889 if eval $compile_ok; then
8890         $run ./try
8891         yyy=$?
8892 else
8893         echo "(I can't seem to compile the test program--assuming it can't)"
8894         yyy=1
8895 fi
8896 case "$yyy" in
8897 0)      val="$define"
8898         echo "Yup, it can."
8899         ;;
8900 *)      val="$undef"
8901         echo "Nope, it can't."
8902         ;;
8903 esac
8904 set d_casti32
8905 eval $setvar
8906 $rm -f try try.*
8907
8908 : check for ability to cast negative floats to unsigned
8909 echo " "
8910 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8911 $cat >try.c <<EOCP
8912 #include <stdio.h>
8913 #include <sys/types.h>
8914 #include <signal.h>
8915 $signal_t blech(s) int s; { exit(7); }
8916 $signal_t blech_in_list(s) int s; { exit(4); }
8917 unsigned long dummy_long(p) unsigned long p; { return p; }
8918 unsigned int dummy_int(p) unsigned int p; { return p; }
8919 unsigned short dummy_short(p) unsigned short p; { return p; }
8920 int main()
8921 {
8922         double f;
8923         unsigned long along;
8924         unsigned int aint;
8925         unsigned short ashort;
8926         int result = 0;
8927         char str[16];
8928         
8929         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8930            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8931            optimized the whole file away
8932         */
8933         /* Store the number in a writable string for gcc to pass to 
8934            sscanf under HP/UX.
8935         */
8936         sprintf(str, "-123");
8937         sscanf(str, "%lf", &f);  /* f = -123.; */
8938
8939         signal(SIGFPE, blech);
8940         along = (unsigned long)f;
8941         aint = (unsigned int)f;
8942         ashort = (unsigned short)f;
8943         if (along != (unsigned long)-123)
8944                 result |= 1;
8945         if (aint != (unsigned int)-123)
8946                 result |= 1;
8947         if (ashort != (unsigned short)-123)
8948                 result |= 1;
8949         sprintf(str, "1073741824.");
8950         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8951         f = f + f;
8952         along = 0;
8953         along = (unsigned long)f;
8954         if (along != 0x80000000)
8955                 result |= 2;
8956         f -= 1.;
8957         along = 0;
8958         along = (unsigned long)f;
8959         if (along != 0x7fffffff)
8960                 result |= 1;
8961         f += 2.;
8962         along = 0;
8963         along = (unsigned long)f;
8964         if (along != 0x80000001)
8965                 result |= 2;
8966         if (result)
8967                 exit(result);
8968         signal(SIGFPE, blech_in_list);
8969         sprintf(str, "123.");
8970         sscanf(str, "%lf", &f);  /* f = 123.; */
8971         along = dummy_long((unsigned long)f);
8972         aint = dummy_int((unsigned int)f);
8973         ashort = dummy_short((unsigned short)f);
8974         if (along != (unsigned long)123)
8975                 result |= 4;
8976         if (aint != (unsigned int)123)
8977                 result |= 4;
8978         if (ashort != (unsigned short)123)
8979                 result |= 4;
8980         exit(result);
8981
8982 }
8983 EOCP
8984 set try
8985 if eval $compile_ok; then
8986         $run ./try
8987         castflags=$?
8988 else
8989         echo "(I can't seem to compile the test program--assuming it can't)"
8990         castflags=7
8991 fi
8992 case "$castflags" in
8993 0)      val="$define"
8994         echo "Yup, it can."
8995         ;;
8996 *)      val="$undef"
8997         echo "Nope, it can't."
8998         ;;
8999 esac
9000 set d_castneg
9001 eval $setvar
9002 $rm -f try.*
9003
9004 : see if vprintf exists
9005 echo " "
9006 if set vprintf val -f d_vprintf; eval $csym; $val; then
9007         echo 'vprintf() found.' >&4
9008         val="$define"
9009         $cat >try.c <<'EOF'
9010 #include <varargs.h>
9011
9012 int main() { xxx("foo"); }
9013
9014 xxx(va_alist)
9015 va_dcl
9016 {
9017         va_list args;
9018         char buf[10];
9019
9020         va_start(args);
9021         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9022 }
9023 EOF
9024         set try
9025         if eval $compile && $run ./try; then
9026                 echo "Your vsprintf() returns (int)." >&4
9027                 val2="$undef"
9028         else
9029                 echo "Your vsprintf() returns (char*)." >&4
9030                 val2="$define"
9031         fi
9032 else
9033         echo 'vprintf() NOT found.' >&4
9034                 val="$undef"
9035                 val2="$undef"
9036 fi
9037 $rm -f try try.*
9038 set d_vprintf
9039 eval $setvar
9040 val=$val2
9041 set d_charvspr
9042 eval $setvar
9043
9044 : see if chown exists
9045 set chown d_chown
9046 eval $inlibc
9047
9048 : see if chroot exists
9049 set chroot d_chroot
9050 eval $inlibc
9051
9052 : see if chsize exists
9053 set chsize d_chsize
9054 eval $inlibc
9055
9056 hasstruct='varname=$1; struct=$2; shift; shift;
9057 while $test $# -ge 2; do
9058         case "$1" in
9059         $define) echo "#include <$2>";;
9060         esac ;
9061     shift 2;
9062 done > try.c;
9063 echo "int main () { struct $struct foo; }" >> try.c;
9064 set try;
9065 if eval $compile; then
9066         val="$define";
9067 else
9068         val="$undef";
9069 fi;
9070 set $varname;
9071 eval $setvar;
9072 $rm -f try.c try.o'
9073
9074 : see if sys/types.h has to be included
9075 set sys/types.h i_systypes
9076 eval $inhdr
9077
9078 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9079 while $test $# -ge 2; do
9080         case "$1" in
9081         $define) echo "#include <$2>";;
9082         esac ;
9083     shift 2;
9084 done > try.c;
9085 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9086 set try;
9087 if eval $compile; then
9088         val="$define";
9089 else
9090         val="$undef";
9091 fi;
9092 set $varname;
9093 eval $setvar;
9094 $rm -f try.c try.o'
9095
9096 socketlib=''
9097 sockethdr=''
9098 : see whether socket exists
9099 echo " "
9100 $echo $n "Hmm... $c" >&4
9101 if set socket val -f d_socket; eval $csym; $val; then
9102         echo "Looks like you have Berkeley networking support." >&4
9103         d_socket="$define"
9104         if set setsockopt val -f; eval $csym; $val; then
9105                 d_oldsock="$undef"
9106         else
9107                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9108                 d_oldsock="$define"
9109         fi
9110 else
9111         if $contains socklib libc.list >/dev/null 2>&1; then
9112                 echo "Looks like you have Berkeley networking support." >&4
9113                 d_socket="$define"
9114                 : we will have to assume that it supports the 4.2 BSD interface
9115                 d_oldsock="$undef"
9116         else
9117                 echo "You don't have Berkeley networking in libc$_a..." >&4
9118                 if test "X$d_socket" = "X$define"; then
9119                    echo "...but you seem to believe that you have sockets." >&4
9120                 else
9121                         for net in net socket
9122                         do
9123                                 if test -f /usr/lib/lib$net$_a; then
9124                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9125                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9126                                         if $contains socket libc.list >/dev/null 2>&1; then
9127                                                 d_socket="$define"
9128                                                 socketlib="-l$net"
9129                                                 case "$net" in
9130                                                 net)
9131                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9132                                                         sockethdr="-I/usr/netinclude"
9133                                                         ;;
9134                                                 esac
9135                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9136                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9137                                                         d_oldsock="$undef"
9138                                                 else
9139                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9140                                                         d_oldsock="$define"
9141                                                 fi
9142                                                 break
9143                                         fi
9144                                 fi
9145                         done
9146                         if test "X$d_socket" != "X$define"; then
9147                            echo "or anywhere else I see." >&4
9148                            d_socket="$undef"
9149                            d_oldsock="$undef"
9150                         fi
9151                 fi
9152         fi
9153 fi
9154
9155 : see if socketpair exists
9156 set socketpair d_sockpair
9157 eval $inlibc
9158
9159
9160 echo " "
9161 echo "Checking the availability of certain socket constants..." >& 4
9162 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9163         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9164         $cat >try.c <<EOF
9165 #include <sys/types.h>
9166 #include <sys/socket.h>
9167 int main() {
9168     int i = $ENUM;
9169 }
9170 EOF
9171         val="$undef"
9172         set try; if eval $compile; then
9173                 val="$define"
9174         fi
9175         set d_${enum}; eval $setvar
9176         $rm -f try.c try
9177 done
9178
9179 : see if this is a sys/uio.h system
9180 set sys/uio.h i_sysuio
9181 eval $inhdr
9182
9183
9184 echo " "
9185 echo "Checking to see if your system supports struct cmsghdr..." >&4
9186 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9187 eval $hasstruct
9188 case "$d_cmsghdr_s" in
9189 "$define")      echo "Yes, it does."   ;;
9190 *)              echo "No, it doesn't." ;;
9191 esac
9192
9193
9194 : check for const keyword
9195 echo " "
9196 echo 'Checking to see if your C compiler knows about "const"...' >&4
9197 $cat >const.c <<'EOCP'
9198 typedef struct spug { int drokk; } spug;
9199 int main()
9200 {
9201         const char *foo;
9202         const spug y;
9203 }
9204 EOCP
9205 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9206         val="$define"
9207         echo "Yup, it does."
9208 else
9209         val="$undef"
9210         echo "Nope, it doesn't."
9211 fi
9212 set d_const
9213 eval $setvar
9214
9215 : see if crypt exists
9216 echo " "
9217 if set crypt val -f d_crypt; eval $csym; $val; then
9218         echo 'crypt() found.' >&4
9219         val="$define"
9220         cryptlib=''
9221 else
9222         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9223         if $test -z "$cryptlib"; then
9224                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9225         else
9226                 cryptlib=-lcrypt
9227         fi
9228         if $test -z "$cryptlib"; then
9229                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9230         else
9231                 cryptlib=-lcrypt
9232         fi
9233         if $test -z "$cryptlib"; then
9234                 cryptlib=`./loc libcrypt$_a "" $libpth`
9235         else
9236                 cryptlib=-lcrypt
9237         fi
9238         if $test -z "$cryptlib"; then
9239                 echo 'crypt() NOT found.' >&4
9240                 val="$undef"
9241         else
9242                 val="$define"
9243         fi
9244 fi
9245 set d_crypt
9246 eval $setvar
9247
9248 : get csh whereabouts
9249 case "$csh" in
9250 'csh') val="$undef" ;;
9251 *) val="$define" ;;
9252 esac
9253 set d_csh
9254 eval $setvar
9255 : Respect a hint or command line value for full_csh.
9256 case "$full_csh" in
9257 '') full_csh=$csh ;;
9258 esac
9259
9260 : see if cuserid exists
9261 set cuserid d_cuserid
9262 eval $inlibc
9263
9264 : see if this is a limits.h system
9265 set limits.h i_limits
9266 eval $inhdr
9267
9268 : see if this is a float.h system
9269 set float.h i_float
9270 eval $inhdr
9271
9272 : See if number of significant digits in a double precision number is known
9273 echo " "
9274 $cat >dbl_dig.c <<EOM
9275 #$i_limits I_LIMITS
9276 #$i_float I_FLOAT
9277 #ifdef I_LIMITS
9278 #include <limits.h>
9279 #endif
9280 #ifdef I_FLOAT
9281 #include <float.h>
9282 #endif
9283 #ifdef DBL_DIG
9284 printf("Contains DBL_DIG");
9285 #endif
9286 EOM
9287 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9288 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9289         echo "DBL_DIG found." >&4
9290         val="$define"
9291 else
9292         echo "DBL_DIG NOT found." >&4
9293         val="$undef"
9294 fi
9295 $rm -f dbl_dig.?
9296 set d_dbl_dig
9297 eval $setvar
9298
9299 hasproto='varname=$1; func=$2; shift; shift;
9300 while $test $# -ge 2; do
9301         case "$1" in
9302         $define) echo "#include <$2>";;
9303         esac ;
9304     shift 2;
9305 done > try.c;
9306 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9307 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9308         echo "$func() prototype found.";
9309         val="$define";
9310 else
9311         echo "$func() prototype NOT found.";
9312         val="$undef";
9313 fi;
9314 set $varname;
9315 eval $setvar;
9316 $rm -f try.c tryout.c'
9317
9318 : see if dbm.h is available
9319 : see if dbmclose exists
9320 set dbmclose d_dbmclose
9321 eval $inlibc
9322
9323 case "$d_dbmclose" in
9324 $define)
9325         set dbm.h i_dbm
9326         eval $inhdr
9327         case "$i_dbm" in
9328         $define)
9329                 val="$undef"
9330                 set i_rpcsvcdbm
9331                 eval $setvar
9332                 ;;
9333         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9334                 eval $inhdr
9335                 ;;
9336         esac
9337         ;;
9338 *)      echo "We won't be including <dbm.h>"
9339         val="$undef"
9340         set i_dbm
9341         eval $setvar
9342         val="$undef"
9343         set i_rpcsvcdbm
9344         eval $setvar
9345         ;;
9346 esac
9347
9348 : see if prototype for dbminit is available
9349 echo " "
9350 set d_dbminitproto dbminit $i_dbm dbm.h
9351 eval $hasproto
9352
9353 : see if difftime exists
9354 set difftime d_difftime
9355 eval $inlibc
9356
9357 : see if this is a dirent system
9358 echo " "
9359 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9360         val="$define"
9361         echo "<dirent.h> found." >&4
9362 else
9363         val="$undef"
9364         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9365                 echo "<sys/dir.h> found." >&4
9366                 echo " "
9367         else
9368                 xinc=`./findhdr sys/ndir.h`
9369         fi
9370         echo "<dirent.h> NOT found." >&4
9371 fi
9372 set i_dirent
9373 eval $setvar
9374
9375 : Look for type of directory structure.
9376 echo " "
9377 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9378
9379 case "$direntrytype" in
9380 ''|' ')
9381         case "$i_dirent" in
9382         $define) guess1='struct dirent' ;;
9383         *) guess1='struct direct'  ;;
9384         esac
9385         ;;
9386 *)      guess1="$direntrytype"
9387         ;;
9388 esac
9389
9390 case "$guess1" in
9391 'struct dirent') guess2='struct direct' ;;
9392 *) guess2='struct dirent' ;;
9393 esac
9394                 
9395 if $contains "$guess1" try.c >/dev/null 2>&1; then
9396         direntrytype="$guess1"
9397         echo "Your directory entries are $direntrytype." >&4
9398 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9399         direntrytype="$guess2"
9400         echo "Your directory entries seem to be $direntrytype." >&4
9401 else
9402         echo "I don't recognize your system's directory entries." >&4
9403         rp="What type is used for directory entries on this system?"
9404         dflt="$guess1"
9405         . ./myread
9406         direntrytype="$ans"
9407 fi
9408 $rm -f try.c
9409
9410
9411 : see if the directory entry stores field length
9412 echo " "
9413 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9414 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9415         echo "Good, your directory entry keeps length information in d_namlen." >&4
9416         val="$define"
9417 else
9418         echo "Your directory entry does not know about the d_namlen field." >&4
9419         val="$undef"
9420 fi
9421 set d_dirnamlen
9422 eval $setvar
9423 $rm -f try.c
9424
9425 : see if dlerror exists
9426 xxx_runnm="$runnm"
9427 runnm=false
9428 set dlerror d_dlerror
9429 eval $inlibc
9430 runnm="$xxx_runnm"
9431
9432 : see if dlfcn is available
9433 set dlfcn.h i_dlfcn
9434 eval $inhdr
9435
9436 case "$usedl" in
9437 $define|y|true)
9438         $cat << EOM
9439
9440 On a few systems, the dynamically loaded modules that perl generates and uses
9441 will need a different extension than shared libs. The default will probably
9442 be appropriate.
9443
9444 EOM
9445         case "$dlext" in
9446         '')     dflt="$so" ;;
9447         *)      dflt="$dlext" ;;
9448         esac
9449         rp='What is the extension of dynamically loaded modules'
9450         . ./myread
9451         dlext="$ans"
9452         ;;
9453 *)
9454         dlext="none"
9455         ;;
9456 esac
9457
9458 : Check if dlsym need a leading underscore
9459 echo " "
9460 val="$undef"
9461
9462 case "$dlsrc" in
9463 dl_dlopen.xs)
9464         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9465         $cat >dyna.c <<'EOM'
9466 fred () { }
9467 EOM
9468
9469 $cat >fred.c<<EOM
9470
9471 #include <stdio.h>
9472 #$i_dlfcn I_DLFCN
9473 #ifdef I_DLFCN
9474 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9475 #else
9476 #include <sys/types.h>
9477 #include <nlist.h>
9478 #include <link.h>
9479 #endif
9480
9481 extern int fred() ;
9482
9483 int main()
9484 {
9485     void * handle ;
9486     void * symbol ;
9487 #ifndef RTLD_LAZY
9488     int mode = 1 ;
9489 #else
9490     int mode = RTLD_LAZY ;
9491 #endif
9492     handle = dlopen("./dyna.$dlext", mode) ;
9493     if (handle == NULL) {
9494         printf ("1\n") ;
9495         fflush (stdout) ;
9496         exit(0);
9497     }
9498     symbol = dlsym(handle, "fred") ;
9499     if (symbol == NULL) {
9500         /* try putting a leading underscore */
9501         symbol = dlsym(handle, "_fred") ;
9502         if (symbol == NULL) {
9503             printf ("2\n") ;
9504             fflush (stdout) ;
9505             exit(0);
9506         }
9507         printf ("3\n") ;
9508     }
9509     else
9510         printf ("4\n") ;
9511     fflush (stdout) ;
9512     exit(0);
9513 }
9514 EOM
9515         : Call the object file tmp-dyna.o in case dlext=o.
9516         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9517                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9518                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9519                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9520                 xxx=`$run ./fred`
9521                 case $xxx in
9522                 1)      echo "Test program failed using dlopen." >&4
9523                         echo "Perhaps you should not use dynamic loading." >&4;;
9524                 2)      echo "Test program failed using dlsym." >&4
9525                         echo "Perhaps you should not use dynamic loading." >&4;;
9526                 3)      echo "dlsym needs a leading underscore" >&4
9527                         val="$define" ;;
9528                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9529                 esac
9530         else
9531                 echo "I can't compile and run the test program." >&4
9532                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9533         fi
9534         ;;
9535 esac
9536                 
9537 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9538
9539 set d_dlsymun
9540 eval $setvar
9541
9542 : see if prototype for drand48 is available
9543 echo " "
9544 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9545 eval $hasproto
9546
9547 : see if dup2 exists
9548 set dup2 d_dup2
9549 eval $inlibc
9550
9551 : see if eaccess exists
9552 set eaccess d_eaccess
9553 eval $inlibc
9554
9555 : see if endgrent exists
9556 set endgrent d_endgrent
9557 eval $inlibc
9558
9559 : see if endhostent exists
9560 set endhostent d_endhent
9561 eval $inlibc
9562
9563 : see if endnetent exists
9564 set endnetent d_endnent
9565 eval $inlibc
9566
9567 : see if endprotoent exists
9568 set endprotoent d_endpent
9569 eval $inlibc
9570
9571 : see if endpwent exists
9572 set endpwent d_endpwent
9573 eval $inlibc
9574
9575 : see if endservent exists
9576 set endservent d_endsent
9577 eval $inlibc
9578
9579 : Locate the flags for 'open()'
9580 echo " "
9581 $cat >try.c <<'EOCP'
9582 #include <sys/types.h>
9583 #ifdef I_FCNTL
9584 #include <fcntl.h>
9585 #endif
9586 #ifdef I_SYS_FILE
9587 #include <sys/file.h>
9588 #endif
9589 int main() {
9590         if(O_RDONLY);
9591 #ifdef O_TRUNC
9592         exit(0);
9593 #else
9594         exit(1);
9595 #endif
9596 }
9597 EOCP
9598 : check sys/file.h first to get FREAD on Sun
9599 if $test `./findhdr sys/file.h` && \
9600                 set try -DI_SYS_FILE && eval $compile; then
9601         h_sysfile=true;
9602         echo "<sys/file.h> defines the O_* constants..." >&4
9603         if $run ./try; then
9604                 echo "and you have the 3 argument form of open()." >&4
9605                 val="$define"
9606         else
9607                 echo "but not the 3 argument form of open().  Oh, well." >&4
9608                 val="$undef"
9609         fi
9610 elif $test `./findhdr fcntl.h` && \
9611                 set try -DI_FCNTL && eval $compile; then
9612         h_fcntl=true;
9613         echo "<fcntl.h> defines the O_* constants..." >&4
9614         if $run ./try; then
9615                 echo "and you have the 3 argument form of open()." >&4
9616                 val="$define"
9617         else
9618                 echo "but not the 3 argument form of open().  Oh, well." >&4
9619                 val="$undef"
9620         fi
9621 else
9622         val="$undef"
9623         echo "I can't find the O_* constant definitions!  You got problems." >&4
9624 fi
9625 set d_open3
9626 eval $setvar
9627 $rm -f try try.*
9628
9629 : see which of string.h or strings.h is needed
9630 echo " "
9631 strings=`./findhdr string.h`
9632 if $test "$strings" && $test -r "$strings"; then
9633         echo "Using <string.h> instead of <strings.h>." >&4
9634         val="$define"
9635 else
9636         val="$undef"
9637         strings=`./findhdr strings.h`
9638         if $test "$strings" && $test -r "$strings"; then
9639                 echo "Using <strings.h> instead of <string.h>." >&4
9640         else
9641                 echo "No string header found -- You'll surely have problems." >&4
9642         fi
9643 fi
9644 set i_string
9645 eval $setvar
9646 case "$i_string" in
9647 "$undef") strings=`./findhdr strings.h`;;
9648 *)        strings=`./findhdr string.h`;;
9649 esac
9650
9651 : check for non-blocking I/O stuff
9652 case "$h_sysfile" in
9653 true) echo "#include <sys/file.h>" > head.c;;
9654 *)
9655        case "$h_fcntl" in
9656        true) echo "#include <fcntl.h>" > head.c;;
9657        *) echo "#include <sys/fcntl.h>" > head.c;;
9658        esac
9659        ;;
9660 esac
9661 echo " "
9662 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9663 case "$o_nonblock" in
9664 '')
9665         $cat head.c > try.c
9666         $cat >>try.c <<'EOCP'
9667 #include <stdio.h>
9668 int main() {
9669 #ifdef O_NONBLOCK
9670         printf("O_NONBLOCK\n");
9671         exit(0);
9672 #endif
9673 #ifdef O_NDELAY
9674         printf("O_NDELAY\n");
9675         exit(0);
9676 #endif
9677 #ifdef FNDELAY
9678         printf("FNDELAY\n");
9679         exit(0);
9680 #endif
9681         exit(0);
9682 }
9683 EOCP
9684         set try
9685         if eval $compile_ok; then
9686                 o_nonblock=`$run ./try`
9687                 case "$o_nonblock" in
9688                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9689                 *) echo "Seems like we can use $o_nonblock.";;
9690                 esac
9691         else
9692                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9693         fi
9694         ;;
9695 *) echo "Using $hint value $o_nonblock.";;
9696 esac
9697 $rm -f try try.* .out core
9698
9699 echo " "
9700 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9701 case "$eagain" in
9702 '')
9703         $cat head.c > try.c
9704         $cat >>try.c <<EOCP
9705 #include <errno.h>
9706 #include <sys/types.h>
9707 #include <signal.h>
9708 #include <stdio.h> 
9709 #define MY_O_NONBLOCK $o_nonblock
9710 #ifndef errno  /* XXX need better Configure test */
9711 extern int errno;
9712 #endif
9713 #$i_unistd I_UNISTD
9714 #ifdef I_UNISTD
9715 #include <unistd.h>
9716 #endif
9717 #$i_string I_STRING
9718 #ifdef I_STRING
9719 #include <string.h>
9720 #else
9721 #include <strings.h>
9722 #endif
9723 $signal_t blech(x) int x; { exit(3); }
9724 EOCP
9725         $cat >> try.c <<'EOCP'
9726 int main()
9727 {
9728         int pd[2];
9729         int pu[2];
9730         char buf[1];
9731         char string[100];
9732
9733         pipe(pd);       /* Down: child -> parent */
9734         pipe(pu);       /* Up: parent -> child */
9735         if (0 != fork()) {
9736                 int ret;
9737                 close(pd[1]);   /* Parent reads from pd[0] */
9738                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9739 #ifdef F_SETFL
9740                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9741                         exit(1);
9742 #else
9743                 exit(4);
9744 #endif
9745                 signal(SIGALRM, blech);
9746                 alarm(5);
9747                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9748                         exit(2);
9749                 sprintf(string, "%d\n", ret);
9750                 write(2, string, strlen(string));
9751                 alarm(0);
9752 #ifdef EAGAIN
9753                 if (errno == EAGAIN) {
9754                         printf("EAGAIN\n");
9755                         goto ok;
9756                 }
9757 #endif
9758 #ifdef EWOULDBLOCK
9759                 if (errno == EWOULDBLOCK)
9760                         printf("EWOULDBLOCK\n");
9761 #endif
9762         ok:
9763                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9764                 sleep(2);                               /* Give it time to close our pipe */
9765                 alarm(5);
9766                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9767                 alarm(0);
9768                 sprintf(string, "%d\n", ret);
9769                 write(3, string, strlen(string));
9770                 exit(0);
9771         }
9772
9773         close(pd[0]);                   /* We write to pd[1] */
9774         close(pu[1]);                   /* We read from pu[0] */
9775         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9776         close(pd[1]);                   /* Pipe pd is now fully closed! */
9777         exit(0);                                /* Bye bye, thank you for playing! */
9778 }
9779 EOCP
9780         set try
9781         if eval $compile_ok; then
9782                 echo "$startsh" >mtry
9783                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9784                 chmod +x mtry
9785                 ./mtry >/dev/null 2>&1
9786                 case $? in
9787                 0) eagain=`$cat try.out`;;
9788                 1) echo "Could not perform non-blocking setting!";;
9789                 2) echo "I did a successful read() for something that was not there!";;
9790                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9791                 4) echo "Could not find F_SETFL!";;
9792                 *) echo "Something terribly wrong happened during testing.";;
9793                 esac
9794                 rd_nodata=`$cat try.ret`
9795                 echo "A read() system call with no data present returns $rd_nodata."
9796                 case "$rd_nodata" in
9797                 0|-1) ;;
9798                 *)
9799                         echo "(That's peculiar, fixing that to be -1.)"
9800                         rd_nodata=-1
9801                         ;;
9802                 esac
9803                 case "$eagain" in
9804                 '')
9805                         echo "Forcing errno EAGAIN on read() with no data available."
9806                         eagain=EAGAIN
9807                         ;;
9808                 *)
9809                         echo "Your read() sets errno to $eagain when no data is available."
9810                         ;;
9811                 esac
9812                 status=`$cat try.err`
9813                 case "$status" in
9814                 0) echo "And it correctly returns 0 to signal EOF.";;
9815                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9816                 *) echo "However, your read() returns '$status' on EOF??";;
9817                 esac
9818                 val="$define"
9819                 if test "$status" = "$rd_nodata"; then
9820                         echo "WARNING: you can't distinguish between EOF and no data!"
9821                         val="$undef"
9822                 fi
9823         else
9824                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9825                 eagain=EAGAIN
9826         fi
9827         set d_eofnblk
9828         eval $setvar
9829         ;;
9830 *)
9831         echo "Using $hint value $eagain."
9832         echo "Your read() returns $rd_nodata when no data is present."
9833         case "$d_eofnblk" in
9834         "$define") echo "And you can see EOF because read() returns 0.";;
9835         "$undef") echo "But you can't see EOF status from read() returned value.";;
9836         *)
9837                 echo "(Assuming you can't see EOF status from read anyway.)"
9838                 d_eofnblk=$undef
9839                 ;;
9840         esac
9841         ;;
9842 esac
9843 $rm -f try try.* .out core head.c mtry
9844
9845 : see if fchdir exists
9846 set fchdir d_fchdir
9847 eval $inlibc
9848
9849 : see if fchmod exists
9850 set fchmod d_fchmod
9851 eval $inlibc
9852
9853 : see if fchown exists
9854 set fchown d_fchown
9855 eval $inlibc
9856
9857 : see if this is an fcntl system
9858 set fcntl d_fcntl
9859 eval $inlibc
9860
9861 echo " "
9862 : See if fcntl-based locking works.
9863 $cat >try.c <<EOCP
9864 #include <stdlib.h>
9865 #include <unistd.h>
9866 #include <fcntl.h>
9867 #include <signal.h>
9868 $signal_t blech(x) int x; { exit(3); }
9869 int main() {
9870 #if defined(F_SETLK) && defined(F_SETLKW)
9871      struct flock flock;
9872      int retval, fd;
9873      fd = open("try.c", O_RDONLY);
9874      flock.l_type = F_RDLCK;
9875      flock.l_whence = SEEK_SET;
9876      flock.l_start = flock.l_len = 0;
9877      signal(SIGALRM, blech);
9878      alarm(10);
9879      retval = fcntl(fd, F_SETLK, &flock);
9880      close(fd);
9881      (retval < 0 ? exit(2) : exit(0));
9882 #else
9883      exit(2);
9884 #endif
9885 }
9886 EOCP
9887 echo "Checking if fcntl-based file locking works... "
9888 case "$d_fcntl" in
9889 "$define")
9890         set try
9891         if eval $compile_ok; then
9892                 if $run ./try; then
9893                         echo "Yes, it seems to work."
9894                         val="$define"
9895                 else
9896                         echo "Nope, it didn't work."
9897                         val="$undef"
9898                         case "$?" in
9899                         3) $cat >&4 <<EOM
9900 ***
9901 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9902 *** This is (almost) impossible.
9903 *** If your NFS lock daemons are not feeling well, something like
9904 *** this may happen, please investigate.  Cannot continue, aborting.
9905 ***
9906 EOM
9907                                 exit 1
9908                                 ;;
9909                         esac
9910                 fi
9911         else
9912                 echo "I'm unable to compile the test program, so I'll assume not."
9913                 val="$undef"
9914         fi
9915         ;;
9916 *) val="$undef";
9917         echo "Nope, since you don't even have fcntl()."
9918         ;;
9919 esac
9920 set d_fcntl_can_lock
9921 eval $setvar
9922 $rm -f try*
9923
9924
9925 : see if sys/select.h has to be included
9926 set sys/select.h i_sysselct
9927 eval $inhdr
9928
9929 : see if we should include time.h, sys/time.h, or both
9930 echo " "
9931 if test "X$timeincl" = X; then
9932         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9933         $echo $n "I'm now running the test program...$c"
9934         $cat >try.c <<'EOCP'
9935 #include <sys/types.h>
9936 #ifdef I_TIME
9937 #include <time.h>
9938 #endif
9939 #ifdef I_SYSTIME
9940 #ifdef SYSTIMEKERNEL
9941 #define KERNEL
9942 #endif
9943 #include <sys/time.h>
9944 #endif
9945 #ifdef I_SYSSELECT
9946 #include <sys/select.h>
9947 #endif
9948 int main()
9949 {
9950         struct tm foo;
9951 #ifdef S_TIMEVAL
9952         struct timeval bar;
9953 #endif
9954 #ifdef S_TIMEZONE
9955         struct timezone tzp;
9956 #endif
9957         if (foo.tm_sec == foo.tm_sec)
9958                 exit(0);
9959 #ifdef S_TIMEVAL
9960         if (bar.tv_sec == bar.tv_sec)
9961                 exit(0);
9962 #endif
9963         exit(1);
9964 }
9965 EOCP
9966         flags=''
9967         for s_timezone in '-DS_TIMEZONE' ''; do
9968         sysselect=''
9969         for s_timeval in '-DS_TIMEVAL' ''; do
9970         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9971         for i_time in '' '-DI_TIME'; do
9972         for i_systime in '-DI_SYSTIME' ''; do
9973                 case "$flags" in
9974                 '') $echo $n ".$c"
9975                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9976                         if eval $compile; then
9977                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9978                                 shift
9979                                 flags="$*"
9980                                 echo " "
9981                                 $echo $n "Succeeded with $flags$c"
9982                         fi
9983                         ;;
9984                 esac
9985         done
9986         done
9987         done
9988         done
9989         done
9990         timeincl=''
9991         echo " "
9992         case "$flags" in
9993         *SYSTIMEKERNEL*) i_systimek="$define"
9994                 timeincl=`./findhdr sys/time.h`
9995                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9996         *) i_systimek="$undef";;
9997         esac
9998         case "$flags" in
9999         *I_TIME*) i_time="$define"
10000                 timeincl=`./findhdr time.h`" $timeincl"
10001                 echo "We'll include <time.h>." >&4;;
10002         *) i_time="$undef";;
10003         esac
10004         case "$flags" in
10005         *I_SYSTIME*) i_systime="$define"
10006                 timeincl=`./findhdr sys/time.h`" $timeincl"
10007                 echo "We'll include <sys/time.h>." >&4;;
10008         *) i_systime="$undef";;
10009         esac
10010         $rm -f try.c try
10011 fi
10012
10013 : check for fd_set items
10014 $cat <<EOM
10015
10016 Checking to see how well your C compiler handles fd_set and friends ...
10017 EOM
10018 $cat >try.c <<EOCP
10019 #$i_systime I_SYS_TIME
10020 #$i_sysselct I_SYS_SELECT
10021 #$d_socket HAS_SOCKET
10022 #include <sys/types.h>
10023 #ifdef HAS_SOCKET
10024 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10025 #endif
10026 #ifdef I_SYS_TIME
10027 #include <sys/time.h>
10028 #endif
10029 #ifdef I_SYS_SELECT
10030 #include <sys/select.h>
10031 #endif
10032 int main() {
10033         fd_set fds;
10034
10035 #ifdef TRYBITS
10036         if(fds.fds_bits);
10037 #endif
10038
10039 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10040         exit(0);
10041 #else
10042         exit(1);
10043 #endif
10044 }
10045 EOCP
10046 set try -DTRYBITS
10047 if eval $compile; then
10048         d_fds_bits="$define"
10049         d_fd_set="$define"
10050         echo "Well, your system knows about the normal fd_set typedef..." >&4
10051         if $run ./try; then
10052                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10053                 d_fd_macros="$define"
10054         else
10055                 $cat >&4 <<'EOM'
10056 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10057 EOM
10058                 d_fd_macros="$undef"
10059         fi
10060 else
10061         $cat <<'EOM'
10062 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10063 EOM
10064         set try
10065         if eval $compile; then
10066                 d_fds_bits="$undef"
10067                 d_fd_set="$define"
10068                 echo "Well, your system has some sort of fd_set available..." >&4
10069                 if $run ./try; then
10070                         echo "and you have the normal fd_set macros." >&4
10071                         d_fd_macros="$define"
10072                 else
10073                         $cat <<'EOM'
10074 but not the normal fd_set macros!  Gross!  More work for me...
10075 EOM
10076                         d_fd_macros="$undef"
10077                 fi
10078         else
10079         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10080                 d_fd_set="$undef"
10081                 d_fds_bits="$undef"
10082                 d_fd_macros="$undef"
10083         fi
10084 fi
10085 $rm -f try try.*
10086
10087 : see if fgetpos exists
10088 set fgetpos d_fgetpos
10089 eval $inlibc
10090
10091 : see if flock exists
10092 set flock d_flock
10093 eval $inlibc
10094
10095 : see if this is a sys/file.h system
10096 val=''
10097 set sys/file.h val
10098 eval $inhdr
10099
10100 : do we need to include sys/file.h ?
10101 case "$val" in
10102 "$define")
10103         echo " "
10104         if $h_sysfile; then
10105                 val="$define"
10106                 echo "We'll be including <sys/file.h>." >&4
10107         else
10108                 val="$undef"
10109                 echo "We won't be including <sys/file.h>." >&4
10110         fi
10111         ;;
10112 *)
10113         h_sysfile=false
10114         ;;
10115 esac
10116 set i_sysfile
10117 eval $setvar
10118
10119 : see if prototype for flock is available
10120 echo " "
10121 set d_flockproto flock $i_sysfile sys/file.h
10122 eval $hasproto
10123
10124 : see if fork exists
10125 set fork d_fork
10126 eval $inlibc
10127
10128 : see if pathconf exists
10129 set pathconf d_pathconf
10130 eval $inlibc
10131
10132 : see if fpathconf exists
10133 set fpathconf d_fpathconf
10134 eval $inlibc
10135
10136
10137 : check for fpos64_t
10138 echo " "
10139 echo "Checking to see if you have fpos64_t..." >&4
10140 $cat >try.c <<EOCP
10141 #include <stdio.h>
10142 int main() { fpos64_t x = 7; }
10143 EOCP
10144 set try
10145 if eval $compile; then
10146         val="$define"
10147         echo "You have fpos64_t."
10148 else
10149         val="$undef"
10150         echo "You do not have fpos64_t."
10151         case "$fpossize" in
10152         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10153         esac
10154 fi
10155 $rm -f try.* try
10156 set d_fpos64_t
10157 eval $setvar
10158
10159 : see if frexpl exists
10160 set frexpl d_frexpl
10161 eval $inlibc
10162
10163 : see if this is a sys/param system
10164 set sys/param.h i_sysparam
10165 eval $inhdr
10166
10167 : see if this is a sys/mount.h system
10168 set sys/mount.h i_sysmount
10169 eval $inhdr
10170
10171
10172 echo " "
10173 echo "Checking to see if your system supports struct fs_data..." >&4
10174 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10175 eval $hasstruct
10176 case "$d_fs_data_s" in
10177 "$define")      echo "Yes, it does."   ;;
10178 *)              echo "No, it doesn't." ;;
10179 esac
10180
10181 : see if fseeko exists
10182 set fseeko d_fseeko
10183 eval $inlibc
10184 case "$longsize" in
10185 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10186 esac
10187
10188 : see if fsetpos exists
10189 set fsetpos d_fsetpos
10190 eval $inlibc
10191
10192
10193 : see if fstatfs exists
10194 set fstatfs d_fstatfs
10195 eval $inlibc
10196
10197
10198 : see if statvfs exists
10199 set statvfs d_statvfs
10200 eval $inlibc
10201
10202 : see if fstatvfs exists
10203 set fstatvfs d_fstatvfs
10204 eval $inlibc
10205
10206
10207 : see if fsync exists
10208 set fsync d_fsync
10209 eval $inlibc
10210
10211 : see if ftello exists
10212 set ftello d_ftello
10213 eval $inlibc
10214 case "$longsize" in
10215 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10216 esac
10217
10218 : see if getcwd exists
10219 set getcwd d_getcwd
10220 eval $inlibc
10221
10222 : see if getespwnam exists
10223 set getespwnam d_getespwnam
10224 eval $inlibc
10225
10226
10227 : see if getfsstat exists
10228 set getfsstat d_getfsstat
10229 eval $inlibc
10230
10231 : see if getgrent exists
10232 set getgrent d_getgrent
10233 eval $inlibc
10234
10235 : see if gethostbyaddr exists
10236 set gethostbyaddr d_gethbyaddr
10237 eval $inlibc
10238
10239 : see if gethostbyname exists
10240 set gethostbyname d_gethbyname
10241 eval $inlibc
10242
10243 : see if gethostent exists
10244 set gethostent d_gethent
10245 eval $inlibc
10246
10247 : see how we will look up host name
10248 echo " "
10249 call=''
10250 if set gethostname val -f d_gethname; eval $csym; $val; then
10251         echo 'gethostname() found.' >&4
10252         d_gethname="$define"
10253         call=gethostname
10254 fi
10255 if set uname val -f d_uname; eval $csym; $val; then
10256         if ./xenix; then
10257                 $cat <<'EOM'
10258 uname() was found, but you're running xenix, and older versions of xenix
10259 have a broken uname(). If you don't really know whether your xenix is old
10260 enough to have a broken system call, use the default answer.
10261
10262 EOM
10263                 dflt=y
10264                 case "$d_uname" in
10265                 "$define") dflt=n;;
10266                 esac
10267                 rp='Is your uname() broken?'
10268                 . ./myread
10269                 case "$ans" in
10270                 n*) d_uname="$define"; call=uname;;
10271                 esac
10272         else
10273                 echo 'uname() found.' >&4
10274                 d_uname="$define"
10275                 case "$call" in
10276                 '') call=uname ;;
10277                 esac
10278         fi
10279 fi
10280 case "$d_gethname" in
10281 '') d_gethname="$undef";;
10282 esac
10283 case "$d_uname" in
10284 '') d_uname="$undef";;
10285 esac
10286 case "$d_uname$d_gethname" in
10287 *define*)
10288         dflt=n
10289         cat <<EOM
10290  
10291 Every now and then someone has a $call() that lies about the hostname
10292 but can't be fixed for political or economic reasons.  If you wish, I can
10293 pretend $call() isn't there and maybe compute hostname at run-time
10294 thanks to the '$phostname' command.
10295
10296 EOM
10297         rp="Shall I ignore $call() from now on?"
10298         . ./myread
10299         case "$ans" in
10300         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10301         esac;;
10302 esac
10303 case "$phostname" in
10304 '') aphostname='';;
10305 *) case "$aphostname" in
10306         /*) ;;
10307         *) set X $phostname
10308                 shift
10309                 file=$1
10310                 shift
10311                 file=`./loc $file $file $pth`
10312                 aphostname=`echo $file $*`
10313                 ;;
10314         esac
10315         ;;
10316 esac
10317 case "$d_uname$d_gethname" in
10318 *define*) ;;
10319 *)
10320         case "$phostname" in
10321         '')
10322                 echo "There will be no way for $package to get your hostname." >&4;;
10323         *)
10324         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10325                 ;;
10326         esac;;
10327 esac
10328 case "$d_phostname" in
10329 '') d_phostname="$undef";;
10330 esac
10331
10332 : see if this is a netdb.h system
10333 set netdb.h i_netdb
10334 eval $inhdr
10335
10336 : see if prototypes for various gethostxxx netdb.h functions are available
10337 echo " "
10338 set d_gethostprotos gethostent $i_netdb netdb.h
10339 eval $hasproto
10340
10341 : see if getitimer exists
10342 set getitimer d_getitimer
10343 eval $inlibc
10344
10345 : see if getlogin exists
10346 set getlogin d_getlogin
10347 eval $inlibc
10348
10349 : see if getmnt exists
10350 set getmnt d_getmnt
10351 eval $inlibc
10352
10353 : see if getmntent exists
10354 set getmntent d_getmntent
10355 eval $inlibc
10356
10357 : see if getnetbyaddr exists
10358 set getnetbyaddr d_getnbyaddr
10359 eval $inlibc
10360
10361 : see if getnetbyname exists
10362 set getnetbyname d_getnbyname
10363 eval $inlibc
10364
10365 : see if getnetent exists
10366 set getnetent d_getnent
10367 eval $inlibc
10368
10369 : see if prototypes for various getnetxxx netdb.h functions are available
10370 echo " "
10371 set d_getnetprotos getnetent $i_netdb netdb.h
10372 eval $hasproto
10373
10374 : see if getpagesize exists
10375 set getpagesize d_getpagsz
10376 eval $inlibc
10377
10378
10379 : see if getprotobyname exists
10380 set getprotobyname d_getpbyname
10381 eval $inlibc
10382
10383 : see if getprotobynumber exists
10384 set getprotobynumber d_getpbynumber
10385 eval $inlibc
10386
10387 : see if getprotoent exists
10388 set getprotoent d_getpent
10389 eval $inlibc
10390
10391 : see if getpgid exists
10392 set getpgid d_getpgid
10393 eval $inlibc
10394
10395 : see if getpgrp2 exists
10396 set getpgrp2 d_getpgrp2
10397 eval $inlibc
10398
10399 : see if getppid exists
10400 set getppid d_getppid
10401 eval $inlibc
10402
10403 : see if getpriority exists
10404 set getpriority d_getprior
10405 eval $inlibc
10406
10407 : see if prototypes for various getprotoxxx netdb.h functions are available
10408 echo " "
10409 set d_getprotoprotos getprotoent $i_netdb netdb.h
10410 eval $hasproto
10411
10412 : see if getprpwnam exists
10413 set getprpwnam d_getprpwnam
10414 eval $inlibc
10415
10416 : see if getpwent exists
10417 set getpwent d_getpwent
10418 eval $inlibc
10419
10420
10421 : see if getservbyname exists
10422 set getservbyname d_getsbyname
10423 eval $inlibc
10424
10425 : see if getservbyport exists
10426 set getservbyport d_getsbyport
10427 eval $inlibc
10428
10429 : see if getservent exists
10430 set getservent d_getsent
10431 eval $inlibc
10432
10433 : see if prototypes for various getservxxx netdb.h functions are available
10434 echo " "
10435 set d_getservprotos getservent $i_netdb netdb.h
10436 eval $hasproto
10437
10438 : see if getspnam exists
10439 set getspnam d_getspnam
10440 eval $inlibc
10441
10442 : see if gettimeofday or ftime exists
10443 set gettimeofday d_gettimeod
10444 eval $inlibc
10445 case "$d_gettimeod" in
10446 "$undef")
10447         set ftime d_ftime 
10448         eval $inlibc
10449         ;;
10450 *)
10451         val="$undef"; set d_ftime; eval $setvar
10452         ;;
10453 esac
10454 case "$d_gettimeod$d_ftime" in
10455 "$undef$undef")
10456         echo " "
10457         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10458         ;;
10459 esac
10460
10461 : see if this is an grp system
10462 set grp.h i_grp
10463 eval $inhdr
10464
10465 case "$i_grp" in
10466 $define)
10467         xxx=`./findhdr grp.h`
10468         $cppstdin $cppflags $cppminus < $xxx >$$.h
10469
10470         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10471                 val="$define"
10472         else
10473                 val="$undef"
10474         fi
10475         set d_grpasswd
10476         eval $setvar
10477
10478         $rm -f $$.h
10479         ;;
10480 *)
10481         val="$undef";
10482         set d_grpasswd; eval $setvar
10483         ;;
10484 esac
10485
10486 : see if hasmntopt exists
10487 set hasmntopt d_hasmntopt
10488 eval $inlibc
10489
10490 : see if this is a netinet/in.h or sys/in.h system
10491 set netinet/in.h i_niin sys/in.h i_sysin
10492 eval $inhdr
10493
10494 : see if arpa/inet.h has to be included
10495 set arpa/inet.h i_arpainet
10496 eval $inhdr
10497
10498 : see if htonl --and friends-- exists
10499 val=''
10500 set htonl val
10501 eval $inlibc
10502
10503 : Maybe they are macros.
10504 case "$val" in
10505 $undef)
10506         $cat >htonl.c <<EOM
10507 #include <stdio.h>
10508 #include <sys/types.h>
10509 #$i_niin I_NETINET_IN
10510 #$i_sysin I_SYS_IN
10511 #$i_arpainet I_ARPA_INET
10512 #ifdef I_NETINET_IN
10513 #include <netinet/in.h>
10514 #endif
10515 #ifdef I_SYS_IN
10516 #include <sys/in.h>
10517 #endif
10518 #ifdef I_ARPA_INET
10519 #include <arpa/inet.h>
10520 #endif
10521 #ifdef htonl
10522 printf("Defined as a macro.");
10523 #endif
10524 EOM
10525         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10526         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10527                 val="$define"
10528                 echo "But it seems to be defined as a macro." >&4
10529         fi
10530         $rm -f htonl.?
10531         ;;
10532 esac
10533 set d_htonl
10534 eval $setvar
10535
10536 : see if iconv exists
10537 set iconv d_iconv
10538 eval $inlibc
10539
10540 : index or strchr
10541 echo " "
10542 if set index val -f; eval $csym; $val; then
10543         if set strchr val -f d_strchr; eval $csym; $val; then
10544                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10545                         val="$define"
10546                         vali="$undef"
10547                         echo "strchr() found." >&4
10548                 else
10549                         val="$undef"
10550                         vali="$define"
10551                         echo "index() found." >&4
10552                 fi
10553         else
10554                 val="$undef"
10555                 vali="$define"
10556                 echo "index() found." >&4
10557         fi
10558 else
10559         if set strchr val -f d_strchr; eval $csym; $val; then
10560                 val="$define"
10561                 vali="$undef"
10562                 echo "strchr() found." >&4
10563         else
10564                 echo "No index() or strchr() found!" >&4
10565                 val="$undef"
10566                 vali="$undef"
10567         fi
10568 fi
10569 set d_strchr; eval $setvar
10570 val="$vali"
10571 set d_index; eval $setvar
10572
10573 : check whether inet_aton exists
10574 set inet_aton d_inetaton
10575 eval $inlibc
10576
10577 : Look for isascii
10578 echo " "
10579 $cat >isascii.c <<'EOCP'
10580 #include <stdio.h>
10581 #include <ctype.h>
10582 int main() {
10583         int c = 'A';
10584         if (isascii(c))
10585                 exit(0);
10586         else
10587                 exit(1);
10588 }
10589 EOCP
10590 set isascii
10591 if eval $compile; then
10592         echo "isascii() found." >&4
10593         val="$define"
10594 else
10595         echo "isascii() NOT found." >&4
10596         val="$undef"
10597 fi
10598 set d_isascii
10599 eval $setvar
10600 $rm -f isascii*
10601
10602 : see if isnan exists
10603 set isnan d_isnan
10604 eval $inlibc
10605
10606 : see if isnanl exists
10607 set isnanl d_isnanl
10608 eval $inlibc
10609
10610 : see if killpg exists
10611 set killpg d_killpg
10612 eval $inlibc
10613
10614 : see if lchown exists
10615 echo " "
10616 $cat > try.c <<'EOCP'
10617 /* System header to define __stub macros and hopefully few prototypes,
10618     which can conflict with char lchown(); below.  */
10619 #include <assert.h>
10620 /* Override any gcc2 internal prototype to avoid an error.  */
10621 /* We use char because int might match the return type of a gcc2
10622    builtin and then its argument prototype would still apply.  */
10623 char lchown();
10624 int main() {
10625     /*  The GNU C library defines this for functions which it implements
10626         to always fail with ENOSYS.  Some functions are actually named
10627         something starting with __ and the normal name is an alias.  */
10628 #if defined (__stub_lchown) || defined (__stub___lchown)
10629 choke me
10630 #else
10631 lchown();
10632 #endif
10633 ; return 0; }
10634 EOCP
10635 set try
10636 if eval $compile; then
10637     $echo "lchown() found." >&4
10638     val="$define"
10639 else
10640     $echo "lchown() NOT found." >&4
10641     val="$undef"
10642 fi
10643 set d_lchown
10644 eval $setvar
10645
10646 : See if number of significant digits in a double precision number is known
10647 echo " "
10648 $cat >ldbl_dig.c <<EOM
10649 #$i_limits I_LIMITS
10650 #$i_float I_FLOAT
10651 #ifdef I_LIMITS
10652 #include <limits.h>
10653 #endif
10654 #ifdef I_FLOAT
10655 #include <float.h>
10656 #endif
10657 #ifdef LDBL_DIG
10658 printf("Contains LDBL_DIG");
10659 #endif
10660 EOM
10661 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10662 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10663         echo "LDBL_DIG found." >&4
10664         val="$define"
10665 else
10666         echo "LDBL_DIG NOT found." >&4
10667         val="$undef"
10668 fi
10669 $rm -f ldbl_dig.?
10670 set d_ldbl_dig
10671 eval $setvar
10672
10673 : see if link exists
10674 set link d_link
10675 eval $inlibc
10676
10677 : see if localeconv exists
10678 set localeconv d_locconv
10679 eval $inlibc
10680
10681 : see if lockf exists
10682 set lockf d_lockf
10683 eval $inlibc
10684
10685 : see if prototype for lseek is available
10686 echo " "
10687 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10688 eval $hasproto
10689
10690 : see if lstat exists
10691 set lstat d_lstat
10692 eval $inlibc
10693
10694 : see if madvise exists
10695 set madvise d_madvise
10696 eval $inlibc
10697
10698 : see if mblen exists
10699 set mblen d_mblen
10700 eval $inlibc
10701
10702 : see if mbstowcs exists
10703 set mbstowcs d_mbstowcs
10704 eval $inlibc
10705
10706 : see if mbtowc exists
10707 set mbtowc d_mbtowc
10708 eval $inlibc
10709
10710 : see if memchr exists
10711 set memchr d_memchr
10712 eval $inlibc
10713
10714 : see if memcmp exists
10715 set memcmp d_memcmp
10716 eval $inlibc
10717
10718 : see if memcpy exists
10719 set memcpy d_memcpy
10720 eval $inlibc
10721
10722 : see if memmove exists
10723 set memmove d_memmove
10724 eval $inlibc
10725
10726 : see if memset exists
10727 set memset d_memset
10728 eval $inlibc
10729
10730 : see if mkdir exists
10731 set mkdir d_mkdir
10732 eval $inlibc
10733
10734 : see if mkdtemp exists
10735 set mkdtemp d_mkdtemp
10736 eval $inlibc
10737
10738 : see if mkfifo exists
10739 set mkfifo d_mkfifo
10740 eval $inlibc
10741
10742 : see if mkstemp exists
10743 set mkstemp d_mkstemp
10744 eval $inlibc
10745
10746 : see if mkstemps exists
10747 set mkstemps d_mkstemps
10748 eval $inlibc
10749
10750 : see if mktime exists
10751 set mktime d_mktime
10752 eval $inlibc
10753
10754 : see if this is a sys/mman.h system
10755 set sys/mman.h i_sysmman
10756 eval $inhdr
10757
10758 : see if mmap exists
10759 set mmap d_mmap
10760 eval $inlibc
10761 : see what shmat returns
10762 : default to something harmless
10763 mmaptype='void *'
10764 case "$i_sysmman$d_mmap" in
10765 "$define$define")
10766         $cat >mmap.c <<'END'
10767 #include <sys/mman.h>
10768 void *mmap();
10769 END
10770         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10771                 mmaptype='void *'
10772         else
10773                 mmaptype='caddr_t'
10774         fi
10775         echo "and it returns ($mmaptype)." >&4
10776         ;;
10777 esac
10778
10779
10780
10781 : see if modfl exists
10782 set modfl d_modfl
10783 eval $inlibc
10784
10785 d_modfl_pow32_bug="$undef"
10786
10787 case "$d_longdbl$d_modfl" in
10788 $define$define)
10789         $cat <<EOM
10790 Checking to see whether your modfl() is okay for large values...
10791 EOM
10792 $cat >try.c <<EOCP
10793 #include <math.h> 
10794 #include <stdio.h>
10795 int main() {
10796     long double nv = 4294967303.15;
10797     long double v, w;
10798     v = modfl(nv, &w);         
10799 #ifdef __GLIBC__
10800     printf("glibc");
10801 #endif
10802     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10803     return 0;
10804 }
10805 EOCP
10806         case "$osname:$gccversion" in
10807         aix:)   saveccflags="$ccflags"
10808                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10809         esac
10810         set try
10811         if eval $compile; then
10812                 foo=`$run ./try`
10813                 case "$foo" in
10814                 *" 4294967303.150000 1.150000 4294967302.000000")
10815                         echo >&4 "Your modfl() is broken for large values."
10816                         d_modfl_pow32_bug="$define"
10817                         case "$foo" in
10818                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10819                         ;;
10820                         esac
10821                         ;;
10822                 *" 4294967303.150000 0.150000 4294967303.000000")
10823                         echo >&4 "Your modfl() seems okay for large values."
10824                         ;;
10825                 *)      echo >&4 "I don't understand your modfl() at all."
10826                         d_modfl="$undef"
10827                         ;;
10828                 esac
10829                 $rm -f try.* try core core.try.*
10830         else
10831                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10832                 d_modfl="$undef"
10833         fi
10834         case "$osname:$gccversion" in
10835         aix:)   ccflags="$saveccflags" ;; # restore
10836         esac
10837         ;;
10838 esac
10839
10840 : see if mprotect exists
10841 set mprotect d_mprotect
10842 eval $inlibc
10843
10844 : see if msgctl exists
10845 set msgctl d_msgctl
10846 eval $inlibc
10847
10848 : see if msgget exists
10849 set msgget d_msgget
10850 eval $inlibc
10851
10852 : see if msgsnd exists
10853 set msgsnd d_msgsnd
10854 eval $inlibc
10855
10856 : see if msgrcv exists
10857 set msgrcv d_msgrcv
10858 eval $inlibc
10859
10860 : see how much of the 'msg*(2)' library is present.
10861 h_msg=true
10862 echo " "
10863 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10864 *"$undef"*) h_msg=false;;
10865 esac
10866 case "$osname" in
10867 freebsd)
10868     case "`ipcs 2>&1`" in
10869     "SVID messages"*"not configured"*)
10870         echo "Your $osname does not have the msg*(2) configured." >&4
10871         h_msg=false
10872         val="$undef"
10873         set msgctl d_msgctl
10874         eval $setvar
10875         set msgget d_msgget
10876         eval $setvar
10877         set msgsnd d_msgsnd
10878         eval $setvar
10879         set msgrcv d_msgrcv
10880         eval $setvar
10881         ;;
10882     esac
10883     ;;
10884 esac
10885 : we could also check for sys/ipc.h ...
10886 if $h_msg && $test `./findhdr sys/msg.h`; then
10887         echo "You have the full msg*(2) library." >&4
10888         val="$define"
10889 else
10890         echo "You don't have the full msg*(2) library." >&4
10891         val="$undef"
10892 fi
10893 set d_msg
10894 eval $setvar
10895
10896
10897 echo " "
10898 echo "Checking to see if your system supports struct msghdr..." >&4
10899 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10900 eval $hasstruct
10901 case "$d_msghdr_s" in
10902 "$define")      echo "Yes, it does."   ;;
10903 *)              echo "No, it doesn't." ;;
10904 esac
10905
10906
10907 : see if msync exists
10908 set msync d_msync
10909 eval $inlibc
10910
10911 : see if munmap exists
10912 set munmap d_munmap
10913 eval $inlibc
10914
10915 : see if nice exists
10916 set nice d_nice
10917 eval $inlibc
10918
10919 : see if this is a langinfo.h system
10920 set langinfo.h i_langinfo
10921 eval $inhdr
10922
10923 : see if nl_langinfo exists
10924 set nl_langinfo d_nl_langinfo
10925 eval $inlibc
10926
10927 : check for length of character
10928 echo " "
10929 case "$charsize" in
10930 '')
10931         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10932         $cat >try.c <<'EOCP'
10933 #include <stdio.h>
10934 int main()
10935 {
10936     printf("%d\n", (int)sizeof(char));
10937     exit(0);
10938 }
10939 EOCP
10940         set try
10941         if eval $compile_ok; then
10942                 dflt=`$run ./try`
10943         else
10944                 dflt='1'
10945                 echo "(I can't seem to compile the test program.  Guessing...)"
10946         fi
10947         ;;
10948 *)
10949         dflt="$charsize"
10950         ;;
10951 esac
10952 rp="What is the size of a character (in bytes)?"
10953 . ./myread
10954 charsize="$ans"
10955 $rm -f try.c try
10956
10957 : check for volatile keyword
10958 echo " "
10959 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10960 $cat >try.c <<'EOCP'
10961 int main()
10962 {
10963         typedef struct _goo_struct goo_struct;
10964         goo_struct * volatile goo = ((goo_struct *)0);
10965         struct _goo_struct {
10966                 long long_int;
10967                 int reg_int;
10968                 char char_var;
10969         };
10970         typedef unsigned short foo_t;
10971         char *volatile foo;
10972         volatile int bar;
10973         volatile foo_t blech;
10974         foo = foo;
10975 }
10976 EOCP
10977 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10978         val="$define"
10979         echo "Yup, it does."
10980 else
10981         val="$undef"
10982         echo "Nope, it doesn't."
10983 fi
10984 set d_volatile
10985 eval $setvar
10986 $rm -f try.*
10987
10988
10989 echo " "
10990 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10991
10992 case "$use64bitint:$d_quad:$quadtype" in
10993 define:define:?*)
10994         ivtype="$quadtype"
10995         uvtype="$uquadtype"
10996         ivsize=8
10997         uvsize=8
10998         ;;
10999 *)      ivtype="long"
11000         uvtype="unsigned long"
11001         ivsize=$longsize
11002         uvsize=$longsize
11003         ;;
11004 esac
11005
11006 case "$uselongdouble:$d_longdbl" in
11007 define:define)
11008         nvtype="long double"
11009         nvsize=$longdblsize
11010         ;;
11011 *)      nvtype=double
11012         nvsize=$doublesize
11013         ;;
11014 esac
11015
11016 $echo "(IV will be "$ivtype", $ivsize bytes)"
11017 $echo "(UV will be "$uvtype", $uvsize bytes)"
11018 $echo "(NV will be "$nvtype", $nvsize bytes)"
11019
11020 $cat >try.c <<EOCP
11021 #$i_inttypes I_INTTYPES
11022 #ifdef I_INTTYPES
11023 #include <inttypes.h>
11024 #endif
11025 #include <stdio.h>
11026 int main() {
11027 #ifdef INT8
11028    int8_t i =  INT8_MAX;
11029   uint8_t u = UINT8_MAX;
11030   printf("int8_t\n");
11031 #endif
11032 #ifdef INT16
11033    int16_t i =  INT16_MAX;
11034   uint16_t i = UINT16_MAX;
11035   printf("int16_t\n");
11036 #endif
11037 #ifdef INT32
11038    int32_t i =  INT32_MAX;
11039   uint32_t u = UINT32_MAX;
11040   printf("int32_t\n");
11041 #endif
11042 }
11043 EOCP
11044
11045 case "$i8type" in
11046 '')     case "$charsize" in
11047         1)      i8type=char
11048                 u8type="unsigned char"
11049                 i8size=$charsize
11050                 u8size=$charsize
11051                 ;;
11052         esac
11053         ;;
11054 esac
11055 case "$i8type" in
11056 '')     set try -DINT8
11057         if eval $compile; then
11058                 case "`$run ./try`" in
11059                 int8_t) i8type=int8_t
11060                         u8type=uint8_t
11061                         i8size=1
11062                         u8size=1
11063                         ;;
11064                 esac
11065         fi
11066         ;;
11067 esac
11068 case "$i8type" in
11069 '')     if $test $charsize -ge 1; then
11070                 i8type=char
11071                 u8type="unsigned char"
11072                 i8size=$charsize
11073                 u8size=$charsize
11074         fi
11075         ;;
11076 esac
11077
11078 case "$i16type" in
11079 '')     case "$shortsize" in
11080         2)      i16type=short
11081                 u16type="unsigned short"
11082                 i16size=$shortsize
11083                 u16size=$shortsize
11084                 ;;
11085         esac
11086         ;;
11087 esac
11088 case "$i16type" in
11089 '')     set try -DINT16
11090         if eval $compile; then
11091                 case "`$run ./try`" in
11092                 int16_t)
11093                         i16type=int16_t
11094                         u16type=uint16_t
11095                         i16size=2
11096                         u16size=2
11097                         ;;
11098                 esac
11099         fi
11100         ;;
11101 esac
11102 case "$i16type" in
11103 '')     if $test $shortsize -ge 2; then
11104                 i16type=short
11105                 u16type="unsigned short"
11106                 i16size=$shortsize
11107                 u16size=$shortsize
11108         fi
11109         ;;
11110 esac
11111
11112 case "$i32type" in
11113 '')     case "$longsize" in
11114         4)      i32type=long
11115                 u32type="unsigned long"
11116                 i32size=$longsize
11117                 u32size=$longsize
11118                 ;;
11119         *)      case "$intsize" in
11120                 4)      i32type=int
11121                         u32type="unsigned int"
11122                         i32size=$intsize
11123                         u32size=$intsize
11124                         ;;
11125                 esac
11126                 ;;
11127         esac
11128         ;;
11129 esac
11130 case "$i32type" in
11131 '')     set try -DINT32
11132         if eval $compile; then
11133                 case "`$run ./try`" in
11134                 int32_t)
11135                         i32type=int32_t
11136                         u32type=uint32_t
11137                         i32size=4
11138                         u32size=4
11139                         ;;
11140                 esac
11141         fi
11142         ;;
11143 esac
11144 case "$i32type" in
11145 '')     if $test $intsize -ge 4; then
11146                 i32type=int
11147                 u32type="unsigned int"
11148                 i32size=$intsize
11149                 u32size=$intsize
11150         fi
11151         ;;
11152 esac
11153
11154 case "$i64type" in
11155 '')     case "$d_quad:$quadtype" in
11156         define:?*)
11157                 i64type="$quadtype"
11158                 u64type="$uquadtype"
11159                 i64size=8
11160                 u64size=8
11161                 ;;
11162         esac
11163         ;;
11164 esac
11165
11166 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11167 : volatile so that the compiler has to store it out to memory.
11168 if test X"$d_volatile" = X"$define"; then
11169         volatile=volatile
11170 fi
11171 $cat <<EOP >try.c
11172 #include <stdio.h>
11173 #include <sys/types.h>
11174 #include <signal.h>
11175 #ifdef SIGFPE
11176 $volatile int bletched = 0;
11177 $signal_t blech(s) int s; { bletched = 1; }
11178 #endif
11179 int main() {
11180     $uvtype u = 0;
11181     $nvtype d;
11182     int     n = 8 * $uvsize;
11183     int     i;
11184 #ifdef SIGFPE
11185     signal(SIGFPE, blech);
11186 #endif
11187
11188     for (i = 0; i < n; i++) {
11189       u = u << 1 | ($uvtype)1;
11190       d = ($nvtype)u;
11191       if (($uvtype)d != u)
11192         break;
11193       if (d <= 0)
11194         break;
11195       d = ($nvtype)(u - 1);
11196       if (($uvtype)d != (u - 1))
11197         break;
11198 #ifdef SIGFPE
11199       if (bletched) {
11200         break;
11201 #endif
11202       } 
11203     }
11204     printf("%d\n", ((i == n) ? -n : i));
11205     exit(0);
11206 }
11207 EOP
11208 set try
11209
11210 d_nv_preserves_uv="$undef"
11211 if eval $compile; then
11212         d_nv_preserves_uv_bits="`$run ./try`"
11213 fi
11214 case "$d_nv_preserves_uv_bits" in
11215 \-[1-9]*)       
11216         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11217         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11218         d_nv_preserves_uv="$define"
11219         ;;
11220 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11221         d_nv_preserves_uv="$undef" ;;
11222 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11223         d_nv_preserves_uv_bits="$undef" ;;
11224 esac
11225
11226 $rm -f try.* try
11227
11228
11229 : check for off64_t
11230 echo " "
11231 echo "Checking to see if you have off64_t..." >&4
11232 $cat >try.c <<EOCP
11233 #include <sys/types.h>
11234 #include <unistd.h>
11235 int main() { off64_t x = 7; }
11236 EOCP
11237 set try
11238 if eval $compile; then
11239         val="$define"
11240         echo "You have off64_t."
11241 else
11242         val="$undef"
11243         echo "You do not have off64_t."
11244         case "$lseeksize" in
11245         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11246         esac
11247 fi
11248 $rm -f try.* try
11249 set d_off64_t
11250 eval $setvar
11251
11252 : see if POSIX threads are available
11253 set pthread.h i_pthread
11254 eval $inhdr
11255
11256
11257
11258
11259 : how to create joinable pthreads
11260 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11261         echo " "
11262         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11263         $cat >try.c <<'EOCP'
11264 #include <pthread.h>
11265 int main() {
11266     int detachstate = JOINABLE;
11267 }
11268 EOCP
11269         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11270         if eval $compile; then
11271                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11272                 val="$undef" # Yes, undef.
11273                 set d_old_pthread_create_joinable
11274                 eval $setvar
11275                 val=""
11276                 set old_pthread_create_joinable
11277                 eval $setvar
11278         else
11279                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11280                 if eval $compile; then
11281                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11282                         val="$define"
11283                         set d_old_pthread_create_joinable
11284                         eval $setvar
11285                         val=PTHREAD_CREATE_UNDETACHED
11286                         set old_pthread_create_joinable
11287                         eval $setvar
11288                 else            
11289                         set try -DJOINABLE=__UNDETACHED
11290                         if eval $compile; then
11291                                 echo "You seem to use __UNDETACHED." >&4
11292                                 val="$define"
11293                                 set d_old_pthread_create_joinable
11294                                 eval $setvar
11295                                 val=__UNDETACHED
11296                                 set old_pthread_create_joinable
11297                                 eval $setvar
11298                         else
11299                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11300                                 val="$define"
11301                                 set d_old_pthread_create_joinable
11302                                 eval $setvar
11303                                 val=0
11304                                 set old_pthread_create_joinable
11305                                 eval $setvar
11306                         fi
11307                 fi
11308         fi
11309         $rm -f try try.*
11310 else
11311     d_old_pthread_create_joinable="$undef"
11312     old_pthread_create_joinable=""
11313 fi
11314
11315 : see if pause exists
11316 set pause d_pause
11317 eval $inlibc
11318
11319 : see if pipe exists
11320 set pipe d_pipe
11321 eval $inlibc
11322
11323 : see if poll exists
11324 set poll d_poll
11325 eval $inlibc
11326
11327
11328 : see whether the various POSIXish _yields exist
11329 $cat >try.c <<EOP
11330 #include <pthread.h>
11331 #include <stdio.h>
11332 int main() {
11333 #ifdef SCHED_YIELD
11334         sched_yield();
11335 #else
11336 #ifdef PTHREAD_YIELD
11337         pthread_yield();
11338 #else
11339 #ifdef PTHREAD_YIELD_NULL
11340         pthread_yield(NULL);
11341 #endif
11342 #endif
11343 #endif
11344 }
11345 EOP
11346 : see if sched_yield exists
11347 set try -DSCHED_YIELD
11348 if eval $compile; then
11349     val="$define"
11350     sched_yield='sched_yield()'
11351 else
11352     val="$undef"
11353 fi
11354 case "$usethreads" in
11355 $define)
11356         case "$val" in
11357         $define) echo 'sched_yield() found.' >&4        ;;
11358         *)       echo 'sched_yield() NOT found.' >&4    ;;
11359         esac
11360 esac
11361 set d_sched_yield
11362 eval $setvar
11363
11364 : see if pthread_yield exists
11365 set try -DPTHREAD_YIELD
11366 if eval $compile; then
11367     val="$define"
11368     case "$sched_yield" in
11369     '') sched_yield='pthread_yield()' ;;
11370     esac
11371 else
11372     set try -DPTHREAD_YIELD_NULL
11373     if eval $compile; then
11374         val="$define"
11375         case "$sched_yield" in
11376         '') sched_yield='pthread_yield(NULL)' ;;
11377         esac
11378     else
11379         val="$undef"
11380     fi
11381 fi
11382 case "$usethreads" in
11383 $define)
11384         case "$val" in
11385         $define) echo 'pthread_yield() found.' >&4      ;;
11386         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11387         esac
11388         ;;
11389 esac
11390 set d_pthread_yield
11391 eval $setvar
11392
11393 case "$sched_yield" in
11394 '') sched_yield=undef ;;
11395 esac
11396
11397 $rm -f try try.*
11398
11399 : see if this is a pwd.h system
11400 set pwd.h i_pwd
11401 eval $inhdr
11402
11403 case "$i_pwd" in
11404 $define)
11405         xxx=`./findhdr pwd.h`
11406         $cppstdin $cppflags $cppminus < $xxx >$$.h
11407
11408         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11409                 val="$define"
11410         else
11411                 val="$undef"
11412         fi
11413         set d_pwquota
11414         eval $setvar
11415
11416         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11417                 val="$define"
11418         else
11419                 val="$undef"
11420         fi
11421         set d_pwage
11422         eval $setvar
11423
11424         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11425                 val="$define"
11426         else
11427                 val="$undef"
11428         fi
11429         set d_pwchange
11430         eval $setvar
11431
11432         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11433                 val="$define"
11434         else
11435                 val="$undef"
11436         fi
11437         set d_pwclass
11438         eval $setvar
11439
11440         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11441                 val="$define"
11442         else
11443                 val="$undef"
11444         fi
11445         set d_pwexpire
11446         eval $setvar
11447
11448         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11449                 val="$define"
11450         else
11451                 val="$undef"
11452         fi
11453         set d_pwcomment
11454         eval $setvar
11455
11456         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11457                 val="$define"
11458         else
11459                 val="$undef"
11460         fi
11461         set d_pwgecos
11462         eval $setvar
11463
11464         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11465                 val="$define"
11466         else
11467                 val="$undef"
11468         fi
11469         set d_pwpasswd
11470         eval $setvar
11471
11472         $rm -f $$.h
11473         ;;
11474 *)
11475         val="$undef"; 
11476         set d_pwquota; eval $setvar
11477         set d_pwage; eval $setvar
11478         set d_pwchange; eval $setvar
11479         set d_pwclass; eval $setvar
11480         set d_pwexpire; eval $setvar
11481         set d_pwcomment; eval $setvar
11482         set d_pwgecos; eval $setvar
11483         set d_pwpasswd; eval $setvar
11484         ;;
11485 esac
11486
11487 : see if readdir and friends exist
11488 set readdir d_readdir
11489 eval $inlibc
11490 set seekdir d_seekdir
11491 eval $inlibc
11492 set telldir d_telldir
11493 eval $inlibc
11494 set rewinddir d_rewinddir
11495 eval $inlibc
11496
11497 : see if readlink exists
11498 set readlink d_readlink
11499 eval $inlibc
11500
11501 : see if readv exists
11502 set readv d_readv
11503 eval $inlibc
11504
11505 : see if recvmsg exists
11506 set recvmsg d_recvmsg
11507 eval $inlibc
11508
11509 : see if rename exists
11510 set rename d_rename
11511 eval $inlibc
11512
11513 : see if rmdir exists
11514 set rmdir d_rmdir
11515 eval $inlibc
11516
11517 : see if memory.h is available.
11518 val=''
11519 set memory.h val
11520 eval $inhdr
11521
11522 : See if it conflicts with string.h
11523 case "$val" in
11524 $define)
11525         case "$strings" in
11526         '') ;;
11527         *)
11528                 $cppstdin $cppflags $cppminus < $strings > mem.h
11529                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11530                         echo " "
11531                         echo "We won't be including <memory.h>."
11532                         val="$undef"
11533                 fi
11534                 $rm -f mem.h
11535                 ;;
11536         esac
11537 esac
11538 set i_memory
11539 eval $setvar
11540
11541 : can bcopy handle overlapping blocks?
11542 echo " "
11543 val="$undef"
11544 case "$d_memmove" in
11545 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11546 *)      case "$d_bcopy" in
11547         "$define")
11548                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11549                 $cat >try.c <<EOCP
11550 #$i_memory I_MEMORY
11551 #$i_stdlib I_STDLIB
11552 #$i_string I_STRING
11553 #$i_unistd I_UNISTD
11554 EOCP
11555         $cat >>try.c <<'EOCP'
11556 #include <stdio.h>
11557 #ifdef I_MEMORY
11558 #  include <memory.h>
11559 #endif
11560 #ifdef I_STDLIB
11561 #  include <stdlib.h>
11562 #endif
11563 #ifdef I_STRING
11564 #  include <string.h>
11565 #else
11566 #  include <strings.h>
11567 #endif
11568 #ifdef I_UNISTD
11569 #  include <unistd.h>  /* Needed for NetBSD */
11570 #endif
11571 int main()
11572 {
11573 char buf[128], abc[128];
11574 char *b;
11575 int len;
11576 int off;
11577 int align;
11578
11579 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11580    try to store the string in read-only memory. */
11581 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11582
11583 for (align = 7; align >= 0; align--) {
11584         for (len = 36; len; len--) {
11585                 b = buf+align;
11586                 bcopy(abc, b, len);
11587                 for (off = 1; off <= len; off++) {
11588                         bcopy(b, b+off, len);
11589                         bcopy(b+off, b, len);
11590                         if (bcmp(b, abc, len))
11591                                 exit(1);
11592                 }
11593         }
11594 }
11595 exit(0);
11596 }
11597 EOCP
11598                 set try
11599                 if eval $compile_ok; then
11600                         if ./try 2>/dev/null; then
11601                                 echo "Yes, it can."
11602                                 val="$define"
11603                         else
11604                                 echo "It can't, sorry."
11605                         fi
11606                 else
11607                         echo "(I can't compile the test program, so we'll assume not...)"
11608                 fi
11609                 ;;
11610         esac
11611         $rm -f try.* try core
11612         ;;
11613 esac
11614 set d_safebcpy
11615 eval $setvar
11616
11617 : can memcpy handle overlapping blocks?
11618 echo " "
11619 val="$undef"
11620 case "$d_memmove" in
11621 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11622 *)      case "$d_memcpy" in
11623         "$define")
11624                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11625                 $cat >try.c <<EOCP
11626 #$i_memory I_MEMORY
11627 #$i_stdlib I_STDLIB
11628 #$i_string I_STRING
11629 #$i_unistd I_UNISTD
11630 EOCP
11631         $cat >>try.c <<'EOCP'
11632 #include <stdio.h>
11633 #ifdef I_MEMORY
11634 #  include <memory.h>
11635 #endif
11636 #ifdef I_STDLIB
11637 #  include <stdlib.h>
11638 #endif
11639 #ifdef I_STRING
11640 #  include <string.h>
11641 #else
11642 #  include <strings.h>
11643 #endif
11644 #ifdef I_UNISTD
11645 #  include <unistd.h>  /* Needed for NetBSD */
11646 #endif
11647 int main()
11648 {
11649 char buf[128], abc[128];
11650 char *b;
11651 int len;
11652 int off;
11653 int align;
11654
11655 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11656    try to store the string in read-only memory. */
11657 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11658
11659 for (align = 7; align >= 0; align--) {
11660         for (len = 36; len; len--) {
11661                 b = buf+align;
11662                 memcpy(b, abc, len);
11663                 for (off = 1; off <= len; off++) {
11664                         memcpy(b+off, b, len);
11665                         memcpy(b, b+off, len);
11666                         if (memcmp(b, abc, len))
11667                                 exit(1);
11668                 }
11669         }
11670 }
11671 exit(0);
11672 }
11673 EOCP
11674                 set try
11675                 if eval $compile_ok; then
11676                         if ./try 2>/dev/null; then
11677                                 echo "Yes, it can."
11678                                 val="$define"
11679                         else
11680                                 echo "It can't, sorry."
11681                         fi
11682                 else
11683                         echo "(I can't compile the test program, so we'll assume not...)"
11684                 fi
11685                 ;;
11686         esac
11687         $rm -f try.* try core
11688         ;;
11689 esac
11690 set d_safemcpy
11691 eval $setvar
11692
11693 : can memcmp be trusted to compare relative magnitude?
11694 val="$undef"
11695 case "$d_memcmp" in
11696 "$define")
11697         echo " "
11698         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11699         $cat >try.c <<EOCP
11700 #$i_memory I_MEMORY
11701 #$i_stdlib I_STDLIB
11702 #$i_string I_STRING
11703 #$i_unistd I_UNISTD
11704 EOCP
11705         $cat >>try.c <<'EOCP'
11706 #include <stdio.h>
11707 #ifdef I_MEMORY
11708 #  include <memory.h>
11709 #endif
11710 #ifdef I_STDLIB
11711 #  include <stdlib.h>
11712 #endif
11713 #ifdef I_STRING
11714 #  include <string.h>
11715 #else
11716 #  include <strings.h>
11717 #endif
11718 #ifdef I_UNISTD
11719 #  include <unistd.h>  /* Needed for NetBSD */
11720 #endif
11721 int main()
11722 {
11723 char a = -1;
11724 char b = 0;
11725 if ((a < b) && memcmp(&a, &b, 1) < 0)
11726         exit(1);
11727 exit(0);
11728 }
11729 EOCP
11730         set try
11731         if eval $compile_ok; then
11732                 if $run ./try 2>/dev/null; then
11733                         echo "Yes, it can."
11734                         val="$define"
11735                 else
11736                         echo "No, it can't (it uses signed chars)."
11737                 fi
11738         else
11739                 echo "(I can't compile the test program, so we'll assume not...)"
11740         fi
11741         ;;
11742 esac
11743 $rm -f try.* try core
11744 set d_sanemcmp
11745 eval $setvar
11746
11747 : see if prototype for sbrk is available
11748 echo " "
11749 set d_sbrkproto sbrk $i_unistd unistd.h
11750 eval $hasproto
11751
11752 : see if select exists
11753 set select d_select
11754 eval $inlibc
11755
11756 : see if semctl exists
11757 set semctl d_semctl
11758 eval $inlibc
11759
11760 : see if semget exists
11761 set semget d_semget
11762 eval $inlibc
11763
11764 : see if semop exists
11765 set semop d_semop
11766 eval $inlibc
11767
11768 : see how much of the 'sem*(2)' library is present.
11769 h_sem=true
11770 echo " "
11771 case "$d_semctl$d_semget$d_semop" in
11772 *"$undef"*) h_sem=false;;
11773 esac
11774 case "$osname" in
11775 freebsd)
11776     case "`ipcs 2>&1`" in
11777     "SVID messages"*"not configured"*)
11778         echo "Your $osname does not have the sem*(2) configured." >&4
11779         h_sem=false
11780         val="$undef"
11781         set semctl d_semctl
11782         eval $setvar
11783         set semget d_semget
11784         eval $setvar
11785         set semop d_semop
11786         eval $setvar
11787         ;;
11788     esac
11789     ;;
11790 esac
11791 : we could also check for sys/ipc.h ...
11792 if $h_sem && $test `./findhdr sys/sem.h`; then
11793         echo "You have the full sem*(2) library." >&4
11794         val="$define"
11795 else
11796         echo "You don't have the full sem*(2) library." >&4
11797         val="$undef"
11798 fi
11799 set d_sem
11800 eval $setvar
11801
11802 : see whether sys/sem.h defines union semun
11803 echo " "
11804 $cat > try.c <<'END'
11805 #include <sys/types.h>
11806 #include <sys/ipc.h>
11807 #include <sys/sem.h>
11808 int main () { union semun semun; semun.buf = 0; }
11809 END
11810 set try
11811 if eval $compile; then
11812     echo "You have union semun in <sys/sem.h>." >&4
11813     val="$define"
11814 else
11815     echo "You do not have union semun in <sys/sem.h>." >&4
11816     val="$undef"
11817 fi
11818 $rm -f try try.c try.h
11819 set d_union_semun
11820 eval $setvar
11821
11822 : see how to do semctl IPC_STAT
11823 case "$d_sem" in
11824 $define)
11825     : see whether semctl IPC_STAT can use union semun
11826     echo " "
11827     $cat > try.h <<END
11828 #ifndef S_IRUSR
11829 #   ifdef S_IREAD
11830 #       define S_IRUSR S_IREAD
11831 #       define S_IWUSR S_IWRITE
11832 #       define S_IXUSR S_IEXEC
11833 #   else
11834 #       define S_IRUSR 0400
11835 #       define S_IWUSR 0200
11836 #       define S_IXUSR 0100
11837 #   endif
11838 #   define S_IRGRP (S_IRUSR>>3)
11839 #   define S_IWGRP (S_IWUSR>>3)
11840 #   define S_IXGRP (S_IXUSR>>3)
11841 #   define S_IROTH (S_IRUSR>>6)
11842 #   define S_IWOTH (S_IWUSR>>6)
11843 #   define S_IXOTH (S_IXUSR>>6)
11844 #endif
11845 #ifndef S_IRWXU
11846 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11847 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11848 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11849 #endif
11850 END
11851
11852     $cat > try.c <<END
11853 #include <sys/types.h>
11854 #include <sys/ipc.h>
11855 #include <sys/sem.h>
11856 #include <sys/stat.h>
11857 #include <stdio.h>
11858 #include <errno.h>
11859 #include "try.h"
11860 #ifndef errno
11861 extern int errno;
11862 #endif
11863 #$d_union_semun HAS_UNION_SEMUN
11864 int main() {
11865     union semun
11866 #ifndef HAS_UNION_SEMUN
11867     {
11868         int val;
11869         struct semid_ds *buf;
11870         unsigned short *array;
11871     }
11872 #endif
11873     arg;
11874     int sem, st;
11875
11876 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11877     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11878     if (sem > -1) {
11879         struct semid_ds argbuf;
11880         arg.buf = &argbuf;
11881 #       ifdef IPC_STAT
11882         st = semctl(sem, 0, IPC_STAT, arg);
11883         if (st == 0)
11884             printf("semun\n");
11885         else
11886 #       endif /* IPC_STAT */
11887             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11888 #       ifdef IPC_RMID
11889         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11890 #       endif /* IPC_RMID */
11891             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11892     } else
11893 #endif /* IPC_PRIVATE && ... */
11894         printf("semget failed: errno = %d\n", errno);
11895   return 0;
11896 }
11897 END
11898     val="$undef"
11899     set try
11900     if eval $compile; then
11901         xxx=`$run ./try`
11902         case "$xxx" in
11903         semun) val="$define" ;;
11904         esac
11905     fi
11906     $rm -f try try.c
11907     set d_semctl_semun
11908     eval $setvar
11909     case "$d_semctl_semun" in
11910     $define)
11911         echo "You can use union semun for semctl IPC_STAT." >&4
11912         also='also'
11913         ;;
11914     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11915         also=''
11916         ;;
11917     esac
11918
11919     : see whether semctl IPC_STAT can use struct semid_ds pointer
11920     $cat > try.c <<'END'
11921 #include <sys/types.h>
11922 #include <sys/ipc.h>
11923 #include <sys/sem.h>
11924 #include <sys/stat.h>
11925 #include "try.h"
11926 #include <stdio.h>
11927 #include <errno.h>
11928 #ifndef errno
11929 extern int errno;
11930 #endif
11931 int main() {
11932     struct semid_ds arg;
11933     int sem, st;
11934
11935 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11936     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11937     if (sem > -1) {
11938 #       ifdef IPC_STAT
11939         st = semctl(sem, 0, IPC_STAT, &arg);
11940         if (st == 0)
11941             printf("semid_ds\n");
11942         else
11943 #       endif /* IPC_STAT */
11944             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11945 #       ifdef IPC_RMID
11946         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11947 #       endif /* IPC_RMID */
11948             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11949     } else
11950 #endif /* IPC_PRIVATE && ... */
11951         printf("semget failed: errno = %d\n", errno);
11952
11953     return 0;
11954 }
11955 END
11956     val="$undef"
11957     set try
11958     if eval $compile; then
11959         xxx=`$run ./try`
11960         case "$xxx" in
11961         semid_ds) val="$define" ;;
11962         esac
11963     fi
11964     $rm -f try try.c
11965     set d_semctl_semid_ds
11966     eval $setvar
11967     case "$d_semctl_semid_ds" in
11968     $define)
11969         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11970         ;;
11971     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11972         ;;
11973     esac
11974     $rm -f try.h
11975     ;;
11976 *)  val="$undef"
11977
11978     # We do not have the full sem*(2) library, so assume we can not
11979     # use either.
11980
11981     set d_semctl_semun
11982     eval $setvar
11983
11984     set d_semctl_semid_ds
11985     eval $setvar
11986     ;;
11987 esac
11988
11989 : see if sendmsg exists
11990 set sendmsg d_sendmsg
11991 eval $inlibc
11992
11993 : see if setegid exists
11994 set setegid d_setegid
11995 eval $inlibc
11996
11997 : see if seteuid exists
11998 set seteuid d_seteuid
11999 eval $inlibc
12000
12001 : see if setgrent exists
12002 set setgrent d_setgrent
12003 eval $inlibc
12004
12005 : see if sethostent exists
12006 set sethostent d_sethent
12007 eval $inlibc
12008
12009 : see if setitimer exists
12010 set setitimer d_setitimer
12011 eval $inlibc
12012
12013 : see if setlinebuf exists
12014 set setlinebuf d_setlinebuf
12015 eval $inlibc
12016
12017 : see if setlocale exists
12018 set setlocale d_setlocale
12019 eval $inlibc
12020
12021 : see if setnetent exists
12022 set setnetent d_setnent
12023 eval $inlibc
12024
12025 : see if setprotoent exists
12026 set setprotoent d_setpent
12027 eval $inlibc
12028
12029 : see if setpgid exists
12030 set setpgid d_setpgid
12031 eval $inlibc
12032
12033 : see if setpgrp2 exists
12034 set setpgrp2 d_setpgrp2
12035 eval $inlibc
12036
12037 : see if setpriority exists
12038 set setpriority d_setprior
12039 eval $inlibc
12040
12041 : see if setproctitle exists
12042 set setproctitle d_setproctitle
12043 eval $inlibc
12044
12045 : see if setpwent exists
12046 set setpwent d_setpwent
12047 eval $inlibc
12048
12049 : see if setregid exists
12050 set setregid d_setregid
12051 eval $inlibc
12052 set setresgid d_setresgid
12053 eval $inlibc
12054
12055 : see if setreuid exists
12056 set setreuid d_setreuid
12057 eval $inlibc
12058 set setresuid d_setresuid
12059 eval $inlibc
12060
12061 : see if setrgid exists
12062 set setrgid d_setrgid
12063 eval $inlibc
12064
12065 : see if setruid exists
12066 set setruid d_setruid
12067 eval $inlibc
12068
12069 : see if setservent exists
12070 set setservent d_setsent
12071 eval $inlibc
12072
12073 : see if setsid exists
12074 set setsid d_setsid
12075 eval $inlibc
12076
12077 : see if setvbuf exists
12078 set setvbuf d_setvbuf
12079 eval $inlibc
12080
12081 : see if sfio.h is available
12082 set sfio.h i_sfio
12083 eval $inhdr
12084
12085
12086 : see if sfio library is available
12087 case "$i_sfio" in
12088 $define)
12089         val=''
12090         set sfreserve val
12091         eval $inlibc
12092         ;;
12093 *)
12094         val="$undef"
12095         ;;
12096 esac
12097 : Ok, but do we want to use it.
12098 case "$val" in
12099 $define)
12100         case "$usesfio" in
12101         true|$define|[yY]*) dflt='y';;
12102         *) dflt='n';;
12103         esac
12104         echo "$package can use the sfio library, but it is experimental."
12105         case "$useperlio" in
12106         "$undef")
12107             echo "For sfio also the PerlIO abstraction layer is needed."
12108             echo "Earlier you said you wouldn't want that."
12109             ;;
12110         esac
12111         rp="You seem to have sfio available, do you want to try using it?"
12112         . ./myread
12113         case "$ans" in
12114         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12115                 useperlio="$define"
12116                 val="$define"
12117                 ;;
12118         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12119                 val="$undef"
12120                 ;;
12121         esac
12122         ;;
12123 *)      case "$usesfio" in
12124         true|$define|[yY]*)
12125                 echo "Sorry, cannot find sfio on this machine." >&4
12126                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12127                 val="$undef"
12128                 ;;
12129         esac
12130         ;;
12131 esac
12132 set d_sfio
12133 eval $setvar
12134 case "$d_sfio" in
12135 $define) usesfio='true';;
12136 *) usesfio='false';;
12137 esac
12138 case "$d_sfio" in
12139 $define) ;;
12140 *)      : Remove sfio from list of libraries to use
12141         case "$libs" in
12142         *-lsfio*)
12143                 echo "Removing unneeded -lsfio from library list" >&4
12144                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12145                 shift
12146                 libs="$*"
12147                 echo "libs = $libs" >&4
12148                 ;;
12149         esac
12150 ;;
12151 esac
12152
12153
12154 : see if shmctl exists
12155 set shmctl d_shmctl
12156 eval $inlibc
12157
12158 : see if shmget exists
12159 set shmget d_shmget
12160 eval $inlibc
12161
12162 : see if shmat exists
12163 set shmat d_shmat
12164 eval $inlibc
12165 : see what shmat returns
12166 case "$d_shmat" in
12167 "$define")
12168         $cat >shmat.c <<'END'
12169 #include <sys/shm.h>
12170 void *shmat();
12171 END
12172         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12173                 shmattype='void *'
12174         else
12175                 shmattype='char *'
12176         fi
12177         echo "and it returns ($shmattype)." >&4
12178         : see if a prototype for shmat is available
12179         xxx=`./findhdr sys/shm.h`
12180         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12181         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12182                 val="$define"
12183         else
12184                 val="$undef"
12185         fi
12186         $rm -f shmat.[co]
12187         ;;
12188 *)
12189         val="$undef"
12190         ;;
12191 esac
12192 set d_shmatprototype
12193 eval $setvar
12194
12195 : see if shmdt exists
12196 set shmdt d_shmdt
12197 eval $inlibc
12198
12199 : see how much of the 'shm*(2)' library is present.
12200 h_shm=true
12201 echo " "
12202 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12203 *"$undef"*) h_shm=false;;
12204 esac
12205 case "$osname" in
12206 freebsd)
12207     case "`ipcs 2>&1`" in
12208     "SVID shared memory"*"not configured"*)
12209         echo "Your $osname does not have the shm*(2) configured." >&4
12210         h_shm=false
12211         val="$undef"
12212         set shmctl d_shmctl
12213         evat $setvar
12214         set shmget d_shmget
12215         evat $setvar
12216         set shmat d_shmat
12217         evat $setvar
12218         set shmdt d_shmdt
12219         evat $setvar
12220         ;;
12221     esac
12222     ;;
12223 esac
12224 : we could also check for sys/ipc.h ...
12225 if $h_shm && $test `./findhdr sys/shm.h`; then
12226         echo "You have the full shm*(2) library." >&4
12227         val="$define"
12228 else
12229         echo "You don't have the full shm*(2) library." >&4
12230         val="$undef"
12231 fi
12232 set d_shm
12233 eval $setvar
12234
12235 echo " "
12236 : see if we have sigaction
12237 if set sigaction val -f d_sigaction; eval $csym; $val; then
12238         echo 'sigaction() found.' >&4
12239         $cat > try.c <<'EOP'
12240 #include <stdio.h>
12241 #include <sys/types.h>
12242 #include <signal.h>
12243 int main()
12244 {
12245     struct sigaction act, oact;
12246     act.sa_flags = 0;
12247     oact.sa_handler = 0;
12248     /* so that act and oact are used */
12249     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12250 }
12251 EOP
12252         set try
12253         if eval $compile_ok; then
12254                 val="$define"
12255         else
12256                 echo "But you don't seem to have a useable struct sigaction." >&4
12257                 val="$undef"
12258         fi
12259 else
12260         echo 'sigaction NOT found.' >&4
12261         val="$undef"
12262 fi
12263 set d_sigaction; eval $setvar
12264 $rm -f try try$_o try.c
12265
12266 : see if sigprocmask exists
12267 set sigprocmask d_sigprocmask
12268 eval $inlibc
12269
12270 : see if sigsetjmp exists
12271 echo " "
12272 case "$d_sigsetjmp" in
12273 '')
12274         $cat >try.c <<'EOP'
12275 #include <setjmp.h>
12276 sigjmp_buf env;
12277 int set = 1;
12278 int main()
12279 {
12280         if (sigsetjmp(env,1))
12281                 exit(set);
12282         set = 0;
12283         siglongjmp(env, 1);
12284         exit(1);
12285 }
12286 EOP
12287         set try
12288         if eval $compile; then
12289                 if $run ./try >/dev/null 2>&1; then
12290                         echo "POSIX sigsetjmp found." >&4
12291                         val="$define"
12292                 else
12293                         $cat >&4 <<EOM
12294 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12295 I'll ignore them.
12296 EOM
12297                         val="$undef"
12298                 fi
12299         else
12300                 echo "sigsetjmp not found." >&4
12301                 val="$undef"
12302         fi
12303         ;;
12304 *) val="$d_sigsetjmp"
12305         case "$d_sigsetjmp" in
12306         $define) echo "POSIX sigsetjmp found." >&4;;
12307         $undef) echo "sigsetjmp not found." >&4;;
12308         esac
12309         ;;
12310 esac
12311 set d_sigsetjmp
12312 eval $setvar
12313 $rm -f try.c try
12314
12315 : see if sockatmark exists
12316 set sockatmark d_sockatmark
12317 eval $inlibc
12318
12319 : see if prototype for sockatmark is available
12320 echo " "
12321 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12322 eval $hasproto
12323
12324 : see if socks5_init exists
12325 set socks5_init d_socks5_init
12326 eval $inlibc
12327
12328 : see if prototype for setresgid is available
12329 echo " "
12330 set d_sresgproto setresgid $i_unistd unistd.h
12331 eval $hasproto
12332
12333 : see if prototype for setresuid is available
12334 echo " "
12335 set d_sresuproto setresuid $i_unistd unistd.h
12336 eval $hasproto
12337
12338 : see if sys/stat.h is available
12339 set sys/stat.h i_sysstat
12340 eval $inhdr
12341
12342
12343 : see if stat knows about block sizes
12344 echo " "
12345 echo "Checking to see if your struct stat has st_blocks field..." >&4
12346 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12347 eval $hasfield
12348
12349
12350 : see if this is a sys/vfs.h system
12351 set sys/vfs.h i_sysvfs
12352 eval $inhdr
12353
12354
12355 : see if this is a sys/statfs.h system
12356 set sys/statfs.h i_sysstatfs
12357 eval $inhdr
12358
12359
12360 echo " "
12361 echo "Checking to see if your system supports struct statfs..." >&4
12362 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
12363 eval $hasstruct
12364 case "$d_statfs_s" in
12365 "$define")      echo "Yes, it does."   ;;
12366 *)              echo "No, it doesn't." ;;
12367 esac
12368
12369
12370
12371 : see if struct statfs knows about f_flags
12372 case "$d_statfs_s" in
12373 define) 
12374         echo " "
12375         echo "Checking to see if your struct statfs has f_flags field..." >&4
12376         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
12377         eval $hasfield
12378         ;;
12379 *)      val="$undef"
12380         set d_statfs_f_flags
12381         eval $setvar
12382         ;;
12383 esac
12384 case "$d_statfs_f_flags" in
12385 "$define")      echo "Yes, it does."   ;;
12386 *)              echo "No, it doesn't." ;;
12387 esac
12388
12389 : see if _ptr and _cnt from stdio act std
12390 echo " "
12391
12392 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12393         echo "(Looks like you have stdio.h from BSD.)"
12394         case "$stdio_ptr" in
12395         '') stdio_ptr='((fp)->_p)'
12396                 ptr_lval=$define
12397                 ;;
12398         *)      ptr_lval=$d_stdio_ptr_lval;;
12399         esac
12400         case "$stdio_cnt" in
12401         '') stdio_cnt='((fp)->_r)'
12402                 cnt_lval=$define
12403                 ;;
12404         *)      cnt_lval=$d_stdio_cnt_lval;;
12405         esac
12406         case "$stdio_base" in
12407         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12408         esac
12409         case "$stdio_bufsiz" in
12410         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12411         esac
12412 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12413         echo "(Looks like you have stdio.h from Linux.)"
12414         case "$stdio_ptr" in
12415         '') stdio_ptr='((fp)->_IO_read_ptr)'
12416                 ptr_lval=$define
12417                 ;;
12418         *)      ptr_lval=$d_stdio_ptr_lval;;
12419         esac
12420         case "$stdio_cnt" in
12421         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12422                 cnt_lval=$undef
12423                 ;;
12424         *)      cnt_lval=$d_stdio_cnt_lval;;
12425         esac
12426         case "$stdio_base" in
12427         '') stdio_base='((fp)->_IO_read_base)';;
12428         esac
12429         case "$stdio_bufsiz" in
12430         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12431         esac
12432 else
12433         case "$stdio_ptr" in
12434         '') stdio_ptr='((fp)->_ptr)'
12435                 ptr_lval=$define
12436                 ;;
12437         *)      ptr_lval=$d_stdio_ptr_lval;;
12438         esac
12439         case "$stdio_cnt" in
12440         '') stdio_cnt='((fp)->_cnt)'
12441                 cnt_lval=$define
12442                 ;;
12443         *)      cnt_lval=$d_stdio_cnt_lval;;
12444         esac
12445         case "$stdio_base" in
12446         '') stdio_base='((fp)->_base)';;
12447         esac
12448         case "$stdio_bufsiz" in
12449         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12450         esac
12451 fi
12452
12453 : test whether _ptr and _cnt really work
12454 echo "Checking how std your stdio is..." >&4
12455 $cat >try.c <<EOP
12456 #include <stdio.h>
12457 #define FILE_ptr(fp)    $stdio_ptr
12458 #define FILE_cnt(fp)    $stdio_cnt
12459 int main() {
12460         FILE *fp = fopen("try.c", "r");
12461         char c = getc(fp);
12462         if (
12463                 18 <= FILE_cnt(fp) &&
12464                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12465         )
12466                 exit(0);
12467         exit(1);
12468 }
12469 EOP
12470 val="$undef"
12471 set try
12472 if eval $compile && $to try.c; then
12473         if $run ./try; then
12474                 echo "Your stdio acts pretty std."
12475                 val="$define"
12476         else
12477                 echo "Your stdio isn't very std."
12478         fi
12479 else
12480         echo "Your stdio doesn't appear very std."
12481 fi
12482 $rm -f try.c try
12483 set d_stdstdio
12484 eval $setvar
12485
12486 : Can _ptr be used as an lvalue?
12487 case "$d_stdstdio$ptr_lval" in
12488 $define$define) val=$define ;;
12489 *) val=$undef ;;
12490 esac
12491 set d_stdio_ptr_lval
12492 eval $setvar
12493
12494 : Can _cnt be used as an lvalue?
12495 case "$d_stdstdio$cnt_lval" in
12496 $define$define) val=$define ;;
12497 *) val=$undef ;;
12498 esac
12499 set d_stdio_cnt_lval
12500 eval $setvar
12501
12502
12503 : test whether setting _ptr sets _cnt as a side effect
12504 d_stdio_ptr_lval_sets_cnt="$undef"
12505 d_stdio_ptr_lval_nochange_cnt="$undef"
12506 case "$d_stdio_ptr_lval$d_stdstdio" in
12507 $define$define)
12508         echo "Checking to see what happens if we set the stdio ptr..." >&4
12509 $cat >try.c <<EOP
12510 #include <stdio.h>
12511 /* Can we scream? */
12512 /* Eat dust sed :-) */
12513 /* In the buffer space, no one can hear you scream. */
12514 #define FILE_ptr(fp)    $stdio_ptr
12515 #define FILE_cnt(fp)    $stdio_cnt
12516 #include <sys/types.h>
12517 int main() {
12518         FILE *fp = fopen("try.c", "r");
12519         int c;
12520         char *ptr;
12521         size_t cnt;
12522         if (!fp) {
12523             puts("Fail even to read");
12524             exit(1);
12525         }
12526         c = getc(fp); /* Read away the first # */
12527         if (c == EOF) {
12528             puts("Fail even to read");
12529             exit(1);
12530         }
12531         if (!(
12532                 18 <= FILE_cnt(fp) &&
12533                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12534         )) {
12535                 puts("Fail even to read");
12536                 exit (1);
12537         }
12538         ptr = (char*) FILE_ptr(fp);
12539         cnt = (size_t)FILE_cnt(fp);
12540
12541         FILE_ptr(fp) += 42;
12542
12543         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12544                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12545                 exit (1);
12546         }
12547         if (FILE_cnt(fp) <= 20) {
12548                 printf ("Fail (<20 chars to test)");
12549                 exit (1);
12550         }
12551         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12552                 puts("Fail compare");
12553                 exit (1);
12554         }
12555         if (cnt == FILE_cnt(fp)) {
12556                 puts("Pass_unchanged");
12557                 exit (0);
12558         }       
12559         if (FILE_cnt(fp) == (cnt - 42)) {
12560                 puts("Pass_changed");
12561                 exit (0);
12562         }
12563         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12564         return 1;
12565
12566 }
12567 EOP
12568         set try
12569         if eval $compile && $to try.c; then
12570                 case `$run ./try` in
12571                 Pass_changed)
12572                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12573                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12574                 Pass_unchanged)
12575                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12576                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12577                 Fail*)
12578                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12579                 *)
12580                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12581         esac
12582         else
12583                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12584         fi
12585         $rm -f try.c try
12586         ;;
12587 esac
12588
12589 : see if _base is also standard
12590 val="$undef"
12591 case "$d_stdstdio" in
12592 $define)
12593         $cat >try.c <<EOP
12594 #include <stdio.h>
12595 #define FILE_base(fp)   $stdio_base
12596 #define FILE_bufsiz(fp) $stdio_bufsiz
12597 int main() {
12598         FILE *fp = fopen("try.c", "r");
12599         char c = getc(fp);
12600         if (
12601                 19 <= FILE_bufsiz(fp) &&
12602                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12603         )
12604                 exit(0);
12605         exit(1);
12606 }
12607 EOP
12608         set try
12609         if eval $compile && $to try.c; then
12610                 if $run ./try; then
12611                         echo "And its _base field acts std."
12612                         val="$define"
12613                 else
12614                         echo "But its _base field isn't std."
12615                 fi
12616         else
12617                 echo "However, it seems to be lacking the _base field."
12618         fi
12619         $rm -f try.c try
12620         ;;
12621 esac
12622 set d_stdiobase
12623 eval $setvar
12624
12625 $cat >&4 <<EOM
12626 Checking how to access stdio streams by file descriptor number...
12627 EOM
12628 case "$stdio_stream_array" in
12629 '')     $cat >try.c <<EOCP
12630 #include <stdio.h>
12631 int main() {
12632   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12633     printf("yes\n");
12634 }
12635 EOCP
12636         for s in _iob __iob __sF
12637         do
12638                 set try -DSTDIO_STREAM_ARRAY=$s
12639                 if eval $compile; then
12640                         case "`$run ./try`" in
12641                         yes)    stdio_stream_array=$s; break ;;
12642                         esac
12643                 fi
12644         done
12645         $rm -f try.* try$exe_ext
12646 esac
12647 case "$stdio_stream_array" in
12648 '')     $cat >&4 <<EOM
12649 I can't figure out how to access stdio streams by file descriptor number.
12650 EOM
12651         d_stdio_stream_array="$undef"
12652         ;;
12653 *)      $cat >&4 <<EOM
12654 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12655 EOM
12656         d_stdio_stream_array="$define"
12657         ;;
12658 esac
12659
12660 : see if strcoll exists
12661 set strcoll d_strcoll
12662 eval $inlibc
12663
12664 : check for structure copying
12665 echo " "
12666 echo "Checking to see if your C compiler can copy structs..." >&4
12667 $cat >try.c <<'EOCP'
12668 int main()
12669 {
12670         struct blurfl {
12671                 int dyick;
12672         } foo, bar;
12673
12674         foo = bar;
12675 }
12676 EOCP
12677 if $cc -c try.c >/dev/null 2>&1 ; then
12678         val="$define"
12679         echo "Yup, it can."
12680 else
12681         val="$undef"
12682         echo "Nope, it can't."
12683 fi
12684 set d_strctcpy
12685 eval $setvar
12686 $rm -f try.*
12687
12688 : see if strerror and/or sys_errlist[] exist
12689 echo " "
12690 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12691     if set strerror val -f d_strerror; eval $csym; $val; then
12692                 echo 'strerror() found.' >&4
12693                 d_strerror="$define"
12694                 d_strerrm='strerror(e)'
12695                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12696                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12697                         d_syserrlst="$define"
12698                 else
12699                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12700                         d_syserrlst="$undef"
12701                 fi
12702     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12703                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12704                 echo 'strerror() found in string header.' >&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 "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12709                                 d_syserrlst="$define"
12710                 else
12711                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12712                         d_syserrlst="$undef"
12713                 fi
12714     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12715                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12716                 d_strerror="$undef"
12717                 d_syserrlst="$define"
12718                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12719     else
12720                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12721                 d_strerror="$undef"
12722                 d_syserrlst="$undef"
12723                 d_strerrm='"unknown"'
12724     fi
12725 fi
12726
12727 : see if strftime exists
12728 set strftime d_strftime
12729 eval $inlibc
12730
12731 : see if strtod exists
12732 set strtod d_strtod
12733 eval $inlibc
12734
12735 : see if strtol exists
12736 set strtol d_strtol
12737 eval $inlibc
12738
12739 : see if strtold exists
12740 set strtold d_strtold
12741 eval $inlibc
12742
12743 : see if strtoll exists
12744 set strtoll d_strtoll
12745 eval $inlibc
12746
12747 case "$d_longlong-$d_strtoll" in
12748 "$define-$define")
12749         $cat <<EOM
12750 Checking whether your strtoll() works okay...
12751 EOM
12752         $cat >try.c <<'EOCP'
12753 #include <errno.h>
12754 #ifdef __hpux
12755 #define strtoll __strtoll
12756 #endif
12757 #ifdef __EMX__
12758 #define strtoll _strtoll
12759 #endif
12760 #include <stdio.h>
12761 extern long long int strtoll(char *s, char **, int); 
12762 static int bad = 0;
12763 int check(char *s, long long ell, int een) {
12764         long long gll;
12765         errno = 0;
12766         gll = strtoll(s, 0, 10);
12767         if (!((gll == ell) && (errno == een)))
12768                 bad++;
12769 }
12770 int main() {
12771         check(" 1",                                      1LL, 0);
12772         check(" 0",                                      0LL, 0);
12773         check("-1",                                     -1LL, 0);
12774         check("-9223372036854775808", -9223372036854775808LL, 0);
12775         check("-9223372036854775808", -9223372036854775808LL, 0);
12776         check(" 9223372036854775807",  9223372036854775807LL, 0);
12777         check("-9223372036854775808", -9223372036854775808LL, 0);
12778         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12779         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12780         if (!bad)
12781                 printf("ok\n");
12782 }
12783 EOCP
12784         set try
12785         if eval $compile; then
12786                 yyy=`$run ./try`
12787                 case "$yyy" in
12788                 ok) echo "Your strtoll() seems to be working okay." ;;
12789                 *) cat <<EOM >&4
12790 Your strtoll() doesn't seem to be working okay.
12791 EOM
12792                    d_strtoll="$undef"
12793                    ;;
12794                 esac
12795         else
12796                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12797                 d_strtoll="$undef"
12798         fi
12799         ;;
12800 esac
12801
12802 : see if strtoq exists
12803 set strtoq d_strtoq
12804 eval $inlibc
12805
12806 : see if strtoul exists
12807 set strtoul d_strtoul
12808 eval $inlibc
12809
12810 case "$d_strtoul" in
12811 "$define")
12812         $cat <<EOM
12813 Checking whether your strtoul() works okay...
12814 EOM
12815         $cat >try.c <<'EOCP'
12816 #include <errno.h>
12817 #include <stdio.h>
12818 extern unsigned long int strtoul(char *s, char **, int); 
12819 static int bad = 0;
12820 void check(char *s, unsigned long eul, int een) {
12821         unsigned long gul;
12822         errno = 0;
12823         gul = strtoul(s, 0, 10);
12824         if (!((gul == eul) && (errno == een)))
12825                 bad++;
12826 }
12827 int main() {
12828         check(" 1", 1L, 0);
12829         check(" 0", 0L, 0);
12830 EOCP
12831         case "$longsize" in
12832         8)
12833             $cat >>try.c <<'EOCP'
12834         check("18446744073709551615", 18446744073709551615UL, 0);
12835         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12836 #if 0 /* strtoul() for /^-/ strings is undefined. */
12837         check("-1", 18446744073709551615UL, 0);
12838         check("-18446744073709551614", 2, 0);
12839         check("-18446744073709551615", 1, 0);
12840         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12841         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12842 #endif
12843 EOCP
12844                 ;;
12845         4)
12846                     $cat >>try.c <<'EOCP'
12847         check("4294967295", 4294967295UL, 0);
12848         check("4294967296", 4294967295UL, ERANGE);
12849 #if 0 /* strtoul() for /^-/ strings is undefined. */
12850         check("-1", 4294967295UL, 0);
12851         check("-4294967294", 2, 0);
12852         check("-4294967295", 1, 0);
12853         check("-4294967296", 4294967295UL, ERANGE);
12854         check("-4294967297", 4294967295UL, ERANGE);
12855 #endif
12856 EOCP
12857                 ;;
12858         *)
12859 : Should we write these tests to be more portable by sprintf-ing
12860 : ~0 and then manipulating that char string as input for strtol?
12861                 ;;
12862         esac
12863         $cat >>try.c <<'EOCP'
12864         if (!bad)
12865                 printf("ok\n");
12866         return 0;
12867 }
12868 EOCP
12869         set try
12870         if eval $compile; then
12871                 case "`$run ./try`" in
12872                 ok) echo "Your strtoul() seems to be working okay." ;;
12873                 *) cat <<EOM >&4
12874 Your strtoul() doesn't seem to be working okay.
12875 EOM
12876                    d_strtoul="$undef"
12877                    ;;
12878                 esac
12879         fi
12880         ;;
12881 esac
12882
12883 : see if strtoull exists
12884 set strtoull d_strtoull
12885 eval $inlibc
12886
12887 case "$d_longlong-$d_strtoull" in
12888 "$define-$define")
12889         $cat <<EOM
12890 Checking whether your strtoull() works okay...
12891 EOM
12892         $cat >try.c <<'EOCP'
12893 #include <errno.h>
12894 #ifdef __hpux
12895 #define strtoull __strtoull
12896 #endif
12897 #include <stdio.h>
12898 extern unsigned long long int strtoull(char *s, char **, int); 
12899 static int bad = 0;
12900 int check(char *s, long long eull, int een) {
12901         long long gull;
12902         errno = 0;
12903         gull = strtoull(s, 0, 10);
12904         if (!((gull == eull) && (errno == een)))
12905                 bad++;
12906 }
12907 int main() {
12908         check(" 1",                                        1LL, 0);
12909         check(" 0",                                        0LL, 0);
12910         check("18446744073709551615",  18446744073709551615ULL, 0);
12911         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12912 #if 0 /* strtoull() for /^-/ strings is undefined. */
12913         check("-1",                    18446744073709551615ULL, 0);
12914         check("-18446744073709551614",                     2LL, 0);
12915         check("-18446744073709551615",                     1LL, 0);
12916         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12917         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12918 #endif
12919         if (!bad)
12920                 printf("ok\n");
12921 }
12922 EOCP
12923         set try
12924         if eval $compile; then
12925                 case "`$run ./try`" in
12926                 ok) echo "Your strtoull() seems to be working okay." ;;
12927                 *) cat <<EOM >&4
12928 Your strtoull() doesn't seem to be working okay.
12929 EOM
12930                    d_strtoull="$undef"
12931                    ;;
12932                 esac
12933         fi
12934         ;;
12935 esac
12936
12937 : see if strtouq exists
12938 set strtouq d_strtouq
12939 eval $inlibc
12940
12941 case "$d_strtouq" in
12942 "$define")
12943         $cat <<EOM
12944 Checking whether your strtouq() works okay...
12945 EOM
12946         $cat >try.c <<'EOCP'
12947 #include <errno.h>
12948 #include <stdio.h>
12949 extern unsigned long long int strtouq(char *s, char **, int); 
12950 static int bad = 0;
12951 void check(char *s, unsigned long long eull, int een) {
12952         unsigned long long gull;
12953         errno = 0;
12954         gull = strtouq(s, 0, 10);
12955         if (!((gull == eull) && (errno == een)))
12956                 bad++;
12957 }
12958 int main() {
12959         check(" 1",                                        1LL, 0);
12960         check(" 0",                                        0LL, 0);
12961         check("18446744073709551615",  18446744073709551615ULL, 0);
12962         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12963 #if 0 /* strtouq() for /^-/ strings is undefined. */
12964         check("-1",                    18446744073709551615ULL, 0);
12965         check("-18446744073709551614",                     2LL, 0);
12966         check("-18446744073709551615",                     1LL, 0);
12967         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12968         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12969 #endif
12970         if (!bad)
12971                 printf("ok\n");
12972         return 0;
12973 }
12974 EOCP
12975         set try
12976         if eval $compile; then
12977                 case "`$run ./try`" in
12978                 ok) echo "Your strtouq() seems to be working okay." ;;
12979                 *) cat <<EOM >&4
12980 Your strtouq() doesn't seem to be working okay.
12981 EOM
12982                    d_strtouq="$undef"
12983                    ;;
12984                 esac
12985         fi
12986         ;;
12987 esac
12988
12989 : see if strxfrm exists
12990 set strxfrm d_strxfrm
12991 eval $inlibc
12992
12993 : see if symlink exists
12994 set symlink d_symlink
12995 eval $inlibc
12996
12997 : see if syscall exists
12998 set syscall d_syscall
12999 eval $inlibc
13000
13001 : see if prototype for syscall is available
13002 echo " "
13003 set d_syscallproto syscall $i_unistd unistd.h
13004 eval $hasproto
13005
13006 : see if sysconf exists
13007 set sysconf d_sysconf
13008 eval $inlibc
13009
13010 : see if system exists
13011 set system d_system
13012 eval $inlibc
13013
13014 : see if tcgetpgrp exists
13015 set tcgetpgrp d_tcgetpgrp
13016 eval $inlibc
13017
13018 : see if tcsetpgrp exists
13019 set tcsetpgrp d_tcsetpgrp
13020 eval $inlibc
13021
13022 : see if prototype for telldir is available
13023 echo " "
13024 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13025 eval $hasproto
13026
13027 : see if this is a sys/times.h system
13028 set sys/times.h i_systimes
13029 eval $inhdr
13030
13031 : see if times exists
13032 echo " "
13033 if set times val -f d_times; eval $csym; $val; then
13034         echo 'times() found.' >&4
13035         d_times="$define"
13036         inc=''
13037         case "$i_systimes" in
13038         "$define") inc='sys/times.h';;
13039         esac
13040         rp="What is the type returned by times() on this system?"
13041         set clock_t clocktype long stdio.h sys/types.h $inc
13042         eval $typedef_ask
13043 else
13044         echo 'times() NOT found, hope that will do.' >&4
13045         d_times="$undef"
13046         clocktype='int'
13047 fi
13048
13049 : see if truncate exists
13050 set truncate d_truncate
13051 eval $inlibc
13052
13053 : see if tzname[] exists
13054 echo " "
13055 if set tzname val -a d_tzname; eval $csym; $val; then
13056         val="$define"
13057         echo 'tzname[] found.' >&4
13058 else
13059         val="$undef"
13060         echo 'tzname[] NOT found.' >&4
13061 fi
13062 set d_tzname
13063 eval $setvar
13064
13065 case "$osname" in
13066 next|rhapsody|darwin) multiarch="$define" ;;
13067 esac
13068 case "$multiarch" in
13069 ''|[nN]*) multiarch="$undef" ;;
13070 esac
13071
13072 : check for ordering of bytes in a long
13073 echo " "
13074 case "$usecrosscompile$multiarch" in
13075 *$define*)
13076         $cat <<EOM
13077 You seem to be either cross-compiling or doing a multiarchitecture build,
13078 skipping the byteorder check.
13079
13080 EOM
13081         byteorder='ffff'
13082         ;;
13083 *)
13084         case "$byteorder" in
13085         '')
13086                 $cat <<'EOM'
13087 In the following, larger digits indicate more significance.  A big-endian
13088 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13089 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13090 machines may have weird orders like 3412.  A Cray will report 87654321,
13091 an Alpha will report 12345678. If the test program works the default is
13092 probably right.
13093 I'm now running the test program...
13094 EOM
13095                 $cat >try.c <<'EOCP'
13096 #include <stdio.h>
13097 int main()
13098 {
13099         int i;
13100         union {
13101                 unsigned long l;
13102                 char c[sizeof(long)];
13103         } u;
13104
13105         if (sizeof(long) > 4)
13106                 u.l = (0x08070605L << 32) | 0x04030201L;
13107         else
13108                 u.l = 0x04030201L;
13109         for (i = 0; i < sizeof(long); i++)
13110                 printf("%c", u.c[i]+'0');
13111         printf("\n");
13112         exit(0);
13113 }
13114 EOCP
13115                 xxx_prompt=y
13116                 set try
13117                 if eval $compile && ./try > /dev/null; then
13118                         dflt=`$run ./try`
13119                         case "$dflt" in
13120                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13121                                 echo "(The test program ran ok.)"
13122                                 echo "byteorder=$dflt"
13123                                 xxx_prompt=n
13124                         ;;
13125                         ????|????????) echo "(The test program ran ok.)" ;;
13126                         *) echo "(The test program didn't run right for some reason.)" ;;
13127                         esac
13128                 else
13129                         dflt='4321'
13130                         cat <<'EOM'
13131 (I can't seem to compile the test program.  Guessing big-endian...)
13132 EOM
13133                 fi
13134                 case "$xxx_prompt" in
13135                 y)
13136                         rp="What is the order of bytes in a long?"
13137                         . ./myread
13138                         byteorder="$ans"
13139                         ;;
13140                 *)      byteorder=$dflt
13141                         ;;
13142                 esac
13143                 ;;
13144         esac
13145         $rm -f try.c try
13146         ;;
13147 esac
13148
13149
13150 $cat <<EOM
13151
13152 Checking to see whether you can access character data unalignedly...
13153 EOM
13154 $cat >try.c <<EOCP
13155 #include <stdio.h>
13156 #define U32 $u32type
13157 #define BYTEORDER $byteorder
13158 int main() {
13159 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13160     U8 buf[] = "\0\0\0\1\0\0\0\0";
13161     U32 *up;
13162     int i;
13163
13164     if (sizeof(U32) != 4) {
13165         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13166         exit(1);
13167     }
13168
13169     fflush(stdout);
13170
13171     for (i = 0; i < 4; i++) {
13172         up = (U32*)(buf + i);
13173         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13174                (*up == 1 << (8*(3-i)))  /* little-endian */
13175               )
13176            )
13177         {
13178             printf("read failed (%x)\n", *up);
13179             exit(2);
13180         }
13181     }
13182
13183     /* write test */
13184     for (i = 0; i < 4; i++) {
13185         up = (U32*)(buf + i);
13186         *up = 0xBeef;
13187         if (*up != 0xBeef) {
13188             printf("write failed (%x)\n", *up);
13189             exit(3);
13190         }
13191     }
13192
13193     exit(0);
13194 #else
13195     printf("1\n");
13196     exit(1);
13197 #endif
13198     return 0;
13199 }
13200 EOCP
13201 set try
13202 if eval $compile_ok; then
13203         echo "(Testing for character data alignment may dump core.)" >&4
13204         $run ./try 2>&1 >/dev/null
13205         case "$?" in
13206         0)      cat >&4 <<EOM
13207 You can access character data pretty unalignedly.
13208 EOM
13209                 d_u32align="$undef"
13210                 ;;
13211         *)      cat >&4 <<EOM
13212 It seems that you must access character data in an aligned manner.
13213 EOM
13214                 d_u32align="$define"
13215                 ;;
13216         esac
13217         $rm -f core core.try.* try.core
13218 else
13219         rp='Can you access character data at unaligned addresses?'
13220         dflt='n'
13221         . ./myread
13222         case "$ans" in
13223         [yY]*)  d_u32align="$undef"  ;;
13224         *)      d_u32align="$define" ;;
13225         esac
13226 fi
13227
13228 : see if ualarm exists
13229 set ualarm d_ualarm
13230 eval $inlibc
13231
13232 : see if umask exists
13233 set umask d_umask
13234 eval $inlibc
13235
13236 : see if usleep exists
13237 set usleep d_usleep
13238 eval $inlibc
13239
13240 : see if prototype for usleep is available
13241 echo " "
13242 set d_usleepproto usleep $i_unistd unistd.h
13243 eval $hasproto
13244
13245 : see if ustat exists
13246 set ustat d_ustat
13247 eval $inlibc
13248
13249 : backward compatibility for d_hvfork
13250 if test X$d_hvfork != X; then
13251         d_vfork="$d_hvfork"
13252         d_hvfork=''
13253 fi
13254 : see if there is a vfork
13255 val=''
13256 set vfork val
13257 eval $inlibc
13258
13259 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13260 : perl on Solaris 2.x, and probably elsewhere.
13261 case "$val" in
13262 $define)
13263         echo " "
13264         case "$usevfork" in
13265         false) dflt='n';;
13266         *) dflt='y';;
13267         esac
13268         cat <<'EOM'
13269  
13270 Perl can only use a vfork() that doesn't suffer from strict
13271 restrictions on calling functions or modifying global data in
13272 the child.  For example, glibc-2.1 contains such a vfork()
13273 that is unsuitable.  If your system provides a proper fork()
13274 call, chances are that you do NOT want perl to use vfork().
13275
13276 EOM
13277         rp="Do you still want to use vfork()?"
13278         . ./myread
13279         case "$ans" in
13280         y|Y) ;;
13281         *)
13282                 echo "Ok, we won't use vfork()."
13283                 val="$undef"
13284                 ;;
13285         esac
13286         ;;
13287 esac
13288 set d_vfork
13289 eval $setvar
13290 case "$d_vfork" in
13291 $define) usevfork='true';;
13292 *) usevfork='false';;
13293 esac
13294
13295 : see if this is an sysdir system
13296 set sys/dir.h i_sysdir
13297 eval $inhdr
13298
13299 : see if this is an sysndir system
13300 set sys/ndir.h i_sysndir
13301 eval $inhdr
13302
13303 : see if closedir exists
13304 set closedir d_closedir
13305 eval $inlibc
13306
13307 case "$d_closedir" in
13308 "$define")
13309         echo " "
13310         echo "Checking whether closedir() returns a status..." >&4
13311         cat > try.c <<EOM
13312 #$i_dirent I_DIRENT             /**/
13313 #$i_sysdir I_SYS_DIR            /**/
13314 #$i_sysndir I_SYS_NDIR          /**/
13315 #$i_systypes I_SYS_TYPES        /**/
13316
13317 #if defined(I_SYS_TYPES)
13318 #include <sys/types.h>
13319 #endif
13320 #if defined(I_DIRENT)
13321 #include <dirent.h>
13322 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13323 #include <sys/dir.h>
13324 #endif
13325 #else
13326 #ifdef I_SYS_NDIR
13327 #include <sys/ndir.h>
13328 #else
13329 #ifdef I_SYS_DIR
13330 #ifdef hp9000s500
13331 #include <ndir.h>       /* may be wrong in the future */
13332 #else
13333 #include <sys/dir.h>
13334 #endif
13335 #endif
13336 #endif
13337 #endif 
13338 int main() { return closedir(opendir(".")); }
13339 EOM
13340         set try
13341         if eval $compile_ok; then
13342                 if $run ./try > /dev/null 2>&1 ; then
13343                         echo "Yes, it does."
13344                         val="$undef"
13345                 else
13346                         echo "No, it doesn't."
13347                         val="$define"
13348                 fi
13349         else
13350                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13351                 val="$define"
13352         fi
13353         ;;
13354 *)
13355         val="$undef";
13356         ;;
13357 esac
13358 set d_void_closedir
13359 eval $setvar
13360 $rm -f try try.*
13361 : see if there is a wait4
13362 set wait4 d_wait4
13363 eval $inlibc
13364
13365 : see if waitpid exists
13366 set waitpid d_waitpid
13367 eval $inlibc
13368
13369 : see if wcstombs exists
13370 set wcstombs d_wcstombs
13371 eval $inlibc
13372
13373 : see if wctomb exists
13374 set wctomb d_wctomb
13375 eval $inlibc
13376
13377 : see if writev exists
13378 set writev d_writev
13379 eval $inlibc
13380
13381 : preserve RCS keywords in files with variable substitution, grrr
13382 Date='$Date'
13383 Id='$Id'
13384 Log='$Log'
13385 RCSfile='$RCSfile'
13386 Revision='$Revision'
13387
13388 : check for alignment requirements
13389 echo " "
13390 case "$usecrosscompile$multiarch" in
13391 *$define*)
13392         $cat <<EOM
13393 You seem to be either cross-compiling or doing a multiarchitecture build,
13394 skipping the memory alignment check.
13395
13396 EOM
13397         case "$alignbytes" in
13398         '') alignbytes=8 ;;
13399         esac
13400         ;;
13401 *)
13402         case "$alignbytes" in
13403         '') echo "Checking alignment constraints..." >&4
13404                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13405                         $cat >try.c <<'EOCP'
13406 typedef long double NV;
13407 EOCP
13408                 else
13409                         $cat >try.c <<'EOCP'
13410 typedef double NV;
13411 EOCP
13412                 fi
13413                 $cat >>try.c <<'EOCP'
13414 #include <stdio.h>
13415 struct foobar {
13416         char foo;
13417         NV bar;
13418 } try_algn;
13419 int main()
13420 {
13421     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13422     return(0);
13423 }
13424 EOCP
13425                 set try
13426                 if eval $compile_ok; then
13427                         dflt=`$run ./try`
13428                 else
13429                         dflt='8'
13430                         echo "(I can't seem to compile the test program...)"
13431                 fi
13432                 ;;
13433         *) dflt="$alignbytes"
13434                 ;;
13435         esac
13436         rp="Doubles must be aligned on a how-many-byte boundary?"
13437         . ./myread
13438         alignbytes="$ans"
13439         $rm -f try.c try
13440         ;;
13441 esac
13442
13443
13444 : set the base revision
13445 baserev=5.0
13446
13447 : how do we catenate cpp tokens here?
13448 echo " "
13449 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13450 $cat >cpp_stuff.c <<'EOCP'
13451 #define RCAT(a,b)a/**/b
13452 #define ACAT(a,b)a ## b
13453 RCAT(Rei,ser)
13454 ACAT(Cir,cus)
13455 EOCP
13456 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13457 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13458         echo "Oh!  Smells like ANSI's been here." >&4
13459         echo "We can catify or stringify, separately or together!"
13460         cpp_stuff=42
13461 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13462         echo "Ah, yes!  The good old days!" >&4
13463         echo "However, in the good old days we don't know how to stringify and"
13464         echo "catify at the same time."
13465         cpp_stuff=1
13466 else
13467         $cat >&4 <<EOM
13468 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13469 to have to edit the values of CAT[2-5] in config.h...
13470 EOM
13471         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13472 fi
13473 $rm -f cpp_stuff.*
13474
13475 : see if this is a db.h system
13476 set db.h i_db
13477 eval $inhdr
13478
13479 case "$i_db" in
13480 $define)
13481         : Check db version.
13482         echo " "
13483         echo "Checking Berkeley DB version ..." >&4
13484         $cat >try.c <<EOCP
13485 #$d_const HASCONST
13486 #ifndef HASCONST
13487 #define const
13488 #endif
13489 #include <sys/types.h>
13490 #include <stdio.h>
13491 #include <db.h>
13492 int main(int argc, char *argv[])
13493 {
13494 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13495     int Major, Minor, Patch ;
13496     unsigned long Version ;
13497     (void)db_version(&Major, &Minor, &Patch) ;
13498     if (argc == 2) {
13499         printf("%d %d %d %d %d %d\n",
13500                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13501                Major, Minor, Patch);
13502         exit(0);
13503     }
13504     printf("You have Berkeley DB Version 2 or greater.\n");
13505
13506     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13507                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13508     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13509                 Major, Minor, Patch) ;
13510
13511     /* check that db.h & libdb are compatible */
13512     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13513         printf("db.h and libdb are incompatible.\n") ;
13514         exit(3);        
13515     }
13516
13517     printf("db.h and libdb are compatible.\n") ;
13518
13519     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13520                 + DB_VERSION_PATCH ;
13521
13522     /* needs to be >= 2.3.4 */
13523     if (Version < 2003004) {
13524     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13525         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13526         exit(2);        
13527     }
13528
13529     exit(0);
13530 #else
13531 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13532     if (argc == 2) {
13533         printf("1 0 0\n");
13534         exit(0);
13535     }
13536     printf("You have Berkeley DB Version 1.\n");
13537     exit(0);    /* DB version < 2: the coast is clear. */
13538 #else
13539     exit(1);    /* <db.h> not Berkeley DB? */
13540 #endif
13541 #endif
13542 }
13543 EOCP
13544         set try
13545         if eval $compile_ok && $run ./try; then
13546                 echo 'Looks OK.' >&4
13547                 set `$run ./try 1`
13548                 db_version_major=$1
13549                 db_version_minor=$2
13550                 db_version_patch=$3
13551         else
13552                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13553                 i_db=$undef
13554                 case " $libs " in
13555                 *"-ldb "*)
13556                         : Remove db from list of libraries to use
13557                         echo "Removing unusable -ldb from library list" >&4
13558                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13559                         shift
13560                         libs="$*"
13561                         echo "libs = $libs" >&4
13562                         ;;
13563                 esac
13564         fi
13565         $rm -f try.*
13566         ;;
13567 esac
13568
13569 case "$i_db" in
13570 define)
13571         : Check the return type needed for hash 
13572         echo " "
13573         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13574         $cat >try.c <<EOCP
13575 #$d_const HASCONST
13576 #ifndef HASCONST
13577 #define const
13578 #endif
13579 #include <sys/types.h>
13580 #include <db.h>
13581
13582 #ifndef DB_VERSION_MAJOR
13583 u_int32_t hash_cb (ptr, size)
13584 const void *ptr;
13585 size_t size;
13586 {
13587 }
13588 HASHINFO info;
13589 int main()
13590 {
13591         info.hash = hash_cb;
13592 }
13593 #endif
13594 EOCP
13595         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13596                 if $contains warning try.out >>/dev/null 2>&1 ; then
13597                         db_hashtype='int'
13598                 else
13599                         db_hashtype='u_int32_t'
13600                 fi
13601         else
13602                 : XXX Maybe we should just give up here.
13603                 db_hashtype=u_int32_t
13604                 $cat try.out >&4
13605                 echo "Help:  I can't seem to compile the db test program." >&4
13606                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13607         fi
13608         $rm -f try.*
13609         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13610         ;;
13611 *)      db_hashtype=u_int32_t
13612         ;;
13613 esac
13614 case "$i_db" in
13615 define)
13616         : Check the return type needed for prefix 
13617         echo " "
13618         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13619         cat >try.c <<EOCP
13620 #$d_const HASCONST
13621 #ifndef HASCONST
13622 #define const
13623 #endif
13624 #include <sys/types.h>
13625 #include <db.h>
13626
13627 #ifndef DB_VERSION_MAJOR
13628 size_t prefix_cb (key1, key2)
13629 const DBT *key1;
13630 const DBT *key2;
13631 {
13632 }
13633 BTREEINFO info;
13634 int main()
13635 {
13636         info.prefix = prefix_cb;
13637 }
13638 #endif
13639 EOCP
13640         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13641                 if $contains warning try.out >>/dev/null 2>&1 ; then
13642                         db_prefixtype='int'
13643                 else
13644                         db_prefixtype='size_t'
13645                 fi
13646         else
13647                 db_prefixtype='size_t'
13648                 : XXX Maybe we should just give up here.
13649                 $cat try.out >&4
13650                 echo "Help:  I can't seem to compile the db test program." >&4
13651                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13652         fi
13653         $rm -f try.*
13654         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13655         ;;
13656 *)      db_prefixtype='size_t'
13657         ;;
13658 esac
13659
13660
13661 : How can we generate normalized random numbers ?
13662 echo " "
13663 echo "Looking for a random number function..." >&4
13664 case "$randfunc" in
13665 '')
13666         if set drand48 val -f; eval $csym; $val; then
13667                 dflt="drand48"
13668                 echo "Good, found drand48()." >&4
13669         elif set random val -f; eval $csym; $val; then
13670                 dflt="random"
13671                 echo "OK, found random()." >&4
13672         else
13673                 dflt="rand"
13674                 echo "Yick, looks like I have to use rand()." >&4
13675         fi
13676         echo " "
13677         ;;
13678 *)
13679         dflt="$randfunc"
13680         ;;
13681 esac
13682 cont=true
13683
13684 case "$ccflags" in
13685 *-Dmy_rand=*|*-Dmy_srand=*)
13686         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13687         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13688         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13689         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13690         ;;
13691 esac
13692
13693 while $test "$cont"; do
13694         rp="Use which function to generate random numbers?"
13695         . ./myread
13696         if $test "$ans" = "$dflt"; then
13697                 : null
13698         else
13699                 randbits=''
13700         fi
13701         randfunc="$ans"
13702         if set $ans val -f; eval $csym; $val; then
13703                 cont=''
13704         else
13705                 dflt=y
13706                 rp="I cannot find function $ans. Use that name anyway?"
13707                 . ./myread
13708                 dflt=rand
13709                 case "$ans" in
13710                         [yY]*) cont='';;
13711                 esac
13712         fi
13713         case "$cont" in
13714         '')
13715                 case "$randfunc" in
13716                 drand48)
13717                         drand01="drand48()"
13718                         seedfunc="srand48"
13719                         randbits=48
13720                         randseedtype=long
13721                         ;;
13722                 rand|random)
13723                         case "$randbits" in
13724                         '')
13725 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13726                                 $cat >try.c <<EOCP
13727 #$i_unistd I_UNISTD
13728 #$i_stdlib I_STDLIB
13729 #include <stdio.h>
13730 #ifdef I_UNISTD
13731 #  include <unistd.h>
13732 #endif
13733 #ifdef I_STDLIB
13734 #  include <stdlib.h>
13735 #endif
13736 int main()
13737 {
13738         register int i;
13739         register unsigned long tmp;
13740         register unsigned long max = 0L;
13741
13742         for (i = 1000; i; i--) {
13743                 tmp = (unsigned long) $randfunc();
13744                 if (tmp > max) max = tmp;
13745         }
13746         for (i = 0; max; i++)
13747                 max /= 2;
13748         printf("%d\n",i);
13749 }
13750 EOCP
13751                                 set try
13752                                 if eval $compile_ok; then
13753                                         dflt=`try`
13754                                 else
13755                                         dflt='?'
13756                                         echo "(I can't seem to compile the test program...)"
13757                                 fi
13758                                 ;;
13759                         *)
13760                                 dflt="$randbits"
13761                                 ;;
13762                         esac
13763                         rp="How many bits does your $randfunc() function produce?"
13764                         . ./myread
13765                         randbits="$ans"
13766                         $rm -f try.c try
13767                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13768                         seedfunc="s$randfunc"
13769                         randseedtype=unsigned
13770                         ;;
13771                 *)
13772                         dflt="31"
13773                         rp="How many bits does your $randfunc() function produce?"
13774                         . ./myread
13775                         randbits="$ans"
13776                         seedfunc="s$randfunc"
13777                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13778                         if set $seedfunc val -f; eval $csym; $val; then
13779                                 echo "(Using $seedfunc() to seed random generator)"
13780                         else
13781                                 echo "(Warning: no $seedfunc() to seed random generator)"
13782                                 seedfunc=rand
13783                         fi
13784                         randseedtype=unsigned
13785                         ;;
13786                 esac
13787                 ;;
13788         esac
13789 done
13790
13791 echo " "
13792 echo "Determining whether or not we are on an EBCDIC system..." >&4
13793 $cat >try.c <<'EOM'
13794 int main()
13795 {
13796   if ('M'==0xd4) return 0;
13797   return 1;
13798 }
13799 EOM
13800
13801 val=$undef
13802 set try
13803 if eval $compile_ok; then
13804         if $run ./try; then
13805                 echo "You seem to speak EBCDIC." >&4
13806                 val="$define"
13807         else
13808                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13809         fi
13810 else
13811         echo "I'm unable to compile the test program." >&4
13812         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13813 fi
13814 $rm -f try try.*
13815 set ebcdic
13816 eval $setvar
13817
13818 echo " "
13819 $cat >&4 <<EOM
13820 Checking how to flush all pending stdio output...
13821 EOM
13822 # I only know how to find the first 32 possibly open files on SunOS.
13823 # See also hints/sunos_4_1.sh and util.c  --AD
13824 case "$osname" in
13825 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13826 esac
13827 $cat >>try.c <<EOCP
13828 #include <stdio.h>
13829 #$i_unistd I_UNISTD
13830 #ifdef I_UNISTD
13831 # include <unistd.h>
13832 #endif
13833 #$d_sysconf HAS_SYSCONF
13834 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13835 #ifdef HAS_STDIO_STREAM_ARRAY
13836 # define STDIO_STREAM_ARRAY $stdio_stream_array
13837 #endif
13838 int main() {
13839   FILE* p;
13840   unlink("try.out");
13841   p = fopen("try.out", "w");
13842 #ifdef TRY_FPUTC
13843   fputc('x', p);
13844 #else
13845 # ifdef TRY_FPRINTF
13846   fprintf(p, "x");
13847 # endif
13848 #endif
13849 #ifdef TRY_FFLUSH_NULL
13850   fflush(NULL);
13851 #endif
13852 #ifdef TRY_FFLUSH_ALL
13853   {
13854     long open_max = -1;
13855 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13856     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13857 # else
13858 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13859     open_max = sysconf(_SC_OPEN_MAX);
13860 #  else
13861 #   ifdef FOPEN_MAX
13862     open_max = FOPEN_MAX;
13863 #   else
13864 #    ifdef OPEN_MAX
13865     open_max = OPEN_MAX;
13866 #    else
13867 #     ifdef _NFILE
13868     open_max = _NFILE;
13869 #     endif
13870 #    endif
13871 #   endif
13872 #  endif
13873 # endif 
13874 # ifdef HAS_STDIO_STREAM_ARRAY
13875     if (open_max > 0) {
13876       long i;
13877       for (i = 0; i < open_max; i++)
13878             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13879                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13880                 STDIO_STREAM_ARRAY[i]._flag)
13881                 fflush(&STDIO_STREAM_ARRAY[i]);
13882     }   
13883   }
13884 # endif
13885 #endif
13886   _exit(42);
13887 }
13888 EOCP
13889 : first we have to find out how _not_ to flush
13890 $to try.c
13891 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13892     output=''
13893     set try -DTRY_FPUTC
13894     if eval $compile; then
13895             $run ./try 2>/dev/null
13896             code="$?"
13897             $from try.out
13898             if $test ! -s try.out -a "X$code" = X42; then
13899                 output=-DTRY_FPUTC
13900             fi
13901     fi
13902     case "$output" in
13903     '')
13904             set try -DTRY_FPRINTF
13905             if eval $compile; then
13906                     $run ./try 2>/dev/null
13907                     code="$?"
13908                     $from try.out
13909                     if $test ! -s try.out -a "X$code" = X42; then
13910                         output=-DTRY_FPRINTF
13911                     fi
13912             fi
13913         ;;
13914     esac
13915 fi
13916 : check for fflush NULL behaviour
13917 case "$fflushNULL" in
13918 '')     set try -DTRY_FFLUSH_NULL $output
13919         if eval $compile; then
13920                 $run ./try 2>/dev/null
13921                 code="$?"
13922                 $from try.out
13923                 if $test -s try.out -a "X$code" = X42; then
13924                         fflushNULL="`$cat try.out`"
13925                 else
13926                         if $test "X$code" != X42; then
13927                                 $cat >&4 <<EOM
13928 (If this test failed, don't worry, we'll try another method shortly.)
13929 EOM
13930                         fi
13931                 fi
13932         fi
13933         $rm -f core try.core core.try.*
13934         case "$fflushNULL" in
13935         x)      $cat >&4 <<EOM
13936 Your fflush(NULL) works okay for output streams.
13937 Let's see if it clobbers input pipes...
13938 EOM
13939 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13940 # bug that improperly flushes the input end of pipes.  So we avoid the
13941 # autoflush on fork/system/exec support for now. :-(
13942 $cat >tryp.c <<EOCP
13943 #include <stdio.h>
13944 int
13945 main(int argc, char **argv)
13946 {
13947     char buf[1024];
13948     int i;
13949     char *bp = buf;
13950     while (1) {
13951         while ((i = getc(stdin)) != -1
13952                && (*bp++ = i) != '\n'
13953                && bp < &buf[1024])
13954         /* DO NOTHING */ ;
13955         *bp = '\0';
13956         fprintf(stdout, "%s", buf);
13957         fflush(NULL);
13958         if (i == -1)
13959             return 0;
13960         bp = buf;
13961     }
13962 }
13963 EOCP
13964                 fflushNULL="$define"
13965                 set tryp
13966                 if eval $compile; then
13967                     $rm -f tryp.out
13968                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13969                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13970                        $cat >&4 <<EOM
13971 fflush(NULL) seems to behave okay with input streams.
13972 EOM
13973                         fflushNULL="$define"
13974                     else
13975                         $cat >&4 <<EOM
13976 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13977 EOM
13978                         fflushNULL="$undef"
13979                     fi
13980                 fi
13981                 $rm -f core tryp.c tryp.core core.tryp.*
13982                 ;;
13983         '')     $cat >&4 <<EOM
13984 Your fflush(NULL) isn't working (contrary to ANSI C).
13985 EOM
13986                 fflushNULL="$undef"
13987                 ;;
13988         *)      $cat >&4 <<EOM
13989 Cannot figure out whether your fflush(NULL) works or not.
13990 I'm assuming it doesn't (contrary to ANSI C).
13991 EOM
13992                 fflushNULL="$undef"
13993                 ;;
13994         esac
13995         ;;
13996 $define|true|[yY]*)
13997         fflushNULL="$define"
13998         ;;
13999 *)
14000         fflushNULL="$undef"
14001         ;;
14002 esac
14003 : check explicit looping only if NULL did not work, and if the pipe
14004 : bug does not show up on an explicit flush too
14005 case "$fflushNULL" in
14006 "$undef")
14007         $cat >tryp.c <<EOCP
14008 #include <stdio.h>
14009 int
14010 main(int argc, char **argv)
14011 {
14012     char buf[1024];
14013     int i;
14014     char *bp = buf;
14015     while (1) {
14016         while ((i = getc(stdin)) != -1
14017                && (*bp++ = i) != '\n'
14018                && bp < &buf[1024])
14019         /* DO NOTHING */ ;
14020         *bp = '\0';
14021         fprintf(stdout, "%s", buf);
14022         fflush(stdin);
14023         if (i == -1)
14024             return 0;
14025         bp = buf;
14026     }
14027 }
14028 EOCP
14029         set tryp
14030         if eval $compile; then
14031             $rm -f tryp.out
14032             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14033             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14034                $cat >&4 <<EOM
14035 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14036 EOM
14037                 : now check for fflushall behaviour
14038                 case "$fflushall" in
14039                 '')     set try -DTRY_FFLUSH_ALL $output
14040                         if eval $compile; then
14041                                 $cat >&4 <<EOM
14042 (Now testing the other method--but note that this also may fail.)
14043 EOM
14044                                 $run ./try 2>/dev/null
14045                                 code=$?
14046                                 $from try.out
14047                                 if $test -s try.out -a "X$code" = X42; then
14048                                         fflushall="`$cat try.out`"
14049                                 fi
14050                         fi
14051                         $rm -f core try.core core.try.*
14052                         case "$fflushall" in
14053                         x)      $cat >&4 <<EOM
14054 Whew. Flushing explicitly all the stdio streams works.
14055 EOM
14056                                 fflushall="$define"
14057                                 ;;
14058                         '')     $cat >&4 <<EOM
14059 Sigh. Flushing explicitly all the stdio streams doesn't work.
14060 EOM
14061                                 fflushall="$undef"
14062                                 ;;
14063                         *)      $cat >&4 <<EOM
14064 Cannot figure out whether flushing stdio streams explicitly works or not.
14065 I'm assuming it doesn't.
14066 EOM
14067                                 fflushall="$undef"
14068                                 ;;
14069                         esac
14070                         ;;
14071                 "$define"|true|[yY]*)
14072                         fflushall="$define"
14073                         ;;
14074                 *)
14075                         fflushall="$undef"
14076                         ;;
14077                 esac
14078             else
14079                 $cat >&4 <<EOM
14080 All is futile.  Even fflush(stdin) clobbers input pipes!
14081 EOM
14082                 fflushall="$undef"
14083             fi
14084         else
14085             fflushall="$undef"
14086         fi
14087         $rm -f core tryp.c tryp.core core.tryp.*
14088         ;;
14089 *)      fflushall="$undef"
14090         ;;
14091 esac
14092
14093 case "$fflushNULL$fflushall" in
14094 undefundef)
14095         $cat <<EOM
14096 OK, I give up.  I cannot figure out how to flush pending stdio output.
14097 We won't be flushing handles at all before fork/exec/popen.
14098 EOM
14099         ;;
14100 esac
14101 $rm -f try.* try$exe_ext
14102
14103 : Store the full pathname to the ar program for use in the C program
14104 : Respect a hint or command line value for full_ar.
14105 case "$full_ar" in
14106 '') full_ar=$ar ;;
14107 esac
14108
14109 : Store the full pathname to the sed program for use in the C program
14110 full_sed=$sed
14111
14112 : see what type gids are declared as in the kernel
14113 echo " "
14114 echo "Looking for the type for group ids returned by getgid()."
14115 set gid_t gidtype xxx stdio.h sys/types.h
14116 eval $typedef
14117 case "$gidtype" in
14118 xxx)
14119         xxx=`./findhdr sys/user.h`
14120         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14121         case $1 in
14122         unsigned) dflt="$1 $2" ;;
14123         *) dflt="$1" ;;
14124         esac
14125         ;;
14126 *) dflt="$gidtype";;
14127 esac
14128 case "$gidtype" in
14129 gid_t) echo "gid_t found." ;;
14130 *)      rp="What is the type for group ids returned by getgid()?"
14131         . ./myread
14132         gidtype="$ans"
14133         ;;
14134 esac
14135
14136 echo " "
14137 case "$gidtype" in
14138 *_t) zzz="$gidtype"     ;;
14139 *)   zzz="gid"          ;;
14140 esac
14141 echo "Checking the size of $zzz..." >&4 
14142 cat > try.c <<EOCP
14143 #include <sys/types.h>
14144 #include <stdio.h>
14145 int main() {
14146     printf("%d\n", (int)sizeof($gidtype));
14147     exit(0);
14148 }
14149 EOCP
14150 set try
14151 if eval $compile_ok; then
14152         yyy=`$run ./try`
14153         case "$yyy" in
14154         '')     gidsize=4
14155                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14156                 ;;
14157         *)      gidsize=$yyy
14158                 echo "Your $zzz is $gidsize bytes long."
14159                 ;;
14160         esac
14161 else
14162         gidsize=4
14163         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14164 fi
14165
14166
14167 echo " "
14168 case "$gidtype" in
14169 *_t) zzz="$gidtype"     ;;
14170 *)   zzz="gid"          ;;
14171 esac
14172 echo "Checking the sign of $zzz..." >&4 
14173 cat > try.c <<EOCP
14174 #include <sys/types.h>
14175 #include <stdio.h>
14176 int main() {
14177         $gidtype foo = -1;
14178         if (foo < 0)
14179                 printf("-1\n");
14180         else
14181                 printf("1\n");
14182 }
14183 EOCP
14184 set try
14185 if eval $compile; then
14186         yyy=`$run ./try`
14187         case "$yyy" in
14188         '')     gidsign=1
14189                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14190                 ;;
14191         *)      gidsign=$yyy
14192                 case "$gidsign" in
14193                  1) echo "Your $zzz is unsigned." ;;
14194                 -1) echo "Your $zzz is signed."   ;;
14195                 esac
14196                 ;;
14197         esac
14198 else
14199         gidsign=1
14200         echo "(I can't compile the test program--guessing unsigned.)" >&4
14201 fi
14202
14203
14204 echo " "
14205
14206 if $test X"$quadtype" != X; then
14207
14208 echo "Checking how to print 64-bit integers..." >&4
14209
14210 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14211         $cat >try.c <<'EOCP'
14212 #include <sys/types.h>
14213 #include <stdio.h>
14214 int main() {
14215   int q = 12345678901;
14216   printf("%ld\n", q);
14217 }
14218 EOCP
14219         set try
14220         if eval $compile; then
14221                 yyy=`$run ./try`
14222                 case "$yyy" in
14223                 12345678901)
14224                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14225                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14226                         echo "We will use %d."
14227                         ;;
14228                 esac
14229         fi
14230 fi
14231
14232 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14233         $cat >try.c <<'EOCP'
14234 #include <sys/types.h>
14235 #include <stdio.h>
14236 int main() {
14237   long q = 12345678901;
14238   printf("%ld\n", q);
14239 }
14240 EOCP
14241         set try
14242         if eval $compile; then
14243                 yyy=`$run ./try`
14244                 case "$yyy" in
14245                 12345678901)
14246                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14247                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14248                         echo "We will use %ld."
14249                         ;;
14250                 esac
14251         fi
14252 fi
14253
14254 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14255         $cat >try.c <<'EOCP'
14256 #include <sys/types.h>
14257 #include <inttypes.h>
14258 #include <stdio.h>
14259 int main() {
14260   int64_t q = 12345678901;
14261   printf("%" PRId64 "\n", q);
14262 }
14263 EOCP
14264         set try
14265         if eval $compile; then
14266                 yyy=`$run ./try`
14267                 case "$yyy" in
14268                 12345678901)
14269                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14270                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14271                         echo "We will use the C9X style."
14272                         ;;
14273                 esac
14274         fi
14275 fi
14276
14277 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14278         $cat >try.c <<EOCP
14279 #include <sys/types.h>
14280 #include <stdio.h>
14281 int main() {
14282   $quadtype q = 12345678901;
14283   printf("%Ld\n", q);
14284 }
14285 EOCP
14286         set try
14287         if eval $compile; then
14288                 yyy=`$run ./try`
14289                 case "$yyy" in
14290                 12345678901)
14291                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14292                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14293                         echo "We will use %Ld."
14294                         ;;
14295                 esac
14296         fi
14297 fi
14298
14299 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14300         $cat >try.c <<'EOCP'
14301 #include <sys/types.h>
14302 #include <stdio.h>
14303 int main() {
14304   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14305   printf("%lld\n", q);
14306 }
14307 EOCP
14308         set try
14309         if eval $compile; then
14310                 yyy=`$run ./try`
14311                 case "$yyy" in
14312                 12345678901)
14313                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14314                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14315                         echo "We will use the %lld style."
14316                         ;;
14317                 esac
14318         fi
14319 fi
14320
14321 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14322         $cat >try.c <<EOCP
14323 #include <sys/types.h>
14324 #include <stdio.h>
14325 int main() {
14326   $quadtype q = 12345678901;
14327   printf("%qd\n", q);
14328 }
14329 EOCP
14330         set try
14331         if eval $compile; then
14332                 yyy=`$run ./try`
14333                 case "$yyy" in
14334                 12345678901)
14335                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14336                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14337                         echo "We will use %qd."
14338                         ;;
14339                 esac
14340         fi
14341 fi
14342
14343 if $test X"$sPRId64" = X; then
14344         echo "Cannot figure out how to print 64-bit integers." >&4
14345 fi
14346
14347 $rm -f try try.*
14348
14349 fi
14350
14351 case "$sPRId64" in
14352 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14353         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14354         ;;
14355 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14356         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14357         ;;
14358 esac
14359
14360
14361 echo " "
14362 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14363
14364 if $test X"$ivsize" = X8; then
14365         ivdformat="$sPRId64"
14366         uvuformat="$sPRIu64"
14367         uvoformat="$sPRIo64"
14368         uvxformat="$sPRIx64"
14369         uvXUformat="$sPRIXU64"
14370 else
14371         if $test X"$ivsize" = X"$longsize"; then
14372                 ivdformat='"ld"'
14373                 uvuformat='"lu"'
14374                 uvoformat='"lo"'
14375                 uvxformat='"lx"'
14376                 uvXUformat='"lX"'
14377         else
14378                 if $test X"$ivsize" = X"$intsize"; then
14379                         ivdformat='"d"'
14380                         uvuformat='"u"'
14381                         uvoformat='"o"'
14382                         uvxformat='"x"'
14383                         uvXUformat='"X"'
14384                 else
14385                         : far out
14386                         if $test X"$ivsize" = X"$shortsize"; then
14387                                 ivdformat='"hd"'
14388                                 uvuformat='"hu"'
14389                                 uvoformat='"ho"'
14390                                 uvxformat='"hx"'
14391                                 uvXUformat='"hX"'
14392                         fi
14393                 fi
14394         fi
14395 fi
14396
14397 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14398         nveformat="$sPRIeldbl"
14399         nvfformat="$sPRIfldbl"
14400         nvgformat="$sPRIgldbl"
14401         nvEUformat="$sPRIEUldbl"
14402         nvFUformat="$sPRIFUldbl"
14403         nvGUformat="$sPRIGUldbl"
14404 else
14405         nveformat='"e"'
14406         nvfformat='"f"'
14407         nvgformat='"g"'
14408         nvEUformat='"E"'
14409         nvFUformat='"F"'
14410         nvGUformat='"G"'
14411 fi
14412
14413 case "$ivdformat" in
14414 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14415     exit 1
14416     ;;
14417 esac
14418
14419
14420 echo " "
14421 $echo "Checking the format string to be used for gids..." >&4
14422
14423 case "$gidsign" in
14424 -1)     if $test X"$gidsize" = X"$ivsize"; then
14425                 gidformat="$ivdformat"
14426         else
14427                 if $test X"$gidsize" = X"$longsize"; then
14428                         gidformat='"ld"'
14429                 else
14430                         if $test X"$gidsize" = X"$intsize"; then
14431                                 gidformat='"d"'
14432                         else
14433                                 if $test X"$gidsize" = X"$shortsize"; then
14434                                         gidformat='"hd"'
14435                                 fi
14436                         fi
14437                 fi
14438         fi
14439         ;;
14440 *)      if $test X"$gidsize" = X"$uvsize"; then
14441                 gidformat="$uvuformat"
14442         else
14443                 if $test X"$gidsize" = X"$longsize"; then
14444                         gidformat='"lu"'
14445                 else
14446                         if $test X"$gidsize" = X"$intsize"; then
14447                                 gidformat='"u"'
14448                         else
14449                                 if $test X"$gidsize" = X"$shortsize"; then
14450                                         gidformat='"hu"'
14451                                 fi
14452                         fi
14453                 fi
14454         fi
14455         ;;
14456 esac
14457
14458 : see if getgroups exists
14459 set getgroups d_getgrps
14460 eval $inlibc
14461
14462 : see if setgroups exists
14463 set setgroups d_setgrps
14464 eval $inlibc
14465
14466
14467 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14468 echo " "
14469 case "$d_getgrps$d_setgrps" in
14470 *define*)
14471         case "$groupstype" in
14472         '') dflt="$gidtype" ;;
14473         *)  dflt="$groupstype" ;;
14474         esac
14475         $cat <<EOM
14476 What type of pointer is the second argument to getgroups() and setgroups()?
14477 Usually this is the same as group ids, $gidtype, but not always.
14478
14479 EOM
14480         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14481         . ./myread
14482         groupstype="$ans"
14483         ;;
14484 *)  groupstype="$gidtype";;
14485 esac
14486
14487 echo " "
14488 echo "Checking if your $make program sets \$(MAKE)..." >&4
14489 case "$make_set_make" in
14490 '')
14491         $sed 's/^X //' > testmake.mak << 'EOF'
14492 Xall:
14493 X       @echo 'maketemp="$(MAKE)"'
14494 EOF
14495         case "`$make -f testmake.mak 2>/dev/null`" in
14496         *maketemp=*) make_set_make='#' ;;
14497         *)      make_set_make="MAKE=$make" ;;
14498         esac
14499         $rm -f testmake.mak
14500         ;;
14501 esac
14502 case "$make_set_make" in
14503 '#') echo "Yup, it does.";;
14504 *) echo "Nope, it doesn't.";;
14505 esac
14506
14507 : see what type is used for mode_t
14508 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14509 set mode_t modetype int stdio.h sys/types.h
14510 eval $typedef_ask
14511
14512 : see if stdarg is available
14513 echo " "
14514 if $test `./findhdr stdarg.h`; then
14515         echo "<stdarg.h> found." >&4
14516         valstd="$define"
14517 else
14518         echo "<stdarg.h> NOT found." >&4
14519         valstd="$undef"
14520 fi
14521
14522 : see if varags is available
14523 echo " "
14524 if $test `./findhdr varargs.h`; then
14525         echo "<varargs.h> found." >&4
14526 else
14527         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14528 fi
14529
14530 : set up the varargs testing programs
14531 $cat > varargs.c <<EOP
14532 #ifdef I_STDARG
14533 #include <stdarg.h>
14534 #endif
14535 #ifdef I_VARARGS
14536 #include <varargs.h>
14537 #endif
14538
14539 #ifdef I_STDARG
14540 int f(char *p, ...)
14541 #else
14542 int f(va_alist)
14543 va_dcl
14544 #endif
14545 {
14546         va_list ap;
14547 #ifndef I_STDARG
14548         char *p;
14549 #endif
14550 #ifdef I_STDARG
14551         va_start(ap,p);
14552 #else
14553         va_start(ap);
14554         p = va_arg(ap, char *);
14555 #endif
14556         va_end(ap);
14557 }
14558 EOP
14559 $cat > varargs <<EOP
14560 $startsh
14561 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14562         echo "true"
14563 else
14564         echo "false"
14565 fi
14566 $rm -f varargs$_o
14567 EOP
14568 chmod +x varargs
14569
14570 : now check which varargs header should be included
14571 echo " "
14572 i_varhdr=''
14573 case "$valstd" in
14574 "$define")
14575         if `./varargs I_STDARG`; then
14576                 val='stdarg.h'
14577         elif `./varargs I_VARARGS`; then
14578                 val='varargs.h'
14579         fi
14580         ;;
14581 *)
14582         if `./varargs I_VARARGS`; then
14583                 val='varargs.h'
14584         fi
14585         ;;
14586 esac
14587 case "$val" in
14588 '')
14589 echo "I could not find the definition for va_dcl... You have problems..." >&4
14590         val="$undef"; set i_stdarg; eval $setvar
14591         val="$undef"; set i_varargs; eval $setvar
14592         ;;
14593 *) 
14594         set i_varhdr
14595         eval $setvar
14596         case "$i_varhdr" in
14597         stdarg.h)
14598                 val="$define"; set i_stdarg; eval $setvar
14599                 val="$undef"; set i_varargs; eval $setvar
14600                 ;;
14601         varargs.h)
14602                 val="$undef"; set i_stdarg; eval $setvar
14603                 val="$define"; set i_varargs; eval $setvar
14604                 ;;
14605         esac
14606         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14607 esac
14608 $rm -f varargs*
14609
14610 : see if we need va_copy
14611 echo " "
14612 case "$i_stdarg" in
14613 "$define")
14614         $cat >try.c <<EOCP
14615 #include <stdarg.h>
14616 #include <stdio.h>
14617 #$i_stdlib I_STDLIB
14618 #ifdef I_STDLIB
14619 #include <stdlib.h>
14620 #endif
14621 #include <signal.h>
14622
14623 int
14624 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14625 {
14626   return vfprintf(f, fmt, *valp);
14627 }
14628  
14629 int    
14630 myvfprintf(FILE *f, const  char *fmt, va_list val)
14631 {
14632   return ivfprintf(f, fmt, &val);
14633 }
14634       
14635 int
14636 myprintf(char *fmt, ...) 
14637 {
14638   va_list val;
14639   va_start(val, fmt);
14640   return myvfprintf(stdout, fmt, val); 
14641 }         
14642
14643 int
14644 main(int ac, char **av)
14645 {
14646   signal(SIGSEGV, exit);
14647
14648   myprintf("%s%cs all right, then\n", "that", '\'');                            
14649   exit(0);      
14650 }
14651 EOCP
14652         set try
14653         if eval $compile && $run ./try 2>&1 >/dev/null; then
14654                 case "`$run ./try`" in
14655                 "that's all right, then")
14656                         okay=yes
14657                         ;;
14658                 esac
14659         fi
14660         case "$okay" in
14661         yes)    echo "It seems that you don't need va_copy()." >&4
14662                 need_va_copy="$undef"
14663                 ;;
14664         *)      echo "It seems that va_copy() or similar will be needed." >&4
14665                 need_va_copy="$define"
14666                 ;;
14667         esac
14668         $rm -f try.* core core.* *.core *.core.*
14669         ;;
14670 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14671         ;;
14672 esac
14673
14674 : define a fucntion to check prototypes
14675 $cat > protochk <<EOSH
14676 $startsh
14677 cc="$cc"
14678 optimize="$optimize"
14679 ccflags="$ccflags"
14680 prototype="$prototype"
14681 define="$define"
14682 rm=$rm
14683 EOSH
14684
14685 $cat >> protochk <<'EOSH'
14686
14687 $rm -f try.c
14688 foo="$1"
14689 shift
14690 while test $# -ge 2; do
14691         case "$1" in
14692                 $define) echo "#include <$2>" >> try.c ;;
14693                 literal) echo "$2" >> try.c ;;
14694         esac
14695     shift 2
14696 done
14697 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14698 cat >> try.c <<'EOCP'
14699 #ifdef CAN_PROTOTYPE
14700 #define _(args) args
14701 #else
14702 #define _(args) ()
14703 #endif
14704 EOCP
14705 echo "$foo" >> try.c
14706 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14707 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14708 status=$?
14709 $rm -f try.[co]
14710 exit $status
14711 EOSH
14712 chmod +x protochk
14713 $eunicefix protochk
14714
14715 : see what type is used for size_t
14716 rp="What is the type used for the length parameter for string functions?"
14717 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14718 eval $typedef_ask
14719
14720 : check for type of arguments to gethostbyaddr. 
14721 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14722         case "$d_gethbyaddr" in
14723         $define)
14724                 $cat <<EOM
14725
14726 Checking to see what type of arguments are accepted by gethostbyaddr().
14727 EOM
14728                 hdrs="$define sys/types.h
14729                         $d_socket sys/socket.h 
14730                         $i_niin netinet/in.h 
14731                         $i_netdb netdb.h
14732                         $i_unistd unistd.h"
14733                 : The first arg can 'char *' or 'void *'
14734                 : The second arg is some of integral type
14735                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14736                         for yyy in size_t long int; do
14737                                 case "$netdb_host_type" in
14738                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14739                                         if ./protochk "$try" $hdrs; then
14740                                                 echo "Your system accepts $xxx for the first arg."
14741                                                 echo "...and $yyy for the second arg."
14742                                                 netdb_host_type="$xxx"
14743                                                 netdb_hlen_type="$yyy"
14744                                         fi
14745                                         ;;
14746                                 esac
14747                         done
14748                 done
14749                 : In case none of those worked, prompt the user.
14750                 case "$netdb_host_type" in
14751                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14752                         dflt='char *'
14753                         . ./myread
14754                         netdb_host_type=$ans
14755                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14756                         dflt="$sizetype"
14757                         . ./myread
14758                         netdb_hlen_type=$ans
14759                         ;;
14760                 esac
14761                 ;;
14762         *)      : no gethostbyaddr, so pick harmless defaults
14763                 netdb_host_type='char *'
14764                 netdb_hlen_type="$sizetype"
14765                 ;;
14766         esac
14767         # Remove the "const" if needed. -- but then we'll have a 
14768         # prototype clash!
14769         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14770 fi
14771
14772 : check for type of argument to gethostbyname. 
14773 if test "X$netdb_name_type" = X ; then
14774         case "$d_gethbyname" in
14775         $define)
14776                 $cat <<EOM
14777
14778 Checking to see what type of argument is accepted by gethostbyname().
14779 EOM
14780                 hdrs="$define sys/types.h
14781                         $d_socket sys/socket.h 
14782                         $i_niin netinet/in.h 
14783                         $i_netdb netdb.h
14784                         $i_unistd unistd.h"
14785                 for xxx in "const char *" "char *"; do
14786                         case "$netdb_name_type" in
14787                         '')     try="extern struct hostent *gethostbyname($xxx);"
14788                                 if ./protochk "$try" $hdrs; then
14789                                         echo "Your system accepts $xxx."
14790                                         netdb_name_type="$xxx"
14791                                 fi
14792                                 ;;
14793                         esac
14794                 done
14795                 : In case none of those worked, prompt the user.
14796                 case "$netdb_name_type" in
14797                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14798                         dflt='char *'
14799                         . ./myread
14800                         netdb_name_type=$ans
14801                         ;;
14802                 esac
14803                 ;;
14804         *)      : no gethostbyname, so pick harmless default
14805                 netdb_name_type='char *'
14806                 ;;
14807         esac
14808 fi
14809
14810 : check for type of 1st argument to getnetbyaddr. 
14811 if test "X$netdb_net_type" = X ; then
14812         case "$d_getnbyaddr" in
14813         $define)
14814                 $cat <<EOM
14815
14816 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14817 EOM
14818                 hdrs="$define sys/types.h
14819                         $d_socket sys/socket.h 
14820                         $i_niin netinet/in.h 
14821                         $i_netdb netdb.h
14822                         $i_unistd unistd.h"
14823                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14824                         case "$netdb_net_type" in
14825                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14826                                 if ./protochk "$try" $hdrs; then
14827                                         echo "Your system accepts $xxx."
14828                                         netdb_net_type="$xxx"
14829                                 fi
14830                                 ;;
14831                         esac
14832                 done
14833                 : In case none of those worked, prompt the user.
14834                 case "$netdb_net_type" in
14835                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14836                         dflt='long'
14837                         . ./myread
14838                         netdb_net_type=$ans
14839                         ;;
14840                 esac
14841                 ;;
14842         *)      : no getnetbyaddr, so pick harmless default
14843                 netdb_net_type='long'
14844                 ;;
14845         esac
14846 fi
14847 : locate the preferred pager for this system
14848 case "$pager" in
14849 '')
14850         dflt=''
14851         case "$pg" in
14852         /*) dflt=$pg;;
14853         [a-zA-Z]:/*) dflt=$pg;;
14854         esac
14855         case "$more" in
14856         /*) dflt=$more;;
14857         [a-zA-Z]:/*) dflt=$more;;
14858         esac
14859         case "$less" in
14860         /*) dflt=$less;;
14861         [a-zA-Z]:/*) dflt=$less;;
14862         esac
14863         case "$dflt" in
14864         '') dflt=/usr/ucb/more;;
14865         esac
14866         ;;
14867 *) dflt="$pager";;
14868 esac
14869 echo " "
14870 fn=f/
14871 rp='What pager is used on your system?'
14872 . ./getfile
14873 pager="$ans"
14874
14875 : see what type pids are declared as in the kernel
14876 rp="What is the type of process ids on this system?"
14877 set pid_t pidtype int stdio.h sys/types.h
14878 eval $typedef_ask
14879
14880 : Find earliest binary compatible site_perl subdirectory perl can use.
14881 case "$bincompat5005" in
14882 "$define") xs_apiversion='5.005' ;;
14883 *) xs_apiversion=$version ;;   # The current site_perl version.
14884 esac
14885 : Find earliest pure perl site_perl subdirectory perl can use.
14886 : The versioned directories started at 5.005.
14887 pm_apiversion='5.005'
14888
14889 : see if ar generates random libraries by itself
14890 echo " "
14891 echo "Checking how to generate random libraries on your machine..." >&4
14892 echo 'int bar1() { return bar2(); }' > bar1.c
14893 echo 'int bar2() { return 2; }' > bar2.c
14894 $cat > foo.c <<'EOP'
14895 int main() { printf("%d\n", bar1()); exit(0); }
14896 EOP
14897 $cc $ccflags -c bar1.c >/dev/null 2>&1
14898 $cc $ccflags -c bar2.c >/dev/null 2>&1
14899 $cc $ccflags -c foo.c >/dev/null 2>&1
14900 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14901 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14902         $run ./foobar >/dev/null 2>&1; then
14903         echo "$ar appears to generate random libraries itself."
14904         orderlib=false
14905         ranlib=":"
14906 elif $ar ts bar$_a >/dev/null 2>&1 &&
14907         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14908         $run ./foobar >/dev/null 2>&1; then
14909                 echo "a table of contents needs to be added with '$ar ts'."
14910                 orderlib=false
14911                 ranlib="$ar ts"
14912 else
14913         case "$ranlib" in
14914         :) ranlib='';;
14915         '')
14916                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14917                 $test -f $ranlib || ranlib=''
14918                 ;;
14919         esac
14920         if $test -n "$ranlib"; then
14921                 echo "your system has '$ranlib'; we'll use that."
14922                 orderlib=false
14923         else
14924                 echo "your system doesn't seem to support random libraries"
14925                 echo "so we'll use lorder and tsort to order the libraries."
14926                 orderlib=true
14927                 ranlib=":"
14928         fi
14929 fi
14930 $rm -f foo* bar* 
14931
14932 : check for type of arguments to select. 
14933 case "$selecttype" in
14934 '') case "$d_select" in
14935         $define)
14936                 echo " "
14937                 $cat <<EOM
14938 Checking to see what type of arguments are accepted by select().
14939 EOM
14940                 hdrs="$define sys/types.h
14941                         $i_systime sys/time.h 
14942                         $i_sysselct sys/select.h
14943                         $d_socket sys/socket.h"
14944                 : The first arg can be int, unsigned, or size_t
14945                 : The last arg may or may not be 'const'
14946                 val=''
14947                 : void pointer has been seen but using that
14948                 : breaks the selectminbits test
14949                 for xxx in 'fd_set *' 'int *'; do
14950                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14951                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14952                                         case "$val" in
14953                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14954                                                 if ./protochk "$try" $hdrs; then
14955                                                         echo "Your system accepts $xxx."
14956                                                         val="$xxx"
14957                                                 fi
14958                                                 ;;
14959                                         esac
14960                                 done
14961                         done
14962                 done
14963                 case "$val" in
14964                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14965                         case "$d_fd_set" in
14966                                 $define) dflt="fd_set *" ;;
14967                                 *)              dflt="int *" ;;
14968                         esac
14969                         . ./myread
14970                         val=$ans
14971                         ;;
14972                 esac
14973                 selecttype="$val"
14974                 ;;
14975         *)      : no select, so pick a harmless default
14976                 selecttype='int *'
14977                 ;;
14978         esac
14979         ;;
14980 esac
14981
14982 : check for the select 'width'
14983 case "$selectminbits" in
14984 '') case "$d_select" in
14985         $define)
14986                 $cat <<EOM
14987
14988 Checking to see on how many bits at a time your select() operates...
14989 EOM
14990                 $cat >try.c <<EOCP
14991 #include <sys/types.h>
14992 #$i_time I_TIME
14993 #$i_systime I_SYS_TIME
14994 #$i_systimek I_SYS_TIME_KERNEL
14995 #ifdef I_TIME
14996 #   include <time.h>
14997 #endif
14998 #ifdef I_SYS_TIME
14999 #   ifdef I_SYS_TIME_KERNEL
15000 #       define KERNEL
15001 #   endif
15002 #   include <sys/time.h>
15003 #   ifdef I_SYS_TIME_KERNEL
15004 #       undef KERNEL
15005 #   endif
15006 #endif
15007 #$i_sysselct I_SYS_SELECT
15008 #ifdef I_SYS_SELECT
15009 #include <sys/select.h>
15010 #endif
15011 #$d_socket HAS_SOCKET
15012 #ifdef HAS_SOCKET
15013 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15014 #endif
15015 #include <stdio.h>
15016 $selecttype b;
15017 #define S sizeof(*(b))
15018 #define MINBITS 64
15019 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15020 #define NBITS  (NBYTES * 8)
15021 int main() {
15022     char s[NBYTES];
15023     struct timeval t;
15024     int i;
15025     FILE* fp;
15026     int fd;
15027
15028     fclose(stdin);
15029     fp = fopen("try.c", "r");
15030     if (fp == 0)
15031       exit(1);
15032     fd = fileno(fp);
15033     if (fd < 0)
15034       exit(2);
15035     b = ($selecttype)s;
15036     for (i = 0; i < NBITS; i++)
15037         FD_SET(i, b);
15038     t.tv_sec  = 0;
15039     t.tv_usec = 0;
15040     select(fd + 1, b, 0, 0, &t);
15041     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15042     printf("%d\n", i + 1);
15043     return 0;
15044 }
15045 EOCP
15046                 set try
15047                 if eval $compile_ok; then
15048                         selectminbits=`$run ./try`
15049                         case "$selectminbits" in
15050                         '')     cat >&4 <<EOM
15051 Cannot figure out on how many bits at a time your select() operates.
15052 I'll play safe and guess it is 32 bits.
15053 EOM
15054                                 selectminbits=32
15055                                 bits="32 bits"
15056                                 ;;
15057                         1)      bits="1 bit" ;;
15058                         *)      bits="$selectminbits bits" ;;
15059                         esac
15060                         echo "Your select() operates on $bits at a time." >&4
15061                 else
15062                         rp='What is the minimum number of bits your select() operates on?'
15063                         case "$byteorder" in
15064                         1234|12345678)  dflt=32 ;;
15065                         *)              dflt=1  ;;
15066                         esac
15067                         . ./myread
15068                         val=$ans
15069                         selectminbits="$val"
15070                 fi
15071                 $rm -f try.* try
15072                 ;;
15073         *)      : no select, so pick a harmless default
15074                 selectminbits='32'
15075                 ;;
15076         esac
15077         ;;
15078 esac
15079
15080 : Trace out the files included by signal.h, then look for SIGxxx names.
15081 : Remove SIGARRAYSIZE used by HPUX.
15082 : Remove SIGSTKSIZE used by Linux.
15083 : Remove SIGSTKSZ used by Posix.
15084 : Remove SIGTYP void lines used by OS2.
15085 : Some cpps, like os390, dont give the file name anywhere
15086 if [ "X$fieldn" = X ]; then
15087         : Just make some guesses.  We check them later.
15088         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15089 else
15090         xxx=`echo '#include <signal.h>' |
15091         $cppstdin $cppminus $cppflags 2>/dev/null |
15092         $grep '^[       ]*#.*include' | 
15093         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15094 fi
15095 : Check this list of files to be sure we have parsed the cpp output ok.
15096 : This will also avoid potentially non-existent files, such 
15097 : as ../foo/bar.h
15098 xxxfiles=''
15099 for xx in $xxx /dev/null ; do
15100         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15101 done
15102 : If we have found no files, at least try signal.h
15103 case "$xxxfiles" in
15104 '')     xxxfiles=`./findhdr signal.h` ;;
15105 esac
15106 xxx=`awk '
15107 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15108         print substr($2, 4, 20)
15109 }
15110 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15111         print substr($3, 4, 20)
15112 }' $xxxfiles`
15113 : Append some common names just in case the awk scan failed.
15114 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15115 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15116 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15117 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15118 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15119
15120 : generate a few handy files for later
15121 $cat > signal.c <<'EOCP'
15122 #include <sys/types.h>
15123 #include <signal.h>
15124 #include <stdio.h>
15125 int main() {
15126
15127 /* Strange style to avoid deeply-nested #if/#else/#endif */
15128 #ifndef NSIG
15129 #  ifdef _NSIG
15130 #    define NSIG (_NSIG)
15131 #  endif
15132 #endif
15133
15134 #ifndef NSIG
15135 #  ifdef SIGMAX
15136 #    define NSIG (SIGMAX+1)
15137 #  endif
15138 #endif
15139
15140 #ifndef NSIG
15141 #  ifdef SIG_MAX
15142 #    define NSIG (SIG_MAX+1)
15143 #  endif
15144 #endif
15145
15146 #ifndef NSIG
15147 #  ifdef MAXSIG
15148 #    define NSIG (MAXSIG+1)
15149 #  endif
15150 #endif
15151
15152 #ifndef NSIG
15153 #  ifdef MAX_SIG
15154 #    define NSIG (MAX_SIG+1)
15155 #  endif
15156 #endif
15157
15158 #ifndef NSIG
15159 #  ifdef SIGARRAYSIZE
15160 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15161 #  endif
15162 #endif
15163
15164 #ifndef NSIG
15165 #  ifdef _sys_nsig
15166 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15167 #  endif
15168 #endif
15169
15170 /* Default to some arbitrary number that's big enough to get most
15171    of the common signals.
15172 */
15173 #ifndef NSIG
15174 #    define NSIG 50
15175 #endif
15176
15177 printf("NSIG %d\n", NSIG);
15178
15179 #ifndef JUST_NSIG
15180
15181 EOCP
15182
15183 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15184 {
15185         printf "#ifdef SIG"; printf $1; printf "\n"
15186         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15187         printf $1; printf ");\n"
15188         printf "#endif\n"
15189 }
15190 END {
15191         printf "#endif /* JUST_NSIG */\n";
15192         printf "exit(0);\n}\n";
15193 }
15194 ' >>signal.c
15195 $cat >signal.awk <<'EOP'
15196 BEGIN { ndups = 0 }
15197 $1 ~ /^NSIG$/ { nsig = $2 }
15198 ($1 !~ /^NSIG$/) && (NF == 2) {
15199     if ($2 > maxsig) { maxsig = $2 }
15200     if (sig_name[$2]) {
15201         dup_name[ndups] = $1
15202         dup_num[ndups] = $2
15203         ndups++ 
15204     }
15205     else {
15206         sig_name[$2] = $1
15207         sig_num[$2] = $2
15208     }
15209 }
15210 END { 
15211     if (nsig == 0) {
15212         nsig = maxsig + 1
15213     }
15214     printf("NSIG %d\n", nsig);
15215     for (n = 1; n < nsig; n++) {
15216         if (sig_name[n]) {
15217             printf("%s %d\n", sig_name[n], sig_num[n])
15218         }
15219         else {
15220             printf("NUM%d %d\n", n, n) 
15221         }
15222     }
15223     for (n = 0; n < ndups; n++) {
15224         printf("%s %d\n", dup_name[n], dup_num[n])
15225     }
15226 }
15227 EOP
15228 $cat >signal_cmd <<EOS
15229 $startsh
15230 if $test -s signal.lst; then
15231     echo "Using your existing signal.lst file"
15232         exit 0
15233 fi
15234 xxx="$xxx"
15235 EOS
15236 $cat >>signal_cmd <<'EOS'
15237
15238 set signal
15239 if eval $compile_ok; then
15240         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15241 else
15242         echo "(I can't seem be able to compile the whole test program)" >&4
15243         echo "(I'll try it in little pieces.)" >&4
15244         set signal -DJUST_NSIG
15245         if eval $compile_ok; then
15246                 $run ./signal$_exe > signal.nsg
15247                 $cat signal.nsg
15248         else
15249                 echo "I can't seem to figure out how many signals you have." >&4
15250                 echo "Guessing 50." >&4
15251                 echo 'NSIG 50' > signal.nsg
15252         fi
15253         : Now look at all the signal names, one at a time.
15254         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15255                 $cat > signal.c <<EOCP
15256 #include <sys/types.h>
15257 #include <signal.h>
15258 #include <stdio.h>
15259 int main() {
15260 printf("$xx %d\n", SIG${xx});
15261 return 0;
15262 }
15263 EOCP
15264                 set signal
15265                 if eval $compile; then
15266                         echo "SIG${xx} found."
15267                         $run ./signal$_exe  >> signal.ls1
15268                 else
15269                         echo "SIG${xx} NOT found."
15270                 fi
15271         done
15272         if $test -s signal.ls1; then
15273                 $cat signal.nsg signal.ls1 |
15274                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15275         fi
15276
15277 fi
15278 if $test -s signal.lst; then
15279         :
15280 else
15281         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15282         echo 'kill -l' >signal
15283         set X `csh -f <signal`
15284         $rm -f signal
15285         shift
15286         case $# in
15287         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15288         esac
15289         echo $@ | $tr ' ' $trnl | \
15290             $awk '{ printf "%s %d\n", $1, ++s; }
15291                   END { printf "NSIG %d\n", ++s }' >signal.lst
15292 fi
15293 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15294 EOS
15295 chmod a+x signal_cmd
15296 $eunicefix signal_cmd
15297
15298 : generate list of signal names
15299 echo " "
15300 case "$sig_name_init" in
15301 '') doinit=yes ;;
15302 *)  case "$sig_num_init" in
15303     ''|*,*) doinit=yes ;;
15304     esac ;;
15305 esac
15306 case "$doinit" in
15307 yes)
15308         echo "Generating a list of signal names and numbers..." >&4
15309         . ./signal_cmd
15310         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15311         sig_name=`$awk 'BEGIN { printf "ZERO " }
15312                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15313         sig_num=`$awk  'BEGIN { printf "0 " }
15314                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15315         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15316                              !/^NSIG/   { printf "\"%s\", ", $1 }
15317                              END        { printf "0\n" }' signal.lst`
15318         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15319                              !/^NSIG/   { printf "%d, ", $2}
15320                              END        { printf "0\n"}' signal.lst`
15321         ;;
15322 esac
15323 echo "The following $sig_count signals are available:"
15324 echo " "
15325 echo $sig_name | $awk \
15326 'BEGIN { linelen = 0 }
15327 {
15328         for (i = 1; i <= NF; i++) {
15329                 name = "SIG" $i " "
15330                 linelen = linelen + length(name)
15331                 if (linelen > 70) {
15332                         printf "\n"
15333                         linelen = length(name)
15334                 }
15335                 printf "%s", name
15336         }
15337         printf "\n"
15338 }'
15339 sig_size=`echo $sig_name | awk '{print NF}'`
15340 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15341
15342 echo " "
15343 case "$sizetype" in
15344 *_t) zzz="$sizetype"    ;;
15345 *)   zzz="filesize"     ;;
15346 esac
15347 echo "Checking the size of $zzz..." >&4 
15348 cat > try.c <<EOCP
15349 #include <sys/types.h>
15350 #include <stdio.h>
15351 int main() {
15352     printf("%d\n", (int)sizeof($sizetype));
15353     exit(0);
15354 }
15355 EOCP
15356 set try
15357 if eval $compile_ok; then
15358         yyy=`$run ./try`
15359         case "$yyy" in
15360         '')     sizesize=4
15361                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15362                 ;;
15363         *)      sizesize=$yyy
15364                 echo "Your $zzz size is $sizesize bytes."
15365                 ;;
15366         esac
15367 else
15368         sizesize=4
15369         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15370 fi
15371
15372
15373 : check for socklen_t
15374 echo " "
15375 echo "Checking to see if you have socklen_t..." >&4
15376 $cat >try.c <<EOCP
15377 #include <sys/types.h>
15378 #$d_socket HAS_SOCKET
15379 #ifdef HAS_SOCKET
15380 #include <sys/socket.h>
15381 #endif
15382 int main() { socklen_t x = 16; }
15383 EOCP
15384 set try
15385 if eval $compile; then
15386         val="$define"
15387         echo "You have socklen_t."
15388 else
15389         val="$undef"
15390         echo "You do not have socklen_t."
15391         case "$sizetype" in
15392         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15393         esac
15394 fi
15395 $rm -f try try.*
15396 set d_socklen_t
15397 eval $setvar
15398
15399 : see if this is a socks.h system
15400 set socks.h i_socks
15401 eval $inhdr
15402
15403 : check for type of the size argument to socket calls
15404 case "$d_socket" in
15405 "$define")
15406         $cat <<EOM
15407
15408 Checking to see what type is the last argument of accept().
15409 EOM
15410         yyy=''
15411         case "$d_socklen_t" in
15412         "$define") yyy="$yyy socklen_t"
15413         esac
15414         yyy="$yyy $sizetype int long unsigned"
15415         for xxx in $yyy; do
15416                 case "$socksizetype" in
15417                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15418                         case "$usesocks" in
15419                         "$define")
15420                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15421                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15422                                         socksizetype="$xxx"
15423                                 fi
15424                                 ;;
15425                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15426                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15427                                         socksizetype="$xxx"
15428                                 fi
15429                                 ;;
15430                         esac
15431                         ;;
15432                 esac
15433         done
15434 : In case none of those worked, prompt the user.
15435         case "$socksizetype" in
15436         '')     rp='What is the type for socket address structure sizes?'
15437                 dflt='int'
15438                 . ./myread
15439                 socksizetype=$ans
15440                 ;;
15441         esac
15442         ;;
15443 *)      : no sockets, so pick relatively harmless default
15444         socksizetype='int'
15445         ;;
15446 esac
15447
15448 : see what type is used for signed size_t
15449 set ssize_t ssizetype int stdio.h sys/types.h
15450 eval $typedef
15451 dflt="$ssizetype"
15452 $cat > try.c <<EOM
15453 #include <stdio.h>
15454 #include <sys/types.h>
15455 #define Size_t $sizetype
15456 #define SSize_t $dflt
15457 int main()
15458 {
15459         if (sizeof(Size_t) == sizeof(SSize_t))
15460                 printf("$dflt\n");
15461         else if (sizeof(Size_t) == sizeof(int))
15462                 printf("int\n");
15463         else 
15464                 printf("long\n");
15465         exit(0);
15466 }
15467 EOM
15468 echo " "
15469 set try
15470 if eval $compile_ok && $run ./try > /dev/null; then
15471         ssizetype=`$run ./try`
15472         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15473 else
15474         $cat >&4 <<EOM
15475 Help! I can't compile and run the ssize_t test program: please enlighten me!
15476 (This is probably a misconfiguration in your system or libraries, and
15477 you really ought to fix it.  Still, I'll try anyway.)
15478
15479 I need a type that is the same size as $sizetype, but is guaranteed to
15480 be signed.  Common values are ssize_t, int and long.
15481
15482 EOM
15483         rp="What signed type is the same size as $sizetype?"
15484         . ./myread
15485         ssizetype="$ans"
15486 fi
15487 $rm -f try try.*
15488
15489 : see what type of char stdio uses.
15490 echo " "
15491 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15492 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15493         echo "Your stdio uses unsigned chars." >&4
15494         stdchar="unsigned char"
15495 else
15496         echo "Your stdio uses signed chars." >&4
15497         stdchar="char"
15498 fi
15499 $rm -f stdioh
15500
15501
15502
15503 : see if time exists
15504 echo " "
15505 if test "X$d_time" = X -o X"$timetype" = X; then
15506     if set time val -f d_time; eval $csym; $val; then
15507                 echo 'time() found.' >&4
15508                 val="$define"
15509                 rp="What is the type returned by time() on this system?"
15510                 set time_t timetype long stdio.h sys/types.h
15511                 eval $typedef_ask
15512     else
15513                 echo 'time() not found, hope that will do.' >&4
15514                 val="$undef"
15515                 timetype='int';
15516     fi
15517     set d_time
15518     eval $setvar
15519 fi
15520
15521 : see what type uids are declared as in the kernel
15522 echo " "
15523 echo "Looking for the type for user ids returned by getuid()."
15524 set uid_t uidtype xxx stdio.h sys/types.h
15525 eval $typedef
15526 case "$uidtype" in
15527 xxx)
15528         xxx=`./findhdr sys/user.h`
15529         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15530         case $1 in
15531         unsigned) dflt="$1 $2" ;;
15532         *) dflt="$1" ;;
15533         esac
15534         ;;
15535 *) dflt="$uidtype";;
15536 esac
15537 case "$uidtype" in
15538 uid_t)  echo "uid_t found." ;;
15539 *)      rp="What is the type for user ids returned by getuid()?"
15540         . ./myread
15541         uidtype="$ans"
15542         ;;
15543 esac
15544
15545 echo " "
15546 case "$uidtype" in
15547 *_t) zzz="$uidtype"     ;;
15548 *)   zzz="uid"          ;;
15549 esac
15550 echo "Checking the size of $zzz..." >&4 
15551 cat > try.c <<EOCP
15552 #include <sys/types.h>
15553 #include <stdio.h>
15554 int main() {
15555     printf("%d\n", (int)sizeof($uidtype));
15556     exit(0);
15557 }
15558 EOCP
15559 set try
15560 if eval $compile_ok; then
15561         yyy=`$run ./try`
15562         case "$yyy" in
15563         '')     uidsize=4
15564                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15565                 ;;
15566         *)      uidsize=$yyy
15567                 echo "Your $zzz is $uidsize bytes long."
15568                 ;;
15569         esac
15570 else
15571         uidsize=4
15572         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15573 fi
15574
15575 echo " "
15576 case "$uidtype" in
15577 *_t) zzz="$uidtype"     ;;
15578 *)   zzz="uid"          ;;
15579 esac
15580 echo "Checking the sign of $zzz..." >&4
15581 cat > try.c <<EOCP
15582 #include <sys/types.h>
15583 #include <stdio.h>
15584 int main() {
15585         $uidtype foo = -1;
15586         if (foo < 0)
15587                 printf("-1\n");
15588         else
15589                 printf("1\n");
15590 }
15591 EOCP
15592 set try
15593 if eval $compile; then
15594         yyy=`$run ./try`
15595         case "$yyy" in
15596         '')     uidsign=1
15597                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15598                 ;;
15599         *)      uidsign=$yyy
15600                 case "$uidsign" in
15601                  1) echo "Your $zzz is unsigned." ;;
15602                 -1) echo "Your $zzz is signed."   ;;
15603                 esac
15604                 ;;
15605         esac
15606 else
15607         uidsign=1
15608         echo "(I can't compile the test program--guessing unsigned.)" >&4
15609 fi
15610
15611
15612
15613 echo " "
15614 $echo "Checking the format string to be used for uids..." >&4
15615
15616 case "$uidsign" in
15617 -1)     if $test X"$uidsize" = X"$ivsize"; then
15618                 uidformat="$ivdformat"
15619         else
15620                 if $test X"$uidsize" = X"$longsize"; then
15621                         uidformat='"ld"'
15622                 else
15623                         if $test X"$uidsize" = X"$intsize"; then
15624                                 uidformat='"d"'
15625                         else
15626                                 if $test X"$uidsize" = X"$shortsize"; then
15627                                         uidformat='"hd"'
15628                                 fi
15629                         fi
15630                 fi
15631         fi
15632         ;;
15633 *)      if $test X"$uidsize" = X"$uvsize"; then
15634                 uidformat="$uvuformat"
15635         else
15636                 if $test X"$uidsize" = X"$longsize"; then
15637                         uidformat='"lu"'
15638                 else
15639                         if $test X"$uidsize" = X"$intsize"; then
15640                                 uidformat='"u"'
15641                         else
15642                                 if $test X"$uidsize" = X"$shortsize"; then
15643                                         uidformat='"hu"'
15644                                 fi
15645                         fi
15646                 fi
15647         fi
15648         ;;
15649 esac
15650
15651 : determine compiler compiler
15652 case "$yacc" in
15653 '')
15654         dflt=yacc;;
15655 *)
15656         dflt="$yacc";;
15657 esac
15658 echo " "
15659 comp='yacc'
15660 if $test -f "$byacc"; then
15661         dflt="$byacc"
15662         comp="byacc or $comp"
15663 fi
15664 if $test -f "$bison"; then
15665         comp="$comp or bison -y"
15666 fi
15667 rp="Which compiler compiler ($comp) shall I use?"
15668 . ./myread
15669 yacc="$ans"
15670 case "$yacc" in
15671 *bis*)
15672         case "$yacc" in
15673         *-y*) ;;
15674         *)
15675                 yacc="$yacc -y"
15676                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15677                 ;;
15678         esac
15679         ;;
15680 esac
15681
15682 : see if fcntl.h is there
15683 val=''
15684 set fcntl.h val
15685 eval $inhdr
15686
15687 : see if we can include fcntl.h
15688 case "$val" in
15689 "$define")
15690         echo " "
15691         if $h_fcntl; then
15692                 val="$define"
15693                 echo "We'll be including <fcntl.h>." >&4
15694         else
15695                 val="$undef"
15696                 if $h_sysfile; then
15697         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15698                 else
15699                         echo "We won't be including <fcntl.h>." >&4
15700                 fi
15701         fi
15702         ;;
15703 *)
15704         h_fcntl=false
15705         val="$undef"
15706         ;;
15707 esac
15708 set i_fcntl
15709 eval $setvar
15710
15711 : see if this is a iconv.h system
15712 set iconv.h i_iconv
15713 eval $inhdr
15714
15715 : see if this is a ieeefp.h system
15716 set ieeefp.h i_ieeefp
15717 eval $inhdr
15718
15719 : see if this is a libutil.h system
15720 set libutil.h i_libutil
15721 eval $inhdr
15722
15723 : see if locale.h is available
15724 set locale.h i_locale
15725 eval $inhdr
15726
15727 : see if mach cthreads are available
15728 if test "X$usethreads" = "X$define"; then
15729         set mach/cthreads.h i_machcthr
15730         eval $inhdr
15731 else
15732         i_machcthr="$undef"
15733 fi
15734
15735
15736
15737 : see if this is a math.h system
15738 set math.h i_math
15739 eval $inhdr
15740
15741 : see if this is a mntent.h system
15742 set mntent.h i_mntent
15743 eval $inhdr
15744
15745 : see if ndbm.h is available
15746 set ndbm.h t_ndbm
15747 eval $inhdr
15748 case "$t_ndbm" in
15749 $define)
15750         : see if dbm_open exists
15751         set dbm_open d_dbm_open
15752         eval $inlibc
15753         case "$d_dbm_open" in
15754         $undef)
15755                 t_ndbm="$undef"
15756                 echo "We won't be including <ndbm.h>"
15757                 ;;
15758         esac
15759         ;;
15760 esac
15761 val="$t_ndbm"
15762 set i_ndbm
15763 eval $setvar
15764
15765 : see if net/errno.h is available
15766 val=''
15767 set net/errno.h val
15768 eval $inhdr
15769
15770 : Unfortunately, it causes problems on some systems.  Arrgh.
15771 case "$val" in
15772 $define)
15773         cat > try.c <<'EOM'
15774 #include <stdio.h>
15775 #include <errno.h>
15776 #include <net/errno.h>
15777 int func()
15778 {
15779         return ENOTSOCK;
15780 }
15781 EOM
15782         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15783                 echo "We'll be including <net/errno.h>." >&4
15784         else
15785                 echo "We won't be including <net/errno.h>." >&4
15786                 val="$undef"
15787         fi
15788         $rm -f try.* try
15789         ;;
15790 esac
15791 set i_neterrno
15792 eval $setvar
15793
15794 : see if netinet/tcp.h is available
15795 set netinet/tcp.h i_netinettcp
15796 eval $inhdr
15797
15798 : see if this is a poll.h system
15799 set poll.h i_poll
15800 eval $inhdr
15801
15802 : see if this is a prot.h system
15803 set prot.h i_prot
15804 eval $inhdr
15805
15806 echo " "
15807 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15808 $cat <<'EOSH' > Cppsym.know
15809 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15810 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15811 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15812 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15813 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15814 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15815 bull c cadmus clipper CMU COFF COMPILER_VERSION
15816 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15817 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15818 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15819 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15820 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15821 H3050R H3050RX hbullx20 hcx host_mips
15822 hp200 hp300 hp700 HP700 hp800 hp9000
15823 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15824 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15825 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15826 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15827 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15828 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15829 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15830 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15831 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15832 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15833 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15834 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15835 MATH_HAS_NO_SIDE_EFFECTS
15836 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15837 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15838 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15839 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15840 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15841 NetBSD news1500 news1700 news1800 news1900 news3700
15842 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15843 ns32016 ns32332 ns32k nsc32000
15844 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15845 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15846 pc532 pdp11 PGC PIC plexus PORTAR posix
15847 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15848 POSIX_C_SOURCE POSIX_SOURCE POWER
15849 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15850 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15851 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15852 sony sony_news sonyrisc sparc sparclite spectrum
15853 stardent stdc STDC_EXT stratos sun sun3 sun386
15854 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15855 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15856 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15857 sysV68 sysV88 Tek4132 Tek4300 titan
15858 TM3200 TM5400 TM5600
15859 tower tower32 tower32_200 tower32_600 tower32_700
15860 tower32_800 tower32_850 tss
15861 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15862 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15863 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15864 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15865 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15866 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15867 z8000
15868 EOSH
15869 # Maybe put other stuff here too.
15870 cat <<EOSH >>Cppsym.know
15871 $osname
15872 EOSH
15873 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15874 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15875 $cat Cppsym.know > Cppsym.c
15876 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15877 $rm -f Cppsym.a Cppsym.b Cppsym.c
15878 cat <<EOSH > Cppsym
15879 $startsh
15880 if $test \$# -gt 0; then
15881     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15882     if $test -s Cppsym.got; then
15883         $rm -f Cppsym.got
15884         exit 0
15885     fi
15886     $rm -f Cppsym.got
15887     exit 1
15888 else
15889     $tr " " "$trnl" | ./Cppsym.try
15890     exit 0
15891 fi
15892 EOSH
15893 chmod +x Cppsym
15894 $eunicefix Cppsym
15895 cat <<EOSH > Cppsym.try
15896 $startsh
15897 cat <<'EOCP' > try.c
15898 #include <stdio.h>
15899 int main() {
15900 EOCP
15901 $awk \\
15902 EOSH
15903 cat <<'EOSH' >> Cppsym.try
15904 'length($1) > 0 {
15905     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
15906     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
15907     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
15908     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
15909 }'       >> try.c
15910 echo 'return 0;}' >> try.c
15911 EOSH
15912 cat <<EOSH >> Cppsym.try
15913 ccflags="$ccflags"
15914 case "$osname-$gccversion" in
15915 irix-) ccflags="\$ccflags -woff 1178" ;;
15916 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15917 esac
15918 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15919 EOSH
15920 chmod +x Cppsym.try
15921 $eunicefix Cppsym.try
15922 ./Cppsym < Cppsym.know > Cppsym.true
15923 : now check the C compiler for additional symbols
15924 postprocess_cc_v=''
15925 case "$osname" in
15926 aix) postprocess_cc_v="|$tr , ' '" ;;
15927 esac
15928 $cat >ccsym <<EOS
15929 $startsh
15930 $cat >tmp.c <<EOF
15931 extern int foo;
15932 EOF
15933 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15934 do
15935         case "\$i" in
15936         -D*) echo "\$i" | $sed 's/^-D//';;
15937         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15938         esac
15939 done
15940 $rm -f try.c
15941 EOS
15942 postprocess_cc_v=''
15943 chmod +x ccsym
15944 $eunicefix ccsym
15945 ./ccsym > ccsym1.raw
15946 if $test -s ccsym1.raw; then
15947        $sort ccsym1.raw | $uniq >ccsym.raw
15948 else
15949        mv ccsym1.raw ccsym.raw
15950 fi
15951
15952 $awk '/\=/ { print $0; next }
15953         { print $0"=1" }' ccsym.raw >ccsym.list
15954 $awk '/\=/ { print $0; next }
15955         { print $0"=1" }' Cppsym.true >ccsym.true
15956 $comm -13 ccsym.true ccsym.list >ccsym.own
15957 $comm -12 ccsym.true ccsym.list >ccsym.com
15958 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15959 also=''
15960 if $test -z ccsym.raw; then
15961         echo "Your C compiler doesn't seem to define any symbols!" >&4
15962         echo " "
15963         echo "However, your C preprocessor defines the following symbols:"
15964         $cat Cppsym.true
15965         ccsymbols=''
15966         cppsymbols=`$cat Cppsym.true`
15967         cppsymbols=`echo $cppsymbols`
15968         cppccsymbols="$cppsymbols"
15969 else
15970         if $test -s ccsym.com; then
15971                 echo "Your C compiler and pre-processor define these symbols:"
15972                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15973                 also='also '
15974                 symbols='ones'
15975                 cppccsymbols=`$cat ccsym.com`
15976                 cppccsymbols=`echo $cppccsymbols`
15977                 $test "$silent" || sleep 1
15978         fi
15979         if $test -s ccsym.cpp; then
15980                 $test "$also" && echo " "
15981                 echo "Your C pre-processor ${also}defines the following symbols:"
15982                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15983                 also='further '
15984                 cppsymbols=`$cat ccsym.cpp`
15985                 cppsymbols=`echo $cppsymbols`
15986                 $test "$silent" || sleep 1
15987         fi
15988         if $test -s ccsym.own; then
15989                 $test "$also" && echo " "
15990                 echo "Your C compiler ${also}defines the following cpp symbols:"
15991                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15992                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15993                 ccsymbols=`$cat ccsym.own`
15994                 ccsymbols=`echo $ccsymbols`
15995                 $test "$silent" || sleep 1
15996         fi
15997 fi
15998
15999 : see if this is a termio system
16000 val="$undef"
16001 val2="$undef"
16002 val3="$undef"
16003 if $test `./findhdr termios.h`; then
16004         set tcsetattr i_termios
16005         eval $inlibc
16006         val3="$i_termios"
16007 fi
16008 echo " "
16009 case "$val3" in
16010 "$define") echo "You have POSIX termios.h... good!" >&4;;
16011 *) if ./Cppsym pyr; then
16012                 case "`/bin/universe`" in
16013                 ucb) if $test `./findhdr sgtty.h`; then
16014                                 val2="$define"
16015                                 echo "<sgtty.h> found." >&4
16016                         else
16017                                 echo "System is pyramid with BSD universe."
16018                                 echo "<sgtty.h> not found--you could have problems." >&4
16019                         fi;;
16020                 *) if $test `./findhdr termio.h`; then
16021                                 val="$define"
16022                                 echo "<termio.h> found." >&4
16023                         else
16024                                 echo "System is pyramid with USG universe."
16025                                 echo "<termio.h> not found--you could have problems." >&4
16026                         fi;;
16027                 esac
16028         elif ./usg; then
16029                 if $test `./findhdr termio.h`; then
16030                         echo "<termio.h> found." >&4
16031                         val="$define"
16032                 elif $test `./findhdr sgtty.h`; then
16033                         echo "<sgtty.h> found." >&4
16034                         val2="$define"
16035                 else
16036 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16037                 fi
16038         else
16039                 if $test `./findhdr sgtty.h`; then
16040                         echo "<sgtty.h> found." >&4
16041                         val2="$define"
16042                 elif $test `./findhdr termio.h`; then
16043                         echo "<termio.h> found." >&4
16044                         val="$define"
16045                 else
16046 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16047                 fi
16048         fi;;
16049 esac
16050 set i_termio; eval $setvar
16051 val=$val2; set i_sgtty; eval $setvar
16052 val=$val3; set i_termios; eval $setvar
16053
16054 : see if this is a shadow.h system
16055 set shadow.h i_shadow
16056 eval $inhdr
16057
16058 : see if stddef is available
16059 set stddef.h i_stddef
16060 eval $inhdr
16061
16062 : see if this is a sunmath.h system
16063 set sunmath.h i_sunmath
16064 eval $inhdr
16065
16066 : see if sys/access.h is available
16067 set sys/access.h i_sysaccess
16068 eval $inhdr
16069
16070 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16071 set sys/filio.h i_sysfilio
16072 eval $inhdr
16073 echo " "
16074 if $test `./findhdr sys/ioctl.h`; then
16075         val="$define"
16076         echo '<sys/ioctl.h> found.' >&4
16077 else
16078         val="$undef"
16079         if $test $i_sysfilio = "$define"; then
16080             echo '<sys/ioctl.h> NOT found.' >&4
16081         else
16082                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16083                 $test $i_termio = "$define" && xxx="termio.h"
16084                 $test $i_termios = "$define" && xxx="termios.h"
16085 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16086         fi
16087 fi
16088 set i_sysioctl
16089 eval $setvar
16090
16091 : see if socket ioctl defs are in sys/sockio.h
16092 echo " "
16093 xxx=`./findhdr sys/sockio.h`
16094 if $test "$xxx"; then
16095         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16096                 val="$define"
16097                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16098         else
16099                 val="$undef"
16100                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16101         fi
16102 else
16103         val="$undef"
16104         $cat <<EOM
16105 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16106 EOM
16107 fi
16108 set i_syssockio
16109 eval $setvar
16110
16111
16112 : see if this is a syslog.h system
16113 set syslog.h i_syslog
16114 eval $inhdr
16115
16116
16117 : see if this is a sys/mode.h system
16118 set sys/mode.h i_sysmode
16119 eval $inhdr
16120
16121 : see if sys/resource.h has to be included
16122 set sys/resource.h i_sysresrc
16123 eval $inhdr
16124
16125 : see if sys/security.h is available
16126 set sys/security.h i_syssecrt
16127 eval $inhdr
16128
16129 : see if this is a sys/statvfs.h system
16130 set sys/statvfs.h i_sysstatvfs
16131 eval $inhdr
16132
16133 : see if this is a sys/un.h system
16134 set sys/un.h i_sysun
16135 eval $inhdr
16136
16137
16138 : see if this is a sys/utsname.h system
16139 set sys/utsname.h i_sysutsname
16140 eval $inhdr
16141
16142 : see if this is a syswait system
16143 set sys/wait.h i_syswait
16144 eval $inhdr
16145
16146 : see if this is a ustat.h system
16147 set ustat.h i_ustat
16148 eval $inhdr
16149
16150 : see if this is an utime system
16151 set utime.h i_utime
16152 eval $inhdr
16153
16154 : see if this is a values.h system
16155 set values.h i_values
16156 eval $inhdr
16157
16158 : see if this is a vfork system
16159 case "$d_vfork" in
16160 "$define")
16161         set vfork.h i_vfork
16162         eval $inhdr
16163         ;;
16164 *)
16165         i_vfork="$undef"
16166         ;;
16167 esac
16168
16169 : see if gdbm.h is available
16170 set gdbm.h t_gdbm
16171 eval $inhdr
16172 case "$t_gdbm" in
16173 $define)
16174         : see if gdbm_open exists
16175         set gdbm_open d_gdbm_open
16176         eval $inlibc
16177         case "$d_gdbm_open" in
16178         $undef)
16179                 t_gdbm="$undef"
16180                 echo "We won't be including <gdbm.h>"
16181                 ;;
16182         esac
16183         ;;
16184 esac
16185 val="$t_gdbm"
16186 set i_gdbm
16187 eval $setvar
16188
16189 echo " "
16190 echo "Looking for extensions..." >&4
16191 : If we are using the old config.sh, known_extensions may contain
16192 : old or inaccurate or duplicate values.
16193 known_extensions=''
16194 nonxs_extensions=''
16195 : We do not use find because it might not be available.
16196 : We do not just use MANIFEST because the user may have dropped
16197 : some additional extensions into the source tree and expect them
16198 : to be built.
16199
16200 : Function to recursively find available extensions, ignoring DynaLoader
16201 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16202 find_extensions='
16203     for xxx in *; do
16204        case "$xxx" in
16205            DynaLoader|dynaload) ;;
16206            *)
16207            if $test -f $xxx/$xxx.xs; then
16208                known_extensions="$known_extensions $1$xxx";
16209            elif $test -f $xxx/Makefile.PL; then
16210                nonxs_extensions="$nonxs_extensions $1$xxx";
16211            else
16212                if $test -d $xxx -a $# -lt 10; then
16213                    set $1$xxx/ $*;
16214                    cd $xxx;
16215                    eval $find_extensions;
16216                    cd ..;
16217                    shift;
16218                fi;
16219            fi
16220            ;;
16221        esac;
16222     done'
16223 tdir=`pwd`
16224 cd $rsrc/ext
16225 set X
16226 shift
16227 eval $find_extensions
16228 set X $nonxs_extensions
16229 shift
16230 nonxs_extensions="$*"
16231 set X $known_extensions
16232 shift
16233 known_extensions="$*"
16234 cd $tdir
16235
16236 : Now see which are supported on this system.
16237 avail_ext=''
16238 for xxx in $known_extensions ; do
16239         case "$xxx" in
16240         DB_File|db_file)
16241                 case "$i_db" in
16242                 $define) avail_ext="$avail_ext $xxx" ;;
16243                 esac
16244                 ;;
16245         GDBM_File|gdbm_fil)
16246                 case "$i_gdbm" in 
16247                 $define) avail_ext="$avail_ext $xxx" ;;
16248                 esac
16249                 ;;
16250         I18N/Langinfo|i18n_lan)
16251                 case "$i_langinfo$d_nl_langinfo" in 
16252                 $define$define) avail_ext="$avail_ext $xxx" ;;
16253                 esac
16254                 ;;
16255         NDBM_File|ndbm_fil)
16256                 case "$i_ndbm" in
16257                 $define)
16258                     case "$osname-$use64bitint" in
16259                     cygwin-*|hpux-define)
16260                         case "$libs" in
16261                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16262                         esac
16263                         ;;
16264                     *) avail_ext="$avail_ext $xxx" ;;
16265                     esac
16266                     ;;
16267                 esac
16268                 ;;
16269         ODBM_File|odbm_fil) 
16270                 case "${i_dbm}${i_rpcsvcdbm}" in
16271                 *"${define}"*)
16272                     case "$osname-$use64bitint" in
16273                     cygwin-*|hpux-define)
16274                         case "$libs" in
16275                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16276                         esac
16277                         ;;
16278                     *) avail_ext="$avail_ext $xxx" ;;
16279                     esac
16280                     ;;
16281                 esac
16282                 ;;
16283         POSIX|posix)
16284                 case "$useposix" in
16285                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16286                 esac
16287                 ;;
16288         Opcode|opcode)
16289                 case "$useopcode" in
16290                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16291                 esac
16292                 ;;
16293         Socket|socket)
16294                 case "$d_socket" in 
16295                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16296                 esac
16297                 ;;
16298         Sys/Syslog|sys/syslog)
16299                 : XXX syslog requires socket
16300                 case "$d_socket" in 
16301                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16302                 esac
16303                 ;;
16304         Thread|thread)
16305                 case "$usethreads" in
16306                 true|$define|y)
16307                         case "$useithreads" in
16308                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16309                         esac
16310                 esac
16311                 ;;
16312         IPC/SysV|ipc/sysv)
16313                 : XXX Do we need a useipcsysv variable here
16314                 case "${d_msg}${d_sem}${d_shm}" in 
16315                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16316                 esac
16317                 ;;
16318         *)      avail_ext="$avail_ext $xxx"
16319                 ;;
16320         esac
16321 done
16322
16323 set X $avail_ext
16324 shift
16325 avail_ext="$*"
16326
16327 : Now see which nonxs extensions are supported on this system.
16328 : For now assume all are.
16329 nonxs_ext=''
16330 for xxx in $nonxs_extensions ; do
16331         case "$xxx" in
16332         *)      nonxs_ext="$nonxs_ext $xxx"
16333                 ;;
16334         esac
16335 done
16336
16337 set X $nonxs_ext
16338 shift
16339 nonxs_ext="$*"
16340
16341 case $usedl in
16342 $define)
16343         $cat <<EOM
16344 A number of extensions are supplied with $package.  You may choose to
16345 compile these extensions for dynamic loading (the default), compile
16346 them into the $package executable (static loading), or not include
16347 them at all.  Answer "none" to include no extensions.
16348 Note that DynaLoader is always built and need not be mentioned here.
16349
16350 EOM
16351         case "$dynamic_ext" in
16352         '') dflt="$avail_ext" ;;
16353         *)      dflt="$dynamic_ext"
16354                 # Perhaps we are reusing an old out-of-date config.sh.
16355                 case "$hint" in
16356                 previous)
16357                         if test X"$dynamic_ext" != X"$avail_ext"; then
16358                                 $cat <<EOM
16359 NOTICE:  Your previous config.sh list may be incorrect. 
16360 The extensions now available to you are 
16361         ${avail_ext}
16362 but the default list from your previous config.sh is
16363         ${dynamic_ext} 
16364
16365 EOM
16366                         fi
16367                         ;;
16368                 esac
16369                 ;;
16370         esac
16371         case "$dflt" in
16372         '')     dflt=none;;
16373         esac
16374         rp="What extensions do you wish to load dynamically?"
16375         . ./myread
16376         case "$ans" in
16377         none) dynamic_ext=' ' ;;
16378         *) dynamic_ext="$ans" ;;
16379         esac
16380
16381         case "$static_ext" in
16382         '')
16383                 : Exclude those already listed in dynamic linking
16384                 dflt=''
16385                 for xxx in $avail_ext; do
16386                         case " $dynamic_ext " in
16387                         *" $xxx "*) ;;
16388                         *) dflt="$dflt $xxx" ;;
16389                         esac
16390                 done
16391                 set X $dflt
16392                 shift
16393                 dflt="$*"
16394                 ;;
16395         *)  dflt="$static_ext" 
16396                 ;;
16397         esac
16398
16399         case "$dflt" in
16400         '')     dflt=none;;
16401         esac
16402         rp="What extensions do you wish to load statically?"
16403         . ./myread
16404         case "$ans" in
16405         none) static_ext=' ' ;;
16406         *) static_ext="$ans" ;;
16407         esac
16408         ;;
16409 *)
16410         $cat <<EOM
16411 A number of extensions are supplied with $package.  Answer "none" 
16412 to include no extensions. 
16413 Note that DynaLoader is always built and need not be mentioned here.
16414
16415 EOM
16416         case "$static_ext" in
16417         '') dflt="$avail_ext" ;;
16418         *)      dflt="$static_ext"
16419                 # Perhaps we are reusing an old out-of-date config.sh.
16420                 case "$hint" in
16421                 previous)
16422                         if test X"$static_ext" != X"$avail_ext"; then
16423                                 $cat <<EOM
16424 NOTICE:  Your previous config.sh list may be incorrect. 
16425 The extensions now available to you are 
16426         ${avail_ext}
16427 but the default list from your previous config.sh is
16428         ${static_ext} 
16429
16430 EOM
16431                         fi
16432                         ;;
16433                 esac
16434                 ;;
16435         esac
16436         : Exclude those that are not xs extensions
16437         case "$dflt" in
16438         '')     dflt=none;;
16439         esac
16440         rp="What extensions do you wish to include?"
16441         . ./myread
16442         case "$ans" in
16443         none) static_ext=' ' ;;
16444         *) static_ext="$ans" ;;
16445         esac
16446         ;;
16447 esac
16448
16449 set X $dynamic_ext $static_ext $nonxs_ext
16450 shift
16451 extensions="$*"
16452
16453 : Remove libraries needed only for extensions
16454 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16455 : The exception is SunOS 4.x, which needs them.
16456 case "${osname}X${osvers}" in
16457 sunos*X4*)
16458     perllibs="$libs"
16459     ;;
16460 *) case "$usedl" in
16461     $define|true|[yY]*)
16462             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16463             shift
16464             perllibs="$*"
16465             ;;
16466     *)  perllibs="$libs"
16467             ;;
16468     esac
16469     ;;
16470 esac
16471
16472 : Remove build directory name from cppstdin so it can be used from
16473 : either the present location or the final installed location.
16474 echo " "
16475 : Get out of the UU directory to get correct path name.
16476 cd ..
16477 case "$cppstdin" in
16478 `pwd`/cppstdin)
16479         echo "Stripping down cppstdin path name"
16480         cppstdin=cppstdin
16481         ;;
16482 esac
16483 cd UU
16484
16485 : end of configuration questions
16486 echo " "
16487 echo "End of configuration questions."
16488 echo " "
16489
16490 : back to where it started
16491 if test -d ../UU; then
16492         cd ..
16493 fi
16494
16495 : configuration may be patched via a 'config.over' file
16496 if $test -f config.over; then
16497         echo " "
16498         dflt=y
16499         rp='I see a config.over file.  Do you wish to load it?'
16500         . UU/myread
16501         case "$ans" in
16502         n*) echo "OK, I'll ignore it.";;
16503         *)      . ./config.over
16504                 echo "Configuration override changes have been loaded."
16505                 ;;
16506         esac
16507 fi
16508
16509 : in case they want portability, strip down executable paths
16510 case "$d_portable" in
16511 "$define")
16512         echo " "
16513         echo "Stripping down executable paths..." >&4
16514         for file in $loclist $trylist; do
16515                 eval temp=\$$file
16516                 eval $file=`basename $temp`
16517         done
16518         ;;
16519 esac
16520
16521 : create config.sh file
16522 echo " "
16523 echo "Creating config.sh..." >&4
16524 $spitshell <<EOT >config.sh
16525 $startsh
16526 #
16527 # This file was produced by running the Configure script. It holds all the
16528 # definitions figured out by Configure. Should you modify one of these values,
16529 # do not forget to propagate your changes by running "Configure -der". You may
16530 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16531 #
16532
16533 # Package name      : $package
16534 # Source directory  : $src
16535 # Configuration time: $cf_time
16536 # Configured by     : $cf_by
16537 # Target system     : $myuname
16538
16539 Author='$Author'
16540 Date='$Date'
16541 Header='$Header'
16542 Id='$Id'
16543 Locker='$Locker'
16544 Log='$Log'
16545 Mcc='$Mcc'
16546 RCSfile='$RCSfile'
16547 Revision='$Revision'
16548 Source='$Source'
16549 State='$State'
16550 _a='$_a'
16551 _exe='$_exe'
16552 _o='$_o'
16553 afs='$afs'
16554 afsroot='$afsroot'
16555 alignbytes='$alignbytes'
16556 ansi2knr='$ansi2knr'
16557 aphostname='$aphostname'
16558 api_revision='$api_revision'
16559 api_subversion='$api_subversion'
16560 api_version='$api_version'
16561 api_versionstring='$api_versionstring'
16562 ar='$ar'
16563 archlib='$archlib'
16564 archlibexp='$archlibexp'
16565 archname64='$archname64'
16566 archname='$archname'
16567 archobjs='$archobjs'
16568 awk='$awk'
16569 baserev='$baserev'
16570 bash='$bash'
16571 bin='$bin'
16572 bincompat5005='$bincompat5005'
16573 binexp='$binexp'
16574 bison='$bison'
16575 byacc='$byacc'
16576 byteorder='$byteorder'
16577 c='$c'
16578 castflags='$castflags'
16579 cat='$cat'
16580 cc='$cc'
16581 cccdlflags='$cccdlflags'
16582 ccdlflags='$ccdlflags'
16583 ccflags='$ccflags'
16584 ccflags_uselargefiles='$ccflags_uselargefiles'
16585 ccname='$ccname'
16586 ccsymbols='$ccsymbols'
16587 ccversion='$ccversion'
16588 cf_by='$cf_by'
16589 cf_email='$cf_email'
16590 cf_time='$cf_time'
16591 charsize='$charsize'
16592 chgrp='$chgrp'
16593 chmod='$chmod'
16594 chown='$chown'
16595 clocktype='$clocktype'
16596 comm='$comm'
16597 compress='$compress'
16598 contains='$contains'
16599 cp='$cp'
16600 cpio='$cpio'
16601 cpp='$cpp'
16602 cpp_stuff='$cpp_stuff'
16603 cppccsymbols='$cppccsymbols'
16604 cppflags='$cppflags'
16605 cpplast='$cpplast'
16606 cppminus='$cppminus'
16607 cpprun='$cpprun'
16608 cppstdin='$cppstdin'
16609 cppsymbols='$cppsymbols'
16610 cryptlib='$cryptlib'
16611 csh='$csh'
16612 d_Gconvert='$d_Gconvert'
16613 d_PRIEUldbl='$d_PRIEUldbl'
16614 d_PRIFUldbl='$d_PRIFUldbl'
16615 d_PRIGUldbl='$d_PRIGUldbl'
16616 d_PRIXU64='$d_PRIXU64'
16617 d_PRId64='$d_PRId64'
16618 d_PRIeldbl='$d_PRIeldbl'
16619 d_PRIfldbl='$d_PRIfldbl'
16620 d_PRIgldbl='$d_PRIgldbl'
16621 d_PRIi64='$d_PRIi64'
16622 d_PRIo64='$d_PRIo64'
16623 d_PRIu64='$d_PRIu64'
16624 d_PRIx64='$d_PRIx64'
16625 d_SCNfldbl='$d_SCNfldbl'
16626 d__fwalk='$d__fwalk'
16627 d_access='$d_access'
16628 d_accessx='$d_accessx'
16629 d_alarm='$d_alarm'
16630 d_archlib='$d_archlib'
16631 d_atolf='$d_atolf'
16632 d_atoll='$d_atoll'
16633 d_attribut='$d_attribut'
16634 d_bcmp='$d_bcmp'
16635 d_bcopy='$d_bcopy'
16636 d_bincompat5005='$d_bincompat5005'
16637 d_bsd='$d_bsd'
16638 d_bsdgetpgrp='$d_bsdgetpgrp'
16639 d_bsdsetpgrp='$d_bsdsetpgrp'
16640 d_bzero='$d_bzero'
16641 d_casti32='$d_casti32'
16642 d_castneg='$d_castneg'
16643 d_charvspr='$d_charvspr'
16644 d_chown='$d_chown'
16645 d_chroot='$d_chroot'
16646 d_chsize='$d_chsize'
16647 d_closedir='$d_closedir'
16648 d_cmsghdr_s='$d_cmsghdr_s'
16649 d_const='$d_const'
16650 d_crypt='$d_crypt'
16651 d_csh='$d_csh'
16652 d_cuserid='$d_cuserid'
16653 d_dbl_dig='$d_dbl_dig'
16654 d_dbminitproto='$d_dbminitproto'
16655 d_difftime='$d_difftime'
16656 d_dirnamlen='$d_dirnamlen'
16657 d_dlerror='$d_dlerror'
16658 d_dlopen='$d_dlopen'
16659 d_dlsymun='$d_dlsymun'
16660 d_dosuid='$d_dosuid'
16661 d_drand48proto='$d_drand48proto'
16662 d_dup2='$d_dup2'
16663 d_eaccess='$d_eaccess'
16664 d_endgrent='$d_endgrent'
16665 d_endhent='$d_endhent'
16666 d_endnent='$d_endnent'
16667 d_endpent='$d_endpent'
16668 d_endpwent='$d_endpwent'
16669 d_endsent='$d_endsent'
16670 d_eofnblk='$d_eofnblk'
16671 d_eunice='$d_eunice'
16672 d_fchdir='$d_fchdir'
16673 d_fchmod='$d_fchmod'
16674 d_fchown='$d_fchown'
16675 d_fcntl='$d_fcntl'
16676 d_fcntl_can_lock='$d_fcntl_can_lock'
16677 d_fd_macros='$d_fd_macros'
16678 d_fd_set='$d_fd_set'
16679 d_fds_bits='$d_fds_bits'
16680 d_fgetpos='$d_fgetpos'
16681 d_flexfnam='$d_flexfnam'
16682 d_flock='$d_flock'
16683 d_flockproto='$d_flockproto'
16684 d_fork='$d_fork'
16685 d_fpathconf='$d_fpathconf'
16686 d_fpos64_t='$d_fpos64_t'
16687 d_frexpl='$d_frexpl'
16688 d_fs_data_s='$d_fs_data_s'
16689 d_fseeko='$d_fseeko'
16690 d_fsetpos='$d_fsetpos'
16691 d_fstatfs='$d_fstatfs'
16692 d_fstatvfs='$d_fstatvfs'
16693 d_fsync='$d_fsync'
16694 d_ftello='$d_ftello'
16695 d_ftime='$d_ftime'
16696 d_getcwd='$d_getcwd'
16697 d_getespwnam='$d_getespwnam'
16698 d_getfsstat='$d_getfsstat'
16699 d_getgrent='$d_getgrent'
16700 d_getgrps='$d_getgrps'
16701 d_gethbyaddr='$d_gethbyaddr'
16702 d_gethbyname='$d_gethbyname'
16703 d_gethent='$d_gethent'
16704 d_gethname='$d_gethname'
16705 d_gethostprotos='$d_gethostprotos'
16706 d_getitimer='$d_getitimer'
16707 d_getlogin='$d_getlogin'
16708 d_getmnt='$d_getmnt'
16709 d_getmntent='$d_getmntent'
16710 d_getnbyaddr='$d_getnbyaddr'
16711 d_getnbyname='$d_getnbyname'
16712 d_getnent='$d_getnent'
16713 d_getnetprotos='$d_getnetprotos'
16714 d_getpagsz='$d_getpagsz'
16715 d_getpbyname='$d_getpbyname'
16716 d_getpbynumber='$d_getpbynumber'
16717 d_getpent='$d_getpent'
16718 d_getpgid='$d_getpgid'
16719 d_getpgrp2='$d_getpgrp2'
16720 d_getpgrp='$d_getpgrp'
16721 d_getppid='$d_getppid'
16722 d_getprior='$d_getprior'
16723 d_getprotoprotos='$d_getprotoprotos'
16724 d_getprpwnam='$d_getprpwnam'
16725 d_getpwent='$d_getpwent'
16726 d_getsbyname='$d_getsbyname'
16727 d_getsbyport='$d_getsbyport'
16728 d_getsent='$d_getsent'
16729 d_getservprotos='$d_getservprotos'
16730 d_getspnam='$d_getspnam'
16731 d_gettimeod='$d_gettimeod'
16732 d_gnulibc='$d_gnulibc'
16733 d_grpasswd='$d_grpasswd'
16734 d_hasmntopt='$d_hasmntopt'
16735 d_htonl='$d_htonl'
16736 d_iconv='$d_iconv'
16737 d_index='$d_index'
16738 d_inetaton='$d_inetaton'
16739 d_int64_t='$d_int64_t'
16740 d_isascii='$d_isascii'
16741 d_isnan='$d_isnan'
16742 d_isnanl='$d_isnanl'
16743 d_killpg='$d_killpg'
16744 d_lchown='$d_lchown'
16745 d_ldbl_dig='$d_ldbl_dig'
16746 d_link='$d_link'
16747 d_locconv='$d_locconv'
16748 d_lockf='$d_lockf'
16749 d_longdbl='$d_longdbl'
16750 d_longlong='$d_longlong'
16751 d_lseekproto='$d_lseekproto'
16752 d_lstat='$d_lstat'
16753 d_madvise='$d_madvise'
16754 d_mblen='$d_mblen'
16755 d_mbstowcs='$d_mbstowcs'
16756 d_mbtowc='$d_mbtowc'
16757 d_memchr='$d_memchr'
16758 d_memcmp='$d_memcmp'
16759 d_memcpy='$d_memcpy'
16760 d_memmove='$d_memmove'
16761 d_memset='$d_memset'
16762 d_mkdir='$d_mkdir'
16763 d_mkdtemp='$d_mkdtemp'
16764 d_mkfifo='$d_mkfifo'
16765 d_mkstemp='$d_mkstemp'
16766 d_mkstemps='$d_mkstemps'
16767 d_mktime='$d_mktime'
16768 d_mmap='$d_mmap'
16769 d_modfl='$d_modfl'
16770 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16771 d_mprotect='$d_mprotect'
16772 d_msg='$d_msg'
16773 d_msg_ctrunc='$d_msg_ctrunc'
16774 d_msg_dontroute='$d_msg_dontroute'
16775 d_msg_oob='$d_msg_oob'
16776 d_msg_peek='$d_msg_peek'
16777 d_msg_proxy='$d_msg_proxy'
16778 d_msgctl='$d_msgctl'
16779 d_msgget='$d_msgget'
16780 d_msghdr_s='$d_msghdr_s'
16781 d_msgrcv='$d_msgrcv'
16782 d_msgsnd='$d_msgsnd'
16783 d_msync='$d_msync'
16784 d_munmap='$d_munmap'
16785 d_mymalloc='$d_mymalloc'
16786 d_nice='$d_nice'
16787 d_nl_langinfo='$d_nl_langinfo'
16788 d_nv_preserves_uv='$d_nv_preserves_uv'
16789 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16790 d_off64_t='$d_off64_t'
16791 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16792 d_oldpthreads='$d_oldpthreads'
16793 d_oldsock='$d_oldsock'
16794 d_open3='$d_open3'
16795 d_pathconf='$d_pathconf'
16796 d_pause='$d_pause'
16797 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16798 d_phostname='$d_phostname'
16799 d_pipe='$d_pipe'
16800 d_poll='$d_poll'
16801 d_portable='$d_portable'
16802 d_pthread_yield='$d_pthread_yield'
16803 d_pwage='$d_pwage'
16804 d_pwchange='$d_pwchange'
16805 d_pwclass='$d_pwclass'
16806 d_pwcomment='$d_pwcomment'
16807 d_pwexpire='$d_pwexpire'
16808 d_pwgecos='$d_pwgecos'
16809 d_pwpasswd='$d_pwpasswd'
16810 d_pwquota='$d_pwquota'
16811 d_qgcvt='$d_qgcvt'
16812 d_quad='$d_quad'
16813 d_readdir='$d_readdir'
16814 d_readlink='$d_readlink'
16815 d_readv='$d_readv'
16816 d_recvmsg='$d_recvmsg'
16817 d_rename='$d_rename'
16818 d_rewinddir='$d_rewinddir'
16819 d_rmdir='$d_rmdir'
16820 d_safebcpy='$d_safebcpy'
16821 d_safemcpy='$d_safemcpy'
16822 d_sanemcmp='$d_sanemcmp'
16823 d_sbrkproto='$d_sbrkproto'
16824 d_sched_yield='$d_sched_yield'
16825 d_scm_rights='$d_scm_rights'
16826 d_seekdir='$d_seekdir'
16827 d_select='$d_select'
16828 d_sem='$d_sem'
16829 d_semctl='$d_semctl'
16830 d_semctl_semid_ds='$d_semctl_semid_ds'
16831 d_semctl_semun='$d_semctl_semun'
16832 d_semget='$d_semget'
16833 d_semop='$d_semop'
16834 d_sendmsg='$d_sendmsg'
16835 d_setegid='$d_setegid'
16836 d_seteuid='$d_seteuid'
16837 d_setgrent='$d_setgrent'
16838 d_setgrps='$d_setgrps'
16839 d_sethent='$d_sethent'
16840 d_setitimer='$d_setitimer'
16841 d_setlinebuf='$d_setlinebuf'
16842 d_setlocale='$d_setlocale'
16843 d_setnent='$d_setnent'
16844 d_setpent='$d_setpent'
16845 d_setpgid='$d_setpgid'
16846 d_setpgrp2='$d_setpgrp2'
16847 d_setpgrp='$d_setpgrp'
16848 d_setprior='$d_setprior'
16849 d_setproctitle='$d_setproctitle'
16850 d_setpwent='$d_setpwent'
16851 d_setregid='$d_setregid'
16852 d_setresgid='$d_setresgid'
16853 d_setresuid='$d_setresuid'
16854 d_setreuid='$d_setreuid'
16855 d_setrgid='$d_setrgid'
16856 d_setruid='$d_setruid'
16857 d_setsent='$d_setsent'
16858 d_setsid='$d_setsid'
16859 d_setvbuf='$d_setvbuf'
16860 d_sfio='$d_sfio'
16861 d_shm='$d_shm'
16862 d_shmat='$d_shmat'
16863 d_shmatprototype='$d_shmatprototype'
16864 d_shmctl='$d_shmctl'
16865 d_shmdt='$d_shmdt'
16866 d_shmget='$d_shmget'
16867 d_sigaction='$d_sigaction'
16868 d_sigprocmask='$d_sigprocmask'
16869 d_sigsetjmp='$d_sigsetjmp'
16870 d_sockatmark='$d_sockatmark'
16871 d_sockatmarkproto='$d_sockatmarkproto'
16872 d_socket='$d_socket'
16873 d_socklen_t='$d_socklen_t'
16874 d_sockpair='$d_sockpair'
16875 d_socks5_init='$d_socks5_init'
16876 d_sqrtl='$d_sqrtl'
16877 d_sresgproto='$d_sresgproto'
16878 d_sresuproto='$d_sresuproto'
16879 d_statblks='$d_statblks'
16880 d_statfs_f_flags='$d_statfs_f_flags'
16881 d_statfs_s='$d_statfs_s'
16882 d_statvfs='$d_statvfs'
16883 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16884 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16885 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16886 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16887 d_stdio_stream_array='$d_stdio_stream_array'
16888 d_stdiobase='$d_stdiobase'
16889 d_stdstdio='$d_stdstdio'
16890 d_strchr='$d_strchr'
16891 d_strcoll='$d_strcoll'
16892 d_strctcpy='$d_strctcpy'
16893 d_strerrm='$d_strerrm'
16894 d_strerror='$d_strerror'
16895 d_strftime='$d_strftime'
16896 d_strtod='$d_strtod'
16897 d_strtol='$d_strtol'
16898 d_strtold='$d_strtold'
16899 d_strtoll='$d_strtoll'
16900 d_strtoq='$d_strtoq'
16901 d_strtoul='$d_strtoul'
16902 d_strtoull='$d_strtoull'
16903 d_strtouq='$d_strtouq'
16904 d_strxfrm='$d_strxfrm'
16905 d_suidsafe='$d_suidsafe'
16906 d_symlink='$d_symlink'
16907 d_syscall='$d_syscall'
16908 d_syscallproto='$d_syscallproto'
16909 d_sysconf='$d_sysconf'
16910 d_sysernlst='$d_sysernlst'
16911 d_syserrlst='$d_syserrlst'
16912 d_system='$d_system'
16913 d_tcgetpgrp='$d_tcgetpgrp'
16914 d_tcsetpgrp='$d_tcsetpgrp'
16915 d_telldir='$d_telldir'
16916 d_telldirproto='$d_telldirproto'
16917 d_time='$d_time'
16918 d_times='$d_times'
16919 d_truncate='$d_truncate'
16920 d_tzname='$d_tzname'
16921 d_u32align='$d_u32align'
16922 d_ualarm='$d_ualarm'
16923 d_umask='$d_umask'
16924 d_uname='$d_uname'
16925 d_union_semun='$d_union_semun'
16926 d_usleep='$d_usleep'
16927 d_usleepproto='$d_usleepproto'
16928 d_ustat='$d_ustat'
16929 d_vendorarch='$d_vendorarch'
16930 d_vendorbin='$d_vendorbin'
16931 d_vendorlib='$d_vendorlib'
16932 d_vfork='$d_vfork'
16933 d_void_closedir='$d_void_closedir'
16934 d_voidsig='$d_voidsig'
16935 d_voidtty='$d_voidtty'
16936 d_volatile='$d_volatile'
16937 d_vprintf='$d_vprintf'
16938 d_wait4='$d_wait4'
16939 d_waitpid='$d_waitpid'
16940 d_wcstombs='$d_wcstombs'
16941 d_wctomb='$d_wctomb'
16942 d_writev='$d_writev'
16943 d_xenix='$d_xenix'
16944 date='$date'
16945 db_hashtype='$db_hashtype'
16946 db_prefixtype='$db_prefixtype'
16947 db_version_major='$db_version_major'
16948 db_version_minor='$db_version_minor'
16949 db_version_patch='$db_version_patch'
16950 defvoidused='$defvoidused'
16951 direntrytype='$direntrytype'
16952 dlext='$dlext'
16953 dlsrc='$dlsrc'
16954 doublesize='$doublesize'
16955 drand01='$drand01'
16956 dynamic_ext='$dynamic_ext'
16957 eagain='$eagain'
16958 ebcdic='$ebcdic'
16959 echo='$echo'
16960 egrep='$egrep'
16961 emacs='$emacs'
16962 eunicefix='$eunicefix'
16963 exe_ext='$exe_ext'
16964 expr='$expr'
16965 extensions='$extensions'
16966 fflushNULL='$fflushNULL'
16967 fflushall='$fflushall'
16968 find='$find'
16969 firstmakefile='$firstmakefile'
16970 flex='$flex'
16971 fpossize='$fpossize'
16972 fpostype='$fpostype'
16973 freetype='$freetype'
16974 from='$from'
16975 full_ar='$full_ar'
16976 full_csh='$full_csh'
16977 full_sed='$full_sed'
16978 gccosandvers='$gccosandvers'
16979 gccversion='$gccversion'
16980 gidformat='$gidformat'
16981 gidsign='$gidsign'
16982 gidsize='$gidsize'
16983 gidtype='$gidtype'
16984 glibpth='$glibpth'
16985 grep='$grep'
16986 groupcat='$groupcat'
16987 groupstype='$groupstype'
16988 gzip='$gzip'
16989 h_fcntl='$h_fcntl'
16990 h_sysfile='$h_sysfile'
16991 hint='$hint'
16992 hostcat='$hostcat'
16993 i16size='$i16size'
16994 i16type='$i16type'
16995 i32size='$i32size'
16996 i32type='$i32type'
16997 i64size='$i64size'
16998 i64type='$i64type'
16999 i8size='$i8size'
17000 i8type='$i8type'
17001 i_arpainet='$i_arpainet'
17002 i_bsdioctl='$i_bsdioctl'
17003 i_db='$i_db'
17004 i_dbm='$i_dbm'
17005 i_dirent='$i_dirent'
17006 i_dld='$i_dld'
17007 i_dlfcn='$i_dlfcn'
17008 i_fcntl='$i_fcntl'
17009 i_float='$i_float'
17010 i_gdbm='$i_gdbm'
17011 i_grp='$i_grp'
17012 i_iconv='$i_iconv'
17013 i_ieeefp='$i_ieeefp'
17014 i_inttypes='$i_inttypes'
17015 i_langinfo='$i_langinfo'
17016 i_libutil='$i_libutil'
17017 i_limits='$i_limits'
17018 i_locale='$i_locale'
17019 i_machcthr='$i_machcthr'
17020 i_malloc='$i_malloc'
17021 i_math='$i_math'
17022 i_memory='$i_memory'
17023 i_mntent='$i_mntent'
17024 i_ndbm='$i_ndbm'
17025 i_netdb='$i_netdb'
17026 i_neterrno='$i_neterrno'
17027 i_netinettcp='$i_netinettcp'
17028 i_niin='$i_niin'
17029 i_poll='$i_poll'
17030 i_prot='$i_prot'
17031 i_pthread='$i_pthread'
17032 i_pwd='$i_pwd'
17033 i_rpcsvcdbm='$i_rpcsvcdbm'
17034 i_sfio='$i_sfio'
17035 i_sgtty='$i_sgtty'
17036 i_shadow='$i_shadow'
17037 i_socks='$i_socks'
17038 i_stdarg='$i_stdarg'
17039 i_stddef='$i_stddef'
17040 i_stdlib='$i_stdlib'
17041 i_string='$i_string'
17042 i_sunmath='$i_sunmath'
17043 i_sysaccess='$i_sysaccess'
17044 i_sysdir='$i_sysdir'
17045 i_sysfile='$i_sysfile'
17046 i_sysfilio='$i_sysfilio'
17047 i_sysin='$i_sysin'
17048 i_sysioctl='$i_sysioctl'
17049 i_syslog='$i_syslog'
17050 i_sysmman='$i_sysmman'
17051 i_sysmode='$i_sysmode'
17052 i_sysmount='$i_sysmount'
17053 i_sysndir='$i_sysndir'
17054 i_sysparam='$i_sysparam'
17055 i_sysresrc='$i_sysresrc'
17056 i_syssecrt='$i_syssecrt'
17057 i_sysselct='$i_sysselct'
17058 i_syssockio='$i_syssockio'
17059 i_sysstat='$i_sysstat'
17060 i_sysstatfs='$i_sysstatfs'
17061 i_sysstatvfs='$i_sysstatvfs'
17062 i_systime='$i_systime'
17063 i_systimek='$i_systimek'
17064 i_systimes='$i_systimes'
17065 i_systypes='$i_systypes'
17066 i_sysuio='$i_sysuio'
17067 i_sysun='$i_sysun'
17068 i_sysutsname='$i_sysutsname'
17069 i_sysvfs='$i_sysvfs'
17070 i_syswait='$i_syswait'
17071 i_termio='$i_termio'
17072 i_termios='$i_termios'
17073 i_time='$i_time'
17074 i_unistd='$i_unistd'
17075 i_ustat='$i_ustat'
17076 i_utime='$i_utime'
17077 i_values='$i_values'
17078 i_varargs='$i_varargs'
17079 i_varhdr='$i_varhdr'
17080 i_vfork='$i_vfork'
17081 ignore_versioned_solibs='$ignore_versioned_solibs'
17082 inc_version_list='$inc_version_list'
17083 inc_version_list_init='$inc_version_list_init'
17084 incpath='$incpath'
17085 inews='$inews'
17086 installarchlib='$installarchlib'
17087 installbin='$installbin'
17088 installman1dir='$installman1dir'
17089 installman3dir='$installman3dir'
17090 installprefix='$installprefix'
17091 installprefixexp='$installprefixexp'
17092 installprivlib='$installprivlib'
17093 installscript='$installscript'
17094 installsitearch='$installsitearch'
17095 installsitebin='$installsitebin'
17096 installsitelib='$installsitelib'
17097 installstyle='$installstyle'
17098 installusrbinperl='$installusrbinperl'
17099 installvendorarch='$installvendorarch'
17100 installvendorbin='$installvendorbin'
17101 installvendorlib='$installvendorlib'
17102 intsize='$intsize'
17103 issymlink='$issymlink'
17104 ivdformat='$ivdformat'
17105 ivsize='$ivsize'
17106 ivtype='$ivtype'
17107 known_extensions='$known_extensions'
17108 ksh='$ksh'
17109 ld='$ld'
17110 lddlflags='$lddlflags'
17111 ldflags='$ldflags'
17112 ldflags_uselargefiles='$ldflags_uselargefiles'
17113 ldlibpthname='$ldlibpthname'
17114 less='$less'
17115 lib_ext='$lib_ext'
17116 libc='$libc'
17117 libperl='$libperl'
17118 libpth='$libpth'
17119 libs='$libs'
17120 libsdirs='$libsdirs'
17121 libsfiles='$libsfiles'
17122 libsfound='$libsfound'
17123 libspath='$libspath'
17124 libswanted='$libswanted'
17125 libswanted_uselargefiles='$libswanted_uselargefiles'
17126 line='$line'
17127 lint='$lint'
17128 lkflags='$lkflags'
17129 ln='$ln'
17130 lns='$lns'
17131 locincpth='$locincpth'
17132 loclibpth='$loclibpth'
17133 longdblsize='$longdblsize'
17134 longlongsize='$longlongsize'
17135 longsize='$longsize'
17136 lp='$lp'
17137 lpr='$lpr'
17138 ls='$ls'
17139 lseeksize='$lseeksize'
17140 lseektype='$lseektype'
17141 mail='$mail'
17142 mailx='$mailx'
17143 make='$make'
17144 make_set_make='$make_set_make'
17145 mallocobj='$mallocobj'
17146 mallocsrc='$mallocsrc'
17147 malloctype='$malloctype'
17148 man1dir='$man1dir'
17149 man1direxp='$man1direxp'
17150 man1ext='$man1ext'
17151 man3dir='$man3dir'
17152 man3direxp='$man3direxp'
17153 man3ext='$man3ext'
17154 mips_type='$mips_type'
17155 mkdir='$mkdir'
17156 mmaptype='$mmaptype'
17157 modetype='$modetype'
17158 more='$more'
17159 multiarch='$multiarch'
17160 mv='$mv'
17161 myarchname='$myarchname'
17162 mydomain='$mydomain'
17163 myhostname='$myhostname'
17164 myuname='$myuname'
17165 n='$n'
17166 need_va_copy='$need_va_copy'
17167 netdb_hlen_type='$netdb_hlen_type'
17168 netdb_host_type='$netdb_host_type'
17169 netdb_name_type='$netdb_name_type'
17170 netdb_net_type='$netdb_net_type'
17171 nm='$nm'
17172 nm_opt='$nm_opt'
17173 nm_so_opt='$nm_so_opt'
17174 nonxs_ext='$nonxs_ext'
17175 nroff='$nroff'
17176 nvEUformat='$nvEUformat'
17177 nvFUformat='$nvFUformat'
17178 nvGUformat='$nvGUformat'
17179 nveformat='$nveformat'
17180 nvfformat='$nvfformat'
17181 nvgformat='$nvgformat'
17182 nvsize='$nvsize'
17183 nvtype='$nvtype'
17184 o_nonblock='$o_nonblock'
17185 obj_ext='$obj_ext'
17186 old_pthread_create_joinable='$old_pthread_create_joinable'
17187 optimize='$optimize'
17188 orderlib='$orderlib'
17189 osname='$osname'
17190 osvers='$osvers'
17191 otherlibdirs='$otherlibdirs'
17192 package='$package'
17193 pager='$pager'
17194 passcat='$passcat'
17195 patchlevel='$patchlevel'
17196 path_sep='$path_sep'
17197 perl5='$perl5'
17198 perl='$perl'
17199 perl_patchlevel='$perl_patchlevel'
17200 perladmin='$perladmin'
17201 perllibs='$perllibs'
17202 perlpath='$perlpath'
17203 pg='$pg'
17204 phostname='$phostname'
17205 pidtype='$pidtype'
17206 plibpth='$plibpth'
17207 pm_apiversion='$pm_apiversion'
17208 pmake='$pmake'
17209 pr='$pr'
17210 prefix='$prefix'
17211 prefixexp='$prefixexp'
17212 privlib='$privlib'
17213 privlibexp='$privlibexp'
17214 prototype='$prototype'
17215 ptrsize='$ptrsize'
17216 quadkind='$quadkind'
17217 quadtype='$quadtype'
17218 randbits='$randbits'
17219 randfunc='$randfunc'
17220 randseedtype='$randseedtype'
17221 ranlib='$ranlib'
17222 rd_nodata='$rd_nodata'
17223 revision='$revision'
17224 rm='$rm'
17225 rmail='$rmail'
17226 run='$run'
17227 runnm='$runnm'
17228 sPRIEUldbl='$sPRIEUldbl'
17229 sPRIFUldbl='$sPRIFUldbl'
17230 sPRIGUldbl='$sPRIGUldbl'
17231 sPRIXU64='$sPRIXU64'
17232 sPRId64='$sPRId64'
17233 sPRIeldbl='$sPRIeldbl'
17234 sPRIfldbl='$sPRIfldbl'
17235 sPRIgldbl='$sPRIgldbl'
17236 sPRIi64='$sPRIi64'
17237 sPRIo64='$sPRIo64'
17238 sPRIu64='$sPRIu64'
17239 sPRIx64='$sPRIx64'
17240 sSCNfldbl='$sSCNfldbl'
17241 sched_yield='$sched_yield'
17242 scriptdir='$scriptdir'
17243 scriptdirexp='$scriptdirexp'
17244 sed='$sed'
17245 seedfunc='$seedfunc'
17246 selectminbits='$selectminbits'
17247 selecttype='$selecttype'
17248 sendmail='$sendmail'
17249 sh='$sh'
17250 shar='$shar'
17251 sharpbang='$sharpbang'
17252 shmattype='$shmattype'
17253 shortsize='$shortsize'
17254 shrpenv='$shrpenv'
17255 shsharp='$shsharp'
17256 sig_count='$sig_count'
17257 sig_name='$sig_name'
17258 sig_name_init='$sig_name_init'
17259 sig_num='$sig_num'
17260 sig_num_init='$sig_num_init'
17261 sig_size='$sig_size'
17262 signal_t='$signal_t'
17263 sitearch='$sitearch'
17264 sitearchexp='$sitearchexp'
17265 sitebin='$sitebin'
17266 sitebinexp='$sitebinexp'
17267 sitelib='$sitelib'
17268 sitelib_stem='$sitelib_stem'
17269 sitelibexp='$sitelibexp'
17270 siteprefix='$siteprefix'
17271 siteprefixexp='$siteprefixexp'
17272 sizesize='$sizesize'
17273 sizetype='$sizetype'
17274 sleep='$sleep'
17275 smail='$smail'
17276 so='$so'
17277 sockethdr='$sockethdr'
17278 socketlib='$socketlib'
17279 socksizetype='$socksizetype'
17280 sort='$sort'
17281 spackage='$spackage'
17282 spitshell='$spitshell'
17283 src='$src'
17284 ssizetype='$ssizetype'
17285 startperl='$startperl'
17286 startsh='$startsh'
17287 static_ext='$static_ext'
17288 stdchar='$stdchar'
17289 stdio_base='$stdio_base'
17290 stdio_bufsiz='$stdio_bufsiz'
17291 stdio_cnt='$stdio_cnt'
17292 stdio_filbuf='$stdio_filbuf'
17293 stdio_ptr='$stdio_ptr'
17294 stdio_stream_array='$stdio_stream_array'
17295 strings='$strings'
17296 submit='$submit'
17297 subversion='$subversion'
17298 sysman='$sysman'
17299 tail='$tail'
17300 tar='$tar'
17301 targetarch='$targetarch'
17302 tbl='$tbl'
17303 tee='$tee'
17304 test='$test'
17305 timeincl='$timeincl'
17306 timetype='$timetype'
17307 to='$to'
17308 touch='$touch'
17309 tr='$tr'
17310 trnl='$trnl'
17311 troff='$troff'
17312 u16size='$u16size'
17313 u16type='$u16type'
17314 u32size='$u32size'
17315 u32type='$u32type'
17316 u64size='$u64size'
17317 u64type='$u64type'
17318 u8size='$u8size'
17319 u8type='$u8type'
17320 uidformat='$uidformat'
17321 uidsign='$uidsign'
17322 uidsize='$uidsize'
17323 uidtype='$uidtype'
17324 uname='$uname'
17325 uniq='$uniq'
17326 uquadtype='$uquadtype'
17327 use5005threads='$use5005threads'
17328 use64bitall='$use64bitall'
17329 use64bitint='$use64bitint'
17330 usecrosscompile='$usecrosscompile'
17331 usedl='$usedl'
17332 useithreads='$useithreads'
17333 uselargefiles='$uselargefiles'
17334 uselongdouble='$uselongdouble'
17335 usemorebits='$usemorebits'
17336 usemultiplicity='$usemultiplicity'
17337 usemymalloc='$usemymalloc'
17338 usenm='$usenm'
17339 useopcode='$useopcode'
17340 useperlio='$useperlio'
17341 useposix='$useposix'
17342 usereentrant='$usereentrant'
17343 usesfio='$usesfio'
17344 useshrplib='$useshrplib'
17345 usesocks='$usesocks'
17346 usethreads='$usethreads'
17347 usevendorprefix='$usevendorprefix'
17348 usevfork='$usevfork'
17349 usrinc='$usrinc'
17350 uuname='$uuname'
17351 uvXUformat='$uvXUformat'
17352 uvoformat='$uvoformat'
17353 uvsize='$uvsize'
17354 uvtype='$uvtype'
17355 uvuformat='$uvuformat'
17356 uvxformat='$uvxformat'
17357 vendorarch='$vendorarch'
17358 vendorarchexp='$vendorarchexp'
17359 vendorbin='$vendorbin'
17360 vendorbinexp='$vendorbinexp'
17361 vendorlib='$vendorlib'
17362 vendorlib_stem='$vendorlib_stem'
17363 vendorlibexp='$vendorlibexp'
17364 vendorprefix='$vendorprefix'
17365 vendorprefixexp='$vendorprefixexp'
17366 version='$version'
17367 versiononly='$versiononly'
17368 vi='$vi'
17369 voidflags='$voidflags'
17370 xlibpth='$xlibpth'
17371 xs_apiversion='$xs_apiversion'
17372 yacc='$yacc'
17373 yaccflags='$yaccflags'
17374 zcat='$zcat'
17375 zip='$zip'
17376 EOT
17377
17378 : Add in command line options if available
17379 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17380
17381 : add special variables
17382 $test -f $src/patchlevel.h && \
17383 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17384 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17385 echo "PERL_CONFIG_SH=true" >>config.sh
17386
17387 : propagate old symbols
17388 if $test -f UU/config.sh; then
17389         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17390         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17391         $sort | $uniq -u >UU/oldsyms
17392         set X `cat UU/oldsyms`
17393         shift
17394         case $# in
17395         0) ;;
17396         *)
17397                 cat <<EOM
17398 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17399 EOM
17400                 echo "# Variables propagated from previous config.sh file." >>config.sh
17401                 for sym in `cat UU/oldsyms`; do
17402                         echo "    Propagating $hint variable "'$'"$sym..."
17403                         eval 'tmp="$'"${sym}"'"'
17404                         echo "$tmp" | \
17405                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17406                 done
17407                 ;;
17408         esac
17409 fi
17410
17411 : Finish up by extracting the .SH files
17412 case "$alldone" in
17413 exit)
17414         $rm -rf UU
17415         echo "Extraction done."
17416         exit 0
17417         ;;
17418 cont)
17419         ;;
17420 '')
17421         dflt=''
17422         nostick=true
17423         $cat <<EOM
17424
17425 If you'd like to make any changes to the config.sh file before I begin
17426 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17427
17428 EOM
17429         rp="Press return or use a shell escape to edit config.sh:"
17430         . UU/myread
17431         nostick=''
17432         case "$ans" in
17433         '') ;;
17434         *) : in case they cannot read
17435                 sh 1>&4 -c "$ans";;
17436         esac
17437         ;;
17438 esac
17439
17440 : if this fails, just run all the .SH files by hand
17441 . ./config.sh
17442
17443 echo " "
17444 exec 1>&4
17445 pwd=`pwd`
17446 . ./UU/extract
17447 cd $pwd
17448
17449 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17450         dflt=y
17451         case "$silent" in
17452         true) ;;
17453         *)
17454                 $cat <<EOM
17455
17456 Now you need to generate make dependencies by running "$make depend".
17457 You might prefer to run it in background: "$make depend > makedepend.out &"
17458 It can take a while, so you might not want to run it right now.
17459
17460 EOM
17461                 ;;
17462         esac
17463         rp="Run $make depend now?"
17464         . UU/myread
17465         case "$ans" in
17466         y*)
17467                 $make depend && echo "Now you must run '$make'."
17468                 ;;
17469         *)
17470                 echo "You must run '$make depend' then '$make'."
17471                 ;;
17472         esac
17473 elif test -f [Mm]akefile; then
17474         echo " "
17475         echo "Now you must run a $make."
17476 else
17477         echo "Configure done."
17478 fi
17479
17480 if $test -f Policy.sh; then
17481     $cat <<EOM
17482
17483 If you compile $package on a different machine or from a different object
17484 directory, copy the Policy.sh file from this object directory to the
17485 new one before you run Configure -- this will help you with most of
17486 the policy defaults.
17487
17488 EOM
17489 fi
17490 if $test -f config.msg; then
17491     echo "Hmm.  I also noted the following information while running:"
17492     echo " "
17493     $cat config.msg >&4
17494     $rm -f config.msg
17495 fi
17496 $rm -f kit*isdone ark*isdone
17497 $rm -rf UU
17498
17499 : End of Configure
17500