OS/2 docs
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Jun 28 18:02:13 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 int main() {
9868 #if defined(F_SETLK) && defined(F_SETLKW)
9869      struct flock flock;
9870      int retval, fd;
9871      fd = open("try.c", O_RDONLY);
9872      flock.l_type = F_RDLCK;
9873      flock.l_whence = SEEK_SET;
9874      flock.l_start = flock.l_len = 0;
9875      retval = fcntl(fd, F_SETLK, &flock);
9876      close(fd);
9877      (retval < 0 ? exit(2) : exit(0));
9878 #else
9879      exit(2);
9880 #endif
9881 }
9882 EOCP
9883 echo "Checking if fcntl-based file locking works... "
9884 case "$d_fcntl" in
9885 "$define")
9886         set try
9887         if eval $compile_ok; then
9888                 if $run ./try; then
9889                         echo "Yes, it seems to work."
9890                         val="$define"
9891                 else
9892                         echo "Nope, it didn't work."
9893                         val="$undef"
9894                 fi
9895         else
9896                 echo "I'm unable to compile the test program, so I'll assume not."
9897                 val="$undef"
9898         fi
9899         ;;
9900 *) val="$undef";
9901         echo "Nope, since you don't even have fcntl()."
9902         ;;
9903 esac
9904 set d_fcntl_can_lock
9905 eval $setvar
9906 $rm -f try*
9907
9908
9909 : see if sys/select.h has to be included
9910 set sys/select.h i_sysselct
9911 eval $inhdr
9912
9913 : see if we should include time.h, sys/time.h, or both
9914 echo " "
9915 if test "X$timeincl" = X; then
9916         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9917         $echo $n "I'm now running the test program...$c"
9918         $cat >try.c <<'EOCP'
9919 #include <sys/types.h>
9920 #ifdef I_TIME
9921 #include <time.h>
9922 #endif
9923 #ifdef I_SYSTIME
9924 #ifdef SYSTIMEKERNEL
9925 #define KERNEL
9926 #endif
9927 #include <sys/time.h>
9928 #endif
9929 #ifdef I_SYSSELECT
9930 #include <sys/select.h>
9931 #endif
9932 int main()
9933 {
9934         struct tm foo;
9935 #ifdef S_TIMEVAL
9936         struct timeval bar;
9937 #endif
9938 #ifdef S_TIMEZONE
9939         struct timezone tzp;
9940 #endif
9941         if (foo.tm_sec == foo.tm_sec)
9942                 exit(0);
9943 #ifdef S_TIMEVAL
9944         if (bar.tv_sec == bar.tv_sec)
9945                 exit(0);
9946 #endif
9947         exit(1);
9948 }
9949 EOCP
9950         flags=''
9951         for s_timezone in '-DS_TIMEZONE' ''; do
9952         sysselect=''
9953         for s_timeval in '-DS_TIMEVAL' ''; do
9954         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9955         for i_time in '' '-DI_TIME'; do
9956         for i_systime in '-DI_SYSTIME' ''; do
9957                 case "$flags" in
9958                 '') $echo $n ".$c"
9959                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9960                         if eval $compile; then
9961                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9962                                 shift
9963                                 flags="$*"
9964                                 echo " "
9965                                 $echo $n "Succeeded with $flags$c"
9966                         fi
9967                         ;;
9968                 esac
9969         done
9970         done
9971         done
9972         done
9973         done
9974         timeincl=''
9975         echo " "
9976         case "$flags" in
9977         *SYSTIMEKERNEL*) i_systimek="$define"
9978                 timeincl=`./findhdr sys/time.h`
9979                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9980         *) i_systimek="$undef";;
9981         esac
9982         case "$flags" in
9983         *I_TIME*) i_time="$define"
9984                 timeincl=`./findhdr time.h`" $timeincl"
9985                 echo "We'll include <time.h>." >&4;;
9986         *) i_time="$undef";;
9987         esac
9988         case "$flags" in
9989         *I_SYSTIME*) i_systime="$define"
9990                 timeincl=`./findhdr sys/time.h`" $timeincl"
9991                 echo "We'll include <sys/time.h>." >&4;;
9992         *) i_systime="$undef";;
9993         esac
9994         $rm -f try.c try
9995 fi
9996
9997 : check for fd_set items
9998 $cat <<EOM
9999
10000 Checking to see how well your C compiler handles fd_set and friends ...
10001 EOM
10002 $cat >try.c <<EOCP
10003 #$i_systime I_SYS_TIME
10004 #$i_sysselct I_SYS_SELECT
10005 #$d_socket HAS_SOCKET
10006 #include <sys/types.h>
10007 #ifdef HAS_SOCKET
10008 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10009 #endif
10010 #ifdef I_SYS_TIME
10011 #include <sys/time.h>
10012 #endif
10013 #ifdef I_SYS_SELECT
10014 #include <sys/select.h>
10015 #endif
10016 int main() {
10017         fd_set fds;
10018
10019 #ifdef TRYBITS
10020         if(fds.fds_bits);
10021 #endif
10022
10023 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10024         exit(0);
10025 #else
10026         exit(1);
10027 #endif
10028 }
10029 EOCP
10030 set try -DTRYBITS
10031 if eval $compile; then
10032         d_fds_bits="$define"
10033         d_fd_set="$define"
10034         echo "Well, your system knows about the normal fd_set typedef..." >&4
10035         if $run ./try; then
10036                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10037                 d_fd_macros="$define"
10038         else
10039                 $cat >&4 <<'EOM'
10040 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10041 EOM
10042                 d_fd_macros="$undef"
10043         fi
10044 else
10045         $cat <<'EOM'
10046 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10047 EOM
10048         set try
10049         if eval $compile; then
10050                 d_fds_bits="$undef"
10051                 d_fd_set="$define"
10052                 echo "Well, your system has some sort of fd_set available..." >&4
10053                 if $run ./try; then
10054                         echo "and you have the normal fd_set macros." >&4
10055                         d_fd_macros="$define"
10056                 else
10057                         $cat <<'EOM'
10058 but not the normal fd_set macros!  Gross!  More work for me...
10059 EOM
10060                         d_fd_macros="$undef"
10061                 fi
10062         else
10063         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10064                 d_fd_set="$undef"
10065                 d_fds_bits="$undef"
10066                 d_fd_macros="$undef"
10067         fi
10068 fi
10069 $rm -f try try.*
10070
10071 : see if fgetpos exists
10072 set fgetpos d_fgetpos
10073 eval $inlibc
10074
10075 : see if flock exists
10076 set flock d_flock
10077 eval $inlibc
10078
10079 : see if this is a sys/file.h system
10080 val=''
10081 set sys/file.h val
10082 eval $inhdr
10083
10084 : do we need to include sys/file.h ?
10085 case "$val" in
10086 "$define")
10087         echo " "
10088         if $h_sysfile; then
10089                 val="$define"
10090                 echo "We'll be including <sys/file.h>." >&4
10091         else
10092                 val="$undef"
10093                 echo "We won't be including <sys/file.h>." >&4
10094         fi
10095         ;;
10096 *)
10097         h_sysfile=false
10098         ;;
10099 esac
10100 set i_sysfile
10101 eval $setvar
10102
10103 : see if prototype for flock is available
10104 echo " "
10105 set d_flockproto flock $i_sysfile sys/file.h
10106 eval $hasproto
10107
10108 : see if fork exists
10109 set fork d_fork
10110 eval $inlibc
10111
10112 : see if pathconf exists
10113 set pathconf d_pathconf
10114 eval $inlibc
10115
10116 : see if fpathconf exists
10117 set fpathconf d_fpathconf
10118 eval $inlibc
10119
10120
10121 : check for fpos64_t
10122 echo " "
10123 echo "Checking to see if you have fpos64_t..." >&4
10124 $cat >try.c <<EOCP
10125 #include <stdio.h>
10126 int main() { fpos64_t x = 7; }
10127 EOCP
10128 set try
10129 if eval $compile; then
10130         val="$define"
10131         echo "You have fpos64_t."
10132 else
10133         val="$undef"
10134         echo "You do not have fpos64_t."
10135         case "$fpossize" in
10136         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10137         esac
10138 fi
10139 $rm -f try.* try
10140 set d_fpos64_t
10141 eval $setvar
10142
10143 : see if frexpl exists
10144 set frexpl d_frexpl
10145 eval $inlibc
10146
10147 : see if this is a sys/param system
10148 set sys/param.h i_sysparam
10149 eval $inhdr
10150
10151 : see if this is a sys/mount.h system
10152 set sys/mount.h i_sysmount
10153 eval $inhdr
10154
10155
10156 echo " "
10157 echo "Checking to see if your system supports struct fs_data..." >&4
10158 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10159 eval $hasstruct
10160 case "$d_fs_data_s" in
10161 "$define")      echo "Yes, it does."   ;;
10162 *)              echo "No, it doesn't." ;;
10163 esac
10164
10165 : see if fseeko exists
10166 set fseeko d_fseeko
10167 eval $inlibc
10168 case "$longsize" in
10169 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10170 esac
10171
10172 : see if fsetpos exists
10173 set fsetpos d_fsetpos
10174 eval $inlibc
10175
10176
10177 : see if fstatfs exists
10178 set fstatfs d_fstatfs
10179 eval $inlibc
10180
10181
10182 : see if statvfs exists
10183 set statvfs d_statvfs
10184 eval $inlibc
10185
10186 : see if fstatvfs exists
10187 set fstatvfs d_fstatvfs
10188 eval $inlibc
10189
10190
10191 : see if fsync exists
10192 set fsync d_fsync
10193 eval $inlibc
10194
10195 : see if ftello exists
10196 set ftello d_ftello
10197 eval $inlibc
10198 case "$longsize" in
10199 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10200 esac
10201
10202 : see if getcwd exists
10203 set getcwd d_getcwd
10204 eval $inlibc
10205
10206 : see if getespwnam exists
10207 set getespwnam d_getespwnam
10208 eval $inlibc
10209
10210
10211 : see if getfsstat exists
10212 set getfsstat d_getfsstat
10213 eval $inlibc
10214
10215 : see if getgrent exists
10216 set getgrent d_getgrent
10217 eval $inlibc
10218
10219 : see if gethostbyaddr exists
10220 set gethostbyaddr d_gethbyaddr
10221 eval $inlibc
10222
10223 : see if gethostbyname exists
10224 set gethostbyname d_gethbyname
10225 eval $inlibc
10226
10227 : see if gethostent exists
10228 set gethostent d_gethent
10229 eval $inlibc
10230
10231 : see how we will look up host name
10232 echo " "
10233 call=''
10234 if set gethostname val -f d_gethname; eval $csym; $val; then
10235         echo 'gethostname() found.' >&4
10236         d_gethname="$define"
10237         call=gethostname
10238 fi
10239 if set uname val -f d_uname; eval $csym; $val; then
10240         if ./xenix; then
10241                 $cat <<'EOM'
10242 uname() was found, but you're running xenix, and older versions of xenix
10243 have a broken uname(). If you don't really know whether your xenix is old
10244 enough to have a broken system call, use the default answer.
10245
10246 EOM
10247                 dflt=y
10248                 case "$d_uname" in
10249                 "$define") dflt=n;;
10250                 esac
10251                 rp='Is your uname() broken?'
10252                 . ./myread
10253                 case "$ans" in
10254                 n*) d_uname="$define"; call=uname;;
10255                 esac
10256         else
10257                 echo 'uname() found.' >&4
10258                 d_uname="$define"
10259                 case "$call" in
10260                 '') call=uname ;;
10261                 esac
10262         fi
10263 fi
10264 case "$d_gethname" in
10265 '') d_gethname="$undef";;
10266 esac
10267 case "$d_uname" in
10268 '') d_uname="$undef";;
10269 esac
10270 case "$d_uname$d_gethname" in
10271 *define*)
10272         dflt=n
10273         cat <<EOM
10274  
10275 Every now and then someone has a $call() that lies about the hostname
10276 but can't be fixed for political or economic reasons.  If you wish, I can
10277 pretend $call() isn't there and maybe compute hostname at run-time
10278 thanks to the '$phostname' command.
10279
10280 EOM
10281         rp="Shall I ignore $call() from now on?"
10282         . ./myread
10283         case "$ans" in
10284         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10285         esac;;
10286 esac
10287 case "$phostname" in
10288 '') aphostname='';;
10289 *) case "$aphostname" in
10290         /*) ;;
10291         *) set X $phostname
10292                 shift
10293                 file=$1
10294                 shift
10295                 file=`./loc $file $file $pth`
10296                 aphostname=`echo $file $*`
10297                 ;;
10298         esac
10299         ;;
10300 esac
10301 case "$d_uname$d_gethname" in
10302 *define*) ;;
10303 *)
10304         case "$phostname" in
10305         '')
10306                 echo "There will be no way for $package to get your hostname." >&4;;
10307         *)
10308         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10309                 ;;
10310         esac;;
10311 esac
10312 case "$d_phostname" in
10313 '') d_phostname="$undef";;
10314 esac
10315
10316 : see if this is a netdb.h system
10317 set netdb.h i_netdb
10318 eval $inhdr
10319
10320 : see if prototypes for various gethostxxx netdb.h functions are available
10321 echo " "
10322 set d_gethostprotos gethostent $i_netdb netdb.h
10323 eval $hasproto
10324
10325 : see if getitimer exists
10326 set getitimer d_getitimer
10327 eval $inlibc
10328
10329 : see if getlogin exists
10330 set getlogin d_getlogin
10331 eval $inlibc
10332
10333 : see if getmnt exists
10334 set getmnt d_getmnt
10335 eval $inlibc
10336
10337 : see if getmntent exists
10338 set getmntent d_getmntent
10339 eval $inlibc
10340
10341 : see if getnetbyaddr exists
10342 set getnetbyaddr d_getnbyaddr
10343 eval $inlibc
10344
10345 : see if getnetbyname exists
10346 set getnetbyname d_getnbyname
10347 eval $inlibc
10348
10349 : see if getnetent exists
10350 set getnetent d_getnent
10351 eval $inlibc
10352
10353 : see if prototypes for various getnetxxx netdb.h functions are available
10354 echo " "
10355 set d_getnetprotos getnetent $i_netdb netdb.h
10356 eval $hasproto
10357
10358 : see if getpagesize exists
10359 set getpagesize d_getpagsz
10360 eval $inlibc
10361
10362
10363 : see if getprotobyname exists
10364 set getprotobyname d_getpbyname
10365 eval $inlibc
10366
10367 : see if getprotobynumber exists
10368 set getprotobynumber d_getpbynumber
10369 eval $inlibc
10370
10371 : see if getprotoent exists
10372 set getprotoent d_getpent
10373 eval $inlibc
10374
10375 : see if getpgid exists
10376 set getpgid d_getpgid
10377 eval $inlibc
10378
10379 : see if getpgrp2 exists
10380 set getpgrp2 d_getpgrp2
10381 eval $inlibc
10382
10383 : see if getppid exists
10384 set getppid d_getppid
10385 eval $inlibc
10386
10387 : see if getpriority exists
10388 set getpriority d_getprior
10389 eval $inlibc
10390
10391 : see if prototypes for various getprotoxxx netdb.h functions are available
10392 echo " "
10393 set d_getprotoprotos getprotoent $i_netdb netdb.h
10394 eval $hasproto
10395
10396 : see if getprpwnam exists
10397 set getprpwnam d_getprpwnam
10398 eval $inlibc
10399
10400 : see if getpwent exists
10401 set getpwent d_getpwent
10402 eval $inlibc
10403
10404
10405 : see if getservbyname exists
10406 set getservbyname d_getsbyname
10407 eval $inlibc
10408
10409 : see if getservbyport exists
10410 set getservbyport d_getsbyport
10411 eval $inlibc
10412
10413 : see if getservent exists
10414 set getservent d_getsent
10415 eval $inlibc
10416
10417 : see if prototypes for various getservxxx netdb.h functions are available
10418 echo " "
10419 set d_getservprotos getservent $i_netdb netdb.h
10420 eval $hasproto
10421
10422 : see if getspnam exists
10423 set getspnam d_getspnam
10424 eval $inlibc
10425
10426 : see if gettimeofday or ftime exists
10427 set gettimeofday d_gettimeod
10428 eval $inlibc
10429 case "$d_gettimeod" in
10430 "$undef")
10431         set ftime d_ftime 
10432         eval $inlibc
10433         ;;
10434 *)
10435         val="$undef"; set d_ftime; eval $setvar
10436         ;;
10437 esac
10438 case "$d_gettimeod$d_ftime" in
10439 "$undef$undef")
10440         echo " "
10441         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10442         ;;
10443 esac
10444
10445 : see if this is an grp system
10446 set grp.h i_grp
10447 eval $inhdr
10448
10449 case "$i_grp" in
10450 $define)
10451         xxx=`./findhdr grp.h`
10452         $cppstdin $cppflags $cppminus < $xxx >$$.h
10453
10454         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10455                 val="$define"
10456         else
10457                 val="$undef"
10458         fi
10459         set d_grpasswd
10460         eval $setvar
10461
10462         $rm -f $$.h
10463         ;;
10464 *)
10465         val="$undef";
10466         set d_grpasswd; eval $setvar
10467         ;;
10468 esac
10469
10470 : see if hasmntopt exists
10471 set hasmntopt d_hasmntopt
10472 eval $inlibc
10473
10474 : see if this is a netinet/in.h or sys/in.h system
10475 set netinet/in.h i_niin sys/in.h i_sysin
10476 eval $inhdr
10477
10478 : see if arpa/inet.h has to be included
10479 set arpa/inet.h i_arpainet
10480 eval $inhdr
10481
10482 : see if htonl --and friends-- exists
10483 val=''
10484 set htonl val
10485 eval $inlibc
10486
10487 : Maybe they are macros.
10488 case "$val" in
10489 $undef)
10490         $cat >htonl.c <<EOM
10491 #include <stdio.h>
10492 #include <sys/types.h>
10493 #$i_niin I_NETINET_IN
10494 #$i_sysin I_SYS_IN
10495 #$i_arpainet I_ARPA_INET
10496 #ifdef I_NETINET_IN
10497 #include <netinet/in.h>
10498 #endif
10499 #ifdef I_SYS_IN
10500 #include <sys/in.h>
10501 #endif
10502 #ifdef I_ARPA_INET
10503 #include <arpa/inet.h>
10504 #endif
10505 #ifdef htonl
10506 printf("Defined as a macro.");
10507 #endif
10508 EOM
10509         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10510         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10511                 val="$define"
10512                 echo "But it seems to be defined as a macro." >&4
10513         fi
10514         $rm -f htonl.?
10515         ;;
10516 esac
10517 set d_htonl
10518 eval $setvar
10519
10520 : see if iconv exists
10521 set iconv d_iconv
10522 eval $inlibc
10523
10524 : index or strchr
10525 echo " "
10526 if set index val -f; eval $csym; $val; then
10527         if set strchr val -f d_strchr; eval $csym; $val; then
10528                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10529                         val="$define"
10530                         vali="$undef"
10531                         echo "strchr() found." >&4
10532                 else
10533                         val="$undef"
10534                         vali="$define"
10535                         echo "index() found." >&4
10536                 fi
10537         else
10538                 val="$undef"
10539                 vali="$define"
10540                 echo "index() found." >&4
10541         fi
10542 else
10543         if set strchr val -f d_strchr; eval $csym; $val; then
10544                 val="$define"
10545                 vali="$undef"
10546                 echo "strchr() found." >&4
10547         else
10548                 echo "No index() or strchr() found!" >&4
10549                 val="$undef"
10550                 vali="$undef"
10551         fi
10552 fi
10553 set d_strchr; eval $setvar
10554 val="$vali"
10555 set d_index; eval $setvar
10556
10557 : check whether inet_aton exists
10558 set inet_aton d_inetaton
10559 eval $inlibc
10560
10561 : Look for isascii
10562 echo " "
10563 $cat >isascii.c <<'EOCP'
10564 #include <stdio.h>
10565 #include <ctype.h>
10566 int main() {
10567         int c = 'A';
10568         if (isascii(c))
10569                 exit(0);
10570         else
10571                 exit(1);
10572 }
10573 EOCP
10574 set isascii
10575 if eval $compile; then
10576         echo "isascii() found." >&4
10577         val="$define"
10578 else
10579         echo "isascii() NOT found." >&4
10580         val="$undef"
10581 fi
10582 set d_isascii
10583 eval $setvar
10584 $rm -f isascii*
10585
10586 : see if isnan exists
10587 set isnan d_isnan
10588 eval $inlibc
10589
10590 : see if isnanl exists
10591 set isnanl d_isnanl
10592 eval $inlibc
10593
10594 : see if killpg exists
10595 set killpg d_killpg
10596 eval $inlibc
10597
10598 : see if lchown exists
10599 echo " "
10600 $cat > try.c <<'EOCP'
10601 /* System header to define __stub macros and hopefully few prototypes,
10602     which can conflict with char lchown(); below.  */
10603 #include <assert.h>
10604 /* Override any gcc2 internal prototype to avoid an error.  */
10605 /* We use char because int might match the return type of a gcc2
10606    builtin and then its argument prototype would still apply.  */
10607 char lchown();
10608 int main() {
10609     /*  The GNU C library defines this for functions which it implements
10610         to always fail with ENOSYS.  Some functions are actually named
10611         something starting with __ and the normal name is an alias.  */
10612 #if defined (__stub_lchown) || defined (__stub___lchown)
10613 choke me
10614 #else
10615 lchown();
10616 #endif
10617 ; return 0; }
10618 EOCP
10619 set try
10620 if eval $compile; then
10621     $echo "lchown() found." >&4
10622     val="$define"
10623 else
10624     $echo "lchown() NOT found." >&4
10625     val="$undef"
10626 fi
10627 set d_lchown
10628 eval $setvar
10629
10630 : See if number of significant digits in a double precision number is known
10631 echo " "
10632 $cat >ldbl_dig.c <<EOM
10633 #$i_limits I_LIMITS
10634 #$i_float I_FLOAT
10635 #ifdef I_LIMITS
10636 #include <limits.h>
10637 #endif
10638 #ifdef I_FLOAT
10639 #include <float.h>
10640 #endif
10641 #ifdef LDBL_DIG
10642 printf("Contains LDBL_DIG");
10643 #endif
10644 EOM
10645 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10646 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10647         echo "LDBL_DIG found." >&4
10648         val="$define"
10649 else
10650         echo "LDBL_DIG NOT found." >&4
10651         val="$undef"
10652 fi
10653 $rm -f ldbl_dig.?
10654 set d_ldbl_dig
10655 eval $setvar
10656
10657 : see if link exists
10658 set link d_link
10659 eval $inlibc
10660
10661 : see if localeconv exists
10662 set localeconv d_locconv
10663 eval $inlibc
10664
10665 : see if lockf exists
10666 set lockf d_lockf
10667 eval $inlibc
10668
10669 : see if prototype for lseek is available
10670 echo " "
10671 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10672 eval $hasproto
10673
10674 : see if lstat exists
10675 set lstat d_lstat
10676 eval $inlibc
10677
10678 : see if madvise exists
10679 set madvise d_madvise
10680 eval $inlibc
10681
10682 : see if mblen exists
10683 set mblen d_mblen
10684 eval $inlibc
10685
10686 : see if mbstowcs exists
10687 set mbstowcs d_mbstowcs
10688 eval $inlibc
10689
10690 : see if mbtowc exists
10691 set mbtowc d_mbtowc
10692 eval $inlibc
10693
10694 : see if memchr exists
10695 set memchr d_memchr
10696 eval $inlibc
10697
10698 : see if memcmp exists
10699 set memcmp d_memcmp
10700 eval $inlibc
10701
10702 : see if memcpy exists
10703 set memcpy d_memcpy
10704 eval $inlibc
10705
10706 : see if memmove exists
10707 set memmove d_memmove
10708 eval $inlibc
10709
10710 : see if memset exists
10711 set memset d_memset
10712 eval $inlibc
10713
10714 : see if mkdir exists
10715 set mkdir d_mkdir
10716 eval $inlibc
10717
10718 : see if mkdtemp exists
10719 set mkdtemp d_mkdtemp
10720 eval $inlibc
10721
10722 : see if mkfifo exists
10723 set mkfifo d_mkfifo
10724 eval $inlibc
10725
10726 : see if mkstemp exists
10727 set mkstemp d_mkstemp
10728 eval $inlibc
10729
10730 : see if mkstemps exists
10731 set mkstemps d_mkstemps
10732 eval $inlibc
10733
10734 : see if mktime exists
10735 set mktime d_mktime
10736 eval $inlibc
10737
10738 : see if this is a sys/mman.h system
10739 set sys/mman.h i_sysmman
10740 eval $inhdr
10741
10742 : see if mmap exists
10743 set mmap d_mmap
10744 eval $inlibc
10745 : see what shmat returns
10746 : default to something harmless
10747 mmaptype='void *'
10748 case "$i_sysmman$d_mmap" in
10749 "$define$define")
10750         $cat >mmap.c <<'END'
10751 #include <sys/mman.h>
10752 void *mmap();
10753 END
10754         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10755                 mmaptype='void *'
10756         else
10757                 mmaptype='caddr_t'
10758         fi
10759         echo "and it returns ($mmaptype)." >&4
10760         ;;
10761 esac
10762
10763
10764
10765 : see if modfl exists
10766 set modfl d_modfl
10767 eval $inlibc
10768
10769 d_modfl_pow32_bug="$undef"
10770
10771 case "$d_longdbl$d_modfl" in
10772 $define$define)
10773         $cat <<EOM
10774 Checking to see whether your modfl() is okay for large values...
10775 EOM
10776 $cat >try.c <<EOCP
10777 #include <math.h> 
10778 #include <stdio.h>
10779 int main() {
10780     long double nv = 4294967303.15;
10781     long double v, w;
10782     v = modfl(nv, &w);         
10783 #ifdef __GLIBC__
10784     printf("glibc");
10785 #endif
10786     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10787     return 0;
10788 }
10789 EOCP
10790         case "$osname:$gccversion" in
10791         aix:)   saveccflags="$ccflags"
10792                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10793         esac
10794         set try
10795         if eval $compile; then
10796                 foo=`$run ./try`
10797                 case "$foo" in
10798                 *" 4294967303.150000 1.150000 4294967302.000000")
10799                         echo >&4 "Your modfl() is broken for large values."
10800                         d_modfl_pow32_bug="$define"
10801                         case "$foo" in
10802                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10803                         ;;
10804                         esac
10805                         ;;
10806                 *" 4294967303.150000 0.150000 4294967303.000000")
10807                         echo >&4 "Your modfl() seems okay for large values."
10808                         ;;
10809                 *)      echo >&4 "I don't understand your modfl() at all."
10810                         d_modfl="$undef"
10811                         ;;
10812                 esac
10813                 $rm -f try.* try core core.try.*
10814         else
10815                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10816                 d_modfl="$undef"
10817         fi
10818         case "$osname:$gccversion" in
10819         aix:)   $ccflags="$saveccflags" ;; # restore
10820         esac
10821         ;;
10822 esac
10823
10824 : see if mprotect exists
10825 set mprotect d_mprotect
10826 eval $inlibc
10827
10828 : see if msgctl exists
10829 set msgctl d_msgctl
10830 eval $inlibc
10831
10832 : see if msgget exists
10833 set msgget d_msgget
10834 eval $inlibc
10835
10836 : see if msgsnd exists
10837 set msgsnd d_msgsnd
10838 eval $inlibc
10839
10840 : see if msgrcv exists
10841 set msgrcv d_msgrcv
10842 eval $inlibc
10843
10844 : see how much of the 'msg*(2)' library is present.
10845 h_msg=true
10846 echo " "
10847 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10848 *"$undef"*) h_msg=false;;
10849 esac
10850 case "$osname" in
10851 freebsd)
10852     case "`ipcs 2>&1`" in
10853     "SVID messages"*"not configured"*)
10854         echo "Your $osname does not have the msg*(2) configured." >&4
10855         h_msg=false
10856         val="$undef"
10857         set msgctl d_msgctl
10858         eval $setvar
10859         set msgget d_msgget
10860         eval $setvar
10861         set msgsnd d_msgsnd
10862         eval $setvar
10863         set msgrcv d_msgrcv
10864         eval $setvar
10865         ;;
10866     esac
10867     ;;
10868 esac
10869 : we could also check for sys/ipc.h ...
10870 if $h_msg && $test `./findhdr sys/msg.h`; then
10871         echo "You have the full msg*(2) library." >&4
10872         val="$define"
10873 else
10874         echo "You don't have the full msg*(2) library." >&4
10875         val="$undef"
10876 fi
10877 set d_msg
10878 eval $setvar
10879
10880
10881 echo " "
10882 echo "Checking to see if your system supports struct msghdr..." >&4
10883 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10884 eval $hasstruct
10885 case "$d_msghdr_s" in
10886 "$define")      echo "Yes, it does."   ;;
10887 *)              echo "No, it doesn't." ;;
10888 esac
10889
10890
10891 : see if msync exists
10892 set msync d_msync
10893 eval $inlibc
10894
10895 : see if munmap exists
10896 set munmap d_munmap
10897 eval $inlibc
10898
10899 : see if nice exists
10900 set nice d_nice
10901 eval $inlibc
10902
10903 : see if this is a langinfo.h system
10904 set langinfo.h i_langinfo
10905 eval $inhdr
10906
10907 : see if nl_langinfo exists
10908 set nl_langinfo d_nl_langinfo
10909 eval $inlibc
10910
10911 : check for length of character
10912 echo " "
10913 case "$charsize" in
10914 '')
10915         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10916         $cat >try.c <<'EOCP'
10917 #include <stdio.h>
10918 int main()
10919 {
10920     printf("%d\n", (int)sizeof(char));
10921     exit(0);
10922 }
10923 EOCP
10924         set try
10925         if eval $compile_ok; then
10926                 dflt=`$run ./try`
10927         else
10928                 dflt='1'
10929                 echo "(I can't seem to compile the test program.  Guessing...)"
10930         fi
10931         ;;
10932 *)
10933         dflt="$charsize"
10934         ;;
10935 esac
10936 rp="What is the size of a character (in bytes)?"
10937 . ./myread
10938 charsize="$ans"
10939 $rm -f try.c try
10940
10941 : check for volatile keyword
10942 echo " "
10943 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10944 $cat >try.c <<'EOCP'
10945 int main()
10946 {
10947         typedef struct _goo_struct goo_struct;
10948         goo_struct * volatile goo = ((goo_struct *)0);
10949         struct _goo_struct {
10950                 long long_int;
10951                 int reg_int;
10952                 char char_var;
10953         };
10954         typedef unsigned short foo_t;
10955         char *volatile foo;
10956         volatile int bar;
10957         volatile foo_t blech;
10958         foo = foo;
10959 }
10960 EOCP
10961 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10962         val="$define"
10963         echo "Yup, it does."
10964 else
10965         val="$undef"
10966         echo "Nope, it doesn't."
10967 fi
10968 set d_volatile
10969 eval $setvar
10970 $rm -f try.*
10971
10972
10973 echo " "
10974 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10975
10976 case "$use64bitint:$d_quad:$quadtype" in
10977 define:define:?*)
10978         ivtype="$quadtype"
10979         uvtype="$uquadtype"
10980         ivsize=8
10981         uvsize=8
10982         ;;
10983 *)      ivtype="long"
10984         uvtype="unsigned long"
10985         ivsize=$longsize
10986         uvsize=$longsize
10987         ;;
10988 esac
10989
10990 case "$uselongdouble:$d_longdbl" in
10991 define:define)
10992         nvtype="long double"
10993         nvsize=$longdblsize
10994         ;;
10995 *)      nvtype=double
10996         nvsize=$doublesize
10997         ;;
10998 esac
10999
11000 $echo "(IV will be "$ivtype", $ivsize bytes)"
11001 $echo "(UV will be "$uvtype", $uvsize bytes)"
11002 $echo "(NV will be "$nvtype", $nvsize bytes)"
11003
11004 $cat >try.c <<EOCP
11005 #$i_inttypes I_INTTYPES
11006 #ifdef I_INTTYPES
11007 #include <inttypes.h>
11008 #endif
11009 #include <stdio.h>
11010 int main() {
11011 #ifdef INT8
11012    int8_t i =  INT8_MAX;
11013   uint8_t u = UINT8_MAX;
11014   printf("int8_t\n");
11015 #endif
11016 #ifdef INT16
11017    int16_t i =  INT16_MAX;
11018   uint16_t i = UINT16_MAX;
11019   printf("int16_t\n");
11020 #endif
11021 #ifdef INT32
11022    int32_t i =  INT32_MAX;
11023   uint32_t u = UINT32_MAX;
11024   printf("int32_t\n");
11025 #endif
11026 }
11027 EOCP
11028
11029 case "$i8type" in
11030 '')     case "$charsize" in
11031         1)      i8type=char
11032                 u8type="unsigned char"
11033                 i8size=$charsize
11034                 u8size=$charsize
11035                 ;;
11036         esac
11037         ;;
11038 esac
11039 case "$i8type" in
11040 '')     set try -DINT8
11041         if eval $compile; then
11042                 case "`$run ./try`" in
11043                 int8_t) i8type=int8_t
11044                         u8type=uint8_t
11045                         i8size=1
11046                         u8size=1
11047                         ;;
11048                 esac
11049         fi
11050         ;;
11051 esac
11052 case "$i8type" in
11053 '')     if $test $charsize -ge 1; then
11054                 i8type=char
11055                 u8type="unsigned char"
11056                 i8size=$charsize
11057                 u8size=$charsize
11058         fi
11059         ;;
11060 esac
11061
11062 case "$i16type" in
11063 '')     case "$shortsize" in
11064         2)      i16type=short
11065                 u16type="unsigned short"
11066                 i16size=$shortsize
11067                 u16size=$shortsize
11068                 ;;
11069         esac
11070         ;;
11071 esac
11072 case "$i16type" in
11073 '')     set try -DINT16
11074         if eval $compile; then
11075                 case "`$run ./try`" in
11076                 int16_t)
11077                         i16type=int16_t
11078                         u16type=uint16_t
11079                         i16size=2
11080                         u16size=2
11081                         ;;
11082                 esac
11083         fi
11084         ;;
11085 esac
11086 case "$i16type" in
11087 '')     if $test $shortsize -ge 2; then
11088                 i16type=short
11089                 u16type="unsigned short"
11090                 i16size=$shortsize
11091                 u16size=$shortsize
11092         fi
11093         ;;
11094 esac
11095
11096 case "$i32type" in
11097 '')     case "$longsize" in
11098         4)      i32type=long
11099                 u32type="unsigned long"
11100                 i32size=$longsize
11101                 u32size=$longsize
11102                 ;;
11103         *)      case "$intsize" in
11104                 4)      i32type=int
11105                         u32type="unsigned int"
11106                         i32size=$intsize
11107                         u32size=$intsize
11108                         ;;
11109                 esac
11110                 ;;
11111         esac
11112         ;;
11113 esac
11114 case "$i32type" in
11115 '')     set try -DINT32
11116         if eval $compile; then
11117                 case "`$run ./try`" in
11118                 int32_t)
11119                         i32type=int32_t
11120                         u32type=uint32_t
11121                         i32size=4
11122                         u32size=4
11123                         ;;
11124                 esac
11125         fi
11126         ;;
11127 esac
11128 case "$i32type" in
11129 '')     if $test $intsize -ge 4; then
11130                 i32type=int
11131                 u32type="unsigned int"
11132                 i32size=$intsize
11133                 u32size=$intsize
11134         fi
11135         ;;
11136 esac
11137
11138 case "$i64type" in
11139 '')     case "$d_quad:$quadtype" in
11140         define:?*)
11141                 i64type="$quadtype"
11142                 u64type="$uquadtype"
11143                 i64size=8
11144                 u64size=8
11145                 ;;
11146         esac
11147         ;;
11148 esac
11149
11150 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11151 : volatile so that the compiler has to store it out to memory.
11152 if test X"$d_volatile" = X"$define"; then
11153         volatile=volatile
11154 fi
11155 $cat <<EOP >try.c
11156 #include <stdio.h>
11157 #include <sys/types.h>
11158 #include <signal.h>
11159 #ifdef SIGFPE
11160 $volatile int bletched = 0;
11161 $signal_t blech(s) int s; { bletched = 1; }
11162 #endif
11163 int main() {
11164     $uvtype u = 0;
11165     $nvtype d;
11166     int     n = 8 * $uvsize;
11167     int     i;
11168 #ifdef SIGFPE
11169     signal(SIGFPE, blech);
11170 #endif
11171
11172     for (i = 0; i < n; i++) {
11173       u = u << 1 | ($uvtype)1;
11174       d = ($nvtype)u;
11175       if (($uvtype)d != u)
11176         break;
11177       if (d <= 0)
11178         break;
11179       d = ($nvtype)(u - 1);
11180       if (($uvtype)d != (u - 1))
11181         break;
11182 #ifdef SIGFPE
11183       if (bletched) {
11184         break;
11185 #endif
11186       } 
11187     }
11188     printf("%d\n", ((i == n) ? -n : i));
11189     exit(0);
11190 }
11191 EOP
11192 set try
11193
11194 d_nv_preserves_uv="$undef"
11195 if eval $compile; then
11196         d_nv_preserves_uv_bits="`$run ./try`"
11197 fi
11198 case "$d_nv_preserves_uv_bits" in
11199 \-[1-9]*)       
11200         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11201         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11202         d_nv_preserves_uv="$define"
11203         ;;
11204 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11205         d_nv_preserves_uv="$undef" ;;
11206 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11207         d_nv_preserves_uv_bits="$undef" ;;
11208 esac
11209
11210 $rm -f try.* try
11211
11212
11213 : check for off64_t
11214 echo " "
11215 echo "Checking to see if you have off64_t..." >&4
11216 $cat >try.c <<EOCP
11217 #include <sys/types.h>
11218 #include <unistd.h>
11219 int main() { off64_t x = 7; }
11220 EOCP
11221 set try
11222 if eval $compile; then
11223         val="$define"
11224         echo "You have off64_t."
11225 else
11226         val="$undef"
11227         echo "You do not have off64_t."
11228         case "$lseeksize" in
11229         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11230         esac
11231 fi
11232 $rm -f try.* try
11233 set d_off64_t
11234 eval $setvar
11235
11236 : see if POSIX threads are available
11237 set pthread.h i_pthread
11238 eval $inhdr
11239
11240
11241
11242
11243 : how to create joinable pthreads
11244 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11245         echo " "
11246         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11247         $cat >try.c <<'EOCP'
11248 #include <pthread.h>
11249 int main() {
11250     int detachstate = JOINABLE;
11251 }
11252 EOCP
11253         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11254         if eval $compile; then
11255                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11256                 val="$undef" # Yes, undef.
11257                 set d_old_pthread_create_joinable
11258                 eval $setvar
11259                 val=""
11260                 set old_pthread_create_joinable
11261                 eval $setvar
11262         else
11263                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11264                 if eval $compile; then
11265                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11266                         val="$define"
11267                         set d_old_pthread_create_joinable
11268                         eval $setvar
11269                         val=PTHREAD_CREATE_UNDETACHED
11270                         set old_pthread_create_joinable
11271                         eval $setvar
11272                 else            
11273                         set try -DJOINABLE=__UNDETACHED
11274                         if eval $compile; then
11275                                 echo "You seem to use __UNDETACHED." >&4
11276                                 val="$define"
11277                                 set d_old_pthread_create_joinable
11278                                 eval $setvar
11279                                 val=__UNDETACHED
11280                                 set old_pthread_create_joinable
11281                                 eval $setvar
11282                         else
11283                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11284                                 val="$define"
11285                                 set d_old_pthread_create_joinable
11286                                 eval $setvar
11287                                 val=0
11288                                 set old_pthread_create_joinable
11289                                 eval $setvar
11290                         fi
11291                 fi
11292         fi
11293         $rm -f try try.*
11294 else
11295     d_old_pthread_create_joinable="$undef"
11296     old_pthread_create_joinable=""
11297 fi
11298
11299 : see if pause exists
11300 set pause d_pause
11301 eval $inlibc
11302
11303 : see if pipe exists
11304 set pipe d_pipe
11305 eval $inlibc
11306
11307 : see if poll exists
11308 set poll d_poll
11309 eval $inlibc
11310
11311
11312 : see whether the various POSIXish _yields exist
11313 $cat >try.c <<EOP
11314 #include <pthread.h>
11315 #include <stdio.h>
11316 int main() {
11317 #ifdef SCHED_YIELD
11318         sched_yield();
11319 #else
11320 #ifdef PTHREAD_YIELD
11321         pthread_yield();
11322 #else
11323 #ifdef PTHREAD_YIELD_NULL
11324         pthread_yield(NULL);
11325 #endif
11326 #endif
11327 #endif
11328 }
11329 EOP
11330 : see if sched_yield exists
11331 set try -DSCHED_YIELD
11332 if eval $compile; then
11333     val="$define"
11334     sched_yield='sched_yield()'
11335 else
11336     val="$undef"
11337 fi
11338 case "$usethreads" in
11339 $define)
11340         case "$val" in
11341         $define) echo 'sched_yield() found.' >&4        ;;
11342         *)       echo 'sched_yield() NOT found.' >&4    ;;
11343         esac
11344 esac
11345 set d_sched_yield
11346 eval $setvar
11347
11348 : see if pthread_yield exists
11349 set try -DPTHREAD_YIELD
11350 if eval $compile; then
11351     val="$define"
11352     case "$sched_yield" in
11353     '') sched_yield='pthread_yield()' ;;
11354     esac
11355 else
11356     set try -DPTHREAD_YIELD_NULL
11357     if eval $compile; then
11358         val="$define"
11359         case "$sched_yield" in
11360         '') sched_yield='pthread_yield(NULL)' ;;
11361         esac
11362     else
11363         val="$undef"
11364     fi
11365 fi
11366 case "$usethreads" in
11367 $define)
11368         case "$val" in
11369         $define) echo 'pthread_yield() found.' >&4      ;;
11370         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11371         esac
11372         ;;
11373 esac
11374 set d_pthread_yield
11375 eval $setvar
11376
11377 case "$sched_yield" in
11378 '') sched_yield=undef ;;
11379 esac
11380
11381 $rm -f try try.*
11382
11383 : see if this is a pwd.h system
11384 set pwd.h i_pwd
11385 eval $inhdr
11386
11387 case "$i_pwd" in
11388 $define)
11389         xxx=`./findhdr pwd.h`
11390         $cppstdin $cppflags $cppminus < $xxx >$$.h
11391
11392         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11393                 val="$define"
11394         else
11395                 val="$undef"
11396         fi
11397         set d_pwquota
11398         eval $setvar
11399
11400         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11401                 val="$define"
11402         else
11403                 val="$undef"
11404         fi
11405         set d_pwage
11406         eval $setvar
11407
11408         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11409                 val="$define"
11410         else
11411                 val="$undef"
11412         fi
11413         set d_pwchange
11414         eval $setvar
11415
11416         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11417                 val="$define"
11418         else
11419                 val="$undef"
11420         fi
11421         set d_pwclass
11422         eval $setvar
11423
11424         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11425                 val="$define"
11426         else
11427                 val="$undef"
11428         fi
11429         set d_pwexpire
11430         eval $setvar
11431
11432         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11433                 val="$define"
11434         else
11435                 val="$undef"
11436         fi
11437         set d_pwcomment
11438         eval $setvar
11439
11440         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11441                 val="$define"
11442         else
11443                 val="$undef"
11444         fi
11445         set d_pwgecos
11446         eval $setvar
11447
11448         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11449                 val="$define"
11450         else
11451                 val="$undef"
11452         fi
11453         set d_pwpasswd
11454         eval $setvar
11455
11456         $rm -f $$.h
11457         ;;
11458 *)
11459         val="$undef"; 
11460         set d_pwquota; eval $setvar
11461         set d_pwage; eval $setvar
11462         set d_pwchange; eval $setvar
11463         set d_pwclass; eval $setvar
11464         set d_pwexpire; eval $setvar
11465         set d_pwcomment; eval $setvar
11466         set d_pwgecos; eval $setvar
11467         set d_pwpasswd; eval $setvar
11468         ;;
11469 esac
11470
11471 : see if readdir and friends exist
11472 set readdir d_readdir
11473 eval $inlibc
11474 set seekdir d_seekdir
11475 eval $inlibc
11476 set telldir d_telldir
11477 eval $inlibc
11478 set rewinddir d_rewinddir
11479 eval $inlibc
11480
11481 : see if readlink exists
11482 set readlink d_readlink
11483 eval $inlibc
11484
11485 : see if readv exists
11486 set readv d_readv
11487 eval $inlibc
11488
11489 : see if recvmsg exists
11490 set recvmsg d_recvmsg
11491 eval $inlibc
11492
11493 : see if rename exists
11494 set rename d_rename
11495 eval $inlibc
11496
11497 : see if rmdir exists
11498 set rmdir d_rmdir
11499 eval $inlibc
11500
11501 : see if memory.h is available.
11502 val=''
11503 set memory.h val
11504 eval $inhdr
11505
11506 : See if it conflicts with string.h
11507 case "$val" in
11508 $define)
11509         case "$strings" in
11510         '') ;;
11511         *)
11512                 $cppstdin $cppflags $cppminus < $strings > mem.h
11513                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11514                         echo " "
11515                         echo "We won't be including <memory.h>."
11516                         val="$undef"
11517                 fi
11518                 $rm -f mem.h
11519                 ;;
11520         esac
11521 esac
11522 set i_memory
11523 eval $setvar
11524
11525 : can bcopy handle overlapping blocks?
11526 echo " "
11527 val="$undef"
11528 case "$d_memmove" in
11529 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11530 *)      case "$d_bcopy" in
11531         "$define")
11532                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11533                 $cat >try.c <<EOCP
11534 #$i_memory I_MEMORY
11535 #$i_stdlib I_STDLIB
11536 #$i_string I_STRING
11537 #$i_unistd I_UNISTD
11538 EOCP
11539         $cat >>try.c <<'EOCP'
11540 #include <stdio.h>
11541 #ifdef I_MEMORY
11542 #  include <memory.h>
11543 #endif
11544 #ifdef I_STDLIB
11545 #  include <stdlib.h>
11546 #endif
11547 #ifdef I_STRING
11548 #  include <string.h>
11549 #else
11550 #  include <strings.h>
11551 #endif
11552 #ifdef I_UNISTD
11553 #  include <unistd.h>  /* Needed for NetBSD */
11554 #endif
11555 int main()
11556 {
11557 char buf[128], abc[128];
11558 char *b;
11559 int len;
11560 int off;
11561 int align;
11562
11563 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11564    try to store the string in read-only memory. */
11565 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11566
11567 for (align = 7; align >= 0; align--) {
11568         for (len = 36; len; len--) {
11569                 b = buf+align;
11570                 bcopy(abc, b, len);
11571                 for (off = 1; off <= len; off++) {
11572                         bcopy(b, b+off, len);
11573                         bcopy(b+off, b, len);
11574                         if (bcmp(b, abc, len))
11575                                 exit(1);
11576                 }
11577         }
11578 }
11579 exit(0);
11580 }
11581 EOCP
11582                 set try
11583                 if eval $compile_ok; then
11584                         if ./try 2>/dev/null; then
11585                                 echo "Yes, it can."
11586                                 val="$define"
11587                         else
11588                                 echo "It can't, sorry."
11589                         fi
11590                 else
11591                         echo "(I can't compile the test program, so we'll assume not...)"
11592                 fi
11593                 ;;
11594         esac
11595         $rm -f try.* try core
11596         ;;
11597 esac
11598 set d_safebcpy
11599 eval $setvar
11600
11601 : can memcpy handle overlapping blocks?
11602 echo " "
11603 val="$undef"
11604 case "$d_memmove" in
11605 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11606 *)      case "$d_memcpy" in
11607         "$define")
11608                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11609                 $cat >try.c <<EOCP
11610 #$i_memory I_MEMORY
11611 #$i_stdlib I_STDLIB
11612 #$i_string I_STRING
11613 #$i_unistd I_UNISTD
11614 EOCP
11615         $cat >>try.c <<'EOCP'
11616 #include <stdio.h>
11617 #ifdef I_MEMORY
11618 #  include <memory.h>
11619 #endif
11620 #ifdef I_STDLIB
11621 #  include <stdlib.h>
11622 #endif
11623 #ifdef I_STRING
11624 #  include <string.h>
11625 #else
11626 #  include <strings.h>
11627 #endif
11628 #ifdef I_UNISTD
11629 #  include <unistd.h>  /* Needed for NetBSD */
11630 #endif
11631 int main()
11632 {
11633 char buf[128], abc[128];
11634 char *b;
11635 int len;
11636 int off;
11637 int align;
11638
11639 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11640    try to store the string in read-only memory. */
11641 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11642
11643 for (align = 7; align >= 0; align--) {
11644         for (len = 36; len; len--) {
11645                 b = buf+align;
11646                 memcpy(b, abc, len);
11647                 for (off = 1; off <= len; off++) {
11648                         memcpy(b+off, b, len);
11649                         memcpy(b, b+off, len);
11650                         if (memcmp(b, abc, len))
11651                                 exit(1);
11652                 }
11653         }
11654 }
11655 exit(0);
11656 }
11657 EOCP
11658                 set try
11659                 if eval $compile_ok; then
11660                         if ./try 2>/dev/null; then
11661                                 echo "Yes, it can."
11662                                 val="$define"
11663                         else
11664                                 echo "It can't, sorry."
11665                         fi
11666                 else
11667                         echo "(I can't compile the test program, so we'll assume not...)"
11668                 fi
11669                 ;;
11670         esac
11671         $rm -f try.* try core
11672         ;;
11673 esac
11674 set d_safemcpy
11675 eval $setvar
11676
11677 : can memcmp be trusted to compare relative magnitude?
11678 val="$undef"
11679 case "$d_memcmp" in
11680 "$define")
11681         echo " "
11682         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11683         $cat >try.c <<EOCP
11684 #$i_memory I_MEMORY
11685 #$i_stdlib I_STDLIB
11686 #$i_string I_STRING
11687 #$i_unistd I_UNISTD
11688 EOCP
11689         $cat >>try.c <<'EOCP'
11690 #include <stdio.h>
11691 #ifdef I_MEMORY
11692 #  include <memory.h>
11693 #endif
11694 #ifdef I_STDLIB
11695 #  include <stdlib.h>
11696 #endif
11697 #ifdef I_STRING
11698 #  include <string.h>
11699 #else
11700 #  include <strings.h>
11701 #endif
11702 #ifdef I_UNISTD
11703 #  include <unistd.h>  /* Needed for NetBSD */
11704 #endif
11705 int main()
11706 {
11707 char a = -1;
11708 char b = 0;
11709 if ((a < b) && memcmp(&a, &b, 1) < 0)
11710         exit(1);
11711 exit(0);
11712 }
11713 EOCP
11714         set try
11715         if eval $compile_ok; then
11716                 if $run ./try 2>/dev/null; then
11717                         echo "Yes, it can."
11718                         val="$define"
11719                 else
11720                         echo "No, it can't (it uses signed chars)."
11721                 fi
11722         else
11723                 echo "(I can't compile the test program, so we'll assume not...)"
11724         fi
11725         ;;
11726 esac
11727 $rm -f try.* try core
11728 set d_sanemcmp
11729 eval $setvar
11730
11731 : see if prototype for sbrk is available
11732 echo " "
11733 set d_sbrkproto sbrk $i_unistd unistd.h
11734 eval $hasproto
11735
11736 : see if select exists
11737 set select d_select
11738 eval $inlibc
11739
11740 : see if semctl exists
11741 set semctl d_semctl
11742 eval $inlibc
11743
11744 : see if semget exists
11745 set semget d_semget
11746 eval $inlibc
11747
11748 : see if semop exists
11749 set semop d_semop
11750 eval $inlibc
11751
11752 : see how much of the 'sem*(2)' library is present.
11753 h_sem=true
11754 echo " "
11755 case "$d_semctl$d_semget$d_semop" in
11756 *"$undef"*) h_sem=false;;
11757 esac
11758 case "$osname" in
11759 freebsd)
11760     case "`ipcs 2>&1`" in
11761     "SVID messages"*"not configured"*)
11762         echo "Your $osname does not have the sem*(2) configured." >&4
11763         h_sem=false
11764         val="$undef"
11765         set semctl d_semctl
11766         eval $setvar
11767         set semget d_semget
11768         eval $setvar
11769         set semop d_semop
11770         eval $setvar
11771         ;;
11772     esac
11773     ;;
11774 esac
11775 : we could also check for sys/ipc.h ...
11776 if $h_sem && $test `./findhdr sys/sem.h`; then
11777         echo "You have the full sem*(2) library." >&4
11778         val="$define"
11779 else
11780         echo "You don't have the full sem*(2) library." >&4
11781         val="$undef"
11782 fi
11783 set d_sem
11784 eval $setvar
11785
11786 : see whether sys/sem.h defines union semun
11787 echo " "
11788 $cat > try.c <<'END'
11789 #include <sys/types.h>
11790 #include <sys/ipc.h>
11791 #include <sys/sem.h>
11792 int main () { union semun semun; semun.buf = 0; }
11793 END
11794 set try
11795 if eval $compile; then
11796     echo "You have union semun in <sys/sem.h>." >&4
11797     val="$define"
11798 else
11799     echo "You do not have union semun in <sys/sem.h>." >&4
11800     val="$undef"
11801 fi
11802 $rm -f try try.c try.h
11803 set d_union_semun
11804 eval $setvar
11805
11806 : see how to do semctl IPC_STAT
11807 case "$d_sem" in
11808 $define)
11809     : see whether semctl IPC_STAT can use union semun
11810     echo " "
11811     $cat > try.h <<END
11812 #ifndef S_IRUSR
11813 #   ifdef S_IREAD
11814 #       define S_IRUSR S_IREAD
11815 #       define S_IWUSR S_IWRITE
11816 #       define S_IXUSR S_IEXEC
11817 #   else
11818 #       define S_IRUSR 0400
11819 #       define S_IWUSR 0200
11820 #       define S_IXUSR 0100
11821 #   endif
11822 #   define S_IRGRP (S_IRUSR>>3)
11823 #   define S_IWGRP (S_IWUSR>>3)
11824 #   define S_IXGRP (S_IXUSR>>3)
11825 #   define S_IROTH (S_IRUSR>>6)
11826 #   define S_IWOTH (S_IWUSR>>6)
11827 #   define S_IXOTH (S_IXUSR>>6)
11828 #endif
11829 #ifndef S_IRWXU
11830 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11831 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11832 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11833 #endif
11834 END
11835
11836     $cat > try.c <<END
11837 #include <sys/types.h>
11838 #include <sys/ipc.h>
11839 #include <sys/sem.h>
11840 #include <sys/stat.h>
11841 #include <stdio.h>
11842 #include <errno.h>
11843 #include "try.h"
11844 #ifndef errno
11845 extern int errno;
11846 #endif
11847 #$d_union_semun HAS_UNION_SEMUN
11848 int main() {
11849     union semun
11850 #ifndef HAS_UNION_SEMUN
11851     {
11852         int val;
11853         struct semid_ds *buf;
11854         unsigned short *array;
11855     }
11856 #endif
11857     arg;
11858     int sem, st;
11859
11860 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11861     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11862     if (sem > -1) {
11863         struct semid_ds argbuf;
11864         arg.buf = &argbuf;
11865 #       ifdef IPC_STAT
11866         st = semctl(sem, 0, IPC_STAT, arg);
11867         if (st == 0)
11868             printf("semun\n");
11869         else
11870 #       endif /* IPC_STAT */
11871             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11872 #       ifdef IPC_RMID
11873         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11874 #       endif /* IPC_RMID */
11875             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11876     } else
11877 #endif /* IPC_PRIVATE && ... */
11878         printf("semget failed: errno = %d\n", errno);
11879   return 0;
11880 }
11881 END
11882     val="$undef"
11883     set try
11884     if eval $compile; then
11885         xxx=`$run ./try`
11886         case "$xxx" in
11887         semun) val="$define" ;;
11888         esac
11889     fi
11890     $rm -f try try.c
11891     set d_semctl_semun
11892     eval $setvar
11893     case "$d_semctl_semun" in
11894     $define)
11895         echo "You can use union semun for semctl IPC_STAT." >&4
11896         also='also'
11897         ;;
11898     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11899         also=''
11900         ;;
11901     esac
11902
11903     : see whether semctl IPC_STAT can use struct semid_ds pointer
11904     $cat > try.c <<'END'
11905 #include <sys/types.h>
11906 #include <sys/ipc.h>
11907 #include <sys/sem.h>
11908 #include <sys/stat.h>
11909 #include "try.h"
11910 #include <stdio.h>
11911 #include <errno.h>
11912 #ifndef errno
11913 extern int errno;
11914 #endif
11915 int main() {
11916     struct semid_ds arg;
11917     int sem, st;
11918
11919 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11920     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11921     if (sem > -1) {
11922 #       ifdef IPC_STAT
11923         st = semctl(sem, 0, IPC_STAT, &arg);
11924         if (st == 0)
11925             printf("semid_ds\n");
11926         else
11927 #       endif /* IPC_STAT */
11928             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11929 #       ifdef IPC_RMID
11930         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11931 #       endif /* IPC_RMID */
11932             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11933     } else
11934 #endif /* IPC_PRIVATE && ... */
11935         printf("semget failed: errno = %d\n", errno);
11936
11937     return 0;
11938 }
11939 END
11940     val="$undef"
11941     set try
11942     if eval $compile; then
11943         xxx=`$run ./try`
11944         case "$xxx" in
11945         semid_ds) val="$define" ;;
11946         esac
11947     fi
11948     $rm -f try try.c
11949     set d_semctl_semid_ds
11950     eval $setvar
11951     case "$d_semctl_semid_ds" in
11952     $define)
11953         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11954         ;;
11955     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11956         ;;
11957     esac
11958     $rm -f try.h
11959     ;;
11960 *)  val="$undef"
11961
11962     # We do not have the full sem*(2) library, so assume we can not
11963     # use either.
11964
11965     set d_semctl_semun
11966     eval $setvar
11967
11968     set d_semctl_semid_ds
11969     eval $setvar
11970     ;;
11971 esac
11972
11973 : see if sendmsg exists
11974 set sendmsg d_sendmsg
11975 eval $inlibc
11976
11977 : see if setegid exists
11978 set setegid d_setegid
11979 eval $inlibc
11980
11981 : see if seteuid exists
11982 set seteuid d_seteuid
11983 eval $inlibc
11984
11985 : see if setgrent exists
11986 set setgrent d_setgrent
11987 eval $inlibc
11988
11989 : see if sethostent exists
11990 set sethostent d_sethent
11991 eval $inlibc
11992
11993 : see if setitimer exists
11994 set setitimer d_setitimer
11995 eval $inlibc
11996
11997 : see if setlinebuf exists
11998 set setlinebuf d_setlinebuf
11999 eval $inlibc
12000
12001 : see if setlocale exists
12002 set setlocale d_setlocale
12003 eval $inlibc
12004
12005 : see if setnetent exists
12006 set setnetent d_setnent
12007 eval $inlibc
12008
12009 : see if setprotoent exists
12010 set setprotoent d_setpent
12011 eval $inlibc
12012
12013 : see if setpgid exists
12014 set setpgid d_setpgid
12015 eval $inlibc
12016
12017 : see if setpgrp2 exists
12018 set setpgrp2 d_setpgrp2
12019 eval $inlibc
12020
12021 : see if setpriority exists
12022 set setpriority d_setprior
12023 eval $inlibc
12024
12025 : see if setproctitle exists
12026 set setproctitle d_setproctitle
12027 eval $inlibc
12028
12029 : see if setpwent exists
12030 set setpwent d_setpwent
12031 eval $inlibc
12032
12033 : see if setregid exists
12034 set setregid d_setregid
12035 eval $inlibc
12036 set setresgid d_setresgid
12037 eval $inlibc
12038
12039 : see if setreuid exists
12040 set setreuid d_setreuid
12041 eval $inlibc
12042 set setresuid d_setresuid
12043 eval $inlibc
12044
12045 : see if setrgid exists
12046 set setrgid d_setrgid
12047 eval $inlibc
12048
12049 : see if setruid exists
12050 set setruid d_setruid
12051 eval $inlibc
12052
12053 : see if setservent exists
12054 set setservent d_setsent
12055 eval $inlibc
12056
12057 : see if setsid exists
12058 set setsid d_setsid
12059 eval $inlibc
12060
12061 : see if setvbuf exists
12062 set setvbuf d_setvbuf
12063 eval $inlibc
12064
12065 : see if sfio.h is available
12066 set sfio.h i_sfio
12067 eval $inhdr
12068
12069
12070 : see if sfio library is available
12071 case "$i_sfio" in
12072 $define)
12073         val=''
12074         set sfreserve val
12075         eval $inlibc
12076         ;;
12077 *)
12078         val="$undef"
12079         ;;
12080 esac
12081 : Ok, but do we want to use it.
12082 case "$val" in
12083 $define)
12084         case "$usesfio" in
12085         true|$define|[yY]*) dflt='y';;
12086         *) dflt='n';;
12087         esac
12088         echo "$package can use the sfio library, but it is experimental."
12089         case "$useperlio" in
12090         "$undef")
12091             echo "For sfio also the PerlIO abstraction layer is needed."
12092             echo "Earlier you said you wouldn't want that."
12093             ;;
12094         esac
12095         rp="You seem to have sfio available, do you want to try using it?"
12096         . ./myread
12097         case "$ans" in
12098         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12099                 useperlio="$define"
12100                 val="$define"
12101                 ;;
12102         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12103                 val="$undef"
12104                 ;;
12105         esac
12106         ;;
12107 *)      case "$usesfio" in
12108         true|$define|[yY]*)
12109                 echo "Sorry, cannot find sfio on this machine." >&4
12110                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12111                 val="$undef"
12112                 ;;
12113         esac
12114         ;;
12115 esac
12116 set d_sfio
12117 eval $setvar
12118 case "$d_sfio" in
12119 $define) usesfio='true';;
12120 *) usesfio='false';;
12121 esac
12122 case "$d_sfio" in
12123 $define) ;;
12124 *)      : Remove sfio from list of libraries to use
12125         case "$libs" in
12126         *-lsfio*)
12127                 echo "Removing unneeded -lsfio from library list" >&4
12128                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12129                 shift
12130                 libs="$*"
12131                 echo "libs = $libs" >&4
12132                 ;;
12133         esac
12134 ;;
12135 esac
12136
12137
12138 : see if shmctl exists
12139 set shmctl d_shmctl
12140 eval $inlibc
12141
12142 : see if shmget exists
12143 set shmget d_shmget
12144 eval $inlibc
12145
12146 : see if shmat exists
12147 set shmat d_shmat
12148 eval $inlibc
12149 : see what shmat returns
12150 case "$d_shmat" in
12151 "$define")
12152         $cat >shmat.c <<'END'
12153 #include <sys/shm.h>
12154 void *shmat();
12155 END
12156         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12157                 shmattype='void *'
12158         else
12159                 shmattype='char *'
12160         fi
12161         echo "and it returns ($shmattype)." >&4
12162         : see if a prototype for shmat is available
12163         xxx=`./findhdr sys/shm.h`
12164         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12165         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12166                 val="$define"
12167         else
12168                 val="$undef"
12169         fi
12170         $rm -f shmat.[co]
12171         ;;
12172 *)
12173         val="$undef"
12174         ;;
12175 esac
12176 set d_shmatprototype
12177 eval $setvar
12178
12179 : see if shmdt exists
12180 set shmdt d_shmdt
12181 eval $inlibc
12182
12183 : see how much of the 'shm*(2)' library is present.
12184 h_shm=true
12185 echo " "
12186 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12187 *"$undef"*) h_shm=false;;
12188 esac
12189 case "$osname" in
12190 freebsd)
12191     case "`ipcs 2>&1`" in
12192     "SVID shared memory"*"not configured"*)
12193         echo "Your $osname does not have the shm*(2) configured." >&4
12194         h_shm=false
12195         val="$undef"
12196         set shmctl d_shmctl
12197         evat $setvar
12198         set shmget d_shmget
12199         evat $setvar
12200         set shmat d_shmat
12201         evat $setvar
12202         set shmdt d_shmdt
12203         evat $setvar
12204         ;;
12205     esac
12206     ;;
12207 esac
12208 : we could also check for sys/ipc.h ...
12209 if $h_shm && $test `./findhdr sys/shm.h`; then
12210         echo "You have the full shm*(2) library." >&4
12211         val="$define"
12212 else
12213         echo "You don't have the full shm*(2) library." >&4
12214         val="$undef"
12215 fi
12216 set d_shm
12217 eval $setvar
12218
12219 echo " "
12220 : see if we have sigaction
12221 if set sigaction val -f d_sigaction; eval $csym; $val; then
12222         echo 'sigaction() found.' >&4
12223         $cat > try.c <<'EOP'
12224 #include <stdio.h>
12225 #include <sys/types.h>
12226 #include <signal.h>
12227 int main()
12228 {
12229     struct sigaction act, oact;
12230     act.sa_flags = 0;
12231     oact.sa_handler = 0;
12232     /* so that act and oact are used */
12233     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12234 }
12235 EOP
12236         set try
12237         if eval $compile_ok; then
12238                 val="$define"
12239         else
12240                 echo "But you don't seem to have a useable struct sigaction." >&4
12241                 val="$undef"
12242         fi
12243 else
12244         echo 'sigaction NOT found.' >&4
12245         val="$undef"
12246 fi
12247 set d_sigaction; eval $setvar
12248 $rm -f try try$_o try.c
12249
12250 : see if sigprocmask exists
12251 set sigprocmask d_sigprocmask
12252 eval $inlibc
12253
12254 : see if sigsetjmp exists
12255 echo " "
12256 case "$d_sigsetjmp" in
12257 '')
12258         $cat >try.c <<'EOP'
12259 #include <setjmp.h>
12260 sigjmp_buf env;
12261 int set = 1;
12262 int main()
12263 {
12264         if (sigsetjmp(env,1))
12265                 exit(set);
12266         set = 0;
12267         siglongjmp(env, 1);
12268         exit(1);
12269 }
12270 EOP
12271         set try
12272         if eval $compile; then
12273                 if $run ./try >/dev/null 2>&1; then
12274                         echo "POSIX sigsetjmp found." >&4
12275                         val="$define"
12276                 else
12277                         $cat >&4 <<EOM
12278 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12279 I'll ignore them.
12280 EOM
12281                         val="$undef"
12282                 fi
12283         else
12284                 echo "sigsetjmp not found." >&4
12285                 val="$undef"
12286         fi
12287         ;;
12288 *) val="$d_sigsetjmp"
12289         case "$d_sigsetjmp" in
12290         $define) echo "POSIX sigsetjmp found." >&4;;
12291         $undef) echo "sigsetjmp not found." >&4;;
12292         esac
12293         ;;
12294 esac
12295 set d_sigsetjmp
12296 eval $setvar
12297 $rm -f try.c try
12298
12299 : see if sockatmark exists
12300 set sockatmark d_sockatmark
12301 eval $inlibc
12302
12303 : see if prototype for sockatmark is available
12304 echo " "
12305 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12306 eval $hasproto
12307
12308 : see if socks5_init exists
12309 set socks5_init d_socks5_init
12310 eval $inlibc
12311
12312 : see if prototype for setresgid is available
12313 echo " "
12314 set d_sresgproto setresgid $i_unistd unistd.h
12315 eval $hasproto
12316
12317 : see if prototype for setresuid is available
12318 echo " "
12319 set d_sresuproto setresuid $i_unistd unistd.h
12320 eval $hasproto
12321
12322 : see if sys/stat.h is available
12323 set sys/stat.h i_sysstat
12324 eval $inhdr
12325
12326
12327 : see if stat knows about block sizes
12328 echo " "
12329 echo "Checking to see if your struct stat has st_blocks field..." >&4
12330 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12331 eval $hasfield
12332
12333
12334 : see if this is a sys/vfs.h system
12335 set sys/vfs.h i_sysvfs
12336 eval $inhdr
12337
12338
12339 : see if this is a sys/statfs.h system
12340 set sys/statfs.h i_sysstatfs
12341 eval $inhdr
12342
12343
12344 echo " "
12345 echo "Checking to see if your system supports struct statfs..." >&4
12346 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
12347 eval $hasstruct
12348 case "$d_statfs_s" in
12349 "$define")      echo "Yes, it does."   ;;
12350 *)              echo "No, it doesn't." ;;
12351 esac
12352
12353
12354
12355 : see if struct statfs knows about f_flags
12356 case "$d_statfs_s" in
12357 define) 
12358         echo " "
12359         echo "Checking to see if your struct statfs has f_flags field..." >&4
12360         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
12361         eval $hasfield
12362         ;;
12363 *)      val="$undef"
12364         set d_statfs_f_flags
12365         eval $setvar
12366         ;;
12367 esac
12368 case "$d_statfs_f_flags" in
12369 "$define")      echo "Yes, it does."   ;;
12370 *)              echo "No, it doesn't." ;;
12371 esac
12372
12373 : see if _ptr and _cnt from stdio act std
12374 echo " "
12375
12376 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12377         echo "(Looks like you have stdio.h from BSD.)"
12378         case "$stdio_ptr" in
12379         '') stdio_ptr='((fp)->_p)'
12380                 ptr_lval=$define
12381                 ;;
12382         *)      ptr_lval=$d_stdio_ptr_lval;;
12383         esac
12384         case "$stdio_cnt" in
12385         '') stdio_cnt='((fp)->_r)'
12386                 cnt_lval=$define
12387                 ;;
12388         *)      cnt_lval=$d_stdio_cnt_lval;;
12389         esac
12390         case "$stdio_base" in
12391         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12392         esac
12393         case "$stdio_bufsiz" in
12394         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12395         esac
12396 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12397         echo "(Looks like you have stdio.h from Linux.)"
12398         case "$stdio_ptr" in
12399         '') stdio_ptr='((fp)->_IO_read_ptr)'
12400                 ptr_lval=$define
12401                 ;;
12402         *)      ptr_lval=$d_stdio_ptr_lval;;
12403         esac
12404         case "$stdio_cnt" in
12405         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12406                 cnt_lval=$undef
12407                 ;;
12408         *)      cnt_lval=$d_stdio_cnt_lval;;
12409         esac
12410         case "$stdio_base" in
12411         '') stdio_base='((fp)->_IO_read_base)';;
12412         esac
12413         case "$stdio_bufsiz" in
12414         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12415         esac
12416 else
12417         case "$stdio_ptr" in
12418         '') stdio_ptr='((fp)->_ptr)'
12419                 ptr_lval=$define
12420                 ;;
12421         *)      ptr_lval=$d_stdio_ptr_lval;;
12422         esac
12423         case "$stdio_cnt" in
12424         '') stdio_cnt='((fp)->_cnt)'
12425                 cnt_lval=$define
12426                 ;;
12427         *)      cnt_lval=$d_stdio_cnt_lval;;
12428         esac
12429         case "$stdio_base" in
12430         '') stdio_base='((fp)->_base)';;
12431         esac
12432         case "$stdio_bufsiz" in
12433         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12434         esac
12435 fi
12436
12437 : test whether _ptr and _cnt really work
12438 echo "Checking how std your stdio is..." >&4
12439 $cat >try.c <<EOP
12440 #include <stdio.h>
12441 #define FILE_ptr(fp)    $stdio_ptr
12442 #define FILE_cnt(fp)    $stdio_cnt
12443 int main() {
12444         FILE *fp = fopen("try.c", "r");
12445         char c = getc(fp);
12446         if (
12447                 18 <= FILE_cnt(fp) &&
12448                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12449         )
12450                 exit(0);
12451         exit(1);
12452 }
12453 EOP
12454 val="$undef"
12455 set try
12456 if eval $compile && $to try.c; then
12457         if $run ./try; then
12458                 echo "Your stdio acts pretty std."
12459                 val="$define"
12460         else
12461                 echo "Your stdio isn't very std."
12462         fi
12463 else
12464         echo "Your stdio doesn't appear very std."
12465 fi
12466 $rm -f try.c try
12467 set d_stdstdio
12468 eval $setvar
12469
12470 : Can _ptr be used as an lvalue?
12471 case "$d_stdstdio$ptr_lval" in
12472 $define$define) val=$define ;;
12473 *) val=$undef ;;
12474 esac
12475 set d_stdio_ptr_lval
12476 eval $setvar
12477
12478 : Can _cnt be used as an lvalue?
12479 case "$d_stdstdio$cnt_lval" in
12480 $define$define) val=$define ;;
12481 *) val=$undef ;;
12482 esac
12483 set d_stdio_cnt_lval
12484 eval $setvar
12485
12486
12487 : test whether setting _ptr sets _cnt as a side effect
12488 d_stdio_ptr_lval_sets_cnt="$undef"
12489 d_stdio_ptr_lval_nochange_cnt="$undef"
12490 case "$d_stdio_ptr_lval$d_stdstdio" in
12491 $define$define)
12492         echo "Checking to see what happens if we set the stdio ptr..." >&4
12493 $cat >try.c <<EOP
12494 #include <stdio.h>
12495 /* Can we scream? */
12496 /* Eat dust sed :-) */
12497 /* In the buffer space, no one can hear you scream. */
12498 #define FILE_ptr(fp)    $stdio_ptr
12499 #define FILE_cnt(fp)    $stdio_cnt
12500 #include <sys/types.h>
12501 int main() {
12502         FILE *fp = fopen("try.c", "r");
12503         int c;
12504         char *ptr;
12505         size_t cnt;
12506         if (!fp) {
12507             puts("Fail even to read");
12508             exit(1);
12509         }
12510         c = getc(fp); /* Read away the first # */
12511         if (c == EOF) {
12512             puts("Fail even to read");
12513             exit(1);
12514         }
12515         if (!(
12516                 18 <= FILE_cnt(fp) &&
12517                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12518         )) {
12519                 puts("Fail even to read");
12520                 exit (1);
12521         }
12522         ptr = (char*) FILE_ptr(fp);
12523         cnt = (size_t)FILE_cnt(fp);
12524
12525         FILE_ptr(fp) += 42;
12526
12527         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12528                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12529                 exit (1);
12530         }
12531         if (FILE_cnt(fp) <= 20) {
12532                 printf ("Fail (<20 chars to test)");
12533                 exit (1);
12534         }
12535         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12536                 puts("Fail compare");
12537                 exit (1);
12538         }
12539         if (cnt == FILE_cnt(fp)) {
12540                 puts("Pass_unchanged");
12541                 exit (0);
12542         }       
12543         if (FILE_cnt(fp) == (cnt - 42)) {
12544                 puts("Pass_changed");
12545                 exit (0);
12546         }
12547         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12548         return 1;
12549
12550 }
12551 EOP
12552         set try
12553         if eval $compile && $to try.c; then
12554                 case `$run ./try` in
12555                 Pass_changed)
12556                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12557                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12558                 Pass_unchanged)
12559                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12560                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12561                 Fail*)
12562                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12563                 *)
12564                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12565         esac
12566         else
12567                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12568         fi
12569         $rm -f try.c try
12570         ;;
12571 esac
12572
12573 : see if _base is also standard
12574 val="$undef"
12575 case "$d_stdstdio" in
12576 $define)
12577         $cat >try.c <<EOP
12578 #include <stdio.h>
12579 #define FILE_base(fp)   $stdio_base
12580 #define FILE_bufsiz(fp) $stdio_bufsiz
12581 int main() {
12582         FILE *fp = fopen("try.c", "r");
12583         char c = getc(fp);
12584         if (
12585                 19 <= FILE_bufsiz(fp) &&
12586                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12587         )
12588                 exit(0);
12589         exit(1);
12590 }
12591 EOP
12592         set try
12593         if eval $compile && $to try.c; then
12594                 if $run ./try; then
12595                         echo "And its _base field acts std."
12596                         val="$define"
12597                 else
12598                         echo "But its _base field isn't std."
12599                 fi
12600         else
12601                 echo "However, it seems to be lacking the _base field."
12602         fi
12603         $rm -f try.c try
12604         ;;
12605 esac
12606 set d_stdiobase
12607 eval $setvar
12608
12609 $cat >&4 <<EOM
12610 Checking how to access stdio streams by file descriptor number...
12611 EOM
12612 case "$stdio_stream_array" in
12613 '')     $cat >try.c <<EOCP
12614 #include <stdio.h>
12615 int main() {
12616   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12617     printf("yes\n");
12618 }
12619 EOCP
12620         for s in _iob __iob __sF
12621         do
12622                 set try -DSTDIO_STREAM_ARRAY=$s
12623                 if eval $compile; then
12624                         case "`$run ./try`" in
12625                         yes)    stdio_stream_array=$s; break ;;
12626                         esac
12627                 fi
12628         done
12629         $rm -f try.* try$exe_ext
12630 esac
12631 case "$stdio_stream_array" in
12632 '')     $cat >&4 <<EOM
12633 I can't figure out how to access stdio streams by file descriptor number.
12634 EOM
12635         d_stdio_stream_array="$undef"
12636         ;;
12637 *)      $cat >&4 <<EOM
12638 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12639 EOM
12640         d_stdio_stream_array="$define"
12641         ;;
12642 esac
12643
12644 : see if strcoll exists
12645 set strcoll d_strcoll
12646 eval $inlibc
12647
12648 : check for structure copying
12649 echo " "
12650 echo "Checking to see if your C compiler can copy structs..." >&4
12651 $cat >try.c <<'EOCP'
12652 int main()
12653 {
12654         struct blurfl {
12655                 int dyick;
12656         } foo, bar;
12657
12658         foo = bar;
12659 }
12660 EOCP
12661 if $cc -c try.c >/dev/null 2>&1 ; then
12662         val="$define"
12663         echo "Yup, it can."
12664 else
12665         val="$undef"
12666         echo "Nope, it can't."
12667 fi
12668 set d_strctcpy
12669 eval $setvar
12670 $rm -f try.*
12671
12672 : see if strerror and/or sys_errlist[] exist
12673 echo " "
12674 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12675     if set strerror val -f d_strerror; eval $csym; $val; then
12676                 echo 'strerror() found.' >&4
12677                 d_strerror="$define"
12678                 d_strerrm='strerror(e)'
12679                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12680                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12681                         d_syserrlst="$define"
12682                 else
12683                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12684                         d_syserrlst="$undef"
12685                 fi
12686     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12687                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12688                 echo 'strerror() found in string header.' >&4
12689                 d_strerror="$define"
12690                 d_strerrm='strerror(e)'
12691                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12692                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12693                                 d_syserrlst="$define"
12694                 else
12695                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12696                         d_syserrlst="$undef"
12697                 fi
12698     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12699                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12700                 d_strerror="$undef"
12701                 d_syserrlst="$define"
12702                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12703     else
12704                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12705                 d_strerror="$undef"
12706                 d_syserrlst="$undef"
12707                 d_strerrm='"unknown"'
12708     fi
12709 fi
12710
12711 : see if strftime exists
12712 set strftime d_strftime
12713 eval $inlibc
12714
12715 : see if strtod exists
12716 set strtod d_strtod
12717 eval $inlibc
12718
12719 : see if strtol exists
12720 set strtol d_strtol
12721 eval $inlibc
12722
12723 : see if strtold exists
12724 set strtold d_strtold
12725 eval $inlibc
12726
12727 : see if strtoll exists
12728 set strtoll d_strtoll
12729 eval $inlibc
12730
12731 case "$d_longlong-$d_strtoll" in
12732 "$define-$define")
12733         $cat <<EOM
12734 Checking whether your strtoll() works okay...
12735 EOM
12736         $cat >try.c <<'EOCP'
12737 #include <errno.h>
12738 #ifdef __hpux
12739 #define strtoll __strtoll
12740 #endif
12741 #ifdef __EMX__
12742 #define strtoll _strtoll
12743 #endif
12744 #include <stdio.h>
12745 extern long long int strtoll(char *s, char **, int); 
12746 static int bad = 0;
12747 int check(char *s, long long ell, int een) {
12748         long long gll;
12749         errno = 0;
12750         gll = strtoll(s, 0, 10);
12751         if (!((gll == ell) && (errno == een)))
12752                 bad++;
12753 }
12754 int main() {
12755         check(" 1",                                      1LL, 0);
12756         check(" 0",                                      0LL, 0);
12757         check("-1",                                     -1LL, 0);
12758         check("-9223372036854775808", -9223372036854775808LL, 0);
12759         check("-9223372036854775808", -9223372036854775808LL, 0);
12760         check(" 9223372036854775807",  9223372036854775807LL, 0);
12761         check("-9223372036854775808", -9223372036854775808LL, 0);
12762         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12763         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12764         if (!bad)
12765                 printf("ok\n");
12766 }
12767 EOCP
12768         set try
12769         if eval $compile; then
12770                 yyy=`$run ./try`
12771                 case "$yyy" in
12772                 ok) echo "Your strtoll() seems to be working okay." ;;
12773                 *) cat <<EOM >&4
12774 Your strtoll() doesn't seem to be working okay.
12775 EOM
12776                    d_strtoll="$undef"
12777                    ;;
12778                 esac
12779         else
12780                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12781                 d_strtoll="$undef"
12782         fi
12783         ;;
12784 esac
12785
12786 : see if strtoq exists
12787 set strtoq d_strtoq
12788 eval $inlibc
12789
12790 : see if strtoul exists
12791 set strtoul d_strtoul
12792 eval $inlibc
12793
12794 case "$d_strtoul" in
12795 "$define")
12796         $cat <<EOM
12797 Checking whether your strtoul() works okay...
12798 EOM
12799         $cat >try.c <<'EOCP'
12800 #include <errno.h>
12801 #include <stdio.h>
12802 extern unsigned long int strtoul(char *s, char **, int); 
12803 static int bad = 0;
12804 void check(char *s, unsigned long eul, int een) {
12805         unsigned long gul;
12806         errno = 0;
12807         gul = strtoul(s, 0, 10);
12808         if (!((gul == eul) && (errno == een)))
12809                 bad++;
12810 }
12811 int main() {
12812         check(" 1", 1L, 0);
12813         check(" 0", 0L, 0);
12814 EOCP
12815         case "$longsize" in
12816         8)
12817             $cat >>try.c <<'EOCP'
12818         check("18446744073709551615", 18446744073709551615UL, 0);
12819         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12820 #if 0 /* strtoul() for /^-/ strings is undefined. */
12821         check("-1", 18446744073709551615UL, 0);
12822         check("-18446744073709551614", 2, 0);
12823         check("-18446744073709551615", 1, 0);
12824         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12825         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12826 #endif
12827 EOCP
12828                 ;;
12829         4)
12830                     $cat >>try.c <<'EOCP'
12831         check("4294967295", 4294967295UL, 0);
12832         check("4294967296", 4294967295UL, ERANGE);
12833 #if 0 /* strtoul() for /^-/ strings is undefined. */
12834         check("-1", 4294967295UL, 0);
12835         check("-4294967294", 2, 0);
12836         check("-4294967295", 1, 0);
12837         check("-4294967296", 4294967295UL, ERANGE);
12838         check("-4294967297", 4294967295UL, ERANGE);
12839 #endif
12840 EOCP
12841                 ;;
12842         *)
12843 : Should we write these tests to be more portable by sprintf-ing
12844 : ~0 and then manipulating that char string as input for strtol?
12845                 ;;
12846         esac
12847         $cat >>try.c <<'EOCP'
12848         if (!bad)
12849                 printf("ok\n");
12850         return 0;
12851 }
12852 EOCP
12853         set try
12854         if eval $compile; then
12855                 case "`$run ./try`" in
12856                 ok) echo "Your strtoul() seems to be working okay." ;;
12857                 *) cat <<EOM >&4
12858 Your strtoul() doesn't seem to be working okay.
12859 EOM
12860                    d_strtoul="$undef"
12861                    ;;
12862                 esac
12863         fi
12864         ;;
12865 esac
12866
12867 : see if strtoull exists
12868 set strtoull d_strtoull
12869 eval $inlibc
12870
12871 case "$d_longlong-$d_strtoull" in
12872 "$define-$define")
12873         $cat <<EOM
12874 Checking whether your strtoull() works okay...
12875 EOM
12876         $cat >try.c <<'EOCP'
12877 #include <errno.h>
12878 #ifdef __hpux
12879 #define strtoull __strtoull
12880 #endif
12881 #include <stdio.h>
12882 extern unsigned long long int strtoull(char *s, char **, int); 
12883 static int bad = 0;
12884 int check(char *s, long long eull, int een) {
12885         long long gull;
12886         errno = 0;
12887         gull = strtoull(s, 0, 10);
12888         if (!((gull == eull) && (errno == een)))
12889                 bad++;
12890 }
12891 int main() {
12892         check(" 1",                                        1LL, 0);
12893         check(" 0",                                        0LL, 0);
12894         check("18446744073709551615",  18446744073709551615ULL, 0);
12895         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12896 #if 0 /* strtoull() for /^-/ strings is undefined. */
12897         check("-1",                    18446744073709551615ULL, 0);
12898         check("-18446744073709551614",                     2LL, 0);
12899         check("-18446744073709551615",                     1LL, 0);
12900         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12901         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12902 #endif
12903         if (!bad)
12904                 printf("ok\n");
12905 }
12906 EOCP
12907         set try
12908         if eval $compile; then
12909                 case "`$run ./try`" in
12910                 ok) echo "Your strtoull() seems to be working okay." ;;
12911                 *) cat <<EOM >&4
12912 Your strtoull() doesn't seem to be working okay.
12913 EOM
12914                    d_strtoull="$undef"
12915                    ;;
12916                 esac
12917         fi
12918         ;;
12919 esac
12920
12921 : see if strtouq exists
12922 set strtouq d_strtouq
12923 eval $inlibc
12924
12925 case "$d_strtouq" in
12926 "$define")
12927         $cat <<EOM
12928 Checking whether your strtouq() works okay...
12929 EOM
12930         $cat >try.c <<'EOCP'
12931 #include <errno.h>
12932 #include <stdio.h>
12933 extern unsigned long long int strtouq(char *s, char **, int); 
12934 static int bad = 0;
12935 void check(char *s, unsigned long long eull, int een) {
12936         unsigned long long gull;
12937         errno = 0;
12938         gull = strtouq(s, 0, 10);
12939         if (!((gull == eull) && (errno == een)))
12940                 bad++;
12941 }
12942 int main() {
12943         check(" 1",                                        1LL, 0);
12944         check(" 0",                                        0LL, 0);
12945         check("18446744073709551615",  18446744073709551615ULL, 0);
12946         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12947 #if 0 /* strtouq() for /^-/ strings is undefined. */
12948         check("-1",                    18446744073709551615ULL, 0);
12949         check("-18446744073709551614",                     2LL, 0);
12950         check("-18446744073709551615",                     1LL, 0);
12951         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12952         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12953 #endif
12954         if (!bad)
12955                 printf("ok\n");
12956         return 0;
12957 }
12958 EOCP
12959         set try
12960         if eval $compile; then
12961                 case "`$run ./try`" in
12962                 ok) echo "Your strtouq() seems to be working okay." ;;
12963                 *) cat <<EOM >&4
12964 Your strtouq() doesn't seem to be working okay.
12965 EOM
12966                    d_strtouq="$undef"
12967                    ;;
12968                 esac
12969         fi
12970         ;;
12971 esac
12972
12973 : see if strxfrm exists
12974 set strxfrm d_strxfrm
12975 eval $inlibc
12976
12977 : see if symlink exists
12978 set symlink d_symlink
12979 eval $inlibc
12980
12981 : see if syscall exists
12982 set syscall d_syscall
12983 eval $inlibc
12984
12985 : see if prototype for syscall is available
12986 echo " "
12987 set d_syscallproto syscall $i_unistd unistd.h
12988 eval $hasproto
12989
12990 : see if sysconf exists
12991 set sysconf d_sysconf
12992 eval $inlibc
12993
12994 : see if system exists
12995 set system d_system
12996 eval $inlibc
12997
12998 : see if tcgetpgrp exists
12999 set tcgetpgrp d_tcgetpgrp
13000 eval $inlibc
13001
13002 : see if tcsetpgrp exists
13003 set tcsetpgrp d_tcsetpgrp
13004 eval $inlibc
13005
13006 : see if prototype for telldir is available
13007 echo " "
13008 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13009 eval $hasproto
13010
13011 : see if this is a sys/times.h system
13012 set sys/times.h i_systimes
13013 eval $inhdr
13014
13015 : see if times exists
13016 echo " "
13017 if set times val -f d_times; eval $csym; $val; then
13018         echo 'times() found.' >&4
13019         d_times="$define"
13020         inc=''
13021         case "$i_systimes" in
13022         "$define") inc='sys/times.h';;
13023         esac
13024         rp="What is the type returned by times() on this system?"
13025         set clock_t clocktype long stdio.h sys/types.h $inc
13026         eval $typedef_ask
13027 else
13028         echo 'times() NOT found, hope that will do.' >&4
13029         d_times="$undef"
13030         clocktype='int'
13031 fi
13032
13033 : see if truncate exists
13034 set truncate d_truncate
13035 eval $inlibc
13036
13037 : see if tzname[] exists
13038 echo " "
13039 if set tzname val -a d_tzname; eval $csym; $val; then
13040         val="$define"
13041         echo 'tzname[] found.' >&4
13042 else
13043         val="$undef"
13044         echo 'tzname[] NOT found.' >&4
13045 fi
13046 set d_tzname
13047 eval $setvar
13048
13049 case "$osname" in
13050 next|rhapsody|darwin) multiarch="$define" ;;
13051 esac
13052 case "$multiarch" in
13053 ''|[nN]*) multiarch="$undef" ;;
13054 esac
13055
13056 : check for ordering of bytes in a long
13057 echo " "
13058 case "$usecrosscompile$multiarch" in
13059 *$define*)
13060         $cat <<EOM
13061 You seem to be either cross-compiling or doing a multiarchitecture build,
13062 skipping the byteorder check.
13063
13064 EOM
13065         byteorder='ffff'
13066         ;;
13067 *)
13068         case "$byteorder" in
13069         '')
13070                 $cat <<'EOM'
13071 In the following, larger digits indicate more significance.  A big-endian
13072 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13073 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13074 machines may have weird orders like 3412.  A Cray will report 87654321,
13075 an Alpha will report 12345678. If the test program works the default is
13076 probably right.
13077 I'm now running the test program...
13078 EOM
13079                 $cat >try.c <<'EOCP'
13080 #include <stdio.h>
13081 int main()
13082 {
13083         int i;
13084         union {
13085                 unsigned long l;
13086                 char c[sizeof(long)];
13087         } u;
13088
13089         if (sizeof(long) > 4)
13090                 u.l = (0x08070605L << 32) | 0x04030201L;
13091         else
13092                 u.l = 0x04030201L;
13093         for (i = 0; i < sizeof(long); i++)
13094                 printf("%c", u.c[i]+'0');
13095         printf("\n");
13096         exit(0);
13097 }
13098 EOCP
13099                 xxx_prompt=y
13100                 set try
13101                 if eval $compile && ./try > /dev/null; then
13102                         dflt=`$run ./try`
13103                         case "$dflt" in
13104                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13105                                 echo "(The test program ran ok.)"
13106                                 echo "byteorder=$dflt"
13107                                 xxx_prompt=n
13108                         ;;
13109                         ????|????????) echo "(The test program ran ok.)" ;;
13110                         *) echo "(The test program didn't run right for some reason.)" ;;
13111                         esac
13112                 else
13113                         dflt='4321'
13114                         cat <<'EOM'
13115 (I can't seem to compile the test program.  Guessing big-endian...)
13116 EOM
13117                 fi
13118                 case "$xxx_prompt" in
13119                 y)
13120                         rp="What is the order of bytes in a long?"
13121                         . ./myread
13122                         byteorder="$ans"
13123                         ;;
13124                 *)      byteorder=$dflt
13125                         ;;
13126                 esac
13127                 ;;
13128         esac
13129         $rm -f try.c try
13130         ;;
13131 esac
13132
13133
13134 $cat <<EOM
13135
13136 Checking to see whether you can access character data unalignedly...
13137 EOM
13138 $cat >try.c <<EOCP
13139 #include <stdio.h>
13140 #define U32 $u32type
13141 #define BYTEORDER $byteorder
13142 int main() {
13143 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13144     U8 buf[] = "\0\0\0\1\0\0\0\0";
13145     U32 *up;
13146     int i;
13147
13148     if (sizeof(U32) != 4) {
13149         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13150         exit(1);
13151     }
13152
13153     fflush(stdout);
13154
13155     for (i = 0; i < 4; i++) {
13156         up = (U32*)(buf + i);
13157         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13158                (*up == 1 << (8*(3-i)))  /* little-endian */
13159               )
13160            )
13161         {
13162             printf("read failed (%x)\n", *up);
13163             exit(2);
13164         }
13165     }
13166
13167     /* write test */
13168     for (i = 0; i < 4; i++) {
13169         up = (U32*)(buf + i);
13170         *up = 0xBeef;
13171         if (*up != 0xBeef) {
13172             printf("write failed (%x)\n", *up);
13173             exit(3);
13174         }
13175     }
13176
13177     exit(0);
13178 #else
13179     printf("1\n");
13180     exit(1);
13181 #endif
13182     return 0;
13183 }
13184 EOCP
13185 set try
13186 if eval $compile_ok; then
13187         echo "(Testing for character data alignment may dump core.)" >&4
13188         $run ./try 2>&1 >/dev/null
13189         case "$?" in
13190         0)      cat >&4 <<EOM
13191 You can access character data pretty unalignedly.
13192 EOM
13193                 d_u32align="$undef"
13194                 ;;
13195         *)      cat >&4 <<EOM
13196 It seems that you must access character data in an aligned manner.
13197 EOM
13198                 d_u32align="$define"
13199                 ;;
13200         esac
13201         $rm -f core core.try.* try.core
13202 else
13203         rp='Can you access character data at unaligned addresses?'
13204         dflt='n'
13205         . ./myread
13206         case "$ans" in
13207         [yY]*)  d_u32align="$undef"  ;;
13208         *)      d_u32align="$define" ;;
13209         esac
13210 fi
13211
13212 : see if ualarm exists
13213 set ualarm d_ualarm
13214 eval $inlibc
13215
13216 : see if umask exists
13217 set umask d_umask
13218 eval $inlibc
13219
13220 : see if usleep exists
13221 set usleep d_usleep
13222 eval $inlibc
13223
13224 : see if prototype for usleep is available
13225 echo " "
13226 set d_usleepproto usleep $i_unistd unistd.h
13227 eval $hasproto
13228
13229 : see if ustat exists
13230 set ustat d_ustat
13231 eval $inlibc
13232
13233 : backward compatibility for d_hvfork
13234 if test X$d_hvfork != X; then
13235         d_vfork="$d_hvfork"
13236         d_hvfork=''
13237 fi
13238 : see if there is a vfork
13239 val=''
13240 set vfork val
13241 eval $inlibc
13242
13243 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13244 : perl on Solaris 2.x, and probably elsewhere.
13245 case "$val" in
13246 $define)
13247         echo " "
13248         case "$usevfork" in
13249         false) dflt='n';;
13250         *) dflt='y';;
13251         esac
13252         cat <<'EOM'
13253  
13254 Perl can only use a vfork() that doesn't suffer from strict
13255 restrictions on calling functions or modifying global data in
13256 the child.  For example, glibc-2.1 contains such a vfork()
13257 that is unsuitable.  If your system provides a proper fork()
13258 call, chances are that you do NOT want perl to use vfork().
13259
13260 EOM
13261         rp="Do you still want to use vfork()?"
13262         . ./myread
13263         case "$ans" in
13264         y|Y) ;;
13265         *)
13266                 echo "Ok, we won't use vfork()."
13267                 val="$undef"
13268                 ;;
13269         esac
13270         ;;
13271 esac
13272 set d_vfork
13273 eval $setvar
13274 case "$d_vfork" in
13275 $define) usevfork='true';;
13276 *) usevfork='false';;
13277 esac
13278
13279 : see if this is an sysdir system
13280 set sys/dir.h i_sysdir
13281 eval $inhdr
13282
13283 : see if this is an sysndir system
13284 set sys/ndir.h i_sysndir
13285 eval $inhdr
13286
13287 : see if closedir exists
13288 set closedir d_closedir
13289 eval $inlibc
13290
13291 case "$d_closedir" in
13292 "$define")
13293         echo " "
13294         echo "Checking whether closedir() returns a status..." >&4
13295         cat > try.c <<EOM
13296 #$i_dirent I_DIRENT             /**/
13297 #$i_sysdir I_SYS_DIR            /**/
13298 #$i_sysndir I_SYS_NDIR          /**/
13299 #$i_systypes I_SYS_TYPES        /**/
13300
13301 #if defined(I_SYS_TYPES)
13302 #include <sys/types.h>
13303 #endif
13304 #if defined(I_DIRENT)
13305 #include <dirent.h>
13306 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13307 #include <sys/dir.h>
13308 #endif
13309 #else
13310 #ifdef I_SYS_NDIR
13311 #include <sys/ndir.h>
13312 #else
13313 #ifdef I_SYS_DIR
13314 #ifdef hp9000s500
13315 #include <ndir.h>       /* may be wrong in the future */
13316 #else
13317 #include <sys/dir.h>
13318 #endif
13319 #endif
13320 #endif
13321 #endif 
13322 int main() { return closedir(opendir(".")); }
13323 EOM
13324         set try
13325         if eval $compile_ok; then
13326                 if $run ./try > /dev/null 2>&1 ; then
13327                         echo "Yes, it does."
13328                         val="$undef"
13329                 else
13330                         echo "No, it doesn't."
13331                         val="$define"
13332                 fi
13333         else
13334                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13335                 val="$define"
13336         fi
13337         ;;
13338 *)
13339         val="$undef";
13340         ;;
13341 esac
13342 set d_void_closedir
13343 eval $setvar
13344 $rm -f try try.*
13345 : see if there is a wait4
13346 set wait4 d_wait4
13347 eval $inlibc
13348
13349 : see if waitpid exists
13350 set waitpid d_waitpid
13351 eval $inlibc
13352
13353 : see if wcstombs exists
13354 set wcstombs d_wcstombs
13355 eval $inlibc
13356
13357 : see if wctomb exists
13358 set wctomb d_wctomb
13359 eval $inlibc
13360
13361 : see if writev exists
13362 set writev d_writev
13363 eval $inlibc
13364
13365 : preserve RCS keywords in files with variable substitution, grrr
13366 Date='$Date'
13367 Id='$Id'
13368 Log='$Log'
13369 RCSfile='$RCSfile'
13370 Revision='$Revision'
13371
13372 : check for alignment requirements
13373 echo " "
13374 case "$usecrosscompile$multiarch" in
13375 *$define*)
13376         $cat <<EOM
13377 You seem to be either cross-compiling or doing a multiarchitecture build,
13378 skipping the memory alignment check.
13379
13380 EOM
13381         case "$alignbytes" in
13382         '') alignbytes=8 ;;
13383         esac
13384         ;;
13385 *)
13386         case "$alignbytes" in
13387         '') echo "Checking alignment constraints..." >&4
13388                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13389                         $cat >try.c <<'EOCP'
13390 typedef long double NV;
13391 EOCP
13392                 else
13393                         $cat >try.c <<'EOCP'
13394 typedef double NV;
13395 EOCP
13396                 fi
13397                 $cat >>try.c <<'EOCP'
13398 #include <stdio.h>
13399 struct foobar {
13400         char foo;
13401         NV bar;
13402 } try_algn;
13403 int main()
13404 {
13405     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13406     return(0);
13407 }
13408 EOCP
13409                 set try
13410                 if eval $compile_ok; then
13411                         dflt=`$run ./try`
13412                 else
13413                         dflt='8'
13414                         echo "(I can't seem to compile the test program...)"
13415                 fi
13416                 ;;
13417         *) dflt="$alignbytes"
13418                 ;;
13419         esac
13420         rp="Doubles must be aligned on a how-many-byte boundary?"
13421         . ./myread
13422         alignbytes="$ans"
13423         $rm -f try.c try
13424         ;;
13425 esac
13426
13427
13428 : set the base revision
13429 baserev=5.0
13430
13431 : how do we catenate cpp tokens here?
13432 echo " "
13433 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13434 $cat >cpp_stuff.c <<'EOCP'
13435 #define RCAT(a,b)a/**/b
13436 #define ACAT(a,b)a ## b
13437 RCAT(Rei,ser)
13438 ACAT(Cir,cus)
13439 EOCP
13440 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13441 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13442         echo "Oh!  Smells like ANSI's been here." >&4
13443         echo "We can catify or stringify, separately or together!"
13444         cpp_stuff=42
13445 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13446         echo "Ah, yes!  The good old days!" >&4
13447         echo "However, in the good old days we don't know how to stringify and"
13448         echo "catify at the same time."
13449         cpp_stuff=1
13450 else
13451         $cat >&4 <<EOM
13452 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13453 to have to edit the values of CAT[2-5] in config.h...
13454 EOM
13455         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13456 fi
13457 $rm -f cpp_stuff.*
13458
13459 : see if this is a db.h system
13460 set db.h i_db
13461 eval $inhdr
13462
13463 case "$i_db" in
13464 $define)
13465         : Check db version.
13466         echo " "
13467         echo "Checking Berkeley DB version ..." >&4
13468         $cat >try.c <<EOCP
13469 #$d_const HASCONST
13470 #ifndef HASCONST
13471 #define const
13472 #endif
13473 #include <sys/types.h>
13474 #include <stdio.h>
13475 #include <db.h>
13476 int main(int argc, char *argv[])
13477 {
13478 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13479     int Major, Minor, Patch ;
13480     unsigned long Version ;
13481     (void)db_version(&Major, &Minor, &Patch) ;
13482     if (argc == 2) {
13483         printf("%d %d %d %d %d %d\n",
13484                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13485                Major, Minor, Patch);
13486         exit(0);
13487     }
13488     printf("You have Berkeley DB Version 2 or greater.\n");
13489
13490     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13491                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13492     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13493                 Major, Minor, Patch) ;
13494
13495     /* check that db.h & libdb are compatible */
13496     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13497         printf("db.h and libdb are incompatible.\n") ;
13498         exit(3);        
13499     }
13500
13501     printf("db.h and libdb are compatible.\n") ;
13502
13503     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13504                 + DB_VERSION_PATCH ;
13505
13506     /* needs to be >= 2.3.4 */
13507     if (Version < 2003004) {
13508     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13509         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13510         exit(2);        
13511     }
13512
13513     exit(0);
13514 #else
13515 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13516     if (argc == 2) {
13517         printf("1 0 0\n");
13518         exit(0);
13519     }
13520     printf("You have Berkeley DB Version 1.\n");
13521     exit(0);    /* DB version < 2: the coast is clear. */
13522 #else
13523     exit(1);    /* <db.h> not Berkeley DB? */
13524 #endif
13525 #endif
13526 }
13527 EOCP
13528         set try
13529         if eval $compile_ok && $run ./try; then
13530                 echo 'Looks OK.' >&4
13531                 set `$run ./try 1`
13532                 db_version_major=$1
13533                 db_version_minor=$2
13534                 db_version_patch=$3
13535         else
13536                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13537                 i_db=$undef
13538                 case " $libs " in
13539                 *"-ldb "*)
13540                         : Remove db from list of libraries to use
13541                         echo "Removing unusable -ldb from library list" >&4
13542                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13543                         shift
13544                         libs="$*"
13545                         echo "libs = $libs" >&4
13546                         ;;
13547                 esac
13548         fi
13549         $rm -f try.*
13550         ;;
13551 esac
13552
13553 case "$i_db" in
13554 define)
13555         : Check the return type needed for hash 
13556         echo " "
13557         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13558         $cat >try.c <<EOCP
13559 #$d_const HASCONST
13560 #ifndef HASCONST
13561 #define const
13562 #endif
13563 #include <sys/types.h>
13564 #include <db.h>
13565
13566 #ifndef DB_VERSION_MAJOR
13567 u_int32_t hash_cb (ptr, size)
13568 const void *ptr;
13569 size_t size;
13570 {
13571 }
13572 HASHINFO info;
13573 int main()
13574 {
13575         info.hash = hash_cb;
13576 }
13577 #endif
13578 EOCP
13579         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13580                 if $contains warning try.out >>/dev/null 2>&1 ; then
13581                         db_hashtype='int'
13582                 else
13583                         db_hashtype='u_int32_t'
13584                 fi
13585         else
13586                 : XXX Maybe we should just give up here.
13587                 db_hashtype=u_int32_t
13588                 $cat try.out >&4
13589                 echo "Help:  I can't seem to compile the db test program." >&4
13590                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13591         fi
13592         $rm -f try.*
13593         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13594         ;;
13595 *)      db_hashtype=u_int32_t
13596         ;;
13597 esac
13598 case "$i_db" in
13599 define)
13600         : Check the return type needed for prefix 
13601         echo " "
13602         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13603         cat >try.c <<EOCP
13604 #$d_const HASCONST
13605 #ifndef HASCONST
13606 #define const
13607 #endif
13608 #include <sys/types.h>
13609 #include <db.h>
13610
13611 #ifndef DB_VERSION_MAJOR
13612 size_t prefix_cb (key1, key2)
13613 const DBT *key1;
13614 const DBT *key2;
13615 {
13616 }
13617 BTREEINFO info;
13618 int main()
13619 {
13620         info.prefix = prefix_cb;
13621 }
13622 #endif
13623 EOCP
13624         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13625                 if $contains warning try.out >>/dev/null 2>&1 ; then
13626                         db_prefixtype='int'
13627                 else
13628                         db_prefixtype='size_t'
13629                 fi
13630         else
13631                 db_prefixtype='size_t'
13632                 : XXX Maybe we should just give up here.
13633                 $cat try.out >&4
13634                 echo "Help:  I can't seem to compile the db test program." >&4
13635                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13636         fi
13637         $rm -f try.*
13638         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13639         ;;
13640 *)      db_prefixtype='size_t'
13641         ;;
13642 esac
13643
13644
13645 : How can we generate normalized random numbers ?
13646 echo " "
13647 echo "Looking for a random number function..." >&4
13648 case "$randfunc" in
13649 '')
13650         if set drand48 val -f; eval $csym; $val; then
13651                 dflt="drand48"
13652                 echo "Good, found drand48()." >&4
13653         elif set random val -f; eval $csym; $val; then
13654                 dflt="random"
13655                 echo "OK, found random()." >&4
13656         else
13657                 dflt="rand"
13658                 echo "Yick, looks like I have to use rand()." >&4
13659         fi
13660         echo " "
13661         ;;
13662 *)
13663         dflt="$randfunc"
13664         ;;
13665 esac
13666 cont=true
13667
13668 case "$ccflags" in
13669 *-Dmy_rand=*|*-Dmy_srand=*)
13670         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13671         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13672         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13673         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13674         ;;
13675 esac
13676
13677 while $test "$cont"; do
13678         rp="Use which function to generate random numbers?"
13679         . ./myread
13680         if $test "$ans" = "$dflt"; then
13681                 : null
13682         else
13683                 randbits=''
13684         fi
13685         randfunc="$ans"
13686         if set $ans val -f; eval $csym; $val; then
13687                 cont=''
13688         else
13689                 dflt=y
13690                 rp="I cannot find function $ans. Use that name anyway?"
13691                 . ./myread
13692                 dflt=rand
13693                 case "$ans" in
13694                         [yY]*) cont='';;
13695                 esac
13696         fi
13697         case "$cont" in
13698         '')
13699                 case "$randfunc" in
13700                 drand48)
13701                         drand01="drand48()"
13702                         seedfunc="srand48"
13703                         randbits=48
13704                         randseedtype=long
13705                         ;;
13706                 rand|random)
13707                         case "$randbits" in
13708                         '')
13709 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13710                                 $cat >try.c <<EOCP
13711 #$i_unistd I_UNISTD
13712 #$i_stdlib I_STDLIB
13713 #include <stdio.h>
13714 #ifdef I_UNISTD
13715 #  include <unistd.h>
13716 #endif
13717 #ifdef I_STDLIB
13718 #  include <stdlib.h>
13719 #endif
13720 int main()
13721 {
13722         register int i;
13723         register unsigned long tmp;
13724         register unsigned long max = 0L;
13725
13726         for (i = 1000; i; i--) {
13727                 tmp = (unsigned long) $randfunc();
13728                 if (tmp > max) max = tmp;
13729         }
13730         for (i = 0; max; i++)
13731                 max /= 2;
13732         printf("%d\n",i);
13733 }
13734 EOCP
13735                                 set try
13736                                 if eval $compile_ok; then
13737                                         dflt=`try`
13738                                 else
13739                                         dflt='?'
13740                                         echo "(I can't seem to compile the test program...)"
13741                                 fi
13742                                 ;;
13743                         *)
13744                                 dflt="$randbits"
13745                                 ;;
13746                         esac
13747                         rp="How many bits does your $randfunc() function produce?"
13748                         . ./myread
13749                         randbits="$ans"
13750                         $rm -f try.c try
13751                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13752                         seedfunc="s$randfunc"
13753                         randseedtype=unsigned
13754                         ;;
13755                 *)
13756                         dflt="31"
13757                         rp="How many bits does your $randfunc() function produce?"
13758                         . ./myread
13759                         randbits="$ans"
13760                         seedfunc="s$randfunc"
13761                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13762                         if set $seedfunc val -f; eval $csym; $val; then
13763                                 echo "(Using $seedfunc() to seed random generator)"
13764                         else
13765                                 echo "(Warning: no $seedfunc() to seed random generator)"
13766                                 seedfunc=rand
13767                         fi
13768                         randseedtype=unsigned
13769                         ;;
13770                 esac
13771                 ;;
13772         esac
13773 done
13774
13775 echo " "
13776 echo "Determining whether or not we are on an EBCDIC system..." >&4
13777 $cat >try.c <<'EOM'
13778 int main()
13779 {
13780   if ('M'==0xd4) return 0;
13781   return 1;
13782 }
13783 EOM
13784
13785 val=$undef
13786 set try
13787 if eval $compile_ok; then
13788         if $run ./try; then
13789                 echo "You seem to speak EBCDIC." >&4
13790                 val="$define"
13791         else
13792                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13793         fi
13794 else
13795         echo "I'm unable to compile the test program." >&4
13796         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13797 fi
13798 $rm -f try try.*
13799 set ebcdic
13800 eval $setvar
13801
13802 echo " "
13803 $cat >&4 <<EOM
13804 Checking how to flush all pending stdio output...
13805 EOM
13806 # I only know how to find the first 32 possibly open files on SunOS.
13807 # See also hints/sunos_4_1.sh and util.c  --AD
13808 case "$osname" in
13809 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13810 esac
13811 $cat >>try.c <<EOCP
13812 #include <stdio.h>
13813 #$i_unistd I_UNISTD
13814 #ifdef I_UNISTD
13815 # include <unistd.h>
13816 #endif
13817 #$d_sysconf HAS_SYSCONF
13818 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13819 #ifdef HAS_STDIO_STREAM_ARRAY
13820 # define STDIO_STREAM_ARRAY $stdio_stream_array
13821 #endif
13822 int main() {
13823   FILE* p;
13824   unlink("try.out");
13825   p = fopen("try.out", "w");
13826 #ifdef TRY_FPUTC
13827   fputc('x', p);
13828 #else
13829 # ifdef TRY_FPRINTF
13830   fprintf(p, "x");
13831 # endif
13832 #endif
13833 #ifdef TRY_FFLUSH_NULL
13834   fflush(NULL);
13835 #endif
13836 #ifdef TRY_FFLUSH_ALL
13837   {
13838     long open_max = -1;
13839 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13840     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13841 # else
13842 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13843     open_max = sysconf(_SC_OPEN_MAX);
13844 #  else
13845 #   ifdef FOPEN_MAX
13846     open_max = FOPEN_MAX;
13847 #   else
13848 #    ifdef OPEN_MAX
13849     open_max = OPEN_MAX;
13850 #    else
13851 #     ifdef _NFILE
13852     open_max = _NFILE;
13853 #     endif
13854 #    endif
13855 #   endif
13856 #  endif
13857 # endif 
13858 # ifdef HAS_STDIO_STREAM_ARRAY
13859     if (open_max > 0) {
13860       long i;
13861       for (i = 0; i < open_max; i++)
13862             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13863                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13864                 STDIO_STREAM_ARRAY[i]._flag)
13865                 fflush(&STDIO_STREAM_ARRAY[i]);
13866     }   
13867   }
13868 # endif
13869 #endif
13870   _exit(42);
13871 }
13872 EOCP
13873 : first we have to find out how _not_ to flush
13874 $to try.c
13875 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13876     output=''
13877     set try -DTRY_FPUTC
13878     if eval $compile; then
13879             $run ./try 2>/dev/null
13880             code="$?"
13881             $from try.out
13882             if $test ! -s try.out -a "X$code" = X42; then
13883                 output=-DTRY_FPUTC
13884             fi
13885     fi
13886     case "$output" in
13887     '')
13888             set try -DTRY_FPRINTF
13889             if eval $compile; then
13890                     $run ./try 2>/dev/null
13891                     code="$?"
13892                     $from try.out
13893                     if $test ! -s try.out -a "X$code" = X42; then
13894                         output=-DTRY_FPRINTF
13895                     fi
13896             fi
13897         ;;
13898     esac
13899 fi
13900 : check for fflush NULL behaviour
13901 case "$fflushNULL" in
13902 '')     set try -DTRY_FFLUSH_NULL $output
13903         if eval $compile; then
13904                 $run ./try 2>/dev/null
13905                 code="$?"
13906                 $from try.out
13907                 if $test -s try.out -a "X$code" = X42; then
13908                         fflushNULL="`$cat try.out`"
13909                 else
13910                         if $test "X$code" != X42; then
13911                                 $cat >&4 <<EOM
13912 (If this test failed, don't worry, we'll try another method shortly.)
13913 EOM
13914                         fi
13915                 fi
13916         fi
13917         $rm -f core try.core core.try.*
13918         case "$fflushNULL" in
13919         x)      $cat >&4 <<EOM
13920 Your fflush(NULL) works okay for output streams.
13921 Let's see if it clobbers input pipes...
13922 EOM
13923 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13924 # bug that improperly flushes the input end of pipes.  So we avoid the
13925 # autoflush on fork/system/exec support for now. :-(
13926 $cat >tryp.c <<EOCP
13927 #include <stdio.h>
13928 int
13929 main(int argc, char **argv)
13930 {
13931     char buf[1024];
13932     int i;
13933     char *bp = buf;
13934     while (1) {
13935         while ((i = getc(stdin)) != -1
13936                && (*bp++ = i) != '\n'
13937                && bp < &buf[1024])
13938         /* DO NOTHING */ ;
13939         *bp = '\0';
13940         fprintf(stdout, "%s", buf);
13941         fflush(NULL);
13942         if (i == -1)
13943             return 0;
13944         bp = buf;
13945     }
13946 }
13947 EOCP
13948                 fflushNULL="$define"
13949                 set tryp
13950                 if eval $compile; then
13951                     $rm -f tryp.out
13952                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13953                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13954                        $cat >&4 <<EOM
13955 fflush(NULL) seems to behave okay with input streams.
13956 EOM
13957                         fflushNULL="$define"
13958                     else
13959                         $cat >&4 <<EOM
13960 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13961 EOM
13962                         fflushNULL="$undef"
13963                     fi
13964                 fi
13965                 $rm -f core tryp.c tryp.core core.tryp.*
13966                 ;;
13967         '')     $cat >&4 <<EOM
13968 Your fflush(NULL) isn't working (contrary to ANSI C).
13969 EOM
13970                 fflushNULL="$undef"
13971                 ;;
13972         *)      $cat >&4 <<EOM
13973 Cannot figure out whether your fflush(NULL) works or not.
13974 I'm assuming it doesn't (contrary to ANSI C).
13975 EOM
13976                 fflushNULL="$undef"
13977                 ;;
13978         esac
13979         ;;
13980 $define|true|[yY]*)
13981         fflushNULL="$define"
13982         ;;
13983 *)
13984         fflushNULL="$undef"
13985         ;;
13986 esac
13987 : check explicit looping only if NULL did not work, and if the pipe
13988 : bug does not show up on an explicit flush too
13989 case "$fflushNULL" in
13990 "$undef")
13991         $cat >tryp.c <<EOCP
13992 #include <stdio.h>
13993 int
13994 main(int argc, char **argv)
13995 {
13996     char buf[1024];
13997     int i;
13998     char *bp = buf;
13999     while (1) {
14000         while ((i = getc(stdin)) != -1
14001                && (*bp++ = i) != '\n'
14002                && bp < &buf[1024])
14003         /* DO NOTHING */ ;
14004         *bp = '\0';
14005         fprintf(stdout, "%s", buf);
14006         fflush(stdin);
14007         if (i == -1)
14008             return 0;
14009         bp = buf;
14010     }
14011 }
14012 EOCP
14013         set tryp
14014         if eval $compile; then
14015             $rm -f tryp.out
14016             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14017             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14018                $cat >&4 <<EOM
14019 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14020 EOM
14021                 : now check for fflushall behaviour
14022                 case "$fflushall" in
14023                 '')     set try -DTRY_FFLUSH_ALL $output
14024                         if eval $compile; then
14025                                 $cat >&4 <<EOM
14026 (Now testing the other method--but note that this also may fail.)
14027 EOM
14028                                 $run ./try 2>/dev/null
14029                                 code=$?
14030                                 $from try.out
14031                                 if $test -s try.out -a "X$code" = X42; then
14032                                         fflushall="`$cat try.out`"
14033                                 fi
14034                         fi
14035                         $rm -f core try.core core.try.*
14036                         case "$fflushall" in
14037                         x)      $cat >&4 <<EOM
14038 Whew. Flushing explicitly all the stdio streams works.
14039 EOM
14040                                 fflushall="$define"
14041                                 ;;
14042                         '')     $cat >&4 <<EOM
14043 Sigh. Flushing explicitly all the stdio streams doesn't work.
14044 EOM
14045                                 fflushall="$undef"
14046                                 ;;
14047                         *)      $cat >&4 <<EOM
14048 Cannot figure out whether flushing stdio streams explicitly works or not.
14049 I'm assuming it doesn't.
14050 EOM
14051                                 fflushall="$undef"
14052                                 ;;
14053                         esac
14054                         ;;
14055                 "$define"|true|[yY]*)
14056                         fflushall="$define"
14057                         ;;
14058                 *)
14059                         fflushall="$undef"
14060                         ;;
14061                 esac
14062             else
14063                 $cat >&4 <<EOM
14064 All is futile.  Even fflush(stdin) clobbers input pipes!
14065 EOM
14066                 fflushall="$undef"
14067             fi
14068         else
14069             fflushall="$undef"
14070         fi
14071         $rm -f core tryp.c tryp.core core.tryp.*
14072         ;;
14073 *)      fflushall="$undef"
14074         ;;
14075 esac
14076
14077 case "$fflushNULL$fflushall" in
14078 undefundef)
14079         $cat <<EOM
14080 OK, I give up.  I cannot figure out how to flush pending stdio output.
14081 We won't be flushing handles at all before fork/exec/popen.
14082 EOM
14083         ;;
14084 esac
14085 $rm -f try.* try$exe_ext
14086
14087 : Store the full pathname to the ar program for use in the C program
14088 : Respect a hint or command line value for full_ar.
14089 case "$full_ar" in
14090 '') full_ar=$ar ;;
14091 esac
14092
14093 : Store the full pathname to the sed program for use in the C program
14094 full_sed=$sed
14095
14096 : see what type gids are declared as in the kernel
14097 echo " "
14098 echo "Looking for the type for group ids returned by getgid()."
14099 set gid_t gidtype xxx stdio.h sys/types.h
14100 eval $typedef
14101 case "$gidtype" in
14102 xxx)
14103         xxx=`./findhdr sys/user.h`
14104         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14105         case $1 in
14106         unsigned) dflt="$1 $2" ;;
14107         *) dflt="$1" ;;
14108         esac
14109         ;;
14110 *) dflt="$gidtype";;
14111 esac
14112 case "$gidtype" in
14113 gid_t) echo "gid_t found." ;;
14114 *)      rp="What is the type for group ids returned by getgid()?"
14115         . ./myread
14116         gidtype="$ans"
14117         ;;
14118 esac
14119
14120 echo " "
14121 case "$gidtype" in
14122 *_t) zzz="$gidtype"     ;;
14123 *)   zzz="gid"          ;;
14124 esac
14125 echo "Checking the size of $zzz..." >&4 
14126 cat > try.c <<EOCP
14127 #include <sys/types.h>
14128 #include <stdio.h>
14129 int main() {
14130     printf("%d\n", (int)sizeof($gidtype));
14131     exit(0);
14132 }
14133 EOCP
14134 set try
14135 if eval $compile_ok; then
14136         yyy=`$run ./try`
14137         case "$yyy" in
14138         '')     gidsize=4
14139                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14140                 ;;
14141         *)      gidsize=$yyy
14142                 echo "Your $zzz is $gidsize bytes long."
14143                 ;;
14144         esac
14145 else
14146         gidsize=4
14147         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14148 fi
14149
14150
14151 echo " "
14152 case "$gidtype" in
14153 *_t) zzz="$gidtype"     ;;
14154 *)   zzz="gid"          ;;
14155 esac
14156 echo "Checking the sign of $zzz..." >&4 
14157 cat > try.c <<EOCP
14158 #include <sys/types.h>
14159 #include <stdio.h>
14160 int main() {
14161         $gidtype foo = -1;
14162         if (foo < 0)
14163                 printf("-1\n");
14164         else
14165                 printf("1\n");
14166 }
14167 EOCP
14168 set try
14169 if eval $compile; then
14170         yyy=`$run ./try`
14171         case "$yyy" in
14172         '')     gidsign=1
14173                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14174                 ;;
14175         *)      gidsign=$yyy
14176                 case "$gidsign" in
14177                  1) echo "Your $zzz is unsigned." ;;
14178                 -1) echo "Your $zzz is signed."   ;;
14179                 esac
14180                 ;;
14181         esac
14182 else
14183         gidsign=1
14184         echo "(I can't compile the test program--guessing unsigned.)" >&4
14185 fi
14186
14187
14188 echo " "
14189
14190 if $test X"$quadtype" != X; then
14191
14192 echo "Checking how to print 64-bit integers..." >&4
14193
14194 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14195         $cat >try.c <<'EOCP'
14196 #include <sys/types.h>
14197 #include <stdio.h>
14198 int main() {
14199   int q = 12345678901;
14200   printf("%ld\n", q);
14201 }
14202 EOCP
14203         set try
14204         if eval $compile; then
14205                 yyy=`$run ./try`
14206                 case "$yyy" in
14207                 12345678901)
14208                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14209                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14210                         echo "We will use %d."
14211                         ;;
14212                 esac
14213         fi
14214 fi
14215
14216 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14217         $cat >try.c <<'EOCP'
14218 #include <sys/types.h>
14219 #include <stdio.h>
14220 int main() {
14221   long q = 12345678901;
14222   printf("%ld\n", q);
14223 }
14224 EOCP
14225         set try
14226         if eval $compile; then
14227                 yyy=`$run ./try`
14228                 case "$yyy" in
14229                 12345678901)
14230                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14231                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14232                         echo "We will use %ld."
14233                         ;;
14234                 esac
14235         fi
14236 fi
14237
14238 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14239         $cat >try.c <<'EOCP'
14240 #include <sys/types.h>
14241 #include <inttypes.h>
14242 #include <stdio.h>
14243 int main() {
14244   int64_t q = 12345678901;
14245   printf("%" PRId64 "\n", q);
14246 }
14247 EOCP
14248         set try
14249         if eval $compile; then
14250                 yyy=`$run ./try`
14251                 case "$yyy" in
14252                 12345678901)
14253                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14254                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14255                         echo "We will use the C9X style."
14256                         ;;
14257                 esac
14258         fi
14259 fi
14260
14261 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14262         $cat >try.c <<EOCP
14263 #include <sys/types.h>
14264 #include <stdio.h>
14265 int main() {
14266   $quadtype q = 12345678901;
14267   printf("%Ld\n", q);
14268 }
14269 EOCP
14270         set try
14271         if eval $compile; then
14272                 yyy=`$run ./try`
14273                 case "$yyy" in
14274                 12345678901)
14275                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14276                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14277                         echo "We will use %Ld."
14278                         ;;
14279                 esac
14280         fi
14281 fi
14282
14283 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14284         $cat >try.c <<'EOCP'
14285 #include <sys/types.h>
14286 #include <stdio.h>
14287 int main() {
14288   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14289   printf("%lld\n", q);
14290 }
14291 EOCP
14292         set try
14293         if eval $compile; then
14294                 yyy=`$run ./try`
14295                 case "$yyy" in
14296                 12345678901)
14297                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14298                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14299                         echo "We will use the %lld style."
14300                         ;;
14301                 esac
14302         fi
14303 fi
14304
14305 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14306         $cat >try.c <<EOCP
14307 #include <sys/types.h>
14308 #include <stdio.h>
14309 int main() {
14310   $quadtype q = 12345678901;
14311   printf("%qd\n", q);
14312 }
14313 EOCP
14314         set try
14315         if eval $compile; then
14316                 yyy=`$run ./try`
14317                 case "$yyy" in
14318                 12345678901)
14319                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14320                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14321                         echo "We will use %qd."
14322                         ;;
14323                 esac
14324         fi
14325 fi
14326
14327 if $test X"$sPRId64" = X; then
14328         echo "Cannot figure out how to print 64-bit integers." >&4
14329 fi
14330
14331 $rm -f try try.*
14332
14333 fi
14334
14335 case "$sPRId64" in
14336 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14337         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14338         ;;
14339 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14340         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14341         ;;
14342 esac
14343
14344
14345 echo " "
14346 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14347
14348 if $test X"$ivsize" = X8; then
14349         ivdformat="$sPRId64"
14350         uvuformat="$sPRIu64"
14351         uvoformat="$sPRIo64"
14352         uvxformat="$sPRIx64"
14353         uvXUformat="$sPRIXU64"
14354 else
14355         if $test X"$ivsize" = X"$longsize"; then
14356                 ivdformat='"ld"'
14357                 uvuformat='"lu"'
14358                 uvoformat='"lo"'
14359                 uvxformat='"lx"'
14360                 uvXUformat='"lX"'
14361         else
14362                 if $test X"$ivsize" = X"$intsize"; then
14363                         ivdformat='"d"'
14364                         uvuformat='"u"'
14365                         uvoformat='"o"'
14366                         uvxformat='"x"'
14367                         uvXUformat='"X"'
14368                 else
14369                         : far out
14370                         if $test X"$ivsize" = X"$shortsize"; then
14371                                 ivdformat='"hd"'
14372                                 uvuformat='"hu"'
14373                                 uvoformat='"ho"'
14374                                 uvxformat='"hx"'
14375                                 uvXUformat='"hX"'
14376                         fi
14377                 fi
14378         fi
14379 fi
14380
14381 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14382         nveformat="$sPRIeldbl"
14383         nvfformat="$sPRIfldbl"
14384         nvgformat="$sPRIgldbl"
14385         nvEUformat="$sPRIEUldbl"
14386         nvFUformat="$sPRIFUldbl"
14387         nvGUformat="$sPRIGUldbl"
14388 else
14389         nveformat='"e"'
14390         nvfformat='"f"'
14391         nvgformat='"g"'
14392         nvEUformat='"E"'
14393         nvFUformat='"F"'
14394         nvGUformat='"G"'
14395 fi
14396
14397 case "$ivdformat" in
14398 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14399     exit 1
14400     ;;
14401 esac
14402
14403
14404 echo " "
14405 $echo "Checking the format string to be used for gids..." >&4
14406
14407 case "$gidsign" in
14408 -1)     if $test X"$gidsize" = X"$ivsize"; then
14409                 gidformat="$ivdformat"
14410         else
14411                 if $test X"$gidsize" = X"$longsize"; then
14412                         gidformat='"ld"'
14413                 else
14414                         if $test X"$gidsize" = X"$intsize"; then
14415                                 gidformat='"d"'
14416                         else
14417                                 if $test X"$gidsize" = X"$shortsize"; then
14418                                         gidformat='"hd"'
14419                                 fi
14420                         fi
14421                 fi
14422         fi
14423         ;;
14424 *)      if $test X"$gidsize" = X"$uvsize"; then
14425                 gidformat="$uvuformat"
14426         else
14427                 if $test X"$gidsize" = X"$longsize"; then
14428                         gidformat='"lu"'
14429                 else
14430                         if $test X"$gidsize" = X"$intsize"; then
14431                                 gidformat='"u"'
14432                         else
14433                                 if $test X"$gidsize" = X"$shortsize"; then
14434                                         gidformat='"hu"'
14435                                 fi
14436                         fi
14437                 fi
14438         fi
14439         ;;
14440 esac
14441
14442 : see if getgroups exists
14443 set getgroups d_getgrps
14444 eval $inlibc
14445
14446 : see if setgroups exists
14447 set setgroups d_setgrps
14448 eval $inlibc
14449
14450
14451 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14452 echo " "
14453 case "$d_getgrps$d_setgrps" in
14454 *define*)
14455         case "$groupstype" in
14456         '') dflt="$gidtype" ;;
14457         *)  dflt="$groupstype" ;;
14458         esac
14459         $cat <<EOM
14460 What type of pointer is the second argument to getgroups() and setgroups()?
14461 Usually this is the same as group ids, $gidtype, but not always.
14462
14463 EOM
14464         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14465         . ./myread
14466         groupstype="$ans"
14467         ;;
14468 *)  groupstype="$gidtype";;
14469 esac
14470
14471 echo " "
14472 echo "Checking if your $make program sets \$(MAKE)..." >&4
14473 case "$make_set_make" in
14474 '')
14475         $sed 's/^X //' > testmake.mak << 'EOF'
14476 Xall:
14477 X       @echo 'maketemp="$(MAKE)"'
14478 EOF
14479         case "`$make -f testmake.mak 2>/dev/null`" in
14480         *maketemp=*) make_set_make='#' ;;
14481         *)      make_set_make="MAKE=$make" ;;
14482         esac
14483         $rm -f testmake.mak
14484         ;;
14485 esac
14486 case "$make_set_make" in
14487 '#') echo "Yup, it does.";;
14488 *) echo "Nope, it doesn't.";;
14489 esac
14490
14491 : see what type is used for mode_t
14492 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14493 set mode_t modetype int stdio.h sys/types.h
14494 eval $typedef_ask
14495
14496 : see if stdarg is available
14497 echo " "
14498 if $test `./findhdr stdarg.h`; then
14499         echo "<stdarg.h> found." >&4
14500         valstd="$define"
14501 else
14502         echo "<stdarg.h> NOT found." >&4
14503         valstd="$undef"
14504 fi
14505
14506 : see if varags is available
14507 echo " "
14508 if $test `./findhdr varargs.h`; then
14509         echo "<varargs.h> found." >&4
14510 else
14511         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14512 fi
14513
14514 : set up the varargs testing programs
14515 $cat > varargs.c <<EOP
14516 #ifdef I_STDARG
14517 #include <stdarg.h>
14518 #endif
14519 #ifdef I_VARARGS
14520 #include <varargs.h>
14521 #endif
14522
14523 #ifdef I_STDARG
14524 int f(char *p, ...)
14525 #else
14526 int f(va_alist)
14527 va_dcl
14528 #endif
14529 {
14530         va_list ap;
14531 #ifndef I_STDARG
14532         char *p;
14533 #endif
14534 #ifdef I_STDARG
14535         va_start(ap,p);
14536 #else
14537         va_start(ap);
14538         p = va_arg(ap, char *);
14539 #endif
14540         va_end(ap);
14541 }
14542 EOP
14543 $cat > varargs <<EOP
14544 $startsh
14545 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14546         echo "true"
14547 else
14548         echo "false"
14549 fi
14550 $rm -f varargs$_o
14551 EOP
14552 chmod +x varargs
14553
14554 : now check which varargs header should be included
14555 echo " "
14556 i_varhdr=''
14557 case "$valstd" in
14558 "$define")
14559         if `./varargs I_STDARG`; then
14560                 val='stdarg.h'
14561         elif `./varargs I_VARARGS`; then
14562                 val='varargs.h'
14563         fi
14564         ;;
14565 *)
14566         if `./varargs I_VARARGS`; then
14567                 val='varargs.h'
14568         fi
14569         ;;
14570 esac
14571 case "$val" in
14572 '')
14573 echo "I could not find the definition for va_dcl... You have problems..." >&4
14574         val="$undef"; set i_stdarg; eval $setvar
14575         val="$undef"; set i_varargs; eval $setvar
14576         ;;
14577 *) 
14578         set i_varhdr
14579         eval $setvar
14580         case "$i_varhdr" in
14581         stdarg.h)
14582                 val="$define"; set i_stdarg; eval $setvar
14583                 val="$undef"; set i_varargs; eval $setvar
14584                 ;;
14585         varargs.h)
14586                 val="$undef"; set i_stdarg; eval $setvar
14587                 val="$define"; set i_varargs; eval $setvar
14588                 ;;
14589         esac
14590         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14591 esac
14592 $rm -f varargs*
14593
14594 : see if we need va_copy
14595 echo " "
14596 case "$i_stdarg" in
14597 "$define")
14598         $cat >try.c <<EOCP
14599 #include <stdarg.h>
14600 #include <stdio.h>
14601 #$i_stdlib I_STDLIB
14602 #ifdef I_STDLIB
14603 #include <stdlib.h>
14604 #endif
14605 #include <signal.h>
14606
14607 int
14608 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14609 {
14610   return vfprintf(f, fmt, *valp);
14611 }
14612  
14613 int    
14614 myvfprintf(FILE *f, const  char *fmt, va_list val)
14615 {
14616   return ivfprintf(f, fmt, &val);
14617 }
14618       
14619 int
14620 myprintf(char *fmt, ...) 
14621 {
14622   va_list val;
14623   va_start(val, fmt);
14624   return myvfprintf(stdout, fmt, val); 
14625 }         
14626
14627 int
14628 main(int ac, char **av)
14629 {
14630   signal(SIGSEGV, exit);
14631
14632   myprintf("%s%cs all right, then\n", "that", '\'');                            
14633   exit(0);      
14634 }
14635 EOCP
14636         set try
14637         if eval $compile && $run ./try 2>&1 >/dev/null; then
14638                 case "`$run ./try`" in
14639                 "that's all right, then")
14640                         okay=yes
14641                         ;;
14642                 esac
14643         fi
14644         case "$okay" in
14645         yes)    echo "It seems that you don't need va_copy()." >&4
14646                 need_va_copy="$undef"
14647                 ;;
14648         *)      echo "It seems that va_copy() or similar will be needed." >&4
14649                 need_va_copy="$define"
14650                 ;;
14651         esac
14652         $rm -f try.* core core.* *.core *.core.*
14653         ;;
14654 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14655         ;;
14656 esac
14657
14658 : define a fucntion to check prototypes
14659 $cat > protochk <<EOSH
14660 $startsh
14661 cc="$cc"
14662 optimize="$optimize"
14663 ccflags="$ccflags"
14664 prototype="$prototype"
14665 define="$define"
14666 rm=$rm
14667 EOSH
14668
14669 $cat >> protochk <<'EOSH'
14670
14671 $rm -f try.c
14672 foo="$1"
14673 shift
14674 while test $# -ge 2; do
14675         case "$1" in
14676                 $define) echo "#include <$2>" >> try.c ;;
14677                 literal) echo "$2" >> try.c ;;
14678         esac
14679     shift 2
14680 done
14681 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14682 cat >> try.c <<'EOCP'
14683 #ifdef CAN_PROTOTYPE
14684 #define _(args) args
14685 #else
14686 #define _(args) ()
14687 #endif
14688 EOCP
14689 echo "$foo" >> try.c
14690 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14691 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14692 status=$?
14693 $rm -f try.[co]
14694 exit $status
14695 EOSH
14696 chmod +x protochk
14697 $eunicefix protochk
14698
14699 : see what type is used for size_t
14700 rp="What is the type used for the length parameter for string functions?"
14701 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14702 eval $typedef_ask
14703
14704 : check for type of arguments to gethostbyaddr. 
14705 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14706         case "$d_gethbyaddr" in
14707         $define)
14708                 $cat <<EOM
14709
14710 Checking to see what type of arguments are accepted by gethostbyaddr().
14711 EOM
14712                 hdrs="$define sys/types.h
14713                         $d_socket sys/socket.h 
14714                         $i_niin netinet/in.h 
14715                         $i_netdb netdb.h
14716                         $i_unistd unistd.h"
14717                 : The first arg can 'char *' or 'void *'
14718                 : The second arg is some of integral type
14719                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14720                         for yyy in size_t long int; do
14721                                 case "$netdb_host_type" in
14722                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14723                                         if ./protochk "$try" $hdrs; then
14724                                                 echo "Your system accepts $xxx for the first arg."
14725                                                 echo "...and $yyy for the second arg."
14726                                                 netdb_host_type="$xxx"
14727                                                 netdb_hlen_type="$yyy"
14728                                         fi
14729                                         ;;
14730                                 esac
14731                         done
14732                 done
14733                 : In case none of those worked, prompt the user.
14734                 case "$netdb_host_type" in
14735                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14736                         dflt='char *'
14737                         . ./myread
14738                         netdb_host_type=$ans
14739                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14740                         dflt="$sizetype"
14741                         . ./myread
14742                         netdb_hlen_type=$ans
14743                         ;;
14744                 esac
14745                 ;;
14746         *)      : no gethostbyaddr, so pick harmless defaults
14747                 netdb_host_type='char *'
14748                 netdb_hlen_type="$sizetype"
14749                 ;;
14750         esac
14751         # Remove the "const" if needed. -- but then we'll have a 
14752         # prototype clash!
14753         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14754 fi
14755
14756 : check for type of argument to gethostbyname. 
14757 if test "X$netdb_name_type" = X ; then
14758         case "$d_gethbyname" in
14759         $define)
14760                 $cat <<EOM
14761
14762 Checking to see what type of argument is accepted by gethostbyname().
14763 EOM
14764                 hdrs="$define sys/types.h
14765                         $d_socket sys/socket.h 
14766                         $i_niin netinet/in.h 
14767                         $i_netdb netdb.h
14768                         $i_unistd unistd.h"
14769                 for xxx in "const char *" "char *"; do
14770                         case "$netdb_name_type" in
14771                         '')     try="extern struct hostent *gethostbyname($xxx);"
14772                                 if ./protochk "$try" $hdrs; then
14773                                         echo "Your system accepts $xxx."
14774                                         netdb_name_type="$xxx"
14775                                 fi
14776                                 ;;
14777                         esac
14778                 done
14779                 : In case none of those worked, prompt the user.
14780                 case "$netdb_name_type" in
14781                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14782                         dflt='char *'
14783                         . ./myread
14784                         netdb_name_type=$ans
14785                         ;;
14786                 esac
14787                 ;;
14788         *)      : no gethostbyname, so pick harmless default
14789                 netdb_name_type='char *'
14790                 ;;
14791         esac
14792 fi
14793
14794 : check for type of 1st argument to getnetbyaddr. 
14795 if test "X$netdb_net_type" = X ; then
14796         case "$d_getnbyaddr" in
14797         $define)
14798                 $cat <<EOM
14799
14800 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14801 EOM
14802                 hdrs="$define sys/types.h
14803                         $d_socket sys/socket.h 
14804                         $i_niin netinet/in.h 
14805                         $i_netdb netdb.h
14806                         $i_unistd unistd.h"
14807                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14808                         case "$netdb_net_type" in
14809                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14810                                 if ./protochk "$try" $hdrs; then
14811                                         echo "Your system accepts $xxx."
14812                                         netdb_net_type="$xxx"
14813                                 fi
14814                                 ;;
14815                         esac
14816                 done
14817                 : In case none of those worked, prompt the user.
14818                 case "$netdb_net_type" in
14819                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14820                         dflt='long'
14821                         . ./myread
14822                         netdb_net_type=$ans
14823                         ;;
14824                 esac
14825                 ;;
14826         *)      : no getnetbyaddr, so pick harmless default
14827                 netdb_net_type='long'
14828                 ;;
14829         esac
14830 fi
14831 : locate the preferred pager for this system
14832 case "$pager" in
14833 '')
14834         dflt=''
14835         case "$pg" in
14836         /*) dflt=$pg;;
14837         [a-zA-Z]:/*) dflt=$pg;;
14838         esac
14839         case "$more" in
14840         /*) dflt=$more;;
14841         [a-zA-Z]:/*) dflt=$more;;
14842         esac
14843         case "$less" in
14844         /*) dflt=$less;;
14845         [a-zA-Z]:/*) dflt=$less;;
14846         esac
14847         case "$dflt" in
14848         '') dflt=/usr/ucb/more;;
14849         esac
14850         ;;
14851 *) dflt="$pager";;
14852 esac
14853 echo " "
14854 fn=f/
14855 rp='What pager is used on your system?'
14856 . ./getfile
14857 pager="$ans"
14858
14859 : see what type pids are declared as in the kernel
14860 rp="What is the type of process ids on this system?"
14861 set pid_t pidtype int stdio.h sys/types.h
14862 eval $typedef_ask
14863
14864 : Find earliest binary compatible site_perl subdirectory perl can use.
14865 case "$bincompat5005" in
14866 "$define") xs_apiversion='5.005' ;;
14867 *) xs_apiversion=$version ;;   # The current site_perl version.
14868 esac
14869 : Find earliest pure perl site_perl subdirectory perl can use.
14870 : The versioned directories started at 5.005.
14871 pm_apiversion='5.005'
14872
14873 : see if ar generates random libraries by itself
14874 echo " "
14875 echo "Checking how to generate random libraries on your machine..." >&4
14876 echo 'int bar1() { return bar2(); }' > bar1.c
14877 echo 'int bar2() { return 2; }' > bar2.c
14878 $cat > foo.c <<'EOP'
14879 int main() { printf("%d\n", bar1()); exit(0); }
14880 EOP
14881 $cc $ccflags -c bar1.c >/dev/null 2>&1
14882 $cc $ccflags -c bar2.c >/dev/null 2>&1
14883 $cc $ccflags -c foo.c >/dev/null 2>&1
14884 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14885 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14886         $run ./foobar >/dev/null 2>&1; then
14887         echo "$ar appears to generate random libraries itself."
14888         orderlib=false
14889         ranlib=":"
14890 elif $ar ts bar$_a >/dev/null 2>&1 &&
14891         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14892         $run ./foobar >/dev/null 2>&1; then
14893                 echo "a table of contents needs to be added with '$ar ts'."
14894                 orderlib=false
14895                 ranlib="$ar ts"
14896 else
14897         case "$ranlib" in
14898         :) ranlib='';;
14899         '')
14900                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14901                 $test -f $ranlib || ranlib=''
14902                 ;;
14903         esac
14904         if $test -n "$ranlib"; then
14905                 echo "your system has '$ranlib'; we'll use that."
14906                 orderlib=false
14907         else
14908                 echo "your system doesn't seem to support random libraries"
14909                 echo "so we'll use lorder and tsort to order the libraries."
14910                 orderlib=true
14911                 ranlib=":"
14912         fi
14913 fi
14914 $rm -f foo* bar* 
14915
14916 : check for type of arguments to select. 
14917 case "$selecttype" in
14918 '') case "$d_select" in
14919         $define)
14920                 echo " "
14921                 $cat <<EOM
14922 Checking to see what type of arguments are accepted by select().
14923 EOM
14924                 hdrs="$define sys/types.h
14925                         $i_systime sys/time.h 
14926                         $i_sysselct sys/select.h
14927                         $d_socket sys/socket.h"
14928                 : The first arg can be int, unsigned, or size_t
14929                 : The last arg may or may not be 'const'
14930                 val=''
14931                 : void pointer has been seen but using that
14932                 : breaks the selectminbits test
14933                 for xxx in 'fd_set *' 'int *'; do
14934                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14935                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14936                                         case "$val" in
14937                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14938                                                 if ./protochk "$try" $hdrs; then
14939                                                         echo "Your system accepts $xxx."
14940                                                         val="$xxx"
14941                                                 fi
14942                                                 ;;
14943                                         esac
14944                                 done
14945                         done
14946                 done
14947                 case "$val" in
14948                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14949                         case "$d_fd_set" in
14950                                 $define) dflt="fd_set *" ;;
14951                                 *)              dflt="int *" ;;
14952                         esac
14953                         . ./myread
14954                         val=$ans
14955                         ;;
14956                 esac
14957                 selecttype="$val"
14958                 ;;
14959         *)      : no select, so pick a harmless default
14960                 selecttype='int *'
14961                 ;;
14962         esac
14963         ;;
14964 esac
14965
14966 : check for the select 'width'
14967 case "$selectminbits" in
14968 '') case "$d_select" in
14969         $define)
14970                 $cat <<EOM
14971
14972 Checking to see on how many bits at a time your select() operates...
14973 EOM
14974                 $cat >try.c <<EOCP
14975 #include <sys/types.h>
14976 #$i_time I_TIME
14977 #$i_systime I_SYS_TIME
14978 #$i_systimek I_SYS_TIME_KERNEL
14979 #ifdef I_TIME
14980 #   include <time.h>
14981 #endif
14982 #ifdef I_SYS_TIME
14983 #   ifdef I_SYS_TIME_KERNEL
14984 #       define KERNEL
14985 #   endif
14986 #   include <sys/time.h>
14987 #   ifdef I_SYS_TIME_KERNEL
14988 #       undef KERNEL
14989 #   endif
14990 #endif
14991 #$i_sysselct I_SYS_SELECT
14992 #ifdef I_SYS_SELECT
14993 #include <sys/select.h>
14994 #endif
14995 #$d_socket HAS_SOCKET
14996 #ifdef HAS_SOCKET
14997 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14998 #endif
14999 #include <stdio.h>
15000 $selecttype b;
15001 #define S sizeof(*(b))
15002 #define MINBITS 64
15003 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15004 #define NBITS  (NBYTES * 8)
15005 int main() {
15006     char s[NBYTES];
15007     struct timeval t;
15008     int i;
15009     FILE* fp;
15010     int fd;
15011
15012     fclose(stdin);
15013     fp = fopen("try.c", "r");
15014     if (fp == 0)
15015       exit(1);
15016     fd = fileno(fp);
15017     if (fd < 0)
15018       exit(2);
15019     b = ($selecttype)s;
15020     for (i = 0; i < NBITS; i++)
15021         FD_SET(i, b);
15022     t.tv_sec  = 0;
15023     t.tv_usec = 0;
15024     select(fd + 1, b, 0, 0, &t);
15025     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15026     printf("%d\n", i + 1);
15027     return 0;
15028 }
15029 EOCP
15030                 set try
15031                 if eval $compile_ok; then
15032                         selectminbits=`$run ./try`
15033                         case "$selectminbits" in
15034                         '')     cat >&4 <<EOM
15035 Cannot figure out on how many bits at a time your select() operates.
15036 I'll play safe and guess it is 32 bits.
15037 EOM
15038                                 selectminbits=32
15039                                 bits="32 bits"
15040                                 ;;
15041                         1)      bits="1 bit" ;;
15042                         *)      bits="$selectminbits bits" ;;
15043                         esac
15044                         echo "Your select() operates on $bits at a time." >&4
15045                 else
15046                         rp='What is the minimum number of bits your select() operates on?'
15047                         case "$byteorder" in
15048                         1234|12345678)  dflt=32 ;;
15049                         *)              dflt=1  ;;
15050                         esac
15051                         . ./myread
15052                         val=$ans
15053                         selectminbits="$val"
15054                 fi
15055                 $rm -f try.* try
15056                 ;;
15057         *)      : no select, so pick a harmless default
15058                 selectminbits='32'
15059                 ;;
15060         esac
15061         ;;
15062 esac
15063
15064 : Trace out the files included by signal.h, then look for SIGxxx names.
15065 : Remove SIGARRAYSIZE used by HPUX.
15066 : Remove SIGSTKSIZE used by Linux.
15067 : Remove SIGSTKSZ used by Posix.
15068 : Remove SIGTYP void lines used by OS2.
15069 : Some cpps, like os390, dont give the file name anywhere
15070 if [ "X$fieldn" = X ]; then
15071         : Just make some guesses.  We check them later.
15072         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15073 else
15074         xxx=`echo '#include <signal.h>' |
15075         $cppstdin $cppminus $cppflags 2>/dev/null |
15076         $grep '^[       ]*#.*include' | 
15077         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15078 fi
15079 : Check this list of files to be sure we have parsed the cpp output ok.
15080 : This will also avoid potentially non-existent files, such 
15081 : as ../foo/bar.h
15082 xxxfiles=''
15083 for xx in $xxx /dev/null ; do
15084         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15085 done
15086 : If we have found no files, at least try signal.h
15087 case "$xxxfiles" in
15088 '')     xxxfiles=`./findhdr signal.h` ;;
15089 esac
15090 xxx=`awk '
15091 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15092         print substr($2, 4, 20)
15093 }
15094 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15095         print substr($3, 4, 20)
15096 }' $xxxfiles`
15097 : Append some common names just in case the awk scan failed.
15098 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15099 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15100 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15101 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15102 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15103
15104 : generate a few handy files for later
15105 $cat > signal.c <<'EOCP'
15106 #include <sys/types.h>
15107 #include <signal.h>
15108 #include <stdio.h>
15109 int main() {
15110
15111 /* Strange style to avoid deeply-nested #if/#else/#endif */
15112 #ifndef NSIG
15113 #  ifdef _NSIG
15114 #    define NSIG (_NSIG)
15115 #  endif
15116 #endif
15117
15118 #ifndef NSIG
15119 #  ifdef SIGMAX
15120 #    define NSIG (SIGMAX+1)
15121 #  endif
15122 #endif
15123
15124 #ifndef NSIG
15125 #  ifdef SIG_MAX
15126 #    define NSIG (SIG_MAX+1)
15127 #  endif
15128 #endif
15129
15130 #ifndef NSIG
15131 #  ifdef MAXSIG
15132 #    define NSIG (MAXSIG+1)
15133 #  endif
15134 #endif
15135
15136 #ifndef NSIG
15137 #  ifdef MAX_SIG
15138 #    define NSIG (MAX_SIG+1)
15139 #  endif
15140 #endif
15141
15142 #ifndef NSIG
15143 #  ifdef SIGARRAYSIZE
15144 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15145 #  endif
15146 #endif
15147
15148 #ifndef NSIG
15149 #  ifdef _sys_nsig
15150 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15151 #  endif
15152 #endif
15153
15154 /* Default to some arbitrary number that's big enough to get most
15155    of the common signals.
15156 */
15157 #ifndef NSIG
15158 #    define NSIG 50
15159 #endif
15160
15161 printf("NSIG %d\n", NSIG);
15162
15163 #ifndef JUST_NSIG
15164
15165 EOCP
15166
15167 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15168 {
15169         printf "#ifdef SIG"; printf $1; printf "\n"
15170         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15171         printf $1; printf ");\n"
15172         printf "#endif\n"
15173 }
15174 END {
15175         printf "#endif /* JUST_NSIG */\n";
15176         printf "exit(0);\n}\n";
15177 }
15178 ' >>signal.c
15179 $cat >signal.awk <<'EOP'
15180 BEGIN { ndups = 0 }
15181 $1 ~ /^NSIG$/ { nsig = $2 }
15182 ($1 !~ /^NSIG$/) && (NF == 2) {
15183     if ($2 > maxsig) { maxsig = $2 }
15184     if (sig_name[$2]) {
15185         dup_name[ndups] = $1
15186         dup_num[ndups] = $2
15187         ndups++ 
15188     }
15189     else {
15190         sig_name[$2] = $1
15191         sig_num[$2] = $2
15192     }
15193 }
15194 END { 
15195     if (nsig == 0) {
15196         nsig = maxsig + 1
15197     }
15198     printf("NSIG %d\n", nsig);
15199     for (n = 1; n < nsig; n++) {
15200         if (sig_name[n]) {
15201             printf("%s %d\n", sig_name[n], sig_num[n])
15202         }
15203         else {
15204             printf("NUM%d %d\n", n, n) 
15205         }
15206     }
15207     for (n = 0; n < ndups; n++) {
15208         printf("%s %d\n", dup_name[n], dup_num[n])
15209     }
15210 }
15211 EOP
15212 $cat >signal_cmd <<EOS
15213 $startsh
15214 if $test -s signal.lst; then
15215     echo "Using your existing signal.lst file"
15216         exit 0
15217 fi
15218 xxx="$xxx"
15219 EOS
15220 $cat >>signal_cmd <<'EOS'
15221
15222 set signal
15223 if eval $compile_ok; then
15224         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15225 else
15226         echo "(I can't seem be able to compile the whole test program)" >&4
15227         echo "(I'll try it in little pieces.)" >&4
15228         set signal -DJUST_NSIG
15229         if eval $compile_ok; then
15230                 $run ./signal$_exe > signal.nsg
15231                 $cat signal.nsg
15232         else
15233                 echo "I can't seem to figure out how many signals you have." >&4
15234                 echo "Guessing 50." >&4
15235                 echo 'NSIG 50' > signal.nsg
15236         fi
15237         : Now look at all the signal names, one at a time.
15238         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15239                 $cat > signal.c <<EOCP
15240 #include <sys/types.h>
15241 #include <signal.h>
15242 #include <stdio.h>
15243 int main() {
15244 printf("$xx %d\n", SIG${xx});
15245 return 0;
15246 }
15247 EOCP
15248                 set signal
15249                 if eval $compile; then
15250                         echo "SIG${xx} found."
15251                         $run ./signal$_exe  >> signal.ls1
15252                 else
15253                         echo "SIG${xx} NOT found."
15254                 fi
15255         done
15256         if $test -s signal.ls1; then
15257                 $cat signal.nsg signal.ls1 |
15258                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15259         fi
15260
15261 fi
15262 if $test -s signal.lst; then
15263         :
15264 else
15265         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15266         echo 'kill -l' >signal
15267         set X `csh -f <signal`
15268         $rm -f signal
15269         shift
15270         case $# in
15271         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15272         esac
15273         echo $@ | $tr ' ' $trnl | \
15274             $awk '{ printf "%s %d\n", $1, ++s; }
15275                   END { printf "NSIG %d\n", ++s }' >signal.lst
15276 fi
15277 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15278 EOS
15279 chmod a+x signal_cmd
15280 $eunicefix signal_cmd
15281
15282 : generate list of signal names
15283 echo " "
15284 case "$sig_name_init" in
15285 '') doinit=yes ;;
15286 *)  case "$sig_num_init" in
15287     ''|*,*) doinit=yes ;;
15288     esac ;;
15289 esac
15290 case "$doinit" in
15291 yes)
15292         echo "Generating a list of signal names and numbers..." >&4
15293         . ./signal_cmd
15294         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15295         sig_name=`$awk 'BEGIN { printf "ZERO " }
15296                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15297         sig_num=`$awk  'BEGIN { printf "0 " }
15298                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15299         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15300                              !/^NSIG/   { printf "\"%s\", ", $1 }
15301                              END        { printf "0\n" }' signal.lst`
15302         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15303                              !/^NSIG/   { printf "%d, ", $2}
15304                              END        { printf "0\n"}' signal.lst`
15305         ;;
15306 esac
15307 echo "The following $sig_count signals are available:"
15308 echo " "
15309 echo $sig_name | $awk \
15310 'BEGIN { linelen = 0 }
15311 {
15312         for (i = 1; i <= NF; i++) {
15313                 name = "SIG" $i " "
15314                 linelen = linelen + length(name)
15315                 if (linelen > 70) {
15316                         printf "\n"
15317                         linelen = length(name)
15318                 }
15319                 printf "%s", name
15320         }
15321         printf "\n"
15322 }'
15323 sig_size=`echo $sig_name | awk '{print NF}'`
15324 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15325
15326 echo " "
15327 case "$sizetype" in
15328 *_t) zzz="$sizetype"    ;;
15329 *)   zzz="filesize"     ;;
15330 esac
15331 echo "Checking the size of $zzz..." >&4 
15332 cat > try.c <<EOCP
15333 #include <sys/types.h>
15334 #include <stdio.h>
15335 int main() {
15336     printf("%d\n", (int)sizeof($sizetype));
15337     exit(0);
15338 }
15339 EOCP
15340 set try
15341 if eval $compile_ok; then
15342         yyy=`$run ./try`
15343         case "$yyy" in
15344         '')     sizesize=4
15345                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15346                 ;;
15347         *)      sizesize=$yyy
15348                 echo "Your $zzz size is $sizesize bytes."
15349                 ;;
15350         esac
15351 else
15352         sizesize=4
15353         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15354 fi
15355
15356
15357 : check for socklen_t
15358 echo " "
15359 echo "Checking to see if you have socklen_t..." >&4
15360 $cat >try.c <<EOCP
15361 #include <sys/types.h>
15362 #$d_socket HAS_SOCKET
15363 #ifdef HAS_SOCKET
15364 #include <sys/socket.h>
15365 #endif
15366 int main() { socklen_t x = 16; }
15367 EOCP
15368 set try
15369 if eval $compile; then
15370         val="$define"
15371         echo "You have socklen_t."
15372 else
15373         val="$undef"
15374         echo "You do not have socklen_t."
15375         case "$sizetype" in
15376         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15377         esac
15378 fi
15379 $rm -f try try.*
15380 set d_socklen_t
15381 eval $setvar
15382
15383 : see if this is a socks.h system
15384 set socks.h i_socks
15385 eval $inhdr
15386
15387 : check for type of the size argument to socket calls
15388 case "$d_socket" in
15389 "$define")
15390         $cat <<EOM
15391
15392 Checking to see what type is the last argument of accept().
15393 EOM
15394         yyy=''
15395         case "$d_socklen_t" in
15396         "$define") yyy="$yyy socklen_t"
15397         esac
15398         yyy="$yyy $sizetype int long unsigned"
15399         for xxx in $yyy; do
15400                 case "$socksizetype" in
15401                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15402                         case "$usesocks" in
15403                         "$define")
15404                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15405                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15406                                         socksizetype="$xxx"
15407                                 fi
15408                                 ;;
15409                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15410                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15411                                         socksizetype="$xxx"
15412                                 fi
15413                                 ;;
15414                         esac
15415                         ;;
15416                 esac
15417         done
15418 : In case none of those worked, prompt the user.
15419         case "$socksizetype" in
15420         '')     rp='What is the type for socket address structure sizes?'
15421                 dflt='int'
15422                 . ./myread
15423                 socksizetype=$ans
15424                 ;;
15425         esac
15426         ;;
15427 *)      : no sockets, so pick relatively harmless default
15428         socksizetype='int'
15429         ;;
15430 esac
15431
15432 : see what type is used for signed size_t
15433 set ssize_t ssizetype int stdio.h sys/types.h
15434 eval $typedef
15435 dflt="$ssizetype"
15436 $cat > try.c <<EOM
15437 #include <stdio.h>
15438 #include <sys/types.h>
15439 #define Size_t $sizetype
15440 #define SSize_t $dflt
15441 int main()
15442 {
15443         if (sizeof(Size_t) == sizeof(SSize_t))
15444                 printf("$dflt\n");
15445         else if (sizeof(Size_t) == sizeof(int))
15446                 printf("int\n");
15447         else 
15448                 printf("long\n");
15449         exit(0);
15450 }
15451 EOM
15452 echo " "
15453 set try
15454 if eval $compile_ok && $run ./try > /dev/null; then
15455         ssizetype=`$run ./try`
15456         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15457 else
15458         $cat >&4 <<EOM
15459 Help! I can't compile and run the ssize_t test program: please enlighten me!
15460 (This is probably a misconfiguration in your system or libraries, and
15461 you really ought to fix it.  Still, I'll try anyway.)
15462
15463 I need a type that is the same size as $sizetype, but is guaranteed to
15464 be signed.  Common values are ssize_t, int and long.
15465
15466 EOM
15467         rp="What signed type is the same size as $sizetype?"
15468         . ./myread
15469         ssizetype="$ans"
15470 fi
15471 $rm -f try try.*
15472
15473 : see what type of char stdio uses.
15474 echo " "
15475 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15476 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15477         echo "Your stdio uses unsigned chars." >&4
15478         stdchar="unsigned char"
15479 else
15480         echo "Your stdio uses signed chars." >&4
15481         stdchar="char"
15482 fi
15483 $rm -f stdioh
15484
15485
15486
15487 : see if time exists
15488 echo " "
15489 if test "X$d_time" = X -o X"$timetype" = X; then
15490     if set time val -f d_time; eval $csym; $val; then
15491                 echo 'time() found.' >&4
15492                 val="$define"
15493                 rp="What is the type returned by time() on this system?"
15494                 set time_t timetype long stdio.h sys/types.h
15495                 eval $typedef_ask
15496     else
15497                 echo 'time() not found, hope that will do.' >&4
15498                 val="$undef"
15499                 timetype='int';
15500     fi
15501     set d_time
15502     eval $setvar
15503 fi
15504
15505 : see what type uids are declared as in the kernel
15506 echo " "
15507 echo "Looking for the type for user ids returned by getuid()."
15508 set uid_t uidtype xxx stdio.h sys/types.h
15509 eval $typedef
15510 case "$uidtype" in
15511 xxx)
15512         xxx=`./findhdr sys/user.h`
15513         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15514         case $1 in
15515         unsigned) dflt="$1 $2" ;;
15516         *) dflt="$1" ;;
15517         esac
15518         ;;
15519 *) dflt="$uidtype";;
15520 esac
15521 case "$uidtype" in
15522 uid_t)  echo "uid_t found." ;;
15523 *)      rp="What is the type for user ids returned by getuid()?"
15524         . ./myread
15525         uidtype="$ans"
15526         ;;
15527 esac
15528
15529 echo " "
15530 case "$uidtype" in
15531 *_t) zzz="$uidtype"     ;;
15532 *)   zzz="uid"          ;;
15533 esac
15534 echo "Checking the size of $zzz..." >&4 
15535 cat > try.c <<EOCP
15536 #include <sys/types.h>
15537 #include <stdio.h>
15538 int main() {
15539     printf("%d\n", (int)sizeof($uidtype));
15540     exit(0);
15541 }
15542 EOCP
15543 set try
15544 if eval $compile_ok; then
15545         yyy=`$run ./try`
15546         case "$yyy" in
15547         '')     uidsize=4
15548                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15549                 ;;
15550         *)      uidsize=$yyy
15551                 echo "Your $zzz is $uidsize bytes long."
15552                 ;;
15553         esac
15554 else
15555         uidsize=4
15556         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15557 fi
15558
15559 echo " "
15560 case "$uidtype" in
15561 *_t) zzz="$uidtype"     ;;
15562 *)   zzz="uid"          ;;
15563 esac
15564 echo "Checking the sign of $zzz..." >&4
15565 cat > try.c <<EOCP
15566 #include <sys/types.h>
15567 #include <stdio.h>
15568 int main() {
15569         $uidtype foo = -1;
15570         if (foo < 0)
15571                 printf("-1\n");
15572         else
15573                 printf("1\n");
15574 }
15575 EOCP
15576 set try
15577 if eval $compile; then
15578         yyy=`$run ./try`
15579         case "$yyy" in
15580         '')     uidsign=1
15581                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15582                 ;;
15583         *)      uidsign=$yyy
15584                 case "$uidsign" in
15585                  1) echo "Your $zzz is unsigned." ;;
15586                 -1) echo "Your $zzz is signed."   ;;
15587                 esac
15588                 ;;
15589         esac
15590 else
15591         uidsign=1
15592         echo "(I can't compile the test program--guessing unsigned.)" >&4
15593 fi
15594
15595
15596
15597 echo " "
15598 $echo "Checking the format string to be used for uids..." >&4
15599
15600 case "$uidsign" in
15601 -1)     if $test X"$uidsize" = X"$ivsize"; then
15602                 uidformat="$ivdformat"
15603         else
15604                 if $test X"$uidsize" = X"$longsize"; then
15605                         uidformat='"ld"'
15606                 else
15607                         if $test X"$uidsize" = X"$intsize"; then
15608                                 uidformat='"d"'
15609                         else
15610                                 if $test X"$uidsize" = X"$shortsize"; then
15611                                         uidformat='"hd"'
15612                                 fi
15613                         fi
15614                 fi
15615         fi
15616         ;;
15617 *)      if $test X"$uidsize" = X"$uvsize"; then
15618                 uidformat="$uvuformat"
15619         else
15620                 if $test X"$uidsize" = X"$longsize"; then
15621                         uidformat='"lu"'
15622                 else
15623                         if $test X"$uidsize" = X"$intsize"; then
15624                                 uidformat='"u"'
15625                         else
15626                                 if $test X"$uidsize" = X"$shortsize"; then
15627                                         uidformat='"hu"'
15628                                 fi
15629                         fi
15630                 fi
15631         fi
15632         ;;
15633 esac
15634
15635 : determine compiler compiler
15636 case "$yacc" in
15637 '')
15638         dflt=yacc;;
15639 *)
15640         dflt="$yacc";;
15641 esac
15642 echo " "
15643 comp='yacc'
15644 if $test -f "$byacc"; then
15645         dflt="$byacc"
15646         comp="byacc or $comp"
15647 fi
15648 if $test -f "$bison"; then
15649         comp="$comp or bison -y"
15650 fi
15651 rp="Which compiler compiler ($comp) shall I use?"
15652 . ./myread
15653 yacc="$ans"
15654 case "$yacc" in
15655 *bis*)
15656         case "$yacc" in
15657         *-y*) ;;
15658         *)
15659                 yacc="$yacc -y"
15660                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15661                 ;;
15662         esac
15663         ;;
15664 esac
15665
15666 : see if fcntl.h is there
15667 val=''
15668 set fcntl.h val
15669 eval $inhdr
15670
15671 : see if we can include fcntl.h
15672 case "$val" in
15673 "$define")
15674         echo " "
15675         if $h_fcntl; then
15676                 val="$define"
15677                 echo "We'll be including <fcntl.h>." >&4
15678         else
15679                 val="$undef"
15680                 if $h_sysfile; then
15681         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15682                 else
15683                         echo "We won't be including <fcntl.h>." >&4
15684                 fi
15685         fi
15686         ;;
15687 *)
15688         h_fcntl=false
15689         val="$undef"
15690         ;;
15691 esac
15692 set i_fcntl
15693 eval $setvar
15694
15695 : see if this is a iconv.h system
15696 set iconv.h i_iconv
15697 eval $inhdr
15698
15699 : see if this is a ieeefp.h system
15700 set ieeefp.h i_ieeefp
15701 eval $inhdr
15702
15703 : see if this is a libutil.h system
15704 set libutil.h i_libutil
15705 eval $inhdr
15706
15707 : see if locale.h is available
15708 set locale.h i_locale
15709 eval $inhdr
15710
15711 : see if mach cthreads are available
15712 if test "X$usethreads" = "X$define"; then
15713         set mach/cthreads.h i_machcthr
15714         eval $inhdr
15715 else
15716         i_machcthr="$undef"
15717 fi
15718
15719
15720
15721 : see if this is a math.h system
15722 set math.h i_math
15723 eval $inhdr
15724
15725 : see if this is a mntent.h system
15726 set mntent.h i_mntent
15727 eval $inhdr
15728
15729 : see if ndbm.h is available
15730 set ndbm.h t_ndbm
15731 eval $inhdr
15732 case "$t_ndbm" in
15733 $define)
15734         : see if dbm_open exists
15735         set dbm_open d_dbm_open
15736         eval $inlibc
15737         case "$d_dbm_open" in
15738         $undef)
15739                 t_ndbm="$undef"
15740                 echo "We won't be including <ndbm.h>"
15741                 ;;
15742         esac
15743         ;;
15744 esac
15745 val="$t_ndbm"
15746 set i_ndbm
15747 eval $setvar
15748
15749 : see if net/errno.h is available
15750 val=''
15751 set net/errno.h val
15752 eval $inhdr
15753
15754 : Unfortunately, it causes problems on some systems.  Arrgh.
15755 case "$val" in
15756 $define)
15757         cat > try.c <<'EOM'
15758 #include <stdio.h>
15759 #include <errno.h>
15760 #include <net/errno.h>
15761 int func()
15762 {
15763         return ENOTSOCK;
15764 }
15765 EOM
15766         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15767                 echo "We'll be including <net/errno.h>." >&4
15768         else
15769                 echo "We won't be including <net/errno.h>." >&4
15770                 val="$undef"
15771         fi
15772         $rm -f try.* try
15773         ;;
15774 esac
15775 set i_neterrno
15776 eval $setvar
15777
15778 : see if netinet/tcp.h is available
15779 set netinet/tcp.h i_netinettcp
15780 eval $inhdr
15781
15782 : see if this is a poll.h system
15783 set poll.h i_poll
15784 eval $inhdr
15785
15786 : see if this is a prot.h system
15787 set prot.h i_prot
15788 eval $inhdr
15789
15790 echo " "
15791 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15792 $cat <<'EOSH' > Cppsym.know
15793 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15794 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15795 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15796 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15797 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15798 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15799 bull c cadmus clipper CMU COFF COMPILER_VERSION
15800 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15801 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15802 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15803 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15804 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15805 H3050R H3050RX hbullx20 hcx host_mips
15806 hp200 hp300 hp700 HP700 hp800 hp9000
15807 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15808 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15809 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15810 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15811 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15812 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15813 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15814 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15815 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15816 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15817 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15818 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15819 MATH_HAS_NO_SIDE_EFFECTS
15820 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15821 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15822 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15823 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15824 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15825 NetBSD news1500 news1700 news1800 news1900 news3700
15826 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15827 ns32016 ns32332 ns32k nsc32000
15828 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15829 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15830 pc532 pdp11 PGC PIC plexus PORTAR posix
15831 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15832 POSIX_C_SOURCE POSIX_SOURCE POWER
15833 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15834 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15835 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15836 sony sony_news sonyrisc sparc sparclite spectrum
15837 stardent stdc STDC_EXT stratos sun sun3 sun386
15838 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15839 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15840 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15841 sysV68 sysV88 Tek4132 Tek4300 titan
15842 TM3200 TM5400 TM5600
15843 tower tower32 tower32_200 tower32_600 tower32_700
15844 tower32_800 tower32_850 tss
15845 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15846 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15847 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15848 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15849 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15850 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15851 z8000
15852 EOSH
15853 # Maybe put other stuff here too.
15854 cat <<EOSH >>Cppsym.know
15855 $osname
15856 EOSH
15857 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15858 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15859 $cat Cppsym.know > Cppsym.c
15860 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15861 $rm -f Cppsym.a Cppsym.b Cppsym.c
15862 cat <<EOSH > Cppsym
15863 $startsh
15864 if $test \$# -gt 0; then
15865     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15866     if $test -s Cppsym.got; then
15867         $rm -f Cppsym.got
15868         exit 0
15869     fi
15870     $rm -f Cppsym.got
15871     exit 1
15872 else
15873     $tr " " "$trnl" | ./Cppsym.try
15874     exit 0
15875 fi
15876 EOSH
15877 chmod +x Cppsym
15878 $eunicefix Cppsym
15879 cat <<EOSH > Cppsym.try
15880 $startsh
15881 cat <<'EOCP' > try.c
15882 #include <stdio.h>
15883 int main() {
15884 EOCP
15885 $awk \\
15886 EOSH
15887 cat <<'EOSH' >> Cppsym.try
15888 'length($1) > 0 {
15889     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
15890     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
15891     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
15892     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
15893 }'       >> try.c
15894 echo 'return 0;}' >> try.c
15895 EOSH
15896 cat <<EOSH >> Cppsym.try
15897 ccflags="$ccflags"
15898 case "$osname-$gccversion" in
15899 irix-) ccflags="\$ccflags -woff 1178" ;;
15900 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15901 esac
15902 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15903 EOSH
15904 chmod +x Cppsym.try
15905 $eunicefix Cppsym.try
15906 ./Cppsym < Cppsym.know > Cppsym.true
15907 : now check the C compiler for additional symbols
15908 postprocess_cc_v=''
15909 case "$osname" in
15910 aix) postprocess_cc_v="|$tr , ' '" ;;
15911 esac
15912 $cat >ccsym <<EOS
15913 $startsh
15914 $cat >tmp.c <<EOF
15915 extern int foo;
15916 EOF
15917 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15918 do
15919         case "\$i" in
15920         -D*) echo "\$i" | $sed 's/^-D//';;
15921         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15922         esac
15923 done
15924 $rm -f try.c
15925 EOS
15926 postprocess_cc_v=''
15927 chmod +x ccsym
15928 $eunicefix ccsym
15929 ./ccsym > ccsym1.raw
15930 if $test -s ccsym1.raw; then
15931        $sort ccsym1.raw | $uniq >ccsym.raw
15932 else
15933        mv ccsym1.raw ccsym.raw
15934 fi
15935
15936 $awk '/\=/ { print $0; next }
15937         { print $0"=1" }' ccsym.raw >ccsym.list
15938 $awk '/\=/ { print $0; next }
15939         { print $0"=1" }' Cppsym.true >ccsym.true
15940 $comm -13 ccsym.true ccsym.list >ccsym.own
15941 $comm -12 ccsym.true ccsym.list >ccsym.com
15942 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15943 also=''
15944 if $test -z ccsym.raw; then
15945         echo "Your C compiler doesn't seem to define any symbols!" >&4
15946         echo " "
15947         echo "However, your C preprocessor defines the following symbols:"
15948         $cat Cppsym.true
15949         ccsymbols=''
15950         cppsymbols=`$cat Cppsym.true`
15951         cppsymbols=`echo $cppsymbols`
15952         cppccsymbols="$cppsymbols"
15953 else
15954         if $test -s ccsym.com; then
15955                 echo "Your C compiler and pre-processor define these symbols:"
15956                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15957                 also='also '
15958                 symbols='ones'
15959                 cppccsymbols=`$cat ccsym.com`
15960                 cppccsymbols=`echo $cppccsymbols`
15961                 $test "$silent" || sleep 1
15962         fi
15963         if $test -s ccsym.cpp; then
15964                 $test "$also" && echo " "
15965                 echo "Your C pre-processor ${also}defines the following symbols:"
15966                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15967                 also='further '
15968                 cppsymbols=`$cat ccsym.cpp`
15969                 cppsymbols=`echo $cppsymbols`
15970                 $test "$silent" || sleep 1
15971         fi
15972         if $test -s ccsym.own; then
15973                 $test "$also" && echo " "
15974                 echo "Your C compiler ${also}defines the following cpp symbols:"
15975                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15976                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15977                 ccsymbols=`$cat ccsym.own`
15978                 ccsymbols=`echo $ccsymbols`
15979                 $test "$silent" || sleep 1
15980         fi
15981 fi
15982
15983 : see if this is a termio system
15984 val="$undef"
15985 val2="$undef"
15986 val3="$undef"
15987 if $test `./findhdr termios.h`; then
15988         set tcsetattr i_termios
15989         eval $inlibc
15990         val3="$i_termios"
15991 fi
15992 echo " "
15993 case "$val3" in
15994 "$define") echo "You have POSIX termios.h... good!" >&4;;
15995 *) if ./Cppsym pyr; then
15996                 case "`/bin/universe`" in
15997                 ucb) if $test `./findhdr sgtty.h`; then
15998                                 val2="$define"
15999                                 echo "<sgtty.h> found." >&4
16000                         else
16001                                 echo "System is pyramid with BSD universe."
16002                                 echo "<sgtty.h> not found--you could have problems." >&4
16003                         fi;;
16004                 *) if $test `./findhdr termio.h`; then
16005                                 val="$define"
16006                                 echo "<termio.h> found." >&4
16007                         else
16008                                 echo "System is pyramid with USG universe."
16009                                 echo "<termio.h> not found--you could have problems." >&4
16010                         fi;;
16011                 esac
16012         elif ./usg; then
16013                 if $test `./findhdr termio.h`; then
16014                         echo "<termio.h> found." >&4
16015                         val="$define"
16016                 elif $test `./findhdr sgtty.h`; then
16017                         echo "<sgtty.h> found." >&4
16018                         val2="$define"
16019                 else
16020 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16021                 fi
16022         else
16023                 if $test `./findhdr sgtty.h`; then
16024                         echo "<sgtty.h> found." >&4
16025                         val2="$define"
16026                 elif $test `./findhdr termio.h`; then
16027                         echo "<termio.h> found." >&4
16028                         val="$define"
16029                 else
16030 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16031                 fi
16032         fi;;
16033 esac
16034 set i_termio; eval $setvar
16035 val=$val2; set i_sgtty; eval $setvar
16036 val=$val3; set i_termios; eval $setvar
16037
16038 : see if this is a shadow.h system
16039 set shadow.h i_shadow
16040 eval $inhdr
16041
16042 : see if stddef is available
16043 set stddef.h i_stddef
16044 eval $inhdr
16045
16046 : see if this is a sunmath.h system
16047 set sunmath.h i_sunmath
16048 eval $inhdr
16049
16050 : see if sys/access.h is available
16051 set sys/access.h i_sysaccess
16052 eval $inhdr
16053
16054 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16055 set sys/filio.h i_sysfilio
16056 eval $inhdr
16057 echo " "
16058 if $test `./findhdr sys/ioctl.h`; then
16059         val="$define"
16060         echo '<sys/ioctl.h> found.' >&4
16061 else
16062         val="$undef"
16063         if $test $i_sysfilio = "$define"; then
16064             echo '<sys/ioctl.h> NOT found.' >&4
16065         else
16066                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16067                 $test $i_termio = "$define" && xxx="termio.h"
16068                 $test $i_termios = "$define" && xxx="termios.h"
16069 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16070         fi
16071 fi
16072 set i_sysioctl
16073 eval $setvar
16074
16075 : see if socket ioctl defs are in sys/sockio.h
16076 echo " "
16077 xxx=`./findhdr sys/sockio.h`
16078 if $test "$xxx"; then
16079         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16080                 val="$define"
16081                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16082         else
16083                 val="$undef"
16084                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16085         fi
16086 else
16087         val="$undef"
16088         $cat <<EOM
16089 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16090 EOM
16091 fi
16092 set i_syssockio
16093 eval $setvar
16094
16095
16096 : see if this is a syslog.h system
16097 set syslog.h i_syslog
16098 eval $inhdr
16099
16100
16101 : see if this is a sys/mode.h system
16102 set sys/mode.h i_sysmode
16103 eval $inhdr
16104
16105 : see if sys/resource.h has to be included
16106 set sys/resource.h i_sysresrc
16107 eval $inhdr
16108
16109 : see if sys/security.h is available
16110 set sys/security.h i_syssecrt
16111 eval $inhdr
16112
16113 : see if this is a sys/statvfs.h system
16114 set sys/statvfs.h i_sysstatvfs
16115 eval $inhdr
16116
16117 : see if this is a sys/un.h system
16118 set sys/un.h i_sysun
16119 eval $inhdr
16120
16121
16122 : see if this is a sys/utsname.h system
16123 set sys/utsname.h i_sysutsname
16124 eval $inhdr
16125
16126 : see if this is a syswait system
16127 set sys/wait.h i_syswait
16128 eval $inhdr
16129
16130 : see if this is a ustat.h system
16131 set ustat.h i_ustat
16132 eval $inhdr
16133
16134 : see if this is an utime system
16135 set utime.h i_utime
16136 eval $inhdr
16137
16138 : see if this is a values.h system
16139 set values.h i_values
16140 eval $inhdr
16141
16142 : see if this is a vfork system
16143 case "$d_vfork" in
16144 "$define")
16145         set vfork.h i_vfork
16146         eval $inhdr
16147         ;;
16148 *)
16149         i_vfork="$undef"
16150         ;;
16151 esac
16152
16153 : see if gdbm.h is available
16154 set gdbm.h t_gdbm
16155 eval $inhdr
16156 case "$t_gdbm" in
16157 $define)
16158         : see if gdbm_open exists
16159         set gdbm_open d_gdbm_open
16160         eval $inlibc
16161         case "$d_gdbm_open" in
16162         $undef)
16163                 t_gdbm="$undef"
16164                 echo "We won't be including <gdbm.h>"
16165                 ;;
16166         esac
16167         ;;
16168 esac
16169 val="$t_gdbm"
16170 set i_gdbm
16171 eval $setvar
16172
16173 echo " "
16174 echo "Looking for extensions..." >&4
16175 : If we are using the old config.sh, known_extensions may contain
16176 : old or inaccurate or duplicate values.
16177 known_extensions=''
16178 nonxs_extensions=''
16179 : We do not use find because it might not be available.
16180 : We do not just use MANIFEST because the user may have dropped
16181 : some additional extensions into the source tree and expect them
16182 : to be built.
16183
16184 : Function to recursively find available extensions, ignoring DynaLoader
16185 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16186 find_extensions='
16187     for xxx in *; do
16188        case "$xxx" in
16189            DynaLoader|dynaload) ;;
16190            *)
16191            if $test -f $xxx/$xxx.xs; then
16192                known_extensions="$known_extensions $1$xxx";
16193            elif $test -f $xxx/Makefile.PL; then
16194                nonxs_extensions="$nonxs_extensions $1$xxx";
16195            else
16196                if $test -d $xxx -a $# -lt 10; then
16197                    set $1$xxx/ $*;
16198                    cd $xxx;
16199                    eval $find_extensions;
16200                    cd ..;
16201                    shift;
16202                fi;
16203            fi
16204            ;;
16205        esac;
16206     done'
16207 tdir=`pwd`
16208 cd $rsrc/ext
16209 set X
16210 shift
16211 eval $find_extensions
16212 set X $nonxs_extensions
16213 shift
16214 nonxs_extensions="$*"
16215 set X $known_extensions
16216 shift
16217 known_extensions="$*"
16218 cd $tdir
16219
16220 : Now see which are supported on this system.
16221 avail_ext=''
16222 for xxx in $known_extensions ; do
16223         case "$xxx" in
16224         DB_File|db_file)
16225                 case "$i_db" in
16226                 $define) avail_ext="$avail_ext $xxx" ;;
16227                 esac
16228                 ;;
16229         GDBM_File|gdbm_fil)
16230                 case "$i_gdbm" in 
16231                 $define) avail_ext="$avail_ext $xxx" ;;
16232                 esac
16233                 ;;
16234         NDBM_File|ndbm_fil)
16235                 case "$i_ndbm" in
16236                 $define)
16237                     case "$osname-$use64bitint" in
16238                     cygwin-*|hpux-define)
16239                         case "$libs" in
16240                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16241                         esac
16242                         ;;
16243                     *) avail_ext="$avail_ext $xxx" ;;
16244                     esac
16245                     ;;
16246                 esac
16247                 ;;
16248         ODBM_File|odbm_fil) 
16249                 case "${i_dbm}${i_rpcsvcdbm}" in
16250                 *"${define}"*)
16251                     case "$osname-$use64bitint" in
16252                     cygwin-*|hpux-define)
16253                         case "$libs" in
16254                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16255                         esac
16256                         ;;
16257                     *) avail_ext="$avail_ext $xxx" ;;
16258                     esac
16259                     ;;
16260                 esac
16261                 ;;
16262         POSIX|posix)
16263                 case "$useposix" in
16264                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16265                 esac
16266                 ;;
16267         Opcode|opcode)
16268                 case "$useopcode" in
16269                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16270                 esac
16271                 ;;
16272         Socket|socket)
16273                 case "$d_socket" in 
16274                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16275                 esac
16276                 ;;
16277         Sys/Syslog|sys/syslog)
16278                 : XXX syslog requires socket
16279                 case "$d_socket" in 
16280                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16281                 esac
16282                 ;;
16283         Thread|thread)
16284                 case "$usethreads" in
16285                 true|$define|y)
16286                         case "$useithreads" in
16287                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16288                         esac
16289                 esac
16290                 ;;
16291         IPC/SysV|ipc/sysv)
16292                 : XXX Do we need a useipcsysv variable here
16293                 case "${d_msg}${d_sem}${d_shm}" in 
16294                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16295                 esac
16296                 ;;
16297         *)      avail_ext="$avail_ext $xxx"
16298                 ;;
16299         esac
16300 done
16301
16302 set X $avail_ext
16303 shift
16304 avail_ext="$*"
16305
16306 : Now see which nonxs extensions are supported on this system.
16307 : For now assume all are.
16308 nonxs_ext=''
16309 for xxx in $nonxs_extensions ; do
16310         case "$xxx" in
16311         *)      nonxs_ext="$nonxs_ext $xxx"
16312                 ;;
16313         esac
16314 done
16315
16316 set X $nonxs_ext
16317 shift
16318 nonxs_ext="$*"
16319
16320 case $usedl in
16321 $define)
16322         $cat <<EOM
16323 A number of extensions are supplied with $package.  You may choose to
16324 compile these extensions for dynamic loading (the default), compile
16325 them into the $package executable (static loading), or not include
16326 them at all.  Answer "none" to include no extensions.
16327 Note that DynaLoader is always built and need not be mentioned here.
16328
16329 EOM
16330         case "$dynamic_ext" in
16331         '') dflt="$avail_ext" ;;
16332         *)      dflt="$dynamic_ext"
16333                 # Perhaps we are reusing an old out-of-date config.sh.
16334                 case "$hint" in
16335                 previous)
16336                         if test X"$dynamic_ext" != X"$avail_ext"; then
16337                                 $cat <<EOM
16338 NOTICE:  Your previous config.sh list may be incorrect. 
16339 The extensions now available to you are 
16340         ${avail_ext}
16341 but the default list from your previous config.sh is
16342         ${dynamic_ext} 
16343
16344 EOM
16345                         fi
16346                         ;;
16347                 esac
16348                 ;;
16349         esac
16350         case "$dflt" in
16351         '')     dflt=none;;
16352         esac
16353         rp="What extensions do you wish to load dynamically?"
16354         . ./myread
16355         case "$ans" in
16356         none) dynamic_ext=' ' ;;
16357         *) dynamic_ext="$ans" ;;
16358         esac
16359
16360         case "$static_ext" in
16361         '')
16362                 : Exclude those already listed in dynamic linking
16363                 dflt=''
16364                 for xxx in $avail_ext; do
16365                         case " $dynamic_ext " in
16366                         *" $xxx "*) ;;
16367                         *) dflt="$dflt $xxx" ;;
16368                         esac
16369                 done
16370                 set X $dflt
16371                 shift
16372                 dflt="$*"
16373                 ;;
16374         *)  dflt="$static_ext" 
16375                 ;;
16376         esac
16377
16378         case "$dflt" in
16379         '')     dflt=none;;
16380         esac
16381         rp="What extensions do you wish to load statically?"
16382         . ./myread
16383         case "$ans" in
16384         none) static_ext=' ' ;;
16385         *) static_ext="$ans" ;;
16386         esac
16387         ;;
16388 *)
16389         $cat <<EOM
16390 A number of extensions are supplied with $package.  Answer "none" 
16391 to include no extensions. 
16392 Note that DynaLoader is always built and need not be mentioned here.
16393
16394 EOM
16395         case "$static_ext" in
16396         '') dflt="$avail_ext" ;;
16397         *)      dflt="$static_ext"
16398                 # Perhaps we are reusing an old out-of-date config.sh.
16399                 case "$hint" in
16400                 previous)
16401                         if test X"$static_ext" != X"$avail_ext"; then
16402                                 $cat <<EOM
16403 NOTICE:  Your previous config.sh list may be incorrect. 
16404 The extensions now available to you are 
16405         ${avail_ext}
16406 but the default list from your previous config.sh is
16407         ${static_ext} 
16408
16409 EOM
16410                         fi
16411                         ;;
16412                 esac
16413                 ;;
16414         esac
16415         : Exclude those that are not xs extensions
16416         case "$dflt" in
16417         '')     dflt=none;;
16418         esac
16419         rp="What extensions do you wish to include?"
16420         . ./myread
16421         case "$ans" in
16422         none) static_ext=' ' ;;
16423         *) static_ext="$ans" ;;
16424         esac
16425         ;;
16426 esac
16427
16428 set X $dynamic_ext $static_ext $nonxs_ext
16429 shift
16430 extensions="$*"
16431
16432 : Remove libraries needed only for extensions
16433 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16434 : The exception is SunOS 4.x, which needs them.
16435 case "${osname}X${osvers}" in
16436 sunos*X4*)
16437     perllibs="$libs"
16438     ;;
16439 *) case "$usedl" in
16440     $define|true|[yY]*)
16441             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16442             shift
16443             perllibs="$*"
16444             ;;
16445     *)  perllibs="$libs"
16446             ;;
16447     esac
16448     ;;
16449 esac
16450
16451 : Remove build directory name from cppstdin so it can be used from
16452 : either the present location or the final installed location.
16453 echo " "
16454 : Get out of the UU directory to get correct path name.
16455 cd ..
16456 case "$cppstdin" in
16457 `pwd`/cppstdin)
16458         echo "Stripping down cppstdin path name"
16459         cppstdin=cppstdin
16460         ;;
16461 esac
16462 cd UU
16463
16464 : end of configuration questions
16465 echo " "
16466 echo "End of configuration questions."
16467 echo " "
16468
16469 : back to where it started
16470 if test -d ../UU; then
16471         cd ..
16472 fi
16473
16474 : configuration may be patched via a 'config.over' file
16475 if $test -f config.over; then
16476         echo " "
16477         dflt=y
16478         rp='I see a config.over file.  Do you wish to load it?'
16479         . UU/myread
16480         case "$ans" in
16481         n*) echo "OK, I'll ignore it.";;
16482         *)      . ./config.over
16483                 echo "Configuration override changes have been loaded."
16484                 ;;
16485         esac
16486 fi
16487
16488 : in case they want portability, strip down executable paths
16489 case "$d_portable" in
16490 "$define")
16491         echo " "
16492         echo "Stripping down executable paths..." >&4
16493         for file in $loclist $trylist; do
16494                 eval temp=\$$file
16495                 eval $file=`basename $temp`
16496         done
16497         ;;
16498 esac
16499
16500 : create config.sh file
16501 echo " "
16502 echo "Creating config.sh..." >&4
16503 $spitshell <<EOT >config.sh
16504 $startsh
16505 #
16506 # This file was produced by running the Configure script. It holds all the
16507 # definitions figured out by Configure. Should you modify one of these values,
16508 # do not forget to propagate your changes by running "Configure -der". You may
16509 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16510 #
16511
16512 # Package name      : $package
16513 # Source directory  : $src
16514 # Configuration time: $cf_time
16515 # Configured by     : $cf_by
16516 # Target system     : $myuname
16517
16518 Author='$Author'
16519 Date='$Date'
16520 Header='$Header'
16521 Id='$Id'
16522 Locker='$Locker'
16523 Log='$Log'
16524 Mcc='$Mcc'
16525 RCSfile='$RCSfile'
16526 Revision='$Revision'
16527 Source='$Source'
16528 State='$State'
16529 _a='$_a'
16530 _exe='$_exe'
16531 _o='$_o'
16532 afs='$afs'
16533 afsroot='$afsroot'
16534 alignbytes='$alignbytes'
16535 ansi2knr='$ansi2knr'
16536 aphostname='$aphostname'
16537 api_revision='$api_revision'
16538 api_subversion='$api_subversion'
16539 api_version='$api_version'
16540 api_versionstring='$api_versionstring'
16541 ar='$ar'
16542 archlib='$archlib'
16543 archlibexp='$archlibexp'
16544 archname64='$archname64'
16545 archname='$archname'
16546 archobjs='$archobjs'
16547 awk='$awk'
16548 baserev='$baserev'
16549 bash='$bash'
16550 bin='$bin'
16551 bincompat5005='$bincompat5005'
16552 binexp='$binexp'
16553 bison='$bison'
16554 byacc='$byacc'
16555 byteorder='$byteorder'
16556 c='$c'
16557 castflags='$castflags'
16558 cat='$cat'
16559 cc='$cc'
16560 cccdlflags='$cccdlflags'
16561 ccdlflags='$ccdlflags'
16562 ccflags='$ccflags'
16563 ccflags_uselargefiles='$ccflags_uselargefiles'
16564 ccname='$ccname'
16565 ccsymbols='$ccsymbols'
16566 ccversion='$ccversion'
16567 cf_by='$cf_by'
16568 cf_email='$cf_email'
16569 cf_time='$cf_time'
16570 charsize='$charsize'
16571 chgrp='$chgrp'
16572 chmod='$chmod'
16573 chown='$chown'
16574 clocktype='$clocktype'
16575 comm='$comm'
16576 compress='$compress'
16577 contains='$contains'
16578 cp='$cp'
16579 cpio='$cpio'
16580 cpp='$cpp'
16581 cpp_stuff='$cpp_stuff'
16582 cppccsymbols='$cppccsymbols'
16583 cppflags='$cppflags'
16584 cpplast='$cpplast'
16585 cppminus='$cppminus'
16586 cpprun='$cpprun'
16587 cppstdin='$cppstdin'
16588 cppsymbols='$cppsymbols'
16589 cryptlib='$cryptlib'
16590 csh='$csh'
16591 d_Gconvert='$d_Gconvert'
16592 d_PRIEUldbl='$d_PRIEUldbl'
16593 d_PRIFUldbl='$d_PRIFUldbl'
16594 d_PRIGUldbl='$d_PRIGUldbl'
16595 d_PRIXU64='$d_PRIXU64'
16596 d_PRId64='$d_PRId64'
16597 d_PRIeldbl='$d_PRIeldbl'
16598 d_PRIfldbl='$d_PRIfldbl'
16599 d_PRIgldbl='$d_PRIgldbl'
16600 d_PRIi64='$d_PRIi64'
16601 d_PRIo64='$d_PRIo64'
16602 d_PRIu64='$d_PRIu64'
16603 d_PRIx64='$d_PRIx64'
16604 d_SCNfldbl='$d_SCNfldbl'
16605 d__fwalk='$d__fwalk'
16606 d_access='$d_access'
16607 d_accessx='$d_accessx'
16608 d_alarm='$d_alarm'
16609 d_archlib='$d_archlib'
16610 d_atolf='$d_atolf'
16611 d_atoll='$d_atoll'
16612 d_attribut='$d_attribut'
16613 d_bcmp='$d_bcmp'
16614 d_bcopy='$d_bcopy'
16615 d_bincompat5005='$d_bincompat5005'
16616 d_bsd='$d_bsd'
16617 d_bsdgetpgrp='$d_bsdgetpgrp'
16618 d_bsdsetpgrp='$d_bsdsetpgrp'
16619 d_bzero='$d_bzero'
16620 d_casti32='$d_casti32'
16621 d_castneg='$d_castneg'
16622 d_charvspr='$d_charvspr'
16623 d_chown='$d_chown'
16624 d_chroot='$d_chroot'
16625 d_chsize='$d_chsize'
16626 d_closedir='$d_closedir'
16627 d_cmsghdr_s='$d_cmsghdr_s'
16628 d_const='$d_const'
16629 d_crypt='$d_crypt'
16630 d_csh='$d_csh'
16631 d_cuserid='$d_cuserid'
16632 d_dbl_dig='$d_dbl_dig'
16633 d_dbminitproto='$d_dbminitproto'
16634 d_difftime='$d_difftime'
16635 d_dirnamlen='$d_dirnamlen'
16636 d_dlerror='$d_dlerror'
16637 d_dlopen='$d_dlopen'
16638 d_dlsymun='$d_dlsymun'
16639 d_dosuid='$d_dosuid'
16640 d_drand48proto='$d_drand48proto'
16641 d_dup2='$d_dup2'
16642 d_eaccess='$d_eaccess'
16643 d_endgrent='$d_endgrent'
16644 d_endhent='$d_endhent'
16645 d_endnent='$d_endnent'
16646 d_endpent='$d_endpent'
16647 d_endpwent='$d_endpwent'
16648 d_endsent='$d_endsent'
16649 d_eofnblk='$d_eofnblk'
16650 d_eunice='$d_eunice'
16651 d_fchdir='$d_fchdir'
16652 d_fchmod='$d_fchmod'
16653 d_fchown='$d_fchown'
16654 d_fcntl='$d_fcntl'
16655 d_fcntl_can_lock='$d_fcntl_can_lock'
16656 d_fd_macros='$d_fd_macros'
16657 d_fd_set='$d_fd_set'
16658 d_fds_bits='$d_fds_bits'
16659 d_fgetpos='$d_fgetpos'
16660 d_flexfnam='$d_flexfnam'
16661 d_flock='$d_flock'
16662 d_flockproto='$d_flockproto'
16663 d_fork='$d_fork'
16664 d_fpathconf='$d_fpathconf'
16665 d_fpos64_t='$d_fpos64_t'
16666 d_frexpl='$d_frexpl'
16667 d_fs_data_s='$d_fs_data_s'
16668 d_fseeko='$d_fseeko'
16669 d_fsetpos='$d_fsetpos'
16670 d_fstatfs='$d_fstatfs'
16671 d_fstatvfs='$d_fstatvfs'
16672 d_fsync='$d_fsync'
16673 d_ftello='$d_ftello'
16674 d_ftime='$d_ftime'
16675 d_getcwd='$d_getcwd'
16676 d_getespwnam='$d_getespwnam'
16677 d_getfsstat='$d_getfsstat'
16678 d_getgrent='$d_getgrent'
16679 d_getgrps='$d_getgrps'
16680 d_gethbyaddr='$d_gethbyaddr'
16681 d_gethbyname='$d_gethbyname'
16682 d_gethent='$d_gethent'
16683 d_gethname='$d_gethname'
16684 d_gethostprotos='$d_gethostprotos'
16685 d_getitimer='$d_getitimer'
16686 d_getlogin='$d_getlogin'
16687 d_getmnt='$d_getmnt'
16688 d_getmntent='$d_getmntent'
16689 d_getnbyaddr='$d_getnbyaddr'
16690 d_getnbyname='$d_getnbyname'
16691 d_getnent='$d_getnent'
16692 d_getnetprotos='$d_getnetprotos'
16693 d_getpagsz='$d_getpagsz'
16694 d_getpbyname='$d_getpbyname'
16695 d_getpbynumber='$d_getpbynumber'
16696 d_getpent='$d_getpent'
16697 d_getpgid='$d_getpgid'
16698 d_getpgrp2='$d_getpgrp2'
16699 d_getpgrp='$d_getpgrp'
16700 d_getppid='$d_getppid'
16701 d_getprior='$d_getprior'
16702 d_getprotoprotos='$d_getprotoprotos'
16703 d_getprpwnam='$d_getprpwnam'
16704 d_getpwent='$d_getpwent'
16705 d_getsbyname='$d_getsbyname'
16706 d_getsbyport='$d_getsbyport'
16707 d_getsent='$d_getsent'
16708 d_getservprotos='$d_getservprotos'
16709 d_getspnam='$d_getspnam'
16710 d_gettimeod='$d_gettimeod'
16711 d_gnulibc='$d_gnulibc'
16712 d_grpasswd='$d_grpasswd'
16713 d_hasmntopt='$d_hasmntopt'
16714 d_htonl='$d_htonl'
16715 d_iconv='$d_iconv'
16716 d_index='$d_index'
16717 d_inetaton='$d_inetaton'
16718 d_int64_t='$d_int64_t'
16719 d_isascii='$d_isascii'
16720 d_isnan='$d_isnan'
16721 d_isnanl='$d_isnanl'
16722 d_killpg='$d_killpg'
16723 d_lchown='$d_lchown'
16724 d_ldbl_dig='$d_ldbl_dig'
16725 d_link='$d_link'
16726 d_locconv='$d_locconv'
16727 d_lockf='$d_lockf'
16728 d_longdbl='$d_longdbl'
16729 d_longlong='$d_longlong'
16730 d_lseekproto='$d_lseekproto'
16731 d_lstat='$d_lstat'
16732 d_madvise='$d_madvise'
16733 d_mblen='$d_mblen'
16734 d_mbstowcs='$d_mbstowcs'
16735 d_mbtowc='$d_mbtowc'
16736 d_memchr='$d_memchr'
16737 d_memcmp='$d_memcmp'
16738 d_memcpy='$d_memcpy'
16739 d_memmove='$d_memmove'
16740 d_memset='$d_memset'
16741 d_mkdir='$d_mkdir'
16742 d_mkdtemp='$d_mkdtemp'
16743 d_mkfifo='$d_mkfifo'
16744 d_mkstemp='$d_mkstemp'
16745 d_mkstemps='$d_mkstemps'
16746 d_mktime='$d_mktime'
16747 d_mmap='$d_mmap'
16748 d_modfl='$d_modfl'
16749 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16750 d_mprotect='$d_mprotect'
16751 d_msg='$d_msg'
16752 d_msg_ctrunc='$d_msg_ctrunc'
16753 d_msg_dontroute='$d_msg_dontroute'
16754 d_msg_oob='$d_msg_oob'
16755 d_msg_peek='$d_msg_peek'
16756 d_msg_proxy='$d_msg_proxy'
16757 d_msgctl='$d_msgctl'
16758 d_msgget='$d_msgget'
16759 d_msghdr_s='$d_msghdr_s'
16760 d_msgrcv='$d_msgrcv'
16761 d_msgsnd='$d_msgsnd'
16762 d_msync='$d_msync'
16763 d_munmap='$d_munmap'
16764 d_mymalloc='$d_mymalloc'
16765 d_nice='$d_nice'
16766 d_nl_langinfo='$d_nl_langinfo'
16767 d_nv_preserves_uv='$d_nv_preserves_uv'
16768 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16769 d_off64_t='$d_off64_t'
16770 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16771 d_oldpthreads='$d_oldpthreads'
16772 d_oldsock='$d_oldsock'
16773 d_open3='$d_open3'
16774 d_pathconf='$d_pathconf'
16775 d_pause='$d_pause'
16776 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16777 d_phostname='$d_phostname'
16778 d_pipe='$d_pipe'
16779 d_poll='$d_poll'
16780 d_portable='$d_portable'
16781 d_pthread_yield='$d_pthread_yield'
16782 d_pwage='$d_pwage'
16783 d_pwchange='$d_pwchange'
16784 d_pwclass='$d_pwclass'
16785 d_pwcomment='$d_pwcomment'
16786 d_pwexpire='$d_pwexpire'
16787 d_pwgecos='$d_pwgecos'
16788 d_pwpasswd='$d_pwpasswd'
16789 d_pwquota='$d_pwquota'
16790 d_qgcvt='$d_qgcvt'
16791 d_quad='$d_quad'
16792 d_readdir='$d_readdir'
16793 d_readlink='$d_readlink'
16794 d_readv='$d_readv'
16795 d_recvmsg='$d_recvmsg'
16796 d_rename='$d_rename'
16797 d_rewinddir='$d_rewinddir'
16798 d_rmdir='$d_rmdir'
16799 d_safebcpy='$d_safebcpy'
16800 d_safemcpy='$d_safemcpy'
16801 d_sanemcmp='$d_sanemcmp'
16802 d_sbrkproto='$d_sbrkproto'
16803 d_sched_yield='$d_sched_yield'
16804 d_scm_rights='$d_scm_rights'
16805 d_seekdir='$d_seekdir'
16806 d_select='$d_select'
16807 d_sem='$d_sem'
16808 d_semctl='$d_semctl'
16809 d_semctl_semid_ds='$d_semctl_semid_ds'
16810 d_semctl_semun='$d_semctl_semun'
16811 d_semget='$d_semget'
16812 d_semop='$d_semop'
16813 d_sendmsg='$d_sendmsg'
16814 d_setegid='$d_setegid'
16815 d_seteuid='$d_seteuid'
16816 d_setgrent='$d_setgrent'
16817 d_setgrps='$d_setgrps'
16818 d_sethent='$d_sethent'
16819 d_setitimer='$d_setitimer'
16820 d_setlinebuf='$d_setlinebuf'
16821 d_setlocale='$d_setlocale'
16822 d_setnent='$d_setnent'
16823 d_setpent='$d_setpent'
16824 d_setpgid='$d_setpgid'
16825 d_setpgrp2='$d_setpgrp2'
16826 d_setpgrp='$d_setpgrp'
16827 d_setprior='$d_setprior'
16828 d_setproctitle='$d_setproctitle'
16829 d_setpwent='$d_setpwent'
16830 d_setregid='$d_setregid'
16831 d_setresgid='$d_setresgid'
16832 d_setresuid='$d_setresuid'
16833 d_setreuid='$d_setreuid'
16834 d_setrgid='$d_setrgid'
16835 d_setruid='$d_setruid'
16836 d_setsent='$d_setsent'
16837 d_setsid='$d_setsid'
16838 d_setvbuf='$d_setvbuf'
16839 d_sfio='$d_sfio'
16840 d_shm='$d_shm'
16841 d_shmat='$d_shmat'
16842 d_shmatprototype='$d_shmatprototype'
16843 d_shmctl='$d_shmctl'
16844 d_shmdt='$d_shmdt'
16845 d_shmget='$d_shmget'
16846 d_sigaction='$d_sigaction'
16847 d_sigprocmask='$d_sigprocmask'
16848 d_sigsetjmp='$d_sigsetjmp'
16849 d_sockatmark='$d_sockatmark'
16850 d_sockatmarkproto='$d_sockatmarkproto'
16851 d_socket='$d_socket'
16852 d_socklen_t='$d_socklen_t'
16853 d_sockpair='$d_sockpair'
16854 d_socks5_init='$d_socks5_init'
16855 d_sqrtl='$d_sqrtl'
16856 d_sresgproto='$d_sresgproto'
16857 d_sresuproto='$d_sresuproto'
16858 d_statblks='$d_statblks'
16859 d_statfs_f_flags='$d_statfs_f_flags'
16860 d_statfs_s='$d_statfs_s'
16861 d_statvfs='$d_statvfs'
16862 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16863 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16864 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16865 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16866 d_stdio_stream_array='$d_stdio_stream_array'
16867 d_stdiobase='$d_stdiobase'
16868 d_stdstdio='$d_stdstdio'
16869 d_strchr='$d_strchr'
16870 d_strcoll='$d_strcoll'
16871 d_strctcpy='$d_strctcpy'
16872 d_strerrm='$d_strerrm'
16873 d_strerror='$d_strerror'
16874 d_strftime='$d_strftime'
16875 d_strtod='$d_strtod'
16876 d_strtol='$d_strtol'
16877 d_strtold='$d_strtold'
16878 d_strtoll='$d_strtoll'
16879 d_strtoq='$d_strtoq'
16880 d_strtoul='$d_strtoul'
16881 d_strtoull='$d_strtoull'
16882 d_strtouq='$d_strtouq'
16883 d_strxfrm='$d_strxfrm'
16884 d_suidsafe='$d_suidsafe'
16885 d_symlink='$d_symlink'
16886 d_syscall='$d_syscall'
16887 d_syscallproto='$d_syscallproto'
16888 d_sysconf='$d_sysconf'
16889 d_sysernlst='$d_sysernlst'
16890 d_syserrlst='$d_syserrlst'
16891 d_system='$d_system'
16892 d_tcgetpgrp='$d_tcgetpgrp'
16893 d_tcsetpgrp='$d_tcsetpgrp'
16894 d_telldir='$d_telldir'
16895 d_telldirproto='$d_telldirproto'
16896 d_time='$d_time'
16897 d_times='$d_times'
16898 d_truncate='$d_truncate'
16899 d_tzname='$d_tzname'
16900 d_u32align='$d_u32align'
16901 d_ualarm='$d_ualarm'
16902 d_umask='$d_umask'
16903 d_uname='$d_uname'
16904 d_union_semun='$d_union_semun'
16905 d_usleep='$d_usleep'
16906 d_usleepproto='$d_usleepproto'
16907 d_ustat='$d_ustat'
16908 d_vendorarch='$d_vendorarch'
16909 d_vendorbin='$d_vendorbin'
16910 d_vendorlib='$d_vendorlib'
16911 d_vfork='$d_vfork'
16912 d_void_closedir='$d_void_closedir'
16913 d_voidsig='$d_voidsig'
16914 d_voidtty='$d_voidtty'
16915 d_volatile='$d_volatile'
16916 d_vprintf='$d_vprintf'
16917 d_wait4='$d_wait4'
16918 d_waitpid='$d_waitpid'
16919 d_wcstombs='$d_wcstombs'
16920 d_wctomb='$d_wctomb'
16921 d_writev='$d_writev'
16922 d_xenix='$d_xenix'
16923 date='$date'
16924 db_hashtype='$db_hashtype'
16925 db_prefixtype='$db_prefixtype'
16926 db_version_major='$db_version_major'
16927 db_version_minor='$db_version_minor'
16928 db_version_patch='$db_version_patch'
16929 defvoidused='$defvoidused'
16930 direntrytype='$direntrytype'
16931 dlext='$dlext'
16932 dlsrc='$dlsrc'
16933 doublesize='$doublesize'
16934 drand01='$drand01'
16935 dynamic_ext='$dynamic_ext'
16936 eagain='$eagain'
16937 ebcdic='$ebcdic'
16938 echo='$echo'
16939 egrep='$egrep'
16940 emacs='$emacs'
16941 eunicefix='$eunicefix'
16942 exe_ext='$exe_ext'
16943 expr='$expr'
16944 extensions='$extensions'
16945 fflushNULL='$fflushNULL'
16946 fflushall='$fflushall'
16947 find='$find'
16948 firstmakefile='$firstmakefile'
16949 flex='$flex'
16950 fpossize='$fpossize'
16951 fpostype='$fpostype'
16952 freetype='$freetype'
16953 from='$from'
16954 full_ar='$full_ar'
16955 full_csh='$full_csh'
16956 full_sed='$full_sed'
16957 gccosandvers='$gccosandvers'
16958 gccversion='$gccversion'
16959 gidformat='$gidformat'
16960 gidsign='$gidsign'
16961 gidsize='$gidsize'
16962 gidtype='$gidtype'
16963 glibpth='$glibpth'
16964 grep='$grep'
16965 groupcat='$groupcat'
16966 groupstype='$groupstype'
16967 gzip='$gzip'
16968 h_fcntl='$h_fcntl'
16969 h_sysfile='$h_sysfile'
16970 hint='$hint'
16971 hostcat='$hostcat'
16972 i16size='$i16size'
16973 i16type='$i16type'
16974 i32size='$i32size'
16975 i32type='$i32type'
16976 i64size='$i64size'
16977 i64type='$i64type'
16978 i8size='$i8size'
16979 i8type='$i8type'
16980 i_arpainet='$i_arpainet'
16981 i_bsdioctl='$i_bsdioctl'
16982 i_db='$i_db'
16983 i_dbm='$i_dbm'
16984 i_dirent='$i_dirent'
16985 i_dld='$i_dld'
16986 i_dlfcn='$i_dlfcn'
16987 i_fcntl='$i_fcntl'
16988 i_float='$i_float'
16989 i_gdbm='$i_gdbm'
16990 i_grp='$i_grp'
16991 i_iconv='$i_iconv'
16992 i_ieeefp='$i_ieeefp'
16993 i_inttypes='$i_inttypes'
16994 i_langinfo='$i_langinfo'
16995 i_libutil='$i_libutil'
16996 i_limits='$i_limits'
16997 i_locale='$i_locale'
16998 i_machcthr='$i_machcthr'
16999 i_malloc='$i_malloc'
17000 i_math='$i_math'
17001 i_memory='$i_memory'
17002 i_mntent='$i_mntent'
17003 i_ndbm='$i_ndbm'
17004 i_netdb='$i_netdb'
17005 i_neterrno='$i_neterrno'
17006 i_netinettcp='$i_netinettcp'
17007 i_niin='$i_niin'
17008 i_poll='$i_poll'
17009 i_prot='$i_prot'
17010 i_pthread='$i_pthread'
17011 i_pwd='$i_pwd'
17012 i_rpcsvcdbm='$i_rpcsvcdbm'
17013 i_sfio='$i_sfio'
17014 i_sgtty='$i_sgtty'
17015 i_shadow='$i_shadow'
17016 i_socks='$i_socks'
17017 i_stdarg='$i_stdarg'
17018 i_stddef='$i_stddef'
17019 i_stdlib='$i_stdlib'
17020 i_string='$i_string'
17021 i_sunmath='$i_sunmath'
17022 i_sysaccess='$i_sysaccess'
17023 i_sysdir='$i_sysdir'
17024 i_sysfile='$i_sysfile'
17025 i_sysfilio='$i_sysfilio'
17026 i_sysin='$i_sysin'
17027 i_sysioctl='$i_sysioctl'
17028 i_syslog='$i_syslog'
17029 i_sysmman='$i_sysmman'
17030 i_sysmode='$i_sysmode'
17031 i_sysmount='$i_sysmount'
17032 i_sysndir='$i_sysndir'
17033 i_sysparam='$i_sysparam'
17034 i_sysresrc='$i_sysresrc'
17035 i_syssecrt='$i_syssecrt'
17036 i_sysselct='$i_sysselct'
17037 i_syssockio='$i_syssockio'
17038 i_sysstat='$i_sysstat'
17039 i_sysstatfs='$i_sysstatfs'
17040 i_sysstatvfs='$i_sysstatvfs'
17041 i_systime='$i_systime'
17042 i_systimek='$i_systimek'
17043 i_systimes='$i_systimes'
17044 i_systypes='$i_systypes'
17045 i_sysuio='$i_sysuio'
17046 i_sysun='$i_sysun'
17047 i_sysutsname='$i_sysutsname'
17048 i_sysvfs='$i_sysvfs'
17049 i_syswait='$i_syswait'
17050 i_termio='$i_termio'
17051 i_termios='$i_termios'
17052 i_time='$i_time'
17053 i_unistd='$i_unistd'
17054 i_ustat='$i_ustat'
17055 i_utime='$i_utime'
17056 i_values='$i_values'
17057 i_varargs='$i_varargs'
17058 i_varhdr='$i_varhdr'
17059 i_vfork='$i_vfork'
17060 ignore_versioned_solibs='$ignore_versioned_solibs'
17061 inc_version_list='$inc_version_list'
17062 inc_version_list_init='$inc_version_list_init'
17063 incpath='$incpath'
17064 inews='$inews'
17065 installarchlib='$installarchlib'
17066 installbin='$installbin'
17067 installman1dir='$installman1dir'
17068 installman3dir='$installman3dir'
17069 installprefix='$installprefix'
17070 installprefixexp='$installprefixexp'
17071 installprivlib='$installprivlib'
17072 installscript='$installscript'
17073 installsitearch='$installsitearch'
17074 installsitebin='$installsitebin'
17075 installsitelib='$installsitelib'
17076 installstyle='$installstyle'
17077 installusrbinperl='$installusrbinperl'
17078 installvendorarch='$installvendorarch'
17079 installvendorbin='$installvendorbin'
17080 installvendorlib='$installvendorlib'
17081 intsize='$intsize'
17082 issymlink='$issymlink'
17083 ivdformat='$ivdformat'
17084 ivsize='$ivsize'
17085 ivtype='$ivtype'
17086 known_extensions='$known_extensions'
17087 ksh='$ksh'
17088 ld='$ld'
17089 lddlflags='$lddlflags'
17090 ldflags='$ldflags'
17091 ldflags_uselargefiles='$ldflags_uselargefiles'
17092 ldlibpthname='$ldlibpthname'
17093 less='$less'
17094 lib_ext='$lib_ext'
17095 libc='$libc'
17096 libperl='$libperl'
17097 libpth='$libpth'
17098 libs='$libs'
17099 libsdirs='$libsdirs'
17100 libsfiles='$libsfiles'
17101 libsfound='$libsfound'
17102 libspath='$libspath'
17103 libswanted='$libswanted'
17104 libswanted_uselargefiles='$libswanted_uselargefiles'
17105 line='$line'
17106 lint='$lint'
17107 lkflags='$lkflags'
17108 ln='$ln'
17109 lns='$lns'
17110 locincpth='$locincpth'
17111 loclibpth='$loclibpth'
17112 longdblsize='$longdblsize'
17113 longlongsize='$longlongsize'
17114 longsize='$longsize'
17115 lp='$lp'
17116 lpr='$lpr'
17117 ls='$ls'
17118 lseeksize='$lseeksize'
17119 lseektype='$lseektype'
17120 mail='$mail'
17121 mailx='$mailx'
17122 make='$make'
17123 make_set_make='$make_set_make'
17124 mallocobj='$mallocobj'
17125 mallocsrc='$mallocsrc'
17126 malloctype='$malloctype'
17127 man1dir='$man1dir'
17128 man1direxp='$man1direxp'
17129 man1ext='$man1ext'
17130 man3dir='$man3dir'
17131 man3direxp='$man3direxp'
17132 man3ext='$man3ext'
17133 mips_type='$mips_type'
17134 mkdir='$mkdir'
17135 mmaptype='$mmaptype'
17136 modetype='$modetype'
17137 more='$more'
17138 multiarch='$multiarch'
17139 mv='$mv'
17140 myarchname='$myarchname'
17141 mydomain='$mydomain'
17142 myhostname='$myhostname'
17143 myuname='$myuname'
17144 n='$n'
17145 need_va_copy='$need_va_copy'
17146 netdb_hlen_type='$netdb_hlen_type'
17147 netdb_host_type='$netdb_host_type'
17148 netdb_name_type='$netdb_name_type'
17149 netdb_net_type='$netdb_net_type'
17150 nm='$nm'
17151 nm_opt='$nm_opt'
17152 nm_so_opt='$nm_so_opt'
17153 nonxs_ext='$nonxs_ext'
17154 nroff='$nroff'
17155 nvEUformat='$nvEUformat'
17156 nvFUformat='$nvFUformat'
17157 nvGUformat='$nvGUformat'
17158 nveformat='$nveformat'
17159 nvfformat='$nvfformat'
17160 nvgformat='$nvgformat'
17161 nvsize='$nvsize'
17162 nvtype='$nvtype'
17163 o_nonblock='$o_nonblock'
17164 obj_ext='$obj_ext'
17165 old_pthread_create_joinable='$old_pthread_create_joinable'
17166 optimize='$optimize'
17167 orderlib='$orderlib'
17168 osname='$osname'
17169 osvers='$osvers'
17170 otherlibdirs='$otherlibdirs'
17171 package='$package'
17172 pager='$pager'
17173 passcat='$passcat'
17174 patchlevel='$patchlevel'
17175 path_sep='$path_sep'
17176 perl5='$perl5'
17177 perl='$perl'
17178 perl_patchlevel='$perl_patchlevel'
17179 perladmin='$perladmin'
17180 perllibs='$perllibs'
17181 perlpath='$perlpath'
17182 pg='$pg'
17183 phostname='$phostname'
17184 pidtype='$pidtype'
17185 plibpth='$plibpth'
17186 pm_apiversion='$pm_apiversion'
17187 pmake='$pmake'
17188 pr='$pr'
17189 prefix='$prefix'
17190 prefixexp='$prefixexp'
17191 privlib='$privlib'
17192 privlibexp='$privlibexp'
17193 prototype='$prototype'
17194 ptrsize='$ptrsize'
17195 quadkind='$quadkind'
17196 quadtype='$quadtype'
17197 randbits='$randbits'
17198 randfunc='$randfunc'
17199 randseedtype='$randseedtype'
17200 ranlib='$ranlib'
17201 rd_nodata='$rd_nodata'
17202 revision='$revision'
17203 rm='$rm'
17204 rmail='$rmail'
17205 run='$run'
17206 runnm='$runnm'
17207 sPRIEUldbl='$sPRIEUldbl'
17208 sPRIFUldbl='$sPRIFUldbl'
17209 sPRIGUldbl='$sPRIGUldbl'
17210 sPRIXU64='$sPRIXU64'
17211 sPRId64='$sPRId64'
17212 sPRIeldbl='$sPRIeldbl'
17213 sPRIfldbl='$sPRIfldbl'
17214 sPRIgldbl='$sPRIgldbl'
17215 sPRIi64='$sPRIi64'
17216 sPRIo64='$sPRIo64'
17217 sPRIu64='$sPRIu64'
17218 sPRIx64='$sPRIx64'
17219 sSCNfldbl='$sSCNfldbl'
17220 sched_yield='$sched_yield'
17221 scriptdir='$scriptdir'
17222 scriptdirexp='$scriptdirexp'
17223 sed='$sed'
17224 seedfunc='$seedfunc'
17225 selectminbits='$selectminbits'
17226 selecttype='$selecttype'
17227 sendmail='$sendmail'
17228 sh='$sh'
17229 shar='$shar'
17230 sharpbang='$sharpbang'
17231 shmattype='$shmattype'
17232 shortsize='$shortsize'
17233 shrpenv='$shrpenv'
17234 shsharp='$shsharp'
17235 sig_count='$sig_count'
17236 sig_name='$sig_name'
17237 sig_name_init='$sig_name_init'
17238 sig_num='$sig_num'
17239 sig_num_init='$sig_num_init'
17240 sig_size='$sig_size'
17241 signal_t='$signal_t'
17242 sitearch='$sitearch'
17243 sitearchexp='$sitearchexp'
17244 sitebin='$sitebin'
17245 sitebinexp='$sitebinexp'
17246 sitelib='$sitelib'
17247 sitelib_stem='$sitelib_stem'
17248 sitelibexp='$sitelibexp'
17249 siteprefix='$siteprefix'
17250 siteprefixexp='$siteprefixexp'
17251 sizesize='$sizesize'
17252 sizetype='$sizetype'
17253 sleep='$sleep'
17254 smail='$smail'
17255 so='$so'
17256 sockethdr='$sockethdr'
17257 socketlib='$socketlib'
17258 socksizetype='$socksizetype'
17259 sort='$sort'
17260 spackage='$spackage'
17261 spitshell='$spitshell'
17262 src='$src'
17263 ssizetype='$ssizetype'
17264 startperl='$startperl'
17265 startsh='$startsh'
17266 static_ext='$static_ext'
17267 stdchar='$stdchar'
17268 stdio_base='$stdio_base'
17269 stdio_bufsiz='$stdio_bufsiz'
17270 stdio_cnt='$stdio_cnt'
17271 stdio_filbuf='$stdio_filbuf'
17272 stdio_ptr='$stdio_ptr'
17273 stdio_stream_array='$stdio_stream_array'
17274 strings='$strings'
17275 submit='$submit'
17276 subversion='$subversion'
17277 sysman='$sysman'
17278 tail='$tail'
17279 tar='$tar'
17280 targetarch='$targetarch'
17281 tbl='$tbl'
17282 tee='$tee'
17283 test='$test'
17284 timeincl='$timeincl'
17285 timetype='$timetype'
17286 to='$to'
17287 touch='$touch'
17288 tr='$tr'
17289 trnl='$trnl'
17290 troff='$troff'
17291 u16size='$u16size'
17292 u16type='$u16type'
17293 u32size='$u32size'
17294 u32type='$u32type'
17295 u64size='$u64size'
17296 u64type='$u64type'
17297 u8size='$u8size'
17298 u8type='$u8type'
17299 uidformat='$uidformat'
17300 uidsign='$uidsign'
17301 uidsize='$uidsize'
17302 uidtype='$uidtype'
17303 uname='$uname'
17304 uniq='$uniq'
17305 uquadtype='$uquadtype'
17306 use5005threads='$use5005threads'
17307 use64bitall='$use64bitall'
17308 use64bitint='$use64bitint'
17309 usecrosscompile='$usecrosscompile'
17310 usedl='$usedl'
17311 useithreads='$useithreads'
17312 uselargefiles='$uselargefiles'
17313 uselongdouble='$uselongdouble'
17314 usemorebits='$usemorebits'
17315 usemultiplicity='$usemultiplicity'
17316 usemymalloc='$usemymalloc'
17317 usenm='$usenm'
17318 useopcode='$useopcode'
17319 useperlio='$useperlio'
17320 useposix='$useposix'
17321 usereentrant='$usereentrant'
17322 usesfio='$usesfio'
17323 useshrplib='$useshrplib'
17324 usesocks='$usesocks'
17325 usethreads='$usethreads'
17326 usevendorprefix='$usevendorprefix'
17327 usevfork='$usevfork'
17328 usrinc='$usrinc'
17329 uuname='$uuname'
17330 uvXUformat='$uvXUformat'
17331 uvoformat='$uvoformat'
17332 uvsize='$uvsize'
17333 uvtype='$uvtype'
17334 uvuformat='$uvuformat'
17335 uvxformat='$uvxformat'
17336 vendorarch='$vendorarch'
17337 vendorarchexp='$vendorarchexp'
17338 vendorbin='$vendorbin'
17339 vendorbinexp='$vendorbinexp'
17340 vendorlib='$vendorlib'
17341 vendorlib_stem='$vendorlib_stem'
17342 vendorlibexp='$vendorlibexp'
17343 vendorprefix='$vendorprefix'
17344 vendorprefixexp='$vendorprefixexp'
17345 version='$version'
17346 versiononly='$versiononly'
17347 vi='$vi'
17348 voidflags='$voidflags'
17349 xlibpth='$xlibpth'
17350 xs_apiversion='$xs_apiversion'
17351 yacc='$yacc'
17352 yaccflags='$yaccflags'
17353 zcat='$zcat'
17354 zip='$zip'
17355 EOT
17356
17357 : Add in command line options if available
17358 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17359
17360 : add special variables
17361 $test -f $src/patchlevel.h && \
17362 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17363 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17364 echo "PERL_CONFIG_SH=true" >>config.sh
17365
17366 : propagate old symbols
17367 if $test -f UU/config.sh; then
17368         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17369         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17370         $sort | $uniq -u >UU/oldsyms
17371         set X `cat UU/oldsyms`
17372         shift
17373         case $# in
17374         0) ;;
17375         *)
17376                 cat <<EOM
17377 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17378 EOM
17379                 echo "# Variables propagated from previous config.sh file." >>config.sh
17380                 for sym in `cat UU/oldsyms`; do
17381                         echo "    Propagating $hint variable "'$'"$sym..."
17382                         eval 'tmp="$'"${sym}"'"'
17383                         echo "$tmp" | \
17384                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17385                 done
17386                 ;;
17387         esac
17388 fi
17389
17390 : Finish up by extracting the .SH files
17391 case "$alldone" in
17392 exit)
17393         $rm -rf UU
17394         echo "Extraction done."
17395         exit 0
17396         ;;
17397 cont)
17398         ;;
17399 '')
17400         dflt=''
17401         nostick=true
17402         $cat <<EOM
17403
17404 If you'd like to make any changes to the config.sh file before I begin
17405 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17406
17407 EOM
17408         rp="Press return or use a shell escape to edit config.sh:"
17409         . UU/myread
17410         nostick=''
17411         case "$ans" in
17412         '') ;;
17413         *) : in case they cannot read
17414                 sh 1>&4 -c "$ans";;
17415         esac
17416         ;;
17417 esac
17418
17419 : if this fails, just run all the .SH files by hand
17420 . ./config.sh
17421
17422 echo " "
17423 exec 1>&4
17424 pwd=`pwd`
17425 . ./UU/extract
17426 cd $pwd
17427
17428 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17429         dflt=y
17430         case "$silent" in
17431         true) ;;
17432         *)
17433                 $cat <<EOM
17434
17435 Now you need to generate make dependencies by running "$make depend".
17436 You might prefer to run it in background: "$make depend > makedepend.out &"
17437 It can take a while, so you might not want to run it right now.
17438
17439 EOM
17440                 ;;
17441         esac
17442         rp="Run $make depend now?"
17443         . UU/myread
17444         case "$ans" in
17445         y*)
17446                 $make depend && echo "Now you must run '$make'."
17447                 ;;
17448         *)
17449                 echo "You must run '$make depend' then '$make'."
17450                 ;;
17451         esac
17452 elif test -f [Mm]akefile; then
17453         echo " "
17454         echo "Now you must run a $make."
17455 else
17456         echo "Configure done."
17457 fi
17458
17459 if $test -f Policy.sh; then
17460     $cat <<EOM
17461
17462 If you compile $package on a different machine or from a different object
17463 directory, copy the Policy.sh file from this object directory to the
17464 new one before you run Configure -- this will help you with most of
17465 the policy defaults.
17466
17467 EOM
17468 fi
17469 if $test -f config.msg; then
17470     echo "Hmm.  I also noted the following information while running:"
17471     echo " "
17472     $cat config.msg >&4
17473     $rm -f config.msg
17474 fi
17475 $rm -f kit*isdone ark*isdone
17476 $rm -rf UU
17477
17478 : End of Configure
17479