This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Encode/Tcl.t, for esc-seq encodings
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Jul  2 19:35:08 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchdir=''
357 d_fchmod=''
358 d_fchown=''
359 d_fcntl=''
360 d_fcntl_can_lock=''
361 d_fd_macros=''
362 d_fd_set=''
363 d_fds_bits=''
364 d_fgetpos=''
365 d_flexfnam=''
366 d_flock=''
367 d_flockproto=''
368 d_fork=''
369 d_fpos64_t=''
370 d_frexpl=''
371 d_fs_data_s=''
372 d_fseeko=''
373 d_fsetpos=''
374 d_fstatfs=''
375 d_fsync=''
376 d_ftello=''
377 d_ftime=''
378 d_gettimeod=''
379 d_Gconvert=''
380 d_getcwd=''
381 d_getespwnam=''
382 d_getfsstat=''
383 d_getgrent=''
384 d_getgrps=''
385 d_gethbyaddr=''
386 d_gethbyname=''
387 d_gethent=''
388 aphostname=''
389 d_gethname=''
390 d_phostname=''
391 d_uname=''
392 d_gethostprotos=''
393 d_getitimer=''
394 d_getlogin=''
395 d_getmnt=''
396 d_getmntent=''
397 d_getnbyaddr=''
398 d_getnbyname=''
399 d_getnent=''
400 d_getnetprotos=''
401 d_getpagsz=''
402 d_getpent=''
403 d_getpgid=''
404 d_getpgrp2=''
405 d_bsdgetpgrp=''
406 d_getpgrp=''
407 d_getppid=''
408 d_getprior=''
409 d_getpbyname=''
410 d_getpbynumber=''
411 d_getprotoprotos=''
412 d_getprpwnam=''
413 d_getpwent=''
414 d_getsent=''
415 d_getservprotos=''
416 d_getspnam=''
417 d_getsbyname=''
418 d_getsbyport=''
419 d_gnulibc=''
420 d_hasmntopt=''
421 d_htonl=''
422 d_iconv=''
423 d_inetaton=''
424 d_int64_t=''
425 d_isascii=''
426 d_isnan=''
427 d_isnanl=''
428 d_killpg=''
429 d_lchown=''
430 d_ldbl_dig=''
431 d_link=''
432 d_locconv=''
433 d_lockf=''
434 d_longdbl=''
435 longdblsize=''
436 d_longlong=''
437 longlongsize=''
438 d_lseekproto=''
439 d_lstat=''
440 d_madvise=''
441 d_mblen=''
442 d_mbstowcs=''
443 d_mbtowc=''
444 d_memchr=''
445 d_memcmp=''
446 d_memcpy=''
447 d_memmove=''
448 d_memset=''
449 d_mkdir=''
450 d_mkdtemp=''
451 d_mkfifo=''
452 d_mkstemp=''
453 d_mkstemps=''
454 d_mktime=''
455 d_mmap=''
456 mmaptype=''
457 d_modfl=''
458 d_modfl_pow32_bug=''
459 d_mprotect=''
460 d_msg=''
461 d_msgctl=''
462 d_msgget=''
463 d_msghdr_s=''
464 d_msgrcv=''
465 d_msgsnd=''
466 d_msync=''
467 d_munmap=''
468 d_nice=''
469 d_nl_langinfo=''
470 d_off64_t=''
471 d_open3=''
472 d_fpathconf=''
473 d_pathconf=''
474 d_pause=''
475 d_pipe=''
476 d_poll=''
477 d_portable=''
478 d_old_pthread_create_joinable=''
479 old_pthread_create_joinable=''
480 d_pthread_yield=''
481 d_sched_yield=''
482 sched_yield=''
483 d_qgcvt=''
484 d_readdir=''
485 d_rewinddir=''
486 d_seekdir=''
487 d_telldir=''
488 d_readlink=''
489 d_readv=''
490 d_recvmsg=''
491 d_rename=''
492 d_rmdir=''
493 d_safebcpy=''
494 d_safemcpy=''
495 d_sanemcmp=''
496 d_sbrkproto=''
497 d_select=''
498 d_sem=''
499 d_semctl=''
500 d_semget=''
501 d_semop=''
502 d_sendmsg=''
503 d_setegid=''
504 d_seteuid=''
505 d_setgrent=''
506 d_setgrps=''
507 d_sethent=''
508 d_setitimer=''
509 d_setlinebuf=''
510 d_setlocale=''
511 d_setnent=''
512 d_setpent=''
513 d_setpgid=''
514 d_setpgrp2=''
515 d_bsdsetpgrp=''
516 d_setpgrp=''
517 d_setprior=''
518 d_setproctitle=''
519 d_setpwent=''
520 d_setregid=''
521 d_setresgid=''
522 d_setresuid=''
523 d_setreuid=''
524 d_setrgid=''
525 d_setruid=''
526 d_setsent=''
527 d_setsid=''
528 d_setvbuf=''
529 d_sfio=''
530 usesfio=''
531 d_shm=''
532 d_shmat=''
533 d_shmatprototype=''
534 shmattype=''
535 d_shmctl=''
536 d_shmdt=''
537 d_shmget=''
538 d_sigaction=''
539 d_sigprocmask=''
540 d_sigsetjmp=''
541 d_sockatmark=''
542 d_sockatmarkproto=''
543 d_msg_ctrunc=''
544 d_msg_dontroute=''
545 d_msg_oob=''
546 d_msg_peek=''
547 d_msg_proxy=''
548 d_oldsock=''
549 d_scm_rights=''
550 d_socket=''
551 d_sockpair=''
552 sockethdr=''
553 socketlib=''
554 d_socklen_t=''
555 d_socks5_init=''
556 d_sqrtl=''
557 d_sresgproto=''
558 d_sresuproto=''
559 d_statblks=''
560 d_statfs_f_flags=''
561 d_statfs_s=''
562 d_fstatvfs=''
563 d_statvfs=''
564 d_stdio_cnt_lval=''
565 d_stdio_ptr_lval=''
566 d_stdio_ptr_lval_nochange_cnt=''
567 d_stdio_ptr_lval_sets_cnt=''
568 d_stdiobase=''
569 d_stdstdio=''
570 stdio_base=''
571 stdio_bufsiz=''
572 stdio_cnt=''
573 stdio_filbuf=''
574 stdio_ptr=''
575 d_index=''
576 d_strchr=''
577 d_strcoll=''
578 d_strctcpy=''
579 d_strerrm=''
580 d_strerror=''
581 d_sysernlst=''
582 d_syserrlst=''
583 d_strftime=''
584 d_strtod=''
585 d_strtol=''
586 d_strtold=''
587 d_strtoll=''
588 d_strtoq=''
589 d_strtoul=''
590 d_strtoull=''
591 d_strtouq=''
592 d_strxfrm=''
593 d_symlink=''
594 d_syscall=''
595 d_syscallproto=''
596 d_sysconf=''
597 d_system=''
598 d_tcgetpgrp=''
599 d_tcsetpgrp=''
600 d_telldirproto=''
601 d_time=''
602 timetype=''
603 clocktype=''
604 d_times=''
605 d_truncate=''
606 d_tzname=''
607 d_u32align=''
608 d_ualarm=''
609 d_umask=''
610 d_semctl_semid_ds=''
611 d_semctl_semun=''
612 d_union_semun=''
613 d_usleep=''
614 d_usleepproto=''
615 d_ustat=''
616 d_vfork=''
617 usevfork=''
618 d_voidsig=''
619 signal_t=''
620 d_volatile=''
621 d_charvspr=''
622 d_vprintf=''
623 d_wait4=''
624 d_waitpid=''
625 d_wcstombs=''
626 d_wctomb=''
627 d_writev=''
628 dlext=''
629 cccdlflags=''
630 ccdlflags=''
631 dlsrc=''
632 ld=''
633 lddlflags=''
634 usedl=''
635 doublesize=''
636 ebcdic=''
637 fflushNULL=''
638 fflushall=''
639 fpossize=''
640 fpostype=''
641 gccosandvers=''
642 gccversion=''
643 gidformat=''
644 gidsign=''
645 gidsize=''
646 gidtype=''
647 groupstype=''
648 h_fcntl=''
649 h_sysfile=''
650 i_arpainet=''
651 db_hashtype=''
652 db_prefixtype=''
653 db_version_major=''
654 db_version_minor=''
655 db_version_patch=''
656 i_db=''
657 i_dbm=''
658 i_rpcsvcdbm=''
659 d_dirnamlen=''
660 direntrytype=''
661 i_dirent=''
662 i_dld=''
663 i_dlfcn=''
664 i_fcntl=''
665 i_float=''
666 i_gdbm=''
667 d_grpasswd=''
668 i_grp=''
669 i_iconv=''
670 i_ieeefp=''
671 i_inttypes=''
672 i_langinfo=''
673 i_libutil=''
674 i_limits=''
675 i_locale=''
676 i_machcthr=''
677 i_malloc=''
678 i_math=''
679 i_memory=''
680 i_mntent=''
681 i_ndbm=''
682 i_netdb=''
683 i_neterrno=''
684 i_netinettcp=''
685 i_niin=''
686 i_sysin=''
687 i_poll=''
688 i_prot=''
689 i_pthread=''
690 d_pwage=''
691 d_pwchange=''
692 d_pwclass=''
693 d_pwcomment=''
694 d_pwexpire=''
695 d_pwgecos=''
696 d_pwpasswd=''
697 d_pwquota=''
698 i_pwd=''
699 i_sfio=''
700 i_shadow=''
701 i_socks=''
702 i_stddef=''
703 i_stdlib=''
704 i_string=''
705 strings=''
706 i_sunmath=''
707 i_sysaccess=''
708 i_sysdir=''
709 i_sysfile=''
710 d_voidtty=''
711 i_bsdioctl=''
712 i_sysfilio=''
713 i_sysioctl=''
714 i_syssockio=''
715 i_syslog=''
716 i_sysmman=''
717 i_sysmode=''
718 i_sysmount=''
719 i_sysndir=''
720 i_sysparam=''
721 i_sysresrc=''
722 i_syssecrt=''
723 i_sysselct=''
724 i_sysstat=''
725 i_sysstatfs=''
726 i_sysstatvfs=''
727 i_systimes=''
728 i_systypes=''
729 i_sysuio=''
730 i_sysun=''
731 i_sysutsname=''
732 i_sysvfs=''
733 i_syswait=''
734 i_sgtty=''
735 i_termio=''
736 i_termios=''
737 i_systime=''
738 i_systimek=''
739 i_time=''
740 timeincl=''
741 i_unistd=''
742 i_ustat=''
743 i_utime=''
744 i_values=''
745 i_stdarg=''
746 i_varargs=''
747 i_varhdr=''
748 i_vfork=''
749 inc_version_list=''
750 inc_version_list_init=''
751 installprefix=''
752 installprefixexp=''
753 installstyle=''
754 installusrbinperl=''
755 intsize=''
756 longsize=''
757 shortsize=''
758 issymlink=''
759 libc=''
760 ldlibpthname=''
761 libperl=''
762 shrpenv=''
763 useshrplib=''
764 glibpth=''
765 libpth=''
766 loclibpth=''
767 plibpth=''
768 xlibpth=''
769 ignore_versioned_solibs=''
770 libs=''
771 libsdirs=''
772 libsfiles=''
773 libsfound=''
774 libspath=''
775 lns=''
776 d_PRIEUldbl=''
777 d_PRIFUldbl=''
778 d_PRIGUldbl=''
779 d_PRIeldbl=''
780 d_PRIfldbl=''
781 d_PRIgldbl=''
782 d_SCNfldbl=''
783 sPRIEUldbl=''
784 sPRIFUldbl=''
785 sPRIGUldbl=''
786 sPRIeldbl=''
787 sPRIfldbl=''
788 sPRIgldbl=''
789 sSCNfldbl=''
790 lseeksize=''
791 lseektype=''
792 make_set_make=''
793 d_mymalloc=''
794 freetype=''
795 mallocobj=''
796 mallocsrc=''
797 malloctype=''
798 usemymalloc=''
799 installman1dir=''
800 man1dir=''
801 man1direxp=''
802 man1ext=''
803 installman3dir=''
804 man3dir=''
805 man3direxp=''
806 man3ext=''
807 modetype=''
808 multiarch=''
809 mydomain=''
810 myhostname=''
811 phostname=''
812 c=''
813 n=''
814 d_eofnblk=''
815 eagain=''
816 o_nonblock=''
817 rd_nodata=''
818 need_va_copy=''
819 netdb_hlen_type=''
820 netdb_host_type=''
821 netdb_name_type=''
822 netdb_net_type=''
823 groupcat=''
824 hostcat=''
825 passcat=''
826 orderlib=''
827 ranlib=''
828 d_perl_otherlibdirs=''
829 otherlibdirs=''
830 package=''
831 spackage=''
832 pager=''
833 api_revision=''
834 api_subversion=''
835 api_version=''
836 api_versionstring=''
837 patchlevel=''
838 perl_patchlevel=''
839 revision=''
840 subversion=''
841 version=''
842 perl5=''
843 perladmin=''
844 perlpath=''
845 d_nv_preserves_uv=''
846 d_nv_preserves_uv_bits=''
847 i16size=''
848 i16type=''
849 i32size=''
850 i32type=''
851 i64size=''
852 i64type=''
853 i8size=''
854 i8type=''
855 ivsize=''
856 ivtype=''
857 nvsize=''
858 nvtype=''
859 u16size=''
860 u16type=''
861 u32size=''
862 u32type=''
863 u64size=''
864 u64type=''
865 u8size=''
866 u8type=''
867 uvsize=''
868 uvtype=''
869 ivdformat=''
870 nvEUformat=''
871 nvFUformat=''
872 nvGUformat=''
873 nveformat=''
874 nvfformat=''
875 nvgformat=''
876 uvXUformat=''
877 uvoformat=''
878 uvuformat=''
879 uvxformat=''
880 pidtype=''
881 prefix=''
882 prefixexp=''
883 installprivlib=''
884 privlib=''
885 privlibexp=''
886 prototype=''
887 ptrsize=''
888 d_PRIXU64=''
889 d_PRId64=''
890 d_PRIi64=''
891 d_PRIo64=''
892 d_PRIu64=''
893 d_PRIx64=''
894 sPRIXU64=''
895 sPRId64=''
896 sPRIi64=''
897 sPRIo64=''
898 sPRIu64=''
899 sPRIx64=''
900 d_quad=''
901 quadkind=''
902 quadtype=''
903 uquadtype=''
904 drand01=''
905 randbits=''
906 randfunc=''
907 randseedtype=''
908 seedfunc=''
909 installscript=''
910 scriptdir=''
911 scriptdirexp=''
912 selectminbits=''
913 selecttype=''
914 sh=''
915 sig_count=''
916 sig_name=''
917 sig_name_init=''
918 sig_num=''
919 sig_num_init=''
920 sig_size=''
921 installsitearch=''
922 sitearch=''
923 sitearchexp=''
924 installsitebin=''
925 sitebin=''
926 sitebinexp=''
927 installsitelib=''
928 sitelib=''
929 sitelib_stem=''
930 sitelibexp=''
931 siteprefix=''
932 siteprefixexp=''
933 sizesize=''
934 sizetype=''
935 so=''
936 socksizetype=''
937 sharpbang=''
938 shsharp=''
939 spitshell=''
940 src=''
941 ssizetype=''
942 startperl=''
943 startsh=''
944 stdchar=''
945 d_stdio_stream_array=''
946 stdio_stream_array=''
947 sysman=''
948 trnl=''
949 uidformat=''
950 uidsign=''
951 uidsize=''
952 uidtype=''
953 archname64=''
954 use64bitall=''
955 use64bitint=''
956 ccflags_uselargefiles=''
957 ldflags_uselargefiles=''
958 libswanted_uselargefiles=''
959 uselargefiles=''
960 uselongdouble=''
961 usemorebits=''
962 usemultiplicity=''
963 nm_opt=''
964 nm_so_opt=''
965 runnm=''
966 usenm=''
967 useperlio=''
968 usesocks=''
969 d_oldpthreads=''
970 use5005threads=''
971 useithreads=''
972 usereentrant=''
973 usethreads=''
974 incpath=''
975 mips_type=''
976 usrinc=''
977 d_vendorarch=''
978 installvendorarch=''
979 vendorarch=''
980 vendorarchexp=''
981 d_vendorbin=''
982 installvendorbin=''
983 vendorbin=''
984 vendorbinexp=''
985 d_vendorlib=''
986 installvendorlib=''
987 vendorlib=''
988 vendorlib_stem=''
989 vendorlibexp=''
990 usevendorprefix=''
991 vendorprefix=''
992 vendorprefixexp=''
993 versiononly=''
994 defvoidused=''
995 voidflags=''
996 pm_apiversion=''
997 xs_apiversion=''
998 yacc=''
999 yaccflags=''
1000 CONFIG=''
1001
1002 define='define'
1003 undef='undef'
1004 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1005 rmlist=''
1006
1007 : We must find out about Eunice early
1008 eunicefix=':'
1009 if test -f /etc/unixtovms; then
1010         eunicefix=/etc/unixtovms
1011 fi
1012 if test -f /etc/unixtovms.exe; then
1013         eunicefix=/etc/unixtovms.exe
1014 fi
1015
1016 i_whoami=''
1017 ccname=''
1018 ccversion=''
1019 perllibs=''
1020 : set useposix=false in your hint file to disable the POSIX extension.
1021 useposix=true
1022 : set useopcode=false in your hint file to disable the Opcode extension.
1023 useopcode=true
1024 : Trailing extension.  Override this in a hint file, if needed.
1025 _exe=''
1026 : Extra object files, if any, needed on this platform.
1027 archobjs=''
1028 archname=''
1029 : Possible local include directories to search.
1030 : Set locincpth to "" in a hint file to defeat local include searches.
1031 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1032 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1033 :
1034 : no include file wanted by default
1035 inclwanted=''
1036
1037 groupstype=''
1038 libnames=''
1039 : change the next line if compiling for Xenix/286 on Xenix/386
1040 xlibpth='/usr/lib/386 /lib/386'
1041 : Possible local library directories to search.
1042 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1043 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1044
1045 : general looking path for locating libraries
1046 glibpth="/lib /usr/lib $xlibpth"
1047 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1048 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1049 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1050
1051 : Private path used by Configure to find libraries.  Its value
1052 : is prepended to libpth. This variable takes care of special
1053 : machines, like the mips.  Usually, it should be empty.
1054 plibpth=''
1055
1056 : default library list
1057 libswanted=''
1058 : some systems want to use only the non-versioned libso:s
1059 ignore_versioned_solibs=''
1060 archname64=''
1061 ccflags_uselargefiles=''
1062 ldflags_uselargefiles=''
1063 libswanted_uselargefiles=''
1064 : set usemultiplicity on the Configure command line to enable multiplicity.
1065 : set usesocks on the Configure command line to enable socks.
1066 : set usethreads on the Configure command line to enable threads.
1067 usereentrant='undef'
1068 : full support for void wanted by default
1069 defvoidused=15
1070
1071 : List of libraries we want.
1072 : If anyone needs -lnet, put it in a hint file.
1073 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1074 libswanted="$libswanted dld ld sun m c cposix posix"
1075 libswanted="$libswanted ndir dir crypt sec"
1076 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1077 : We probably want to search /usr/shlib before most other libraries.
1078 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1079 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1080 glibpth="/usr/shlib $glibpth"
1081 : Do not use vfork unless overridden by a hint file.
1082 usevfork=false
1083
1084 : Find the basic shell for Bourne shell scripts
1085 case "$sh" in
1086 '')
1087         case "$SYSTYPE" in
1088         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1089         *) xxx='/bin/sh';;
1090         esac
1091         if test -f "$xxx"; then
1092                 sh="$xxx"
1093         else
1094                 : Build up a list and do a single loop so we can 'break' out.
1095                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1096                 for xxx in sh bash ksh pdksh ash; do
1097                         for p in $pth; do
1098                                 try="$try ${p}/${xxx}"
1099                         done
1100                 done
1101                 for xxx in $try; do
1102                         if test -f "$xxx"; then
1103                                 sh="$xxx";
1104                                 break
1105                         elif test -f "$xxx.exe"; then
1106                                 sh="$xxx";
1107                                 break
1108                         fi
1109                 done
1110         fi
1111         ;;
1112 esac
1113
1114 case "$sh" in
1115 '')     cat <<EOM >&2
1116 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1117
1118 Usually it's in /bin/sh.  How did you even get this far?
1119 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1120 we'll try to straighten this all out.
1121 EOM
1122         exit 1
1123         ;;
1124 esac
1125
1126 : see if sh knows # comments
1127 if `$sh -c '#' >/dev/null 2>&1`; then
1128         shsharp=true
1129         spitshell=cat
1130         xcat=/bin/cat
1131         test -f $xcat || xcat=/usr/bin/cat
1132         echo "#!$xcat" >sharp
1133         $eunicefix sharp
1134         chmod +x sharp
1135         ./sharp > today
1136         if test -s today; then
1137                 sharpbang='#!'
1138         else
1139                 echo "#! $xcat" > sharp
1140                 $eunicefix sharp
1141                 chmod +x sharp
1142                 ./sharp > today
1143                 if test -s today; then
1144                         sharpbang='#! '
1145                 else
1146                         sharpbang=': use '
1147                 fi
1148         fi
1149 else
1150         echo " "
1151         echo "Your $sh doesn't grok # comments--I will strip them later on."
1152         shsharp=false
1153         cd ..
1154         echo "exec grep -v '^[  ]*#'" >spitshell
1155         chmod +x spitshell
1156         $eunicefix spitshell
1157         spitshell=`pwd`/spitshell
1158         cd UU
1159         echo "I presume that if # doesn't work, #! won't work either!"
1160         sharpbang=': use '
1161 fi
1162 rm -f sharp today
1163
1164 : figure out how to guarantee sh startup
1165 case "$startsh" in
1166 '') startsh=${sharpbang}${sh} ;;
1167 *)
1168 esac
1169 cat >sharp <<EOSS
1170 $startsh
1171 set abc
1172 test "$?abc" != 1
1173 EOSS
1174
1175 chmod +x sharp
1176 $eunicefix sharp
1177 if ./sharp; then
1178         : echo "Yup, it does."
1179 else
1180         echo "Hmm... '$startsh' does not guarantee sh startup..."
1181         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1182 fi
1183 rm -f sharp
1184
1185
1186 : Save command line options in file UU/cmdline.opt for later use in
1187 : generating config.sh.
1188 cat > cmdline.opt <<EOSH
1189 # Configure command line arguments.
1190 config_arg0='$0'
1191 config_args='$*'
1192 config_argc=$#
1193 EOSH
1194 argn=1
1195 args_exp=''
1196 args_sep=''
1197 for arg in "$@"; do
1198         cat >>cmdline.opt <<EOSH
1199 config_arg$argn='$arg'
1200 EOSH
1201         # Extreme backslashitis: replace each ' by '"'"'
1202         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1203 $arg
1204 EOC
1205         arg_exp=`cat cmdl.opt`
1206         args_exp="$args_exp$args_sep'$arg_exp'"
1207         argn=`expr $argn + 1`
1208         args_sep=' '
1209 done
1210 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1211 # used by ./hints/os2.sh
1212 rm -f cmdl.opt
1213
1214 : produce awk script to parse command line options
1215 cat >options.awk <<'EOF'
1216 BEGIN {
1217         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1218
1219         len = length(optstr);
1220         for (i = 1; i <= len; i++) {
1221                 c = substr(optstr, i, 1);
1222                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1223                 if (a == ":") {
1224                         arg[c] = 1;
1225                         i++;
1226                 }
1227                 opt[c] = 1;
1228         }
1229 }
1230 {
1231         expect = 0;
1232         str = $0;
1233         if (substr(str, 1, 1) != "-") {
1234                 printf("'%s'\n", str);
1235                 next;
1236         }
1237         len = length($0);
1238         for (i = 2; i <= len; i++) {
1239                 c = substr(str, i, 1);
1240                 if (!opt[c]) {
1241                         printf("-%s\n", substr(str, i));
1242                         next;
1243                 }
1244                 printf("-%s\n", c);
1245                 if (arg[c]) {
1246                         if (i < len)
1247                                 printf("'%s'\n", substr(str, i + 1));
1248                         else
1249                                 expect = 1;
1250                         next;
1251                 }
1252         }
1253 }
1254 END {
1255         if (expect)
1256                 print "?";
1257 }
1258 EOF
1259
1260 : process the command line options
1261 set X `for arg in "$@"; do echo "X$arg"; done |
1262         sed -e s/X// | awk -f options.awk`
1263 eval "set $*"
1264 shift
1265 rm -f options.awk
1266
1267 : set up default values
1268 fastread=''
1269 reuseval=false
1270 config_sh=''
1271 alldone=''
1272 error=''
1273 silent=''
1274 extractsh=''
1275 override=''
1276 knowitall=''
1277 rm -f optdef.sh posthint.sh
1278 cat >optdef.sh <<EOS
1279 $startsh
1280 EOS
1281
1282
1283 : option parsing
1284 while test $# -gt 0; do
1285         case "$1" in
1286         -d) shift; fastread=yes;;
1287         -e) shift; alldone=cont;;
1288         -f)
1289                 shift
1290                 cd ..
1291                 if test -r "$1"; then
1292                         config_sh="$1"
1293                 else
1294                         echo "$me: cannot read config file $1." >&2
1295                         error=true
1296                 fi
1297                 cd UU
1298                 shift;;
1299         -h) shift; error=true;;
1300         -r) shift; reuseval=true;;
1301         -s) shift; silent=true; realsilent=true;;
1302         -E) shift; alldone=exit;;
1303         -K) shift; knowitall=true;;
1304         -O) shift; override=true;;
1305         -S) shift; silent=true; extractsh=true;;
1306         -D)
1307                 shift
1308                 case "$1" in
1309                 *=)
1310                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1311                         echo "$me: ignoring -D $1" >&2
1312                         ;;
1313                 *=*) echo "$1" | \
1314                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1315                 *) echo "$1='define'" >> optdef.sh;;
1316                 esac
1317                 shift
1318                 ;;
1319         -U)
1320                 shift
1321                 case "$1" in
1322                 *=) echo "$1" >> optdef.sh;;
1323                 *=*)
1324                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1325                         echo "$me: ignoring -U $1" >&2
1326                         ;;
1327                 *) echo "$1='undef'" >> optdef.sh;;
1328                 esac
1329                 shift
1330                 ;;
1331         -A)
1332             shift
1333             xxx=''
1334             yyy="$1"
1335             zzz=''
1336             uuu=undef
1337             case "$yyy" in
1338             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1339                  case "$zzz" in
1340                  *:*) zzz='' ;;
1341                  *)   xxx=append
1342                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1343                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1344                  esac
1345                  ;;
1346             esac
1347             case "$xxx" in
1348             '')  case "$yyy" in
1349                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1350                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1351                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1352                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1353                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1354                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1355                  esac
1356                  ;;       
1357             esac
1358             case "$xxx" in
1359             append)
1360                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1361             clear)
1362                 echo "$yyy=''"                  >> posthint.sh ;;
1363             define)
1364                 case "$zzz" in
1365                 '') zzz=define ;;
1366                 esac
1367                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1368             eval)
1369                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1370             prepend)
1371                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1372             undef)
1373                 case "$zzz" in
1374                 '') zzz="$uuu" ;;
1375                 esac
1376                 echo "$yyy=$zzz"                >> posthint.sh ;;
1377             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1378             esac
1379             shift
1380             ;;
1381         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1382             exit 0;;
1383         --) break;;
1384         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1385         *) break;;
1386         esac
1387 done
1388
1389 case "$error" in
1390 true)
1391         cat >&2 <<EOM
1392 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1393                  [-U symbol] [-U symbol=] [-A command:symbol...]
1394   -d : use defaults for all answers.
1395   -e : go on without questioning past the production of config.sh.
1396   -f : specify an alternate default configuration file.
1397   -h : print this help message and exit (with an error status).
1398   -r : reuse C symbols value if possible (skips costly nm extraction).
1399   -s : silent mode, only echoes questions and essential information.
1400   -D : define symbol to have some value:
1401          -D symbol         symbol gets the value 'define'
1402          -D symbol=value   symbol gets the value 'value'
1403   -E : stop at the end of questions, after having produced config.sh.
1404   -K : do not use unless you know what you are doing.
1405   -O : let -D and -U override definitions from loaded configuration file.
1406   -S : perform variable substitutions on all .SH files (can mix with -f)
1407   -U : undefine symbol:
1408          -U symbol    symbol gets the value 'undef'
1409          -U symbol=   symbol gets completely empty
1410   -A : manipulate symbol after the platform specific hints have been applied:
1411          -A symbol=value                append " "value to symbol
1412          -A append:symbol=value         append value to symbol
1413          -A define:symbol=value         define symbol to have value
1414          -A clear:symbol                define symbol to be ''
1415          -A define:symbol               define symbol to be 'define'
1416          -A eval:symbol=value           define symbol to be eval of value
1417          -A prepend:symbol=value        prepend value to symbol
1418          -A undef:symbol                define symbol to be 'undef'
1419          -A undef:symbol=               define symbol to be ''
1420   -V : print version number and exit (with a zero status).
1421 EOM
1422         exit 1
1423         ;;
1424 esac
1425
1426 : Sanity checks
1427 case "$fastread$alldone" in
1428 yescont|yesexit) ;;
1429 *)
1430         case "$extractsh" in
1431         true) ;;
1432         *)
1433                 if test ! -t 0; then
1434                         echo "Say 'sh Configure', not 'sh <Configure'"
1435                         exit 1
1436                 fi
1437                 ;;
1438         esac
1439         ;;
1440 esac
1441
1442 exec 4>&1
1443 case "$silent" in
1444 true) exec 1>/dev/null;;
1445 esac
1446
1447 : run the defines and the undefines, if any, but leave the file out there...
1448 touch optdef.sh
1449 . ./optdef.sh
1450 : create the posthint manipulation script and leave the file out there...
1451 touch posthint.sh
1452
1453 : set package name
1454 package=perl5
1455 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1456 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1457 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1458 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1459 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1460 esac
1461
1462 : Some greps do not return status, grrr.
1463 echo "grimblepritz" >grimble
1464 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1465         contains=contains
1466 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1467         contains=grep
1468 else
1469         contains=contains
1470 fi
1471 rm -f grimble
1472 : the following should work in any shell
1473 case "$contains" in
1474 contains*)
1475         echo " "
1476         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1477         cat >contains <<'EOSS'
1478 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1479 EOSS
1480 chmod +x contains
1481 esac
1482
1483 : Find the path to the source tree
1484 case "$src" in
1485 '') case "$0" in
1486     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1487          case "$src" in
1488          /*)    ;;
1489          .)     ;;
1490          *)     src=`cd ../$src && pwd` ;;
1491          esac
1492          ;;
1493     *)   src='.';;
1494     esac;;
1495 esac
1496 case "$src" in
1497 '')     src=/
1498         rsrc=/
1499         ;;
1500 /*) rsrc="$src";;
1501 *) rsrc="../$src";;
1502 esac
1503 if test -f $rsrc/Configure && \
1504         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1505 then
1506    : found it, so we are ok.
1507 else
1508         rsrc=''
1509         for src in . .. ../.. ../../.. ../../../..; do
1510                 if test -f ../$src/Configure && \
1511                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1512                 then
1513                         rsrc=../$src
1514                         break
1515                 fi
1516         done
1517 fi
1518 case "$rsrc" in
1519 '')
1520         cat <<EOM >&4
1521
1522 Sorry, I can't seem to locate the source dir for $package.  Please start
1523 Configure with an explicit path -- i.e. /some/path/Configure.
1524
1525 EOM
1526         exit 1
1527         ;;
1528 ../.)   rsrc='..';;
1529 *)
1530         echo " "
1531         echo "Sources for $package found in \"$src\"." >&4
1532         ;;
1533 esac
1534
1535 : script used to extract .SH files with variable substitutions
1536 cat >extract <<'EOS'
1537 PERL_CONFIG_SH=true
1538 echo "Doing variable substitutions on .SH files..."
1539 if test -f MANIFEST; then
1540         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1541 else
1542         echo "(Looking for .SH files under the source directory.)"
1543         set x `(cd $src; find . -name "*.SH" -print)`
1544 fi
1545 shift
1546 case $# in
1547 0) set x `(cd $src; echo *.SH)`; shift;;
1548 esac
1549 if test ! -f $src/$1; then
1550         shift
1551 fi
1552 mkdir_p='
1553 name=$1;
1554 create="";
1555 while test $name; do
1556         if test ! -d "$name"; then
1557                 create="$name $create";
1558                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1559                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1560         else
1561                 name="";
1562         fi;
1563 done;
1564 for file in $create; do
1565         mkdir $file;
1566 done
1567 '
1568 for file in $*; do
1569         case "$src" in
1570         ".")
1571                 case "$file" in
1572                 */*)
1573                         dir=`expr X$file : 'X\(.*\)/'`
1574                         file=`expr X$file : 'X.*/\(.*\)'`
1575                         (cd $dir && . ./$file)
1576                         ;;
1577                 *)
1578                         . ./$file
1579                         ;;
1580                 esac
1581                 ;;
1582         *)
1583                 case "$file" in
1584                 */*)
1585                         dir=`expr X$file : 'X\(.*\)/'`
1586                         file=`expr X$file : 'X.*/\(.*\)'`
1587                         (set x $dir; shift; eval $mkdir_p)
1588                         sh <$src/$dir/$file
1589                         ;;
1590                 *)
1591                         sh <$src/$file
1592                         ;;
1593                 esac
1594                 ;;
1595         esac
1596 done
1597 if test -f $src/config_h.SH; then
1598         if test ! -f config.h; then
1599         : oops, they left it out of MANIFEST, probably, so do it anyway.
1600         . $src/config_h.SH
1601         fi
1602 fi
1603 EOS
1604
1605 : extract files and exit if asked to do so
1606 case "$extractsh" in
1607 true)
1608         case "$realsilent" in
1609         true) ;;
1610         *) exec 1>&4;;
1611         esac
1612         case "$config_sh" in
1613         '') config_sh='config.sh';;
1614         esac
1615         echo " "
1616         echo "Fetching answers from $config_sh..."
1617         cd ..
1618         . $config_sh
1619         test "$override" && . ./optdef.sh
1620         echo " "
1621         . UU/extract
1622         rm -rf UU
1623         echo "Extraction done."
1624         exit 0
1625         ;;
1626 esac
1627
1628 : Eunice requires " " instead of "", can you believe it
1629 echo " "
1630 : Here we go...
1631 echo "Beginning of configuration questions for $package."
1632
1633 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1634
1635 : first determine how to suppress newline on echo command
1636 echo " "
1637 echo "Checking echo to see how to suppress newlines..."
1638 (echo "hi there\c" ; echo " ") >.echotmp
1639 if $contains c .echotmp >/dev/null 2>&1 ; then
1640         echo "...using -n."
1641         n='-n'
1642         c=''
1643 else
1644         cat <<'EOM'
1645 ...using \c
1646 EOM
1647         n=''
1648         c='\c'
1649 fi
1650 echo $n "The star should be here-->$c"
1651 echo '*'
1652 rm -f .echotmp
1653
1654 : Now test for existence of everything in MANIFEST
1655 echo " "
1656 if test -f $rsrc/MANIFEST; then
1657         echo "First let's make sure your kit is complete.  Checking..." >&4
1658         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1659         rm -f missing
1660         tmppwd=`pwd`
1661         for filelist in x??; do
1662                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1663         done
1664         if test -s missing; then
1665                 cat missing >&4
1666                 cat >&4 <<'EOM'
1667
1668 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1669
1670 You have the option of continuing the configuration process, despite the
1671 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1672 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1673 and contact the author (perlbug@perl.org).
1674
1675 EOM
1676                 echo $n "Continue? [n] $c" >&4
1677                 read ans
1678                 case "$ans" in
1679                 y*)
1680                         echo "Continuing..." >&4
1681                         rm -f missing
1682                         ;;
1683                 *)
1684                         echo "ABORTING..." >&4
1685                         kill $$
1686                         ;;
1687                 esac
1688         else
1689                 echo "Looks good..."
1690         fi
1691 else
1692         echo "There is no MANIFEST file.  I hope your kit is complete !"
1693 fi
1694 rm -f missing x??
1695
1696 echo " "
1697 : Find the appropriate value for a newline for tr
1698 if test -n "$DJGPP"; then
1699        trnl='\012'
1700 fi
1701 if test X"$trnl" = X; then
1702         case "`echo foo|tr '\n' x 2>/dev/null`" in
1703         foox) trnl='\n' ;;
1704         esac
1705 fi
1706 if test X"$trnl" = X; then
1707         case "`echo foo|tr '\012' x 2>/dev/null`" in
1708         foox) trnl='\012' ;;
1709         esac
1710 fi
1711 if test X"$trnl" = X; then
1712         cat <<EOM >&2
1713
1714 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1715
1716 EOM
1717         exit 1
1718 fi
1719
1720 : compute the number of columns on the terminal for proper question formatting
1721 case "$COLUMNS" in
1722 '') COLUMNS='80';;
1723 esac
1724
1725 : set up the echo used in my read
1726 myecho="case \"\$xxxm\" in
1727 '') echo $n \"\$rp $c\" >&4;;
1728 *) case \"\$rp\" in
1729         '') echo $n \"[\$xxxm] $c\";;
1730         *)
1731                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1732                         echo \"\$rp\" >&4
1733                         echo $n \"[\$xxxm] $c\" >&4
1734                 else
1735                         echo $n \"\$rp [\$xxxm] $c\" >&4
1736                 fi
1737                 ;;
1738         esac;;
1739 esac"
1740
1741 : now set up to do reads with possible shell escape and default assignment
1742 cat <<EOSC >myread
1743 $startsh
1744 xxxm=\$dflt
1745 $myecho
1746 ans='!'
1747 case "\$fastread" in
1748 yes) case "\$dflt" in
1749         '') ;;
1750         *) ans='';
1751                 case "\$silent-\$rp" in
1752                 true-) ;;
1753                 *) echo " " >&4;;
1754                 esac;;
1755         esac;;
1756 *) case "\$silent" in
1757         true) case "\$rp" in
1758                 '') ans='';;
1759                 esac;;
1760         esac;;
1761 esac
1762 while expr "X\$ans" : "X!" >/dev/null; do
1763         read answ
1764         set x \$xxxm
1765         shift
1766         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1767         case  "\$answ" in
1768         "!")
1769                 sh 1>&4
1770                 echo " "
1771                 $myecho
1772                 ;;
1773         !*)
1774                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1775                 shift
1776                 sh 1>&4 -c "\$*"
1777                 echo " "
1778                 $myecho
1779                 ;;
1780         "\$ans")
1781                 case "\$ans" in
1782                 \\&*)
1783                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1784                         shift
1785                         case "\$1" in
1786                         -d)
1787                                 fastread=yes
1788                                 echo "(OK, I'll run with -d after this question.)" >&4
1789                                 ;;
1790                         -*)
1791                                 echo "*** Sorry, \$1 not supported yet." >&4
1792                                 ;;
1793                         esac
1794                         $myecho
1795                         ans=!
1796                         ;;
1797                 esac;;
1798         *)
1799                 case "\$aok" in
1800                 y)
1801                         echo "*** Substitution done -- please confirm."
1802                         xxxm="\$ans"
1803                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1804                         xxxm="\$ans"
1805                         ans=!
1806                         ;;
1807                 *)
1808                         echo "*** Error -- try again."
1809                         ans=!
1810                         ;;
1811                 esac
1812                 $myecho
1813                 ;;
1814         esac
1815         case "\$ans\$xxxm\$nostick" in
1816         '')
1817                 ans=!
1818                 $myecho
1819                 ;;
1820         esac
1821 done
1822 case "\$ans" in
1823 '') ans="\$xxxm";;
1824 esac
1825 EOSC
1826
1827 : create .config dir to save info across Configure sessions
1828 test -d ../.config || mkdir ../.config
1829 cat >../.config/README <<EOF
1830 This directory created by Configure to save information that should
1831 persist across sessions for $package.
1832
1833 You may safely delete it if you wish.
1834 EOF
1835
1836 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1837 case "$usedevel" in
1838 $define|true|[yY]*) ;;
1839 *) case "$xversion" in
1840    *[13579])
1841         cat >&4 <<EOH
1842 *** WHOA THERE!!! ***
1843
1844     This is an UNSTABLE DEVELOPMENT release.
1845     The version of this $package distribution is $xversion, that is, odd,
1846     (as opposed to even) and that signifies a development release.
1847     If you want a maintenance release, you want an even-numbered version.
1848
1849     Do ***NOT*** install this into production use.
1850     Data corruption and crashes are possible.
1851
1852     It is most seriously suggested that you do not continue any further
1853     unless you want to help in developing and debugging Perl.
1854
1855     If you *still* want to build perl, you can answer 'y' now,
1856     or pass -Dusedevel to Configure.
1857
1858 EOH
1859         rp='Do you really want to continue?'
1860         dflt='n'
1861         . ./myread
1862         case "$ans" in
1863         [yY]) echo >&4 "Okay, continuing."
1864               usedevel="$define" ;;
1865         *) echo >&4 "Okay, bye."
1866            exit 1
1867            ;;
1868         esac
1869         ;;
1870     esac
1871     ;;
1872 esac
1873 case "$usedevel" in
1874 $define|true|[yY]*)
1875         case "$versiononly" in
1876         '') versiononly="$define" ;;
1877         esac
1878         case "$installusrbinperl" in
1879         '') installusrbinperl="$undef" ;;
1880         esac
1881         ;;
1882 esac
1883
1884 : general instructions
1885 needman=true
1886 firsttime=true
1887 user=`(logname) 2>/dev/null`
1888 case "$user" in
1889 '') user=`whoami 2>&1`;;
1890 esac
1891 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1892         firsttime=false
1893         echo " "
1894         rp='Would you like to see the instructions?'
1895         dflt=n
1896         . ./myread
1897         case "$ans" in
1898         [yY]*) ;;
1899         *) needman=false;;
1900         esac
1901 fi
1902 if $needman; then
1903         cat <<EOH
1904
1905 This installation shell script will examine your system and ask you questions
1906 to determine how the perl5 package should be installed. If you get
1907 stuck on a question, you may use a ! shell escape to start a subshell or
1908 execute a command.  Many of the questions will have default answers in square
1909 brackets; typing carriage return will give you the default.
1910
1911 On some of the questions which ask for file or directory names you are allowed
1912 to use the ~name construct to specify the login directory belonging to "name",
1913 even if you don't have a shell which knows about that.  Questions where this is
1914 allowed will be marked "(~name ok)".
1915
1916 EOH
1917         rp=''
1918         dflt='Type carriage return to continue'
1919         . ./myread
1920         cat <<'EOH'
1921
1922 The prompter used in this script allows you to use shell variables and
1923 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1924 in the default answer, as if the default line was a set of arguments given to a
1925 script shell.  This means you may also use $* to repeat the whole default line,
1926 so you do not have to re-type everything to add something to the default.
1927
1928 Everytime there is a substitution, you will have to confirm.  If there is an
1929 error (e.g. an unmatched backtick), the default answer will remain unchanged
1930 and you will be prompted again.
1931
1932 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1933 the questions and use the computed defaults (or the previous answers if there
1934 was already a config.sh file). Type 'Configure -h' for a list of options.
1935 You may also start interactively and then answer '& -d' at any prompt to turn
1936 on the non-interactive behaviour for the remainder of the execution.
1937
1938 EOH
1939         . ./myread
1940         cat <<EOH
1941
1942 Much effort has been expended to ensure that this shell script will run on any
1943 Unix system.  If despite that it blows up on yours, your best bet is to edit
1944 Configure and run it again.  If you can't run Configure for some reason,
1945 you'll have to generate a config.sh file by hand.  Whatever problems you
1946 have, let me (perlbug@perl.org) know how I blew it.
1947
1948 This installation script affects things in two ways:
1949
1950 1) it may do direct variable substitutions on some of the files included
1951    in this kit.
1952 2) it builds a config.h file for inclusion in C programs.  You may edit
1953    any of these files as the need arises after running this script.
1954
1955 If you make a mistake on a question, there is no easy way to back up to it
1956 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1957 files.  Configure will offer to let you do this before it runs the SH files.
1958
1959 EOH
1960         dflt='Type carriage return to continue'
1961         . ./myread
1962         case "$firsttime" in
1963         true) echo $user >>../.config/instruct;;
1964         esac
1965 fi
1966
1967 : find out where common programs are
1968 echo " "
1969 echo "Locating common programs..." >&4
1970 cat <<EOSC >loc
1971 $startsh
1972 case \$# in
1973 0) exit 1;;
1974 esac
1975 thing=\$1
1976 shift
1977 dflt=\$1
1978 shift
1979 for dir in \$*; do
1980         case "\$thing" in
1981         .)
1982         if test -d \$dir/\$thing; then
1983                 echo \$dir
1984                 exit 0
1985         fi
1986         ;;
1987         *)
1988         for thisthing in \$dir/\$thing; do
1989                 : just loop through to pick last item
1990         done
1991         if test -f \$thisthing; then
1992                 echo \$thisthing
1993                 exit 0
1994         elif test -f \$dir/\$thing.exe; then
1995                 if test -n "$DJGPP"; then
1996                         echo \$dir/\$thing.exe
1997                 else
1998                         : on Eunice apparently
1999                         echo \$dir/\$thing
2000                 fi
2001                 exit 0
2002         fi
2003         ;;
2004         esac
2005 done
2006 echo \$dflt
2007 exit 1
2008 EOSC
2009 chmod +x loc
2010 $eunicefix loc
2011 loclist="
2012 awk
2013 cat
2014 chmod
2015 comm
2016 cp
2017 echo
2018 expr
2019 grep
2020 ls
2021 make
2022 mkdir
2023 rm
2024 sed
2025 sort
2026 touch
2027 tr
2028 uniq
2029 "
2030 trylist="
2031 Mcc
2032 ar
2033 bison
2034 byacc
2035 cpp
2036 csh
2037 date
2038 egrep
2039 gzip
2040 less
2041 ln
2042 more
2043 nm
2044 nroff
2045 pg
2046 test
2047 uname
2048 zip
2049 "
2050 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2051 pth="$pth /lib /usr/lib"
2052 for file in $loclist; do
2053         eval xxx=\$$file
2054         case "$xxx" in
2055         /*|?:[\\/]*)
2056                 if test -f "$xxx"; then
2057                         : ok
2058                 else
2059                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2060                         xxx=`./loc $file $file $pth`
2061                 fi
2062                 ;;
2063         '') xxx=`./loc $file $file $pth`;;
2064         *) xxx=`./loc $xxx $xxx $pth`;;
2065         esac
2066         eval $file=$xxx
2067         eval _$file=$xxx
2068         case "$xxx" in
2069         /*)
2070                 echo $file is in $xxx.
2071                 ;;
2072         ?:[\\/]*)
2073                 echo $file is in $xxx.
2074                 ;;
2075         *)
2076                 echo "I don't know where '$file' is, and my life depends on it." >&4
2077                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2078                 exit 1
2079                 ;;
2080         esac
2081 done
2082 echo " "
2083 echo "Don't worry if any of the following aren't found..."
2084 say=offhand
2085 for file in $trylist; do
2086         eval xxx=\$$file
2087         case "$xxx" in
2088         /*|?:[\\/]*)
2089                 if test -f "$xxx"; then
2090                         : ok
2091                 else
2092                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2093                         xxx=`./loc $file $file $pth`
2094                 fi
2095                 ;;
2096         '') xxx=`./loc $file $file $pth`;;
2097         *) xxx=`./loc $xxx $xxx $pth`;;
2098         esac
2099         eval $file=$xxx
2100         eval _$file=$xxx
2101         case "$xxx" in
2102         /*)
2103                 echo $file is in $xxx.
2104                 ;;
2105         ?:[\\/]*)
2106                 echo $file is in $xxx.
2107                 ;;
2108         *)
2109                 echo "I don't see $file out there, $say."
2110                 say=either
2111                 ;;
2112         esac
2113 done
2114 case "$egrep" in
2115 egrep)
2116         echo "Substituting grep for egrep."
2117         egrep=$grep
2118         ;;
2119 esac
2120 case "$ln" in
2121 ln)
2122         echo "Substituting cp for ln."
2123         ln=$cp
2124         ;;
2125 esac
2126 case "$test" in
2127 test)
2128         echo "Hopefully test is built into your sh."
2129         ;;
2130 *)
2131         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2132                 echo "Using the test built into your sh."
2133                 test=test
2134                 _test=test
2135         fi
2136         ;;
2137 esac
2138 case "$echo" in
2139 echo)
2140         echo "Hopefully echo is built into your sh."
2141         ;;
2142 '') ;;
2143 *)
2144         echo " "
2145 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2146         $echo $n "hi there$c" >foo1
2147         echo $n "hi there$c" >foo2
2148         if cmp foo1 foo2 >/dev/null 2>&1; then
2149                 echo "They are compatible.  In fact, they may be identical."
2150         else
2151                 case "$n" in
2152                 '-n') n='' c='\c';;
2153                 *) n='-n' c='';;
2154                 esac
2155                 cat <<FOO
2156 They are not compatible!  You are probably running ksh on a non-USG system.
2157 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2158 have echo built in and we may have to run some Bourne shell scripts.  That
2159 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2160
2161 FOO
2162                 $echo $n "The star should be here-->$c"
2163                 $echo "*"
2164         fi
2165         $rm -f foo1 foo2
2166         ;;
2167 esac
2168
2169 cat <<EOS >checkcc
2170 $startsh
2171 EOS
2172 cat <<'EOSC' >>checkcc
2173 case "$cc" in
2174 '') ;;
2175 *)  $rm -f try try.*
2176     $cat >try.c <<EOM
2177 int main(int argc, char *argv[]) {
2178   return 0;
2179 }
2180 EOM
2181     if $cc -o try $ccflags $ldflags try.c; then
2182        :
2183     else
2184         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2185         despair=yes
2186         trygcc=yes
2187         case "$cc" in
2188         *gcc*) trygcc=no ;;
2189         esac
2190         case "`$cc -v -c try.c 2>&1`" in
2191         *gcc*) trygcc=no ;;
2192         esac
2193         if $test X"$trygcc" = Xyes; then
2194             if gcc -o try -c try.c; then
2195                 echo " "
2196                 echo "You seem to have a working gcc, though." >&4
2197                 rp="Would you like to use it?"
2198                 dflt=y
2199                 if $test -f myread; then
2200                     . ./myread
2201                 else
2202                     if $test -f UU/myread; then
2203                         . ./UU/myread
2204                     else
2205                         echo "Cannot find myread, sorry.  Aborting." >&2
2206                         exit 1
2207                     fi
2208                 fi  
2209                 case "$ans" in
2210                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2211                 esac
2212             fi
2213         fi
2214         if $test X"$despair" = Xyes; then
2215             $cat >&4 <<EOM
2216 You need to find a working C compiler.
2217 Either (purchase and) install the C compiler supplied by your OS vendor,
2218 or for a free C compiler try http://gcc.gnu.org/
2219 I cannot continue any further, aborting.
2220 EOM
2221             exit 1
2222         fi
2223     fi
2224     $rm -f try try.*
2225     ;;
2226 esac
2227 EOSC
2228
2229 : determine whether symbolic links are supported
2230 echo " "
2231 $touch blurfl
2232 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2233         echo "Symbolic links are supported." >&4
2234         lns="$ln -s"
2235 else
2236         echo "Symbolic links are NOT supported." >&4
2237         lns="$ln"
2238 fi
2239 $rm -f blurfl sym
2240
2241 : determine whether symbolic links are supported
2242 echo " "
2243 case "$lns" in
2244 *"ln -s")
2245         echo "Checking how to test for symbolic links..." >&4
2246         $lns blurfl sym
2247         if $test "X$issymlink" = X; then
2248                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2249                 if test $? = 0; then
2250                         issymlink="test -h"
2251                 fi              
2252         fi
2253         if $test "X$issymlink" = X; then
2254                 if  $test -h >/dev/null 2>&1; then
2255                         issymlink="$test -h"
2256                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2257                 fi              
2258         fi
2259         if $test "X$issymlink" = X; then
2260                 if $test -L sym 2>/dev/null; then
2261                         issymlink="$test -L"
2262                 fi
2263         fi
2264         if $test "X$issymlink" != X; then
2265                 echo "You can test for symbolic links with '$issymlink'." >&4
2266         else
2267                 echo "I do not know how you can test for symbolic links." >&4
2268         fi
2269         $rm -f blurfl sym
2270         ;;
2271 *)      echo "No symbolic links, so not testing for their testing..." >&4
2272         ;;
2273 esac
2274 echo " "
2275
2276
2277 case "$mksymlinks" in
2278 $define|true|[yY]*)
2279         case "$src" in
2280         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2281                 exit 1
2282                 ;;
2283         *)      case "$lns:$issymlink" in
2284                 *"ln -s:"*"test -"?)
2285                         echo "Creating the symbolic links..." >&4
2286                         echo "(First creating the subdirectories...)" >&4
2287                         cd ..
2288                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2289                                 read directory
2290                                 test -z "$directory" && break
2291                                 mkdir -p $directory
2292                         done
2293                         # Sanity check 1.
2294                         if test ! -d t/base; then
2295                                 echo "Failed to create the subdirectories.  Aborting." >&4
2296                                 exit 1
2297                         fi
2298                         echo "(Then creating the symlinks...)" >&4
2299                         awk '{print $1}' $src/MANIFEST | while true; do
2300                                 read filename
2301                                 test -z "$filename" && break
2302                                 if test -f $filename; then
2303                                         if $issymlink $filename; then
2304                                                 rm -f $filename
2305                                         fi
2306                                 fi
2307                                 if test -f $filename; then
2308                                         echo "$filename already exists, not symlinking."
2309                                 else
2310                                         ln -s $src/$filename $filename
2311                                 fi
2312                         done
2313                         # Sanity check 2.
2314                         if test ! -f t/base/commonsense.t; then
2315                                 echo "Failed to create the symlinks.  Aborting." >&4
2316                                 exit 1
2317                         fi
2318                         cd UU
2319                         ;;
2320                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2321                         ;;
2322                 esac
2323                 ;;
2324         esac
2325         ;;
2326 esac
2327
2328
2329 case "$usecrosscompile" in
2330 $define|true|[yY]*)
2331         $echo "Cross-compiling..."
2332         croak=''
2333         case "$cc" in
2334         *-*-gcc) # A cross-compiling gcc, probably.
2335             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2336             ar=$targetarch-ar
2337             # leave out ld, choosing it is more complex
2338             nm=$targetarch-nm
2339             ranlib=$targetarch-ranlib
2340             $echo 'extern int foo;' > try.c
2341             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2342             shift
2343             if $test $# -gt 0; then
2344                 incpth="$incpth $*"
2345                 incpth="`$echo $incpth|$sed 's/^ //'`"
2346                 echo "Guessing incpth '$incpth'." >&4
2347                 for i in $*; do
2348                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2349                     if $test -d $j; then
2350                         libpth="$libpth $j"
2351                     fi
2352                 done   
2353                 libpth="`$echo $libpth|$sed 's/^ //'`"
2354                 echo "Guessing libpth '$libpth'." >&4
2355             fi
2356             $rm -f try.c
2357             ;;
2358         esac
2359         case "$targetarch" in
2360         '') echo "Targetarch not defined." >&4; croak=y ;;
2361         *)  echo "Using targetarch $targetarch." >&4 ;;
2362         esac
2363         case "$incpth" in
2364         '') echo "Incpth not defined." >&4; croak=y ;;
2365         *)  echo "Using incpth '$incpth'." >&4 ;;
2366         esac
2367         case "$libpth" in
2368         '') echo "Libpth not defined." >&4; croak=y ;;
2369         *)  echo "Using libpth '$libpth'." >&4 ;;
2370         esac
2371         case "$usrinc" in
2372         '') for i in $incpth; do
2373                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2374                     usrinc=$i
2375                     echo "Guessing usrinc $usrinc." >&4
2376                     break
2377                 fi
2378             done
2379             case "$usrinc" in
2380             '') echo "Usrinc not defined." >&4; croak=y ;;
2381             esac
2382             ;;
2383         *)  echo "Using usrinc $usrinc." >&4 ;;
2384         esac
2385         case "$targethost" in
2386         '') echo "Targethost not defined." >&4; croak=y ;;
2387         *)  echo "Using targethost $targethost." >&4
2388         esac
2389         locincpth=' '
2390         loclibpth=' '
2391         case "$croak" in
2392         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2393         esac
2394         case "$src" in
2395         /*) run=$src/Cross/run
2396             targetmkdir=$src/Cross/mkdir
2397             to=$src/Cross/to
2398             from=$src/Cross/from
2399             ;;
2400         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2401             run=$pwd/Cross/run
2402             targetmkdir=$pwd/Cross/mkdir
2403             to=$pwd/Cross/to
2404             from=$pwd/Cross/from
2405             ;;
2406         esac
2407         case "$targetrun" in
2408         '') targetrun=ssh ;;
2409         esac
2410         case "$targetto" in
2411         '') targetto=scp ;;
2412         esac
2413         case "$targetfrom" in
2414         '') targetfrom=scp ;;
2415         esac
2416         run=$run-$targetrun
2417         to=$to-$targetto
2418         from=$from-$targetfrom
2419         case "$targetdir" in
2420         '')  targetdir=/tmp
2421              echo "Guessing targetdir $targetdir." >&4
2422              ;;
2423         esac
2424         case "$targetuser" in
2425         '')  targetuser=root
2426              echo "Guessing targetuser $targetuser." >&4
2427              ;;
2428         esac
2429         case "$targetfrom" in
2430         scp)    q=-q ;;
2431         *)      q='' ;;
2432         esac
2433         case "$targetrun" in
2434         ssh|rsh)
2435             cat >$run <<EOF
2436 #!/bin/sh
2437 case "\$1" in
2438 -cwd)
2439   shift
2440   cwd=\$1
2441   shift
2442   ;;
2443 esac
2444 case "\$cwd" in
2445 '') cwd=$targetdir ;;
2446 esac
2447 exe=\$1
2448 shift
2449 if $test ! -f \$exe.xok; then
2450   $to \$exe
2451   $touch \$exe.xok
2452 fi
2453 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2454 EOF
2455             ;;
2456         *)  echo "Unknown targetrun '$targetrun'" >&4
2457             exit 1
2458             ;;
2459         esac
2460         case "$targetmkdir" in
2461         */Cross/mkdir)
2462             cat >$targetmkdir <<EOF
2463 #!/bin/sh
2464 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2465 EOF
2466             $chmod a+rx $targetmkdir
2467             ;;
2468         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2469             exit 1
2470             ;;
2471         esac
2472         case "$targetto" in
2473         scp|rcp)
2474             cat >$to <<EOF
2475 #!/bin/sh
2476 for f in \$@
2477 do
2478   case "\$f" in
2479   /*)
2480     $targetmkdir \`dirname \$f\`
2481     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2482     ;;
2483   *)
2484     $targetmkdir $targetdir/\`dirname \$f\`
2485     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2486     ;;
2487   esac
2488 done
2489 exit 0
2490 EOF
2491             ;;
2492         cp) cat >$to <<EOF
2493 #!/bin/sh
2494 for f in \$@
2495 do
2496   case "\$f" in
2497   /*)
2498     $mkdir -p $targetdir/\`dirname \$f\`
2499     $cp \$f $targetdir/\$f || exit 1
2500     ;;
2501   *)
2502     $targetmkdir $targetdir/\`dirname \$f\`
2503     $cp \$f $targetdir/\$f || exit 1
2504     ;;
2505   esac
2506 done
2507 exit 0
2508 EOF
2509             ;;
2510         *)  echo "Unknown targetto '$targetto'" >&4
2511             exit 1
2512             ;;
2513         esac
2514         case "$targetfrom" in
2515         scp|rcp)
2516           cat >$from <<EOF
2517 #!/bin/sh
2518 for f in \$@
2519 do
2520   $rm -f \$f
2521   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2522 done
2523 exit 0
2524 EOF
2525             ;;
2526         cp) cat >$from <<EOF
2527 #!/bin/sh
2528 for f in \$@
2529 do
2530   $rm -f \$f
2531   cp $targetdir/\$f . || exit 1
2532 done
2533 exit 0
2534 EOF
2535             ;;
2536         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2537             exit 1
2538             ;;
2539         esac
2540         if $test ! -f $run; then
2541             echo "Target 'run' script '$run' not found." >&4
2542         else
2543             $chmod a+rx $run
2544         fi
2545         if $test ! -f $to; then
2546             echo "Target 'to' script '$to' not found." >&4
2547         else
2548             $chmod a+rx $to
2549         fi
2550         if $test ! -f $from; then
2551             echo "Target 'from' script '$from' not found." >&4
2552         else
2553             $chmod a+rx $from
2554         fi
2555         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2556             exit 1
2557         fi
2558         cat >&4 <<EOF
2559 Using '$run' for remote execution,
2560 and '$from' and '$to'
2561 for remote file transfer.
2562 EOF
2563         ;;
2564 *)      run=''
2565         to=:
2566         from=:
2567         usecrosscompile='undef'
2568         targetarch=''
2569         ;;
2570 esac
2571
2572 : see whether [:lower:] and [:upper:] are supported character classes
2573 echo " "
2574 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2575 ABYZ)
2576         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2577         up='[:upper:]'
2578         low='[:lower:]'
2579         ;;
2580 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2581         # (0xc9 and 0xd1), therefore that is a nice testing point.
2582         if test "X$up" = X -o "X$low" = X; then
2583             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2584             ij) up='[A-Z]'
2585                 low='[a-z]'
2586                 ;;
2587             esac
2588         fi
2589         if test "X$up" = X -o "X$low" = X; then
2590             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2591             ij) up='A-Z'
2592                 low='a-z'
2593                 ;;
2594             esac
2595         fi
2596         if test "X$up" = X -o "X$low" = X; then
2597             case "`echo IJ | od -x 2>/dev/null`" in
2598             *C9D1*|*c9d1*)
2599                 echo "Hey, this might be EBCDIC." >&4
2600                 if test "X$up" = X -o "X$low" = X; then
2601                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2602                     ij) up='[A-IJ-RS-Z]'
2603                         low='[a-ij-rs-z]'
2604                         ;;
2605                     esac
2606                 fi
2607                 if test "X$up" = X -o "X$low" = X; then
2608                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2609                     ij) up='A-IJ-RS-Z'
2610                         low='a-ij-rs-z'
2611                         ;;
2612                     esac
2613                 fi
2614                 ;;
2615             esac
2616         fi
2617 esac
2618 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2619 ij)
2620     echo "Using $up and $low to convert case." >&4
2621     ;;
2622 *)
2623     echo "I don't know how to translate letters from upper to lower case." >&4
2624     echo "Your tr is not acting any way I know of." >&4
2625     exit 1
2626     ;;
2627 esac
2628 : set up the translation script tr, must be called with ./tr of course
2629 cat >tr <<EOSC
2630 $startsh
2631 case "\$1\$2" in
2632 '[A-Z][a-z]') exec $tr '$up' '$low';;
2633 '[a-z][A-Z]') exec $tr '$low' '$up';;
2634 esac
2635 exec $tr "\$@"
2636 EOSC
2637 chmod +x tr
2638 $eunicefix tr
2639
2640 : Try to determine whether config.sh was made on this system
2641 case "$config_sh" in
2642 '')
2643 myuname=`$uname -a 2>/dev/null`
2644 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2645 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2646 # because the A-Z/a-z are not consecutive.
2647 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2648         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2649 newmyuname="$myuname"
2650 dflt=n
2651 case "$knowitall" in
2652 '')
2653         if test -f ../config.sh; then
2654                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2655                         eval "`grep myuname= ../config.sh`"
2656                 fi
2657                 if test "X$myuname" = "X$newmyuname"; then
2658                         dflt=y
2659                 fi
2660         fi
2661         ;;
2662 *) dflt=y;;
2663 esac
2664
2665 : Get old answers from old config file if Configure was run on the
2666 : same system, otherwise use the hints.
2667 hint=default
2668 cd ..
2669 if test -f config.sh; then
2670         echo " "
2671         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2672         . UU/myread
2673         case "$ans" in
2674         n*|N*) echo "OK, I'll ignore it."
2675                 mv config.sh config.sh.old
2676                 myuname="$newmyuname"
2677                 ;;
2678         *)  echo "Fetching default answers from your old config.sh file..." >&4
2679                 tmp_n="$n"
2680                 tmp_c="$c"
2681                 tmp_sh="$sh"
2682                 . ./config.sh
2683                 cp config.sh UU
2684                 n="$tmp_n"
2685                 c="$tmp_c"
2686                 : Older versions did not always set $sh.  Catch re-use of such
2687                 : an old config.sh.
2688                 case "$sh" in
2689                 '') sh="$tmp_sh" ;;
2690                 esac
2691                 hint=previous
2692                 ;;
2693         esac
2694 fi
2695 . ./UU/checkcc
2696 if test ! -f config.sh; then
2697         $cat <<EOM
2698
2699 First time through, eh?  I have some defaults handy for some systems
2700 that need some extra help getting the Configure answers right:
2701
2702 EOM
2703         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2704         dflt=''
2705         : Half the following guesses are probably wrong... If you have better
2706         : tests or hints, please send them to perlbug@perl.org
2707         : The metaconfig authors would also appreciate a copy...
2708         $test -f /irix && osname=irix
2709         $test -f /xenix && osname=sco_xenix
2710         $test -f /dynix && osname=dynix
2711         $test -f /dnix && osname=dnix
2712         $test -f /lynx.os && osname=lynxos
2713         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2714         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2715         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2716         $test -f /bin/mips && /bin/mips && osname=mips
2717         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2718                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2719         $test -d /usr/apollo/bin && osname=apollo
2720         $test -f /etc/saf/_sactab && osname=svr4
2721         $test -d /usr/include/minix && osname=minix
2722         if $test -d /MachTen -o -d /MachTen_Folder; then
2723                 osname=machten
2724                 if $test -x /sbin/version; then
2725                         osvers=`/sbin/version | $awk '{print $2}' |
2726                         $sed -e 's/[A-Za-z]$//'`
2727                 elif $test -x /usr/etc/version; then
2728                         osvers=`/usr/etc/version | $awk '{print $2}' |
2729                         $sed -e 's/[A-Za-z]$//'`
2730                 else
2731                         osvers="$2.$3"
2732                 fi
2733         fi
2734
2735         $test -f /sys/posix.dll &&
2736                 $test -f /usr/bin/what &&
2737                 set X `/usr/bin/what /sys/posix.dll` &&
2738                 $test "$3" = UWIN &&
2739                 osname=uwin &&
2740                 osvers="$5"
2741
2742         if $test -f $uname; then
2743                 set X $myuname
2744                 shift
2745
2746                 case "$5" in
2747                 fps*) osname=fps ;;
2748                 mips*)
2749                         case "$4" in
2750                         umips) osname=umips ;;
2751                         *) osname=mips ;;
2752                         esac;;
2753                 [23]100) osname=mips ;;
2754                 next*) osname=next ;;
2755                 i386*)
2756                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2757                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2758                                 osname='sco'
2759                                 osvers=$tmp
2760                         elif $test -f /etc/kconfig; then
2761                                 osname=isc
2762                                 if test "$lns" = "$ln -s"; then
2763                                         osvers=4
2764                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2765                                         osvers=3
2766                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2767                                         osvers=2
2768                                 fi
2769                         fi
2770                         tmp=''
2771                         ;;
2772                 pc*)
2773                         if test -n "$DJGPP"; then
2774                                 osname=dos
2775                                 osvers=djgpp
2776                         fi
2777                         ;;
2778                 esac
2779
2780                 case "$1" in
2781                 aix) osname=aix
2782                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2783                         case "$tmp" in
2784                         'not found') osvers="$4"."$3" ;;
2785                         '<3240'|'<>3240') osvers=3.2.0 ;;
2786                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2787                         '=3250'|'>3250') osvers=3.2.5 ;;
2788                         *) osvers=$tmp;;
2789                         esac
2790                         ;;
2791                 bsd386) osname=bsd386
2792                         osvers=`$uname -r`
2793                         ;;
2794                 cygwin*) osname=cygwin
2795                         osvers="$3"
2796                         ;;
2797                 *dc.osx) osname=dcosx
2798                         osvers="$3"
2799                         ;;
2800                 dnix) osname=dnix
2801                         osvers="$3"
2802                         ;;
2803                 domainos) osname=apollo
2804                         osvers="$3"
2805                         ;;
2806                 dgux) osname=dgux 
2807                         osvers="$3"
2808                         ;;
2809                 dynixptx*) osname=dynixptx
2810                         osvers=`echo "$4"|sed 's/^v//'`
2811                         ;;
2812                 freebsd) osname=freebsd 
2813                         osvers="$3" ;;
2814                 genix) osname=genix ;;
2815                 hp*) osname=hpux 
2816                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2817                         ;;
2818                 irix*) osname=irix
2819                         case "$3" in
2820                         4*) osvers=4 ;;
2821                         5*) osvers=5 ;;
2822                         *)      osvers="$3" ;;
2823                         esac
2824                         ;;
2825                 linux) osname=linux
2826                         case "$3" in
2827                         *)      osvers="$3" ;;
2828                         esac
2829                         ;;
2830                 MiNT) osname=mint
2831                         ;;
2832                 netbsd*) osname=netbsd
2833                         osvers="$3"
2834                         ;;
2835                 news-os) osvers="$3"
2836                         case "$3" in
2837                         4*) osname=newsos4 ;;
2838                         *) osname=newsos ;;
2839                         esac
2840                         ;;
2841                 next*) osname=next ;;
2842                 nonstop-ux) osname=nonstopux ;;
2843                 POSIX-BC | posix-bc ) osname=posix-bc
2844                         osvers="$3"
2845                         ;;
2846                 powerux | power_ux | powermax_os | powermaxos | \
2847                 powerunix | power_unix) osname=powerux
2848                         osvers="$3"
2849                         ;;
2850                 qnx) osname=qnx
2851                         osvers="$4"
2852                         ;;
2853                 solaris) osname=solaris
2854                         case "$3" in
2855                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2856                         *)      osvers="$3" ;;
2857                         esac
2858                         ;;
2859                 sunos) osname=sunos
2860                         case "$3" in
2861                         5*) osname=solaris
2862                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2863                         *)      osvers="$3" ;;
2864                         esac
2865                         ;;
2866                 titanos) osname=titanos
2867                         case "$3" in
2868                         1*) osvers=1 ;;
2869                         2*) osvers=2 ;;
2870                         3*) osvers=3 ;;
2871                         4*) osvers=4 ;;
2872                         *)      osvers="$3" ;;
2873                         esac
2874                         ;;
2875                 ultrix) osname=ultrix
2876                         osvers="$3"
2877                         ;;
2878                 osf1|mls+)      case "$5" in
2879                                 alpha)
2880                                         osname=dec_osf
2881                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2882                                         case "$osvers" in
2883                                         [1-9].[0-9]*) ;;
2884                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2885                                         esac
2886                                         ;;
2887                         hp*)    osname=hp_osf1  ;;
2888                         mips)   osname=mips_osf1 ;;
2889                         esac
2890                         ;;
2891                 unixware) osname=svr5
2892                         osvers="$4"
2893                         ;;
2894                 uts) osname=uts
2895                         osvers="$3"
2896                         ;;
2897                 $2) case "$osname" in
2898                         *isc*) ;;
2899                         *freebsd*) ;;
2900                         svr*)
2901                                 : svr4.x or possibly later
2902                                 case "svr$3" in 
2903                                 ${osname}*)
2904                                         osname=svr$3
2905                                         osvers=$4
2906                                         ;;
2907                                 esac
2908                                 case "$osname" in
2909                                 svr4.0)
2910                                         : Check for ESIX
2911                                         if test -f /stand/boot ; then
2912                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2913                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2914                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2915                                                         if test -n "$isesix"; then
2916                                                                 osname=esix4
2917                                                         fi
2918                                                 fi
2919                                         fi
2920                                         ;;
2921                                 esac
2922                                 ;;
2923                         *)      if test -f /etc/systemid; then
2924                                         osname=sco
2925                                         set `echo $3 | $sed 's/\./ /g'` $4
2926                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2927                                                 osvers=$1.$2.$3
2928                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2929                                                 osvers=$1.$2
2930                                         elif $test -f $src/hints/sco_$1.sh; then
2931                                                 osvers=$1
2932                                         fi
2933                                 else
2934                                         case "$osname" in
2935                                         '') : Still unknown.  Probably a generic Sys V.
2936                                                 osname="sysv"
2937                                                 osvers="$3"
2938                                                 ;;
2939                                         esac
2940                                 fi
2941                                 ;;
2942                         esac
2943                         ;;
2944                 *)      case "$osname" in
2945                         '') : Still unknown.  Probably a generic BSD.
2946                                 osname="$1"
2947                                 osvers="$3"
2948                                 ;;
2949                         esac
2950                         ;;
2951                 esac
2952         else
2953                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2954                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2955                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2956                                 osname=news_os
2957                         fi
2958                         $rm -f UU/kernel.what
2959                 elif test -d c:/.; then
2960                         set X $myuname
2961                         osname=os2
2962                         osvers="$5"
2963                 fi
2964         fi
2965         
2966         case "$targetarch" in
2967         '') ;;
2968         *)  hostarch=$osname
2969             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2970             osvers=''
2971             ;;
2972         esac
2973
2974         : Now look for a hint file osname_osvers, unless one has been
2975         : specified already.
2976         case "$hintfile" in
2977         ''|' ')
2978                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2979                 : Also try without trailing minor version numbers.
2980                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2981                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2982                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2983                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2984                 case "$file" in
2985                 '') dflt=none ;;
2986                 *)  case "$osvers" in
2987                         '') dflt=$file
2988                                 ;;
2989                         *)  if $test -f $src/hints/$file.sh ; then
2990                                         dflt=$file
2991                                 elif $test -f $src/hints/$xfile.sh ; then
2992                                         dflt=$xfile
2993                                 elif $test -f $src/hints/$xxfile.sh ; then
2994                                         dflt=$xxfile
2995                                 elif $test -f $src/hints/$xxxfile.sh ; then
2996                                         dflt=$xxxfile
2997                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2998                                         dflt=$xxxxfile
2999                                 elif $test -f "$src/hints/${osname}.sh" ; then
3000                                         dflt="${osname}"
3001                                 else
3002                                         dflt=none
3003                                 fi
3004                                 ;;
3005                         esac
3006                         ;;
3007                 esac
3008                 if $test -f Policy.sh ; then
3009                         case "$dflt" in
3010                         *Policy*) ;;
3011                         none) dflt="Policy" ;;
3012                         *) dflt="Policy $dflt" ;;
3013                         esac
3014                 fi
3015                 ;;
3016         *)
3017                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3018                 ;;
3019         esac
3020
3021         if $test -f Policy.sh ; then
3022                 $cat <<EOM
3023
3024 There's also a Policy hint file available, which should make the
3025 site-specific (policy) questions easier to answer.
3026 EOM
3027
3028         fi
3029
3030         $cat <<EOM
3031
3032 You may give one or more space-separated answers, or "none" if appropriate.
3033 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3034 is a good thing.  DO NOT give a wrong version or a wrong OS.
3035
3036 EOM
3037
3038         rp="Which of these apply, if any?"
3039         . UU/myread
3040         tans=$ans
3041         for file in $tans; do
3042                 if $test X$file = XPolicy -a -f Policy.sh; then
3043                         . Policy.sh
3044                         $cat Policy.sh >> UU/config.sh
3045                 elif $test -f $src/hints/$file.sh; then
3046                         . $src/hints/$file.sh
3047                         $cat $src/hints/$file.sh >> UU/config.sh
3048                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3049                         : nothing
3050                 else
3051                         : Give one chance to correct a possible typo.
3052                         echo "$file.sh does not exist"
3053                         dflt=$file
3054                         rp="hint to use instead?"
3055                         . UU/myread
3056                         for file in $ans; do
3057                                 if $test -f "$src/hints/$file.sh"; then
3058                                         . $src/hints/$file.sh
3059                                         $cat $src/hints/$file.sh >> UU/config.sh
3060                                 elif $test X$ans = X -o X$ans = Xnone ; then
3061                                         : nothing
3062                                 else
3063                                         echo "$file.sh does not exist -- ignored."
3064                                 fi
3065                         done
3066                 fi
3067         done
3068
3069         hint=recommended
3070         : Remember our hint file for later.
3071         if $test -f "$src/hints/$file.sh" ; then
3072                 hintfile="$file"
3073         else
3074                 hintfile=''
3075         fi
3076 fi
3077 cd UU
3078 ;;
3079 *)
3080         echo " "
3081         echo "Fetching default answers from $config_sh..." >&4
3082         tmp_n="$n"
3083         tmp_c="$c"
3084         cd ..
3085         cp $config_sh config.sh 2>/dev/null
3086         chmod +w config.sh
3087         . ./config.sh
3088         cd UU
3089         cp ../config.sh .
3090         n="$tmp_n"
3091         c="$tmp_c"
3092         hint=previous
3093         ;;
3094 esac
3095 test "$override" && . ./optdef.sh
3096
3097 : Restore computed paths
3098 for file in $loclist $trylist; do
3099         eval $file="\$_$file"
3100 done
3101
3102 cat << EOM
3103
3104 Configure uses the operating system name and version to set some defaults.
3105 The default value is probably right if the name rings a bell. Otherwise,
3106 since spelling matters for me, either accept the default or answer "none"
3107 to leave it blank.
3108
3109 EOM
3110 case "$osname" in
3111         ''|' ')
3112                 case "$hintfile" in
3113                 ''|' '|none) dflt=none ;;
3114                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3115                 esac
3116                 ;;
3117         *) dflt="$osname" ;;
3118 esac
3119 rp="Operating system name?"
3120 . ./myread
3121 case "$ans" in
3122 none)  osname='' ;;
3123 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3124 esac
3125 echo " "
3126 case "$osvers" in
3127         ''|' ')
3128                 case "$hintfile" in
3129                 ''|' '|none) dflt=none ;;
3130                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3131                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3132                         case "$dflt" in
3133                         ''|' ') dflt=none ;;
3134                         esac
3135                         ;;
3136                 esac
3137                 ;;
3138         *) dflt="$osvers" ;;
3139 esac
3140 rp="Operating system version?"
3141 . ./myread
3142 case "$ans" in
3143 none)  osvers='' ;;
3144 *) osvers="$ans" ;;
3145 esac
3146
3147
3148 . ./posthint.sh
3149
3150 : who configured the system
3151 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3152 cf_by=`(logname) 2>/dev/null`
3153 case "$cf_by" in
3154 "")
3155         cf_by=`(whoami) 2>/dev/null`
3156         case "$cf_by" in
3157         "") cf_by=unknown ;;
3158         esac ;;
3159 esac
3160
3161 : set up the script used to warn in case of inconsistency
3162 cat <<EOS >whoa
3163 $startsh
3164 EOS
3165 cat <<'EOSC' >>whoa
3166 dflt=y
3167 echo " "
3168 echo "*** WHOA THERE!!! ***" >&4
3169 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3170 rp="    Keep the $hint value?"
3171 . ./myread
3172 case "$ans" in
3173 y) td=$was; tu=$was;;
3174 esac
3175 EOSC
3176
3177 : function used to set $1 to $val
3178 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3179 case "$val$was" in
3180 $define$undef) . ./whoa; eval "$var=\$td";;
3181 $undef$define) . ./whoa; eval "$var=\$tu";;
3182 *) eval "$var=$val";;
3183 esac'
3184
3185 case "$usethreads" in
3186 $define|true|[yY]*)     dflt='y';;
3187 *) dflt='n';;
3188 esac
3189 cat <<EOM
3190
3191 Perl can be built to take advantage of threads on some systems.
3192 To do so, Configure can be run with -Dusethreads.
3193
3194 Note that threading is a highly experimental feature, and
3195 some known race conditions still remain.  If you choose to try
3196 it, be very sure to not actually deploy it for production
3197 purposes.  README.threads has more details, and is required
3198 reading if you enable threads.
3199
3200 If this doesn't make any sense to you, just accept the default '$dflt'.
3201 EOM
3202 rp='Build a threading Perl?'
3203 . ./myread
3204 case "$ans" in
3205 y|Y)    val="$define" ;;
3206 *)      val="$undef" ;;
3207 esac
3208 set usethreads
3209 eval $setvar
3210
3211 case "$usethreads" in
3212 $define)
3213         $cat <<EOM
3214
3215 As of 5.5.640, Perl has two different internal threading implementations,
3216 the 5.005 version (5005threads) and an interpreter-based version
3217 (ithreads) that has one interpreter per thread.  Both are very 
3218 experimental.  This arrangement exists to help developers work out
3219 which one is better.
3220
3221 If you're a casual user, you probably don't want interpreter-threads
3222 at this time.  There doesn't yet exist a way to create threads from
3223 within Perl in this model, i.e., "use Thread;" will NOT work.
3224 EOM
3225         : Default to ithreads unless overridden on command line or with
3226         : old config.sh
3227         dflt='y'
3228         case "$use5005threads" in
3229                 $define|true|[yY]*) dflt='n';;
3230         esac
3231         case "$useithreads" in
3232                 $undef|false|[nN]*) dflt='n';;
3233         esac
3234         rp='Use interpreter-based ithreads?'
3235         . ./myread
3236         case "$ans" in
3237         y|Y)    val="$define" ;;
3238         *)      val="$undef" ;;
3239         esac
3240         set useithreads
3241         eval $setvar
3242         : Now set use5005threads to the opposite value.
3243         case "$useithreads" in
3244         $define) val="$undef" ;;
3245         *) val="$define" ;;
3246         esac
3247         set use5005threads
3248         eval $setvar
3249         ;;
3250 *)
3251         useithreads="$undef"
3252         use5005threads="$undef"
3253         ;;
3254 esac
3255
3256 case "$useithreads$use5005threads" in
3257 "$define$define")
3258         $cat >&4 <<EOM
3259
3260 You cannot have both the ithreads and the 5.005 threads enabled
3261 at the same time.  Disabling the 5.005 threads since they are
3262 much less stable than the ithreads.
3263
3264 EOM
3265         use5005threads="$undef"
3266         ;;
3267 esac
3268
3269 case "$d_oldpthreads" in
3270 '')     : Configure tests would be welcome here.  For now, assume undef.
3271         val="$undef" ;;
3272 *)      val="$d_oldpthreads" ;;
3273 esac
3274 set d_oldpthreads
3275 eval $setvar
3276
3277
3278 case "$usethreads" in
3279 "$define"|true|[yY]*)
3280 : Look for a hint-file generated 'call-back-unit'.  If the
3281 : user has specified that a threading perl is to be built,
3282 : we may need to set or change some other defaults.
3283         if $test -f usethreads.cbu; then
3284                 echo "Your platform has some specific hints for threaded builds, using them..."
3285                 . ./usethreads.cbu
3286         else
3287                 $cat <<EOM
3288 (Your platform doesn't have any specific hints for threaded builds.
3289  Assuming POSIX threads, then.)
3290 EOM
3291         fi
3292         ;;
3293 esac
3294
3295 cat <<EOM
3296
3297 Perl can be built so that multiple Perl interpreters can coexist
3298 within the same Perl executable.
3299 EOM
3300
3301 case "$useithreads" in
3302 $define)
3303         cat <<EOM
3304 This multiple interpreter support is required for interpreter-based threads.
3305 EOM
3306         val="$define"
3307         ;;
3308 *)      case "$usemultiplicity" in
3309         $define|true|[yY]*)     dflt='y';;
3310         *) dflt='n';;
3311         esac
3312         echo " "
3313         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3314         rp='Build Perl for multiplicity?'
3315         . ./myread
3316         case "$ans" in
3317         y|Y)    val="$define" ;;
3318         *)      val="$undef" ;;
3319         esac
3320         ;;
3321 esac
3322 set usemultiplicity
3323 eval $setvar
3324
3325
3326 case "$usemorebits" in
3327 "$define"|true|[yY]*)
3328         use64bitint="$define"
3329         uselongdouble="$define"
3330         usemorebits="$define"
3331         ;;
3332 *)      usemorebits="$undef"
3333         ;;
3334 esac
3335
3336 : make some quick guesses about what we are up against
3337 echo " "
3338 $echo $n "Hmm...  $c"
3339 echo exit 1 >bsd
3340 echo exit 1 >usg
3341 echo exit 1 >v7
3342 echo exit 1 >osf1
3343 echo exit 1 >eunice
3344 echo exit 1 >xenix
3345 echo exit 1 >venix
3346 echo exit 1 >os2
3347 d_bsd="$undef"
3348 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3349 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3350 then
3351         echo "Looks kind of like an OSF/1 system, but we'll see..."
3352         echo exit 0 >osf1
3353 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3354         xxx=`./loc addbib blurfl $pth`
3355         if $test -f $xxx; then
3356         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3357                 echo exit 0 >bsd
3358                 echo exit 0 >usg
3359         else
3360                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3361                         echo "Looks kind of like an extended USG system, but we'll see..."
3362                 else
3363                         echo "Looks kind of like a USG system, but we'll see..."
3364                 fi
3365                 echo exit 0 >usg
3366         fi
3367 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3368         echo "Looks kind of like a BSD system, but we'll see..."
3369         d_bsd="$define"
3370         echo exit 0 >bsd
3371 else
3372         echo "Looks kind of like a Version 7 system, but we'll see..."
3373         echo exit 0 >v7
3374 fi
3375 case "$eunicefix" in
3376 *unixtovms*)
3377         $cat <<'EOI'
3378 There is, however, a strange, musty smell in the air that reminds me of
3379 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3380 EOI
3381         echo exit 0 >eunice
3382         d_eunice="$define"
3383 : it so happens the Eunice I know will not run shell scripts in Unix format
3384         ;;
3385 *)
3386         echo " "
3387         echo "Congratulations.  You aren't running Eunice."
3388         d_eunice="$undef"
3389         ;;
3390 esac
3391 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3392 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3393 : semicolon as a patch separator
3394 case "$p_" in
3395 :) ;;
3396 *)
3397         $cat <<'EOI'
3398 I have the feeling something is not exactly right, however...don't tell me...
3399 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3400 (Or you may be running DOS with DJGPP.)
3401 EOI
3402         echo exit 0 >os2
3403         ;;
3404 esac
3405 if test -f /xenix; then
3406         echo "Actually, this looks more like a XENIX system..."
3407         echo exit 0 >xenix
3408         d_xenix="$define"
3409 else
3410         echo " "
3411         echo "It's not Xenix..."
3412         d_xenix="$undef"
3413 fi
3414 chmod +x xenix
3415 $eunicefix xenix
3416 if test -f /venix; then
3417         echo "Actually, this looks more like a VENIX system..."
3418         echo exit 0 >venix
3419 else
3420         echo " "
3421         if ./xenix; then
3422                 : null
3423         else
3424                 echo "Nor is it Venix..."
3425         fi
3426 fi
3427 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3428 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3429 $rm -f foo
3430
3431 case "$cc" in
3432 '') dflt=cc;;
3433 *) dflt="$cc";;
3434 esac
3435 rp="Use which C compiler?"
3436 . ./myread
3437 cc="$ans"
3438 : Look for a hint-file generated 'call-back-unit'.  Now that the
3439 : user has specified the compiler, we may need to set or change some
3440 : other defaults.
3441 if $test -f cc.cbu; then
3442     . ./cc.cbu
3443 fi
3444 . ./checkcc
3445
3446 echo " "
3447 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3448 $cat >try.c <<EOM
3449 #include <stdio.h>
3450 int main() {
3451 #ifdef __GNUC__
3452 #ifdef __VERSION__
3453         printf("%s\n", __VERSION__);
3454 #else
3455         printf("%s\n", "1");
3456 #endif
3457 #endif
3458         exit(0);
3459 }
3460 EOM
3461 if $cc -o try $ccflags $ldflags try.c; then
3462         gccversion=`$run ./try`
3463         case "$gccversion" in
3464         '') echo "You are not using GNU cc." ;;
3465         *)  echo "You are using GNU cc $gccversion."
3466             ccname=gcc  
3467             ;;
3468         esac
3469 else
3470         echo " "
3471         echo "*** WHOA THERE!!! ***" >&4
3472         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3473         case "$knowitall" in
3474         '')
3475         echo "    You'd better start hunting for one and let me know about it." >&4
3476                 exit 1
3477                 ;;
3478         esac
3479 fi
3480 $rm -f try try.*
3481 case "$gccversion" in
3482 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3483 esac
3484 case "$gccversion" in
3485 '') gccosandvers='' ;;
3486 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3487    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3488    gccshortvers=''
3489    case "$gccosandvers" in
3490    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3491    $osname$osvers) ;; # looking good
3492    $osname*) cat <<EOM >&4
3493
3494 *** WHOA THERE!!! ***
3495
3496     Your gcc has not been compiled for the exact release of
3497     your operating system ($gccosandvers versus $osname$osvers).
3498
3499     In general it is a good idea to keep gcc synchronized with
3500     the operating system because otherwise serious problems
3501     may ensue when trying to compile software, like Perl.
3502
3503     I'm trying to be optimistic here, though, and will continue.
3504     If later during the configuration and build icky compilation
3505     problems appear (headerfile conflicts being the most common
3506     manifestation), I suggest reinstalling the gcc to match
3507     your operating system release.
3508
3509 EOM
3510       ;;
3511    *) gccosandvers='' ;; # failed to parse, better be silent
3512    esac
3513    ;;
3514 esac
3515 case "$ccname" in
3516 '') ccname="$cc" ;;
3517 esac
3518
3519 case "$gccversion" in
3520 '') ;;
3521 *)  case "$ccflags" in
3522     *-Wall*) ;;
3523     *) ccflags="$ccflags -Wall" ;;
3524     esac
3525     ;;
3526 esac
3527
3528 : decide how portable to be.  Allow command line overrides.
3529 case "$d_portable" in
3530 "$undef") ;;
3531 *)      d_portable="$define" ;;
3532 esac
3533
3534 : set up shell script to do ~ expansion
3535 cat >filexp <<EOSS
3536 $startsh
3537 : expand filename
3538 case "\$1" in
3539  ~/*|~)
3540         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3541         ;;
3542  ~*)
3543         if $test -f /bin/csh; then
3544                 /bin/csh -f -c "glob \$1"
3545                 failed=\$?
3546                 echo ""
3547                 exit \$failed
3548         else
3549                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3550                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3551                 if $test ! -d "\$dir"; then
3552                         me=\`basename \$0\`
3553                         echo "\$me: can't locate home directory for: \$name" >&2
3554                         exit 1
3555                 fi
3556                 case "\$1" in
3557                 */*)
3558                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3559                         ;;
3560                 *)
3561                         echo \$dir
3562                         ;;
3563                 esac
3564         fi
3565         ;;
3566 *)
3567         echo \$1
3568         ;;
3569 esac
3570 EOSS
3571 chmod +x filexp
3572 $eunicefix filexp
3573
3574 : now set up to get a file name
3575 cat <<EOS >getfile
3576 $startsh
3577 EOS
3578 cat <<'EOSC' >>getfile
3579 tilde=''
3580 fullpath=''
3581 already=''
3582 skip=''
3583 none_ok=''
3584 exp_file=''
3585 nopath_ok=''
3586 orig_rp="$rp"
3587 orig_dflt="$dflt"
3588 case "$gfpth" in
3589 '') gfpth='.' ;;
3590 esac
3591
3592 case "$fn" in
3593 *\(*)
3594         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3595         fn=`echo $fn | sed 's/(.*)//'`
3596         ;;
3597 esac
3598
3599 case "$fn" in
3600 *:*)
3601         loc_file=`expr $fn : '.*:\(.*\)'`
3602         fn=`expr $fn : '\(.*\):.*'`
3603         ;;
3604 esac
3605
3606 case "$fn" in
3607 *~*) tilde=true;;
3608 esac
3609 case "$fn" in
3610 */*) fullpath=true;;
3611 esac
3612 case "$fn" in
3613 *+*) skip=true;;
3614 esac
3615 case "$fn" in
3616 *n*) none_ok=true;;
3617 esac
3618 case "$fn" in
3619 *e*) exp_file=true;;
3620 esac
3621 case "$fn" in
3622 *p*) nopath_ok=true;;
3623 esac
3624
3625 case "$fn" in
3626 *f*) type='File';;
3627 *d*) type='Directory';;
3628 *l*) type='Locate';;
3629 esac
3630
3631 what="$type"
3632 case "$what" in
3633 Locate) what='File';;
3634 esac
3635
3636 case "$exp_file" in
3637 '')
3638         case "$d_portable" in
3639         "$define") ;;
3640         *) exp_file=true;;
3641         esac
3642         ;;
3643 esac
3644
3645 cd ..
3646 while test "$type"; do
3647         redo=''
3648         rp="$orig_rp"
3649         dflt="$orig_dflt"
3650         case "$tilde" in
3651         true) rp="$rp (~name ok)";;
3652         esac
3653         . UU/myread
3654         if test -f UU/getfile.ok && \
3655                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3656         then
3657                 value="$ans"
3658                 ansexp="$ans"
3659                 break
3660         fi
3661         case "$ans" in
3662         none)
3663                 value=''
3664                 ansexp=''
3665                 case "$none_ok" in
3666                 true) type='';;
3667                 esac
3668                 ;;
3669         *)
3670                 case "$tilde" in
3671                 '') value="$ans"
3672                         ansexp="$ans";;
3673                 *)
3674                         value=`UU/filexp $ans`
3675                         case $? in
3676                         0)
3677                                 if test "$ans" != "$value"; then
3678                                         echo "(That expands to $value on this system.)"
3679                                 fi
3680                                 ;;
3681                         *) value="$ans";;
3682                         esac
3683                         ansexp="$value"
3684                         case "$exp_file" in
3685                         '') value="$ans";;
3686                         esac
3687                         ;;
3688                 esac
3689                 case "$fullpath" in
3690                 true)
3691                         case "$ansexp" in
3692                         /*) value="$ansexp" ;;
3693                         [a-zA-Z]:/*) value="$ansexp" ;;
3694                         *)
3695                                 redo=true
3696                                 case "$already" in
3697                                 true)
3698                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3699                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3700                                         ;;
3701                                 *)
3702                                 echo "Please give a full path name, starting with slash." >&4
3703                                         case "$tilde" in
3704                                         true)
3705                                 echo "Note that using ~name is ok provided it expands well." >&4
3706                                                 already=true
3707                                                 ;;
3708                                         esac
3709                                 esac
3710                                 ;;
3711                         esac
3712                         ;;
3713                 esac
3714                 case "$redo" in
3715                 '')
3716                         case "$type" in
3717                         File)
3718                                 for fp in $gfpth; do
3719                                         if test "X$fp" = X.; then
3720                                             pf="$ansexp"
3721                                         else    
3722                                             pf="$fp/$ansexp"
3723                                         fi
3724                                         if test -f "$pf"; then
3725                                                 type=''
3726                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3727                                         then
3728                                                 echo "($value is not a plain file, but that's ok.)"
3729                                                 type=''
3730                                         fi
3731                                         if test X"$type" = X; then
3732                                             value="$pf"
3733                                             break
3734                                         fi
3735                                 done
3736                                 ;;
3737                         Directory)
3738                                 for fp in $gfpth; do
3739                                         if test "X$fp" = X.; then
3740                                             dir="$ans"
3741                                             direxp="$ansexp"
3742                                         else    
3743                                             dir="$fp/$ansexp"
3744                                             direxp="$fp/$ansexp"
3745                                         fi
3746                                         if test -d "$direxp"; then
3747                                                 type=''
3748                                                 value="$dir"
3749                                                 break
3750                                         fi
3751                                 done
3752                                 ;;
3753                         Locate)
3754                                 if test -d "$ansexp"; then
3755                                         echo "(Looking for $loc_file in directory $value.)"
3756                                         value="$value/$loc_file"
3757                                         ansexp="$ansexp/$loc_file"
3758                                 fi
3759                                 if test -f "$ansexp"; then
3760                                         type=''
3761                                 fi
3762                                 case "$nopath_ok" in
3763                                 true)   case "$value" in
3764                                         */*) ;;
3765                                         *)      echo "Assuming $value will be in people's path."
3766                                                 type=''
3767                                                 ;;
3768                                         esac
3769                                         ;;
3770                                 esac
3771                                 ;;
3772                         esac
3773
3774                         case "$skip" in
3775                         true) type='';
3776                         esac
3777
3778                         case "$type" in
3779                         '') ;;
3780                         *)
3781                                 if test "$fastread" = yes; then
3782                                         dflt=y
3783                                 else
3784                                         dflt=n
3785                                 fi
3786                                 rp="$what $value doesn't exist.  Use that name anyway?"
3787                                 . UU/myread
3788                                 dflt=''
3789                                 case "$ans" in
3790                                 y*) type='';;
3791                                 *) echo " ";;
3792                                 esac
3793                                 ;;
3794                         esac
3795                         ;;
3796                 esac
3797                 ;;
3798         esac
3799 done
3800 cd UU
3801 ans="$value"
3802 rp="$orig_rp"
3803 dflt="$orig_dflt"
3804 rm -f getfile.ok
3805 test "X$gfpthkeep" != Xy && gfpth=""
3806 EOSC
3807
3808 : What should the include directory be ?
3809 echo " "
3810 $echo $n "Hmm...  $c"
3811 dflt='/usr/include'
3812 incpath=''
3813 mips_type=''
3814 if $test -f /bin/mips && /bin/mips; then
3815         echo "Looks like a MIPS system..."
3816         $cat >usr.c <<'EOCP'
3817 #ifdef SYSTYPE_BSD43
3818 /bsd43
3819 #endif
3820 EOCP
3821         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3822                 dflt='/bsd43/usr/include'
3823                 incpath='/bsd43'
3824                 mips_type='BSD 4.3'
3825         else
3826                 mips_type='System V'
3827         fi
3828         $rm -f usr.c usr.out
3829         echo "and you're compiling with the $mips_type compiler and libraries."
3830         xxx_prompt=y
3831         echo "exit 0" >mips
3832 else
3833         echo "Doesn't look like a MIPS system."
3834         xxx_prompt=n
3835         echo "exit 1" >mips
3836 fi
3837 chmod +x mips
3838 $eunicefix mips
3839 case "$usrinc" in
3840 '') ;;
3841 *) dflt="$usrinc";;
3842 esac
3843 case "$xxx_prompt" in
3844 y)      fn=d/
3845         echo " "
3846         rp='Where are the include files you want to use?'
3847         . ./getfile
3848         usrinc="$ans"
3849         ;;
3850 *)      usrinc="$dflt"
3851         ;;
3852 esac
3853
3854 : see how we invoke the C preprocessor
3855 echo " "
3856 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3857 cat <<'EOT' >testcpp.c
3858 #define ABC abc
3859 #define XYZ xyz
3860 ABC.XYZ
3861 EOT
3862 cd ..
3863 if test ! -f cppstdin; then
3864         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3865                 # AIX cc -E doesn't show the absolute headerfile
3866                 # locations but we'll cheat by using the -M flag.
3867                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3868         else
3869                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3870         fi
3871 else
3872         echo "Keeping your $hint cppstdin wrapper."
3873 fi
3874 chmod 755 cppstdin
3875 wrapper=`pwd`/cppstdin
3876 ok='false'
3877 cd UU
3878
3879 if $test "X$cppstdin" != "X" && \
3880         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3881         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3882 then
3883         echo "You used to use $cppstdin $cppminus so we'll use that again."
3884         case "$cpprun" in
3885         '') echo "But let's see if we can live without a wrapper..." ;;
3886         *)
3887                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3888                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3889                 then
3890                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3891                         ok='true'
3892                 else
3893                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3894                 fi
3895                 ;;
3896         esac
3897 else
3898         case "$cppstdin" in
3899         '') ;;
3900         *)
3901                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3902                 ;;
3903         esac
3904 fi
3905
3906 if $ok; then
3907         : nothing
3908 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3909         $cc -E <testcpp.c >testcpp.out 2>&1; \
3910         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3911         echo "Yup, it does."
3912         x_cpp="$cc -E"
3913         x_minus='';
3914 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3915         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3916         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3917         echo "Yup, it does."
3918         x_cpp="$cc -E"
3919         x_minus='-';
3920 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3921         $cc -P <testcpp.c >testcpp.out 2>&1; \
3922         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3923         echo "Yipee, that works!"
3924         x_cpp="$cc -P"
3925         x_minus='';
3926 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3927         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3928         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3929         echo "At long last!"
3930         x_cpp="$cc -P"
3931         x_minus='-';
3932 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3933         $cpp <testcpp.c >testcpp.out 2>&1; \
3934         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3935         echo "It works!"
3936         x_cpp="$cpp"
3937         x_minus='';
3938 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3939         $cpp - <testcpp.c >testcpp.out 2>&1; \
3940         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3941         echo "Hooray, it works!  I was beginning to wonder."
3942         x_cpp="$cpp"
3943         x_minus='-';
3944 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3945         $wrapper <testcpp.c >testcpp.out 2>&1; \
3946         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3947         x_cpp="$wrapper"
3948         x_minus=''
3949         echo "Eureka!"
3950 else
3951         dflt=''
3952         rp="No dice.  I can't find a C preprocessor.  Name one:"
3953         . ./myread
3954         x_cpp="$ans"
3955         x_minus=''
3956         $x_cpp <testcpp.c >testcpp.out 2>&1
3957         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958                 echo "OK, that will do." >&4
3959         else
3960 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3961                 exit 1
3962         fi
3963 fi
3964
3965 case "$ok" in
3966 false)
3967         cppstdin="$x_cpp"
3968         cppminus="$x_minus"
3969         cpprun="$x_cpp"
3970         cpplast="$x_minus"
3971         set X $x_cpp
3972         shift
3973         case "$1" in
3974         "$cpp")
3975                 echo "Perhaps can we force $cc -E using a wrapper..."
3976                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3977                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3978                 then
3979                         echo "Yup, we can."
3980                         cppstdin="$wrapper"
3981                         cppminus='';
3982                 else
3983                         echo "Nope, we'll have to live without it..."
3984                 fi
3985                 ;;
3986         esac
3987         case "$cpprun" in
3988         "$wrapper")
3989                 cpprun=''
3990                 cpplast=''
3991                 ;;
3992         esac
3993         ;;
3994 esac
3995
3996 case "$cppstdin" in
3997 "$wrapper"|'cppstdin') ;;
3998 *) $rm -f $wrapper;;
3999 esac
4000 $rm -f testcpp.c testcpp.out
4001
4002 : Set private lib path
4003 case "$plibpth" in
4004 '') if ./mips; then
4005                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4006         fi;;
4007 esac
4008 case "$libpth" in
4009 ' ') dlist='';;
4010 '') dlist="$loclibpth $plibpth $glibpth";;
4011 *) dlist="$libpth";;
4012 esac
4013
4014 : Now check and see which directories actually exist, avoiding duplicates
4015 libpth=''
4016 for xxx in $dlist
4017 do
4018     if $test -d $xxx; then
4019                 case " $libpth " in
4020                 *" $xxx "*) ;;
4021                 *) libpth="$libpth $xxx";;
4022                 esac
4023     fi
4024 done
4025 $cat <<'EOM'
4026
4027 Some systems have incompatible or broken versions of libraries.  Among
4028 the directories listed in the question below, please remove any you
4029 know not to be holding relevant libraries, and add any that are needed.
4030 Say "none" for none.
4031
4032 EOM
4033 case "$libpth" in
4034 '') dflt='none';;
4035 *)
4036         set X $libpth
4037         shift
4038         dflt=${1+"$@"}
4039         ;;
4040 esac
4041 rp="Directories to use for library searches?"
4042 . ./myread
4043 case "$ans" in
4044 none) libpth=' ';;
4045 *) libpth="$ans";;
4046 esac
4047
4048 : compute shared library extension
4049 case "$so" in
4050 '')
4051         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4052                 dflt='sl'
4053         else
4054                 dflt='so'
4055         fi
4056         ;;
4057 *) dflt="$so";;
4058 esac
4059 $cat <<EOM
4060
4061 On some systems, shared libraries may be available.  Answer 'none' if
4062 you want to suppress searching of shared libraries for the remainder
4063 of this configuration.
4064
4065 EOM
4066 rp='What is the file extension used for shared libraries?'
4067 . ./myread
4068 so="$ans"
4069
4070 : Define several unixisms.
4071 : Hints files or command line option can be used to override them.
4072 : The convoluted testing is in case hints files set either the old
4073 : or the new name.
4074 case "$_exe" in
4075 '')     case "$exe_ext" in
4076     '') ;;
4077         *)      _exe="$exe_ext" ;;
4078         esac
4079         ;;
4080 esac
4081 case "$_a" in
4082 '')     case "$lib_ext" in
4083     '') _a='.a';;
4084         *)      _a="$lib_ext" ;;
4085         esac
4086         ;;
4087 esac
4088 case "$_o" in
4089 '') case "$obj_ext" in
4090         '')     _o='.o';;
4091         *)      _o="$obj_ext";;
4092         esac
4093         ;;
4094 esac
4095 case "$p_" in
4096 '') case "$path_sep" in
4097         '')     p_=':';;
4098         *)      p_="$path_sep";;
4099         esac
4100         ;;
4101 esac
4102 exe_ext=$_exe
4103 lib_ext=$_a
4104 obj_ext=$_o
4105 path_sep=$p_
4106
4107 : Which makefile gets called first.  This is used by make depend.
4108 case "$firstmakefile" in
4109 '') firstmakefile='makefile';;
4110 esac
4111
4112 case "$usesocks" in
4113 $define|true|[yY]*)     dflt='y';;
4114 *) dflt='n';;
4115 esac
4116 cat <<EOM
4117
4118 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4119 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4120 to use the PerlIO abstraction layer, this will be implicitly selected.
4121
4122 If this doesn't make any sense to you, just accept the default '$dflt'.
4123 EOM
4124 rp='Build Perl for SOCKS?'
4125 . ./myread
4126 case "$ans" in
4127 y|Y)    val="$define" ;;     
4128 *)      val="$undef" ;;
4129 esac
4130 set usesocks
4131 eval $setvar
4132
4133 case "$usesocks" in
4134 $define|true|[yY]*) useperlio="$define";;
4135 esac
4136
4137 : Looking for optional libraries
4138 echo " "
4139 echo "Checking for optional libraries..." >&4
4140 case "$libs" in
4141 ' '|'') dflt='';;
4142 *) dflt="$libs";;
4143 esac
4144 case "$libswanted" in
4145 '') libswanted='c_s';;
4146 esac
4147 case "$usesocks" in
4148 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4149 esac
4150 libsfound=''
4151 libsfiles=''
4152 libsdirs=''
4153 libspath=''
4154 for thisdir in $libpth $xlibpth; do
4155   test -d $thisdir && libspath="$libspath $thisdir"
4156 done
4157 for thislib in $libswanted; do
4158         for thisdir in $libspath; do
4159             xxx=''
4160             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4161                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4162                 $test -f "$xxx" && eval $libscheck
4163                 $test -f "$xxx" && libstyle=shared
4164             fi
4165             if test ! -f "$xxx"; then
4166                 xxx=$thisdir/lib$thislib.$so
4167                 $test -f "$xxx" && eval $libscheck
4168                 $test -f "$xxx" && libstyle=shared
4169             fi  
4170             if test ! -f "$xxx"; then
4171                 xxx=$thisdir/lib$thislib$_a
4172                 $test -f "$xxx" && eval $libscheck
4173                 $test -f "$xxx" && libstyle=static
4174             fi
4175             if test ! -f "$xxx"; then
4176                 xxx=$thisdir/$thislib$_a
4177                 $test -f "$xxx" && eval $libscheck
4178                 $test -f "$xxx" && libstyle=static
4179             fi
4180             if test ! -f "$xxx"; then
4181                 xxx=$thisdir/lib${thislib}_s$_a
4182                 $test -f "$xxx" && eval $libscheck
4183                 $test -f "$xxx" && libstyle=static
4184                 $test -f "$xxx" && thislib=${thislib}_s
4185             fi
4186             if test ! -f "$xxx"; then
4187                 xxx=$thisdir/Slib$thislib$_a
4188                 $test -f "$xxx" && eval $libscheck
4189                 $test -f "$xxx" && libstyle=static
4190             fi
4191             if $test -f "$xxx"; then
4192                 case "$libstyle" in
4193                 shared) echo "Found -l$thislib (shared)." ;;
4194                 static) echo "Found -l$thislib." ;;
4195                 *)      echo "Found -l$thislib ($libstyle)." ;;
4196                 esac
4197                 case " $dflt " in
4198                 *"-l$thislib "*);;
4199                 *) dflt="$dflt -l$thislib"
4200                    libsfound="$libsfound $xxx"
4201                    yyy=`basename $xxx`
4202                    libsfiles="$libsfiles $yyy"
4203                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4204                    case " $libsdirs " in
4205                    *" $yyy "*) ;;
4206                    *) libsdirs="$libsdirs $yyy" ;;
4207                    esac
4208                    ;;
4209                 esac
4210                 break
4211             fi  
4212         done
4213         if $test ! -f "$xxx"; then
4214             echo "No -l$thislib."
4215         fi
4216 done
4217 set X $dflt
4218 shift
4219 dflt="$*"
4220 case "$libs" in
4221 '') dflt="$dflt";;
4222 *) dflt="$libs";;
4223 esac
4224 case "$dflt" in
4225 ' '|'') dflt='none';;
4226 esac
4227
4228 $cat <<EOM
4229
4230 In order to compile $package on your machine, a number of libraries
4231 are usually needed.  Include any other special libraries here as well.
4232 Say "none" for none.  The default list is almost always right.
4233 EOM
4234
4235 echo " "
4236 rp="What libraries to use?"
4237 . ./myread
4238 case "$ans" in
4239 none) libs=' ';;
4240 *) libs="$ans";;
4241 esac
4242
4243 : determine optimization, if desired, or use for debug flag also
4244 case "$optimize" in
4245 ' '|$undef) dflt='none';;
4246 '') dflt='-O';;
4247 *) dflt="$optimize";;
4248 esac
4249 $cat <<EOH
4250
4251 By default, $package compiles with the -O flag to use the optimizer.
4252 Alternately, you might want to use the symbolic debugger, which uses
4253 the -g flag (on traditional Unix systems).  Either flag can be
4254 specified here.  To use neither flag, specify the word "none".
4255
4256 EOH
4257 rp="What optimizer/debugger flag should be used?"
4258 . ./myread
4259 optimize="$ans"
4260 case "$optimize" in
4261 'none') optimize=" ";;
4262 esac
4263
4264 dflt=''
4265 : We will not override a previous value, but we might want to
4266 : augment a hint file
4267 case "$hint" in
4268 default|recommended)
4269         case "$gccversion" in
4270         1*) dflt='-fpcc-struct-return' ;;
4271         esac
4272         case "$optimize" in
4273         *-g*) dflt="$dflt -DDEBUGGING";;
4274         esac
4275         case "$gccversion" in
4276         2*) if test -d /etc/conf/kconfig.d &&
4277                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4278                 then
4279                         dflt="$dflt -posix"
4280                 fi
4281                 ;;
4282         esac
4283         case "$gccversion" in
4284         1*) ;;
4285         2.[0-8]*) ;;
4286         ?*)     echo " "
4287                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4288                 echo 'int main(void) { return 0; }' > gcctest.c
4289                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4290                         echo "Yes, it does." 2>&1
4291                         case "$ccflags" in
4292                         *strict-aliasing*) 
4293                                 echo "Leaving current flags $ccflags alone." 2>&1
4294                                 ;;
4295                         *) dflt="$dflt -fno-strict-aliasing" ;;
4296                         esac
4297                 else
4298                         echo "Nope, it doesn't, but that's ok." 2>&1
4299                 fi
4300                 ;;
4301         esac
4302         ;;
4303 esac
4304
4305 case "$mips_type" in
4306 *BSD*|'') inclwanted="$locincpth $usrinc";;
4307 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4308 esac
4309 for thisincl in $inclwanted; do
4310         if $test -d $thisincl; then
4311                 if $test x$thisincl != x$usrinc; then
4312                         case "$dflt" in
4313                         *" -I$thisincl "*);;
4314                         *) dflt="$dflt -I$thisincl ";;
4315                         esac
4316                 fi
4317         fi
4318 done
4319
4320 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4321         xxx=true;
4322 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4323         xxx=true;
4324 else
4325         xxx=false;
4326 fi;
4327 if $xxx; then
4328         case "$dflt" in
4329         *$2*);;
4330         *) dflt="$dflt -D$2";;
4331         esac;
4332 fi'
4333
4334 set signal.h LANGUAGE_C; eval $inctest
4335
4336 case "$usesocks" in
4337 $define)
4338         ccflags="$ccflags -DSOCKS"
4339         ;;
4340 esac
4341
4342 case "$hint" in
4343 default|recommended) dflt="$ccflags $dflt" ;;
4344 *) dflt="$ccflags";;
4345 esac
4346
4347 case "$dflt" in
4348 ''|' ') dflt=none;;
4349 esac
4350
4351 $cat <<EOH
4352
4353 Your C compiler may want other flags.  For this question you should include
4354 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4355 but you should NOT include libraries or ld flags like -lwhatever.  If you
4356 want $package to honor its debug switch, you should include -DDEBUGGING here.
4357 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4358
4359 To use no flags, specify the word "none".
4360
4361 EOH
4362 set X $dflt
4363 shift
4364 dflt=${1+"$@"}
4365 rp="Any additional cc flags?"
4366 . ./myread
4367 case "$ans" in
4368 none) ccflags='';;
4369 *) ccflags="$ans";;
4370 esac
4371
4372 : the following weeds options from ccflags that are of no interest to cpp
4373 case "$cppflags" in
4374 '') cppflags="$ccflags" ;;
4375 *)  cppflags="$cppflags $ccflags" ;;
4376 esac
4377 case "$gccversion" in
4378 1*) cppflags="$cppflags -D__GNUC__"
4379 esac
4380 case "$mips_type" in
4381 '');;
4382 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4383 esac
4384 case "$cppflags" in
4385 '');;
4386 *)
4387         echo " "
4388         echo "Let me guess what the preprocessor flags are..." >&4
4389         set X $cppflags
4390         shift
4391         cppflags=''
4392         $cat >cpp.c <<'EOM'
4393 #define BLURFL foo
4394
4395 BLURFL xx LFRULB
4396 EOM
4397         previous=''
4398         for flag in $*
4399         do
4400                 case "$flag" in
4401                 -*) ftry="$flag";;
4402                 *) ftry="$previous $flag";;
4403                 esac
4404                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4405                         >cpp1.out 2>/dev/null && \
4406                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4407                         >cpp2.out 2>/dev/null && \
4408                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4409                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4410                 then
4411                         cppflags="$cppflags $ftry"
4412                         previous=''
4413                 else
4414                         previous="$flag"
4415                 fi
4416         done
4417         set X $cppflags
4418         shift
4419         cppflags=${1+"$@"}
4420         case "$cppflags" in
4421         *-*)  echo "They appear to be: $cppflags";;
4422         esac
4423         $rm -f cpp.c cpp?.out
4424         ;;
4425 esac
4426
4427 : flags used in final linking phase
4428 case "$ldflags" in
4429 '') if ./venix; then
4430                 dflt='-i -z'
4431         else
4432                 dflt=''
4433         fi
4434         case "$ccflags" in
4435         *-posix*) dflt="$dflt -posix" ;;
4436         esac
4437         ;;
4438 *) dflt="$ldflags";;
4439 esac
4440
4441 : Try to guess additional flags to pick up local libraries.
4442 for thislibdir in $libpth; do
4443         case " $loclibpth " in
4444         *" $thislibdir "*)
4445                 case "$dflt " in 
4446                 *"-L$thislibdir "*) ;;
4447                 *)  dflt="$dflt -L$thislibdir" ;;
4448                 esac
4449                 ;;
4450         esac
4451 done
4452
4453 case "$dflt" in
4454 '') dflt='none' ;;
4455 esac
4456
4457 $cat <<EOH
4458
4459 Your C linker may need flags.  For this question you should
4460 include -L/whatever and any other flags used by the C linker, but you
4461 should NOT include libraries like -lwhatever.
4462
4463 Make sure you include the appropriate -L/path flags if your C linker
4464 does not normally search all of the directories you specified above,
4465 namely
4466         $libpth
4467 To use no flags, specify the word "none".
4468
4469 EOH
4470
4471 rp="Any additional ld flags (NOT including libraries)?"
4472 . ./myread
4473 case "$ans" in
4474 none) ldflags='';;
4475 *) ldflags="$ans";;
4476 esac
4477 rmlist="$rmlist pdp11"
4478
4479 : coherency check
4480 echo " "
4481 echo "Checking your choice of C compiler and flags for coherency..." >&4
4482 $cat > try.c <<'EOF'
4483 #include <stdio.h>
4484 int main() { printf("Ok\n"); exit(0); }
4485 EOF
4486 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4487 shift
4488 $cat >try.msg <<'EOM'
4489 I've tried to compile and run the following simple program:
4490
4491 EOM
4492 $cat try.c >> try.msg
4493
4494 $cat >> try.msg <<EOM
4495
4496 I used the command:
4497
4498         $*
4499         $run ./try
4500
4501 and I got the following output:
4502
4503 EOM
4504 dflt=y
4505 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4506         if $sh -c "$run ./try" >>try.msg 2>&1; then
4507                 xxx=`$run ./try`
4508                 case "$xxx" in
4509                 "Ok") dflt=n ;;
4510                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4511                         case " $libs " in
4512                         *" -lsfio "*)
4513                                 cat >> try.msg <<'EOQS'
4514 If $libs contains -lsfio, and sfio is mis-configured, then it
4515 sometimes (apparently) runs and exits with a 0 status, but with no
4516 output!  It may have to do with sfio's use of _exit vs. exit.
4517
4518 EOQS
4519                                 rp="You have a big problem.  Shall I abort Configure"
4520                                 dflt=y
4521                                 ;;
4522                         esac
4523                         ;;
4524                 esac
4525         else
4526                 echo "The program compiled OK, but exited with status $?." >>try.msg
4527                 rp="You have a problem.  Shall I abort Configure"
4528                 dflt=y
4529         fi
4530 else
4531         echo "I can't compile the test program." >>try.msg
4532         rp="You have a BIG problem.  Shall I abort Configure"
4533         dflt=y
4534 fi
4535 case "$dflt" in
4536 y)
4537         $cat try.msg >&4
4538         case "$knowitall" in
4539         '')
4540                 echo "(The supplied flags or libraries might be incorrect.)"
4541                 ;;
4542         *) dflt=n;;
4543         esac
4544         echo " "
4545         . ./myread
4546         case "$ans" in
4547         n*|N*) ;;
4548         *)      echo "Ok.  Stopping Configure." >&4
4549                 exit 1
4550                 ;;
4551         esac
4552         ;;
4553 n) echo "OK, that should do.";;
4554 esac
4555 $rm -f try try.* core
4556
4557 : define a shorthand compile call
4558 compile='
4559 mc_file=$1;
4560 shift;
4561 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4562 : define a shorthand compile call for compilations that should be ok.
4563 compile_ok='
4564 mc_file=$1;
4565 shift;
4566 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4567
4568 : check for lengths of integral types
4569 echo " "
4570 case "$intsize" in
4571 '')
4572         echo "Checking to see how big your integers are..." >&4
4573         $cat >try.c <<'EOCP'
4574 #include <stdio.h>
4575 int main()
4576 {
4577         printf("intsize=%d;\n", (int)sizeof(int));
4578         printf("longsize=%d;\n", (int)sizeof(long));
4579         printf("shortsize=%d;\n", (int)sizeof(short));
4580         exit(0);
4581 }
4582 EOCP
4583         set try
4584         if eval $compile_ok && $run ./try > /dev/null; then
4585                 eval `$run ./try`
4586                 echo "Your integers are $intsize bytes long."
4587                 echo "Your long integers are $longsize bytes long."
4588                 echo "Your short integers are $shortsize bytes long."
4589         else
4590                 $cat >&4 <<EOM
4591 !
4592 Help! I can't compile and run the intsize test program: please enlighten me!
4593 (This is probably a misconfiguration in your system or libraries, and
4594 you really ought to fix it.  Still, I'll try anyway.)
4595 !
4596 EOM
4597                 dflt=4
4598                 rp="What is the size of an integer (in bytes)?"
4599                 . ./myread
4600                 intsize="$ans"
4601                 dflt=$intsize
4602                 rp="What is the size of a long integer (in bytes)?"
4603                 . ./myread
4604                 longsize="$ans"
4605                 dflt=2
4606                 rp="What is the size of a short integer (in bytes)?"
4607                 . ./myread
4608                 shortsize="$ans"
4609         fi
4610         ;;
4611 esac
4612 $rm -f try try.*
4613
4614 : check for void type
4615 echo " "
4616 echo "Checking to see how well your C compiler groks the void type..." >&4
4617 case "$voidflags" in
4618 '')
4619         $cat >try.c <<'EOCP'
4620 #if TRY & 1
4621 void sub() {
4622 #else
4623 sub() {
4624 #endif
4625         extern void moo();      /* function returning void */
4626         void (*goo)();          /* ptr to func returning void */
4627 #if TRY & 8
4628         void *hue;              /* generic ptr */
4629 #endif
4630 #if TRY & 2
4631         void (*foo[10])();
4632 #endif
4633
4634 #if TRY & 4
4635         if(goo == moo) {
4636                 exit(0);
4637         }
4638 #endif
4639         exit(0);
4640 }
4641 int main() { sub(); }
4642 EOCP
4643         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4644                 voidflags=$defvoidused
4645         echo "Good.  It appears to support void to the level $package wants.">&4
4646                 if $contains warning .out >/dev/null 2>&1; then
4647                         echo "However, you might get some warnings that look like this:"
4648                         $cat .out
4649                 fi
4650         else
4651 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4652                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4653                         echo "It supports 1..."
4654                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4655                                 echo "It also supports 2..."
4656                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4657                                         voidflags=7
4658                                         echo "And it supports 4 but not 8 definitely."
4659                                 else
4660                                         echo "It doesn't support 4..."
4661                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4662                                                 voidflags=11
4663                                                 echo "But it supports 8."
4664                                         else
4665                                                 voidflags=3
4666                                                 echo "Neither does it support 8."
4667                                         fi
4668                                 fi
4669                         else
4670                                 echo "It does not support 2..."
4671                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4672                                         voidflags=13
4673                                         echo "But it supports 4 and 8."
4674                                 else
4675                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4676                                                 voidflags=5
4677                                                 echo "And it supports 4 but has not heard about 8."
4678                                         else
4679                                                 echo "However it supports 8 but not 4."
4680                                         fi
4681                                 fi
4682                         fi
4683                 else
4684                         echo "There is no support at all for void."
4685                         voidflags=0
4686                 fi
4687         fi
4688 esac
4689 case "$voidflags" in
4690 "$defvoidused") ;;
4691 *)      $cat >&4 <<'EOM'
4692   Support flag bits are:
4693     1: basic void declarations.
4694     2: arrays of pointers to functions returning void.
4695     4: operations between pointers to and addresses of void functions.
4696     8: generic void pointers.
4697 EOM
4698         dflt="$voidflags";
4699         rp="Your void support flags add up to what?"
4700         . ./myread
4701         voidflags="$ans"
4702         ;;
4703 esac
4704 $rm -f try.* .out
4705
4706 : check for length of pointer
4707 echo " "
4708 case "$ptrsize" in
4709 '')
4710         echo "Checking to see how big your pointers are..." >&4
4711         if test "$voidflags" -gt 7; then
4712                 echo '#define VOID_PTR char *' > try.c
4713         else
4714                 echo '#define VOID_PTR void *' > try.c
4715         fi
4716         $cat >>try.c <<'EOCP'
4717 #include <stdio.h>
4718 int main()
4719 {
4720     printf("%d\n", (int)sizeof(VOID_PTR));
4721     exit(0);
4722 }
4723 EOCP
4724         set try
4725         if eval $compile_ok; then
4726                 ptrsize=`$run ./try`
4727                 echo "Your pointers are $ptrsize bytes long."
4728         else
4729                 dflt='4'
4730                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4731                 rp="What is the size of a pointer (in bytes)?"
4732                 . ./myread
4733                 ptrsize="$ans"
4734         fi
4735         ;;
4736 esac
4737 $rm -f try.c try
4738
4739 : check for long long
4740 echo " "
4741 echo "Checking to see if you have long long..." >&4
4742 echo 'int main() { long long x = 7; return 0; }' > try.c
4743 set try
4744 if eval $compile; then
4745         val="$define"
4746         echo "You have long long."
4747 else
4748         val="$undef"
4749         echo "You do not have long long."
4750 fi
4751 $rm try.*
4752 set d_longlong
4753 eval $setvar
4754
4755 : check for length of long long
4756 case "${d_longlong}${longlongsize}" in
4757 $define)
4758         echo " "
4759         echo "Checking to see how big your long longs are..." >&4
4760         $cat >try.c <<'EOCP'
4761 #include <stdio.h>
4762 int main()
4763 {
4764     printf("%d\n", (int)sizeof(long long));
4765     return(0);
4766 }
4767 EOCP
4768         set try
4769         if eval $compile_ok; then
4770                 longlongsize=`$run ./try`
4771                 echo "Your long longs are $longlongsize bytes long."
4772         else
4773                 dflt='8'
4774                 echo " "
4775                 echo "(I can't seem to compile the test program.  Guessing...)"
4776                 rp="What is the size of a long long (in bytes)?"
4777                 . ./myread
4778                 longlongsize="$ans"
4779         fi
4780         if $test "X$longsize" = "X$longlongsize"; then
4781                 echo "(That isn't any different from an ordinary long.)"
4782         fi      
4783         ;;
4784 esac
4785 $rm -f try.* try
4786
4787 : determine filename position in cpp output
4788 echo " "
4789 echo "Computing filename position in cpp output for #include directives..." >&4
4790 echo '#include <stdio.h>' > foo.c
4791 $cat >fieldn <<EOF
4792 $startsh
4793 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4794 $grep '^[       ]*#.*stdio\.h' | \
4795 while read cline; do
4796         pos=1
4797         set \$cline
4798         while $test \$# -gt 0; do
4799                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4800                         echo "\$pos"
4801                         exit 0
4802                 fi
4803                 shift
4804                 pos=\`expr \$pos + 1\`
4805         done
4806 done
4807 EOF
4808 chmod +x fieldn
4809 fieldn=`./fieldn`
4810 $rm -f foo.c fieldn
4811 case $fieldn in
4812 '') pos='???';;
4813 1) pos=first;;
4814 2) pos=second;;
4815 3) pos=third;;
4816 *) pos="${fieldn}th";;
4817 esac
4818 echo "Your cpp writes the filename in the $pos field of the line."
4819
4820 : locate header file
4821 $cat >findhdr <<EOF
4822 $startsh
4823 wanted=\$1
4824 name=''
4825 for usrincdir in $usrinc
4826 do
4827         if test -f \$usrincdir/\$wanted; then
4828                 echo "\$usrincdir/\$wanted"
4829                 exit 0
4830         fi
4831 done
4832 awkprg='{ print \$$fieldn }'
4833 echo "#include <\$wanted>" > foo\$\$.c
4834 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4835 $grep "^[       ]*#.*\$wanted" | \
4836 while read cline; do
4837         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4838         case "\$name" in
4839         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4840         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4841         *) exit 2;;
4842         esac;
4843 done;
4844 #
4845 # status = 0: grep returned 0 lines, case statement not executed
4846 # status = 1: headerfile found
4847 # status = 2: while loop executed, no headerfile found
4848 #
4849 status=\$?
4850 $rm -f foo\$\$.c;
4851 if test \$status -eq 1; then
4852         exit 0;
4853 fi
4854 exit 1
4855 EOF
4856 chmod +x findhdr
4857
4858 : define an alternate in-header-list? function
4859 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4860 cont=true; xxf="echo \"<\$1> found.\" >&4";
4861 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4862 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4863 esac;
4864 case $# in 4) instead=instead;; *) instead="at last";; esac;
4865 while $test "$cont"; do
4866         xxx=`./findhdr $1`
4867         var=$2; eval "was=\$$2";
4868         if $test "$xxx" && $test -r "$xxx";
4869         then eval $xxf;
4870         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4871                 cont="";
4872         else eval $xxnf;
4873         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4874         set $yyy; shift; shift; yyy=$@;
4875         case $# in 0) cont="";;
4876         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4877                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4878         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4879                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4880         esac;
4881 done;
4882 while $test "$yyy";
4883 do set $yyy; var=$2; eval "was=\$$2";
4884         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4885         set $yyy; shift; shift; yyy=$@;
4886 done'
4887
4888 : see if inttypes.h is available
4889 : we want a real compile instead of Inhdr because some systems
4890 : have an inttypes.h which includes non-existent headers
4891 echo " "
4892 $cat >try.c <<EOCP
4893 #include <inttypes.h>
4894 int main() {
4895         static int32_t foo32 = 0x12345678;
4896 }
4897 EOCP
4898 set try
4899 if eval $compile; then
4900         echo "<inttypes.h> found." >&4
4901         val="$define"
4902 else
4903         echo "<inttypes.h> NOT found." >&4
4904         val="$undef"
4905 fi
4906 $rm -f try.c try
4907 set i_inttypes
4908 eval $setvar
4909
4910 : check for int64_t
4911 echo " "
4912 echo "Checking to see if you have int64_t..." >&4
4913 $cat >try.c <<EOCP
4914 #include <sys/types.h>
4915 #$i_inttypes I_INTTYPES
4916 #ifdef I_INTTYPES
4917 #include <inttypes.h>
4918 #endif
4919 int main() { int64_t x = 7; }
4920 EOCP
4921 set try
4922 if eval $compile; then
4923         val="$define"
4924         echo "You have int64_t."
4925 else
4926         val="$undef"
4927         echo "You do not have int64_t."
4928 fi
4929 $rm -f try try.*
4930 set d_int64_t
4931 eval $setvar
4932
4933
4934 echo " "
4935 echo "Checking which 64-bit integer type we could use..." >&4
4936
4937 case "$intsize" in
4938 8) val=int
4939    set quadtype
4940    eval $setvar
4941    val='"unsigned int"'
4942    set uquadtype
4943    eval $setvar
4944    quadkind=1
4945    ;;
4946 *) case "$longsize" in
4947    8) val=long
4948       set quadtype
4949       eval $setvar
4950       val='"unsigned long"'
4951       set uquadtype
4952       eval $setvar
4953       quadkind=2
4954       ;;
4955    *) case "$d_longlong:$longlongsize" in
4956       define:8)
4957         val='"long long"'
4958         set quadtype
4959         eval $setvar
4960         val='"unsigned long long"'
4961         set uquadtype
4962         eval $setvar
4963         quadkind=3
4964         ;;
4965       *) case "$d_int64_t" in
4966          define)
4967            val=int64_t
4968            set quadtype
4969            eval $setvar
4970            val=uint64_t
4971            set uquadtype
4972            eval $setvar
4973            quadkind=4
4974            ;;
4975          esac
4976          ;;
4977       esac
4978       ;;
4979    esac
4980    ;;
4981 esac
4982
4983 case "$quadtype" in
4984 '')     echo "Alas, no 64-bit integer types in sight." >&4
4985         d_quad="$undef"
4986         ;;
4987 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4988         d_quad="$define"
4989         ;;
4990 esac
4991
4992
4993 case "$uselonglong" in
4994 "$define"|true|[yY]*)
4995         cat <<EOM >&4
4996
4997 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4998 EOM
4999         use64bitint="$define"
5000         ;;
5001 esac                          
5002 case "$use64bits" in
5003 "$define"|true|[yY]*)
5004         cat <<EOM >&4
5005
5006 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5007 EOM
5008         use64bitint="$define"
5009         ;;
5010 esac                          
5011 case "$use64bitints" in
5012 "$define"|true|[yY]*)
5013         cat <<EOM >&4
5014
5015 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5016 EOM
5017         use64bitint="$define"
5018         ;;
5019 esac                          
5020 case "$use64bitsint" in
5021 "$define"|true|[yY]*)
5022         cat <<EOM >&4
5023
5024 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5025 EOM
5026         use64bitint="$define"
5027         ;;
5028 esac                          
5029 case "$uselonglongs" in
5030 "$define"|true|[yY]*)
5031         cat <<EOM >&4
5032
5033 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5034 EOM
5035         use64bitint="$define"
5036         ;;
5037 esac                          
5038 case "$use64bitsall" in
5039 "$define"|true|[yY]*)
5040         cat <<EOM >&4
5041
5042 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5043 EOM
5044         use64bitall="$define"
5045         ;;
5046 esac                          
5047
5048 case "$ccflags" in
5049 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5050 esac
5051 case "$use64bitall" in
5052 "$define"|true|[yY]*) use64bitint="$define" ;;
5053 esac
5054
5055 case "$longsize" in
5056 8) cat <<EOM
5057
5058 You have natively 64-bit long integers.
5059 EOM
5060    val="$define"
5061    ;;
5062 *) case "$use64bitint" in
5063    "$define"|true|[yY]*) dflt='y';;
5064    *) dflt='n';;
5065    esac
5066    case "$d_quad" in
5067    "$define") ;;
5068    *) dflt='n' ;;
5069    esac
5070    cat <<EOM
5071
5072 Perl can be built to take advantage of 64-bit integer types
5073 on some systems.  To do so, Configure can be run with -Duse64bitint.
5074 Choosing this option will most probably introduce binary incompatibilities.
5075
5076 If this doesn't make any sense to you, just accept the default '$dflt'.
5077 (The default has been chosen based on your configuration.)
5078 EOM
5079    rp='Try to use 64-bit integers, if available?'
5080    . ./myread
5081    case "$ans" in
5082    [yY]*) val="$define" ;;
5083    *)     val="$undef"  ;;
5084    esac
5085    ;;
5086 esac
5087 set use64bitint
5088 eval $setvar
5089
5090 case "$use64bitall" in
5091 "$define"|true|[yY]*) dflt='y' ;;
5092 *) case "$longsize" in
5093    8) dflt='y' ;;
5094    *) dflt='n' ;;
5095    esac
5096    ;;
5097 esac    
5098 cat <<EOM
5099
5100 You may also choose to try maximal 64-bitness.  It means using as much
5101 64-bitness as possible on the platform.  This in turn means even more
5102 binary incompatibilities.  On the other hand, your platform may not
5103 have any more 64-bitness available than what you already have chosen.
5104
5105 If this doesn't make any sense to you, just accept the default '$dflt'.
5106 (The default has been chosen based on your configuration.)
5107 EOM
5108 rp='Try to use maximal 64-bit support, if available?'
5109 . ./myread
5110 case "$ans" in
5111 [yY]*) val="$define" ;;
5112 *)     val="$undef"  ;;
5113 esac
5114 set use64bitall
5115 eval $setvar
5116 case "$use64bitall" in
5117 "$define")
5118         case "$use64bitint" in
5119         "$undef")
5120                 cat <<EOM
5121
5122 Since you have chosen a maximally 64-bit build, I'm also turning on
5123 the use of 64-bit integers.
5124 EOM
5125                 use64bitint="$define" ;;
5126         esac
5127         ;;
5128 esac
5129
5130 case "$use64bitall" in
5131 "$define"|true|[yY]*)
5132         case "$ptrsize" in
5133         4)      cat <<EOM >&4
5134
5135 *** You have chosen a maximally 64-bit build, but your pointers
5136 *** are only 4 bytes wide, disabling maximal 64-bitness.
5137
5138 EOM
5139                 use64bitall="$undef"
5140                 case "$use64bitint" in
5141                 "$define"|true|[yY]*) ;;
5142                 *)      cat <<EOM >&4
5143
5144 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5145
5146 EOM
5147                         use64bitint="$define"
5148                         ;;
5149                 esac
5150                 ;;
5151         esac
5152         ;;
5153 esac
5154
5155 case "$use64bitint" in
5156 "$define"|true|[yY]*)
5157 : Look for a hint-file generated 'call-back-unit'.  If the
5158 : user has specified that a 64-bit perl is to be built,
5159 : we may need to set or change some other defaults.
5160         if $test -f use64bitint.cbu; then
5161                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5162                 . ./use64bitint.cbu
5163         fi
5164         case "$longsize" in
5165         4) case "$archname64" in
5166            '') archname64=64int ;;
5167            esac
5168            ;;
5169         esac
5170         ;;
5171 esac
5172
5173 case "$use64bitall" in
5174 "$define"|true|[yY]*)
5175 : Look for a hint-file generated 'call-back-unit'.  If the
5176 : user has specified that a maximally 64-bit perl is to be built,
5177 : we may need to set or change some other defaults.
5178         if $test -f use64bitall.cbu; then
5179                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5180                 . ./use64bitall.cbu
5181         fi
5182         case "$longsize" in
5183         4) case "$archname64" in
5184            ''|64int) archname64=64all ;;
5185            esac
5186            ;;
5187         esac
5188         ;;
5189 esac
5190
5191 echo " "
5192 echo "Checking for GNU C Library..." >&4
5193 cat >try.c <<EOM
5194 #include <stdio.h>
5195 int main()
5196 {
5197 #ifdef __GLIBC__
5198     exit(0);
5199 #else
5200     exit(1);
5201 #endif
5202 }
5203 EOM
5204 set try
5205 if eval $compile_ok && $run ./try; then
5206         val="$define"
5207         echo "You are using the GNU C Library"
5208 else
5209         val="$undef"
5210         echo "You are not using the GNU C Library"
5211 fi
5212 $rm -f try try.*
5213 set d_gnulibc
5214 eval $setvar
5215
5216 : see if nm is to be used to determine whether a symbol is defined or not
5217 case "$usenm" in
5218 '')
5219         dflt=''
5220         case "$d_gnulibc" in
5221         "$define")
5222                 echo " "
5223                 echo "nm probably won't work on the GNU C Library." >&4
5224                 dflt=n
5225                 ;;
5226         esac
5227         case "$dflt" in
5228         '') 
5229                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5230                         echo " "
5231                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5232                         echo "'nm' won't be sufficient on this sytem." >&4
5233                         dflt=n
5234                 fi
5235                 ;;
5236         esac
5237         case "$dflt" in
5238         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5239                 if $test $dflt -gt 20; then
5240                         dflt=y
5241                 else
5242                         dflt=n
5243                 fi
5244                 ;;
5245         esac
5246         ;;
5247 *)
5248         case "$usenm" in
5249         true|$define) dflt=y;;
5250         *) dflt=n;;
5251         esac
5252         ;;
5253 esac
5254 $cat <<EOM
5255
5256 I can use $nm to extract the symbols from your C libraries. This
5257 is a time consuming task which may generate huge output on the disk (up
5258 to 3 megabytes) but that should make the symbols extraction faster. The
5259 alternative is to skip the 'nm' extraction part and to compile a small
5260 test program instead to determine whether each symbol is present. If
5261 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5262 this may be the best solution.
5263
5264 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5265
5266 EOM
5267 rp="Shall I use $nm to extract C symbols from the libraries?"
5268 . ./myread
5269 case "$ans" in
5270 [Nn]*) usenm=false;;
5271 *) usenm=true;;
5272 esac
5273
5274 runnm=$usenm
5275 case "$reuseval" in
5276 true) runnm=false;;
5277 esac
5278
5279 : nm options which may be necessary
5280 case "$nm_opt" in
5281 '') if $test -f /mach_boot; then
5282                 nm_opt=''       # Mach
5283         elif $test -d /usr/ccs/lib; then
5284                 nm_opt='-p'     # Solaris (and SunOS?)
5285         elif $test -f /dgux; then
5286                 nm_opt='-p'     # DG-UX
5287         elif $test -f /lib64/rld; then
5288                 nm_opt='-p'     # 64-bit Irix
5289         else
5290                 nm_opt=''
5291         fi;;
5292 esac
5293
5294 : nm options which may be necessary for shared libraries but illegal
5295 : for archive libraries.  Thank you, Linux.
5296 case "$nm_so_opt" in
5297 '')     case "$myuname" in
5298         *linux*)
5299                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5300                         nm_so_opt='--dynamic'
5301                 fi
5302                 ;;
5303         esac
5304         ;;
5305 esac
5306
5307 case "$runnm" in
5308 true)
5309 : get list of predefined functions in a handy place
5310 echo " "
5311 case "$libc" in
5312 '') libc=unknown
5313         case "$libs" in
5314         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5315         esac
5316         ;;
5317 esac
5318 case "$libs" in
5319 '') ;;
5320 *)  for thislib in $libs; do
5321         case "$thislib" in
5322         -lc|-lc_s)
5323                 : Handle C library specially below.
5324                 ;;
5325         -l*)
5326                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5327                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5328                         :
5329                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5330                         :
5331                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5332                         :
5333                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5334                         :
5335                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5340                         :
5341                 else
5342                         try=''
5343                 fi
5344                 libnames="$libnames $try"
5345                 ;;
5346         *) libnames="$libnames $thislib" ;;
5347         esac
5348         done
5349         ;;
5350 esac
5351 xxx=normal
5352 case "$libc" in
5353 unknown)
5354         set /lib/libc.$so
5355         for xxx in $libpth; do
5356                 $test -r $1 || set $xxx/libc.$so
5357                 : The messy sed command sorts on library version numbers.
5358                 $test -r $1 || \
5359                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5360                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5361                                 h
5362                                 s/[0-9][0-9]*/0000&/g
5363                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5364                                 G
5365                                 s/\n/ /' | \
5366                          $sort | $sed -e 's/^.* //'`
5367                 eval set \$$#
5368         done
5369         $test -r $1 || set /usr/ccs/lib/libc.$so
5370         $test -r $1 || set /lib/libsys_s$_a
5371         ;;
5372 *)
5373         set blurfl
5374         ;;
5375 esac
5376 if $test -r "$1"; then
5377         echo "Your (shared) C library seems to be in $1."
5378         libc="$1"
5379 elif $test -r /lib/libc && $test -r /lib/clib; then
5380         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5381         xxx=apollo
5382         libc='/lib/clib /lib/libc'
5383         if $test -r /lib/syslib; then
5384                 echo "(Your math library is in /lib/syslib.)"
5385                 libc="$libc /lib/syslib"
5386         fi
5387 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5388         echo "Your C library seems to be in $libc, as you said before."
5389 elif $test -r $incpath/usr/lib/libc$_a; then
5390         libc=$incpath/usr/lib/libc$_a;
5391         echo "Your C library seems to be in $libc.  That's fine."
5392 elif $test -r /lib/libc$_a; then
5393         libc=/lib/libc$_a;
5394         echo "Your C library seems to be in $libc.  You're normal."
5395 else
5396         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5397                 :
5398         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5399                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5400         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5401                 :
5402         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5403                 :
5404         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405                 :
5406         else
5407                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5408         fi
5409         if $test -r "$tans"; then
5410                 echo "Your C library seems to be in $tans, of all places."
5411                 libc=$tans
5412         else
5413                 libc='blurfl'
5414         fi
5415 fi
5416 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5417         dflt="$libc"
5418         cat <<EOM
5419
5420 If the guess above is wrong (which it might be if you're using a strange
5421 compiler, or your machine supports multiple models), you can override it here.
5422
5423 EOM
5424 else
5425         dflt=''
5426         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5427         cat >&4 <<EOM
5428 I can't seem to find your C library.  I've looked in the following places:
5429
5430 EOM
5431         $sed 's/^/      /' libpath
5432         cat <<EOM
5433
5434 None of these seems to contain your C library. I need to get its name...
5435
5436 EOM
5437 fi
5438 fn=f
5439 rp='Where is your C library?'
5440 . ./getfile
5441 libc="$ans"
5442
5443 echo " "
5444 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5445 set X `cat libnames`
5446 shift
5447 xxx=files
5448 case $# in 1) xxx=file; esac
5449 echo "Extracting names from the following $xxx for later perusal:" >&4
5450 echo " "
5451 $sed 's/^/      /' libnames >&4
5452 echo " "
5453 $echo $n "This may take a while...$c" >&4
5454
5455 for file in $*; do
5456         case $file in
5457         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5458         *) $nm $nm_opt $file 2>/dev/null;;
5459         esac
5460 done >libc.tmp
5461
5462 $echo $n ".$c"
5463 $grep fprintf libc.tmp > libc.ptf
5464 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5465 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5466 xxx='[ADTSIW]'
5467 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5468         eval $xscan;\
5469         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5470                 eval $xrun
5471 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5472         eval $xscan;\
5473         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5474                 eval $xrun
5475 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5476         eval $xscan;\
5477         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478                 eval $xrun
5479 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5480         eval $xscan;\
5481         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482                 eval $xrun
5483 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5484         eval $xscan;\
5485         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486                 eval $xrun
5487 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5488         eval $xscan;\
5489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490                 eval $xrun
5491 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5492                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5493         eval $xscan;\
5494         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495                 eval $xrun
5496 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5497         eval $xscan;\
5498         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499                 eval $xrun
5500 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5501         eval $xscan;\
5502         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503                 eval $xrun
5504 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5505         eval $xscan;\
5506         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507                 eval $xrun
5508 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5509         eval $xscan;\
5510         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511                 eval $xrun
5512 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5513         eval $xscan;\
5514         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515                 eval $xrun
5516 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5517         eval $xscan;\
5518         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519                 eval $xrun
5520 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5521         eval $xscan;\
5522         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523                 eval $xrun
5524 else
5525         $nm -p $* 2>/dev/null >libc.tmp
5526         $grep fprintf libc.tmp > libc.ptf
5527         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5528                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5529         then
5530                 nm_opt='-p'
5531                 eval $xrun
5532         else
5533                 echo " "
5534                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5535                 com=''
5536                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5537                         for thisname in $libnames $libc; do
5538                                 $ar t $thisname >>libc.tmp
5539                         done
5540                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5541                         echo "Ok." >&4
5542                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5543                         # Repeat libc to extract forwarders to DLL entries too
5544                         for thisname in $libnames $libc; do
5545                                 $ar tv $thisname >>libc.tmp
5546                                 # Revision 50 of EMX has bug in $ar.
5547                                 # it will not extract forwarders to DLL entries
5548                                 # Use emximp which will extract exactly them.
5549                                 emximp -o tmp.imp $thisname \
5550                                     2>/dev/null && \
5551                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5552                                     < tmp.imp >>libc.tmp
5553                                 $rm tmp.imp
5554                         done
5555                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5556                         echo "Ok." >&4
5557                 else
5558                         echo "$ar didn't seem to work right." >&4
5559                         echo "Maybe this is a Cray...trying bld instead..." >&4
5560                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5561                         then
5562                                 for thisname in $libnames; do
5563                                         bld t $libnames | \
5564                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5565                                         $ar t $thisname >>libc.tmp
5566                                 done
5567                                 echo "Ok." >&4
5568                         else
5569                                 echo "That didn't work either.  Giving up." >&4
5570                                 exit 1
5571                         fi
5572                 fi
5573         fi
5574 fi
5575 nm_extract="$com"
5576 if $test -f /lib/syscalls.exp; then
5577         echo " "
5578         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5579         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5580 fi
5581 ;;
5582 esac
5583 $rm -f libnames libpath
5584
5585 : is a C symbol defined?
5586 csym='tlook=$1;
5587 case "$3" in
5588 -v) tf=libc.tmp; tc=""; tdc="";;
5589 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5590 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5591 esac;
5592 tx=yes;
5593 case "$reuseval-$4" in
5594 true-) ;;
5595 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5596 esac;
5597 case "$tx" in
5598 yes)
5599         case "$runnm" in
5600         true)
5601                 if $contains $tlook $tf >/dev/null 2>&1;
5602                 then tval=true;
5603                 else tval=false;
5604                 fi;;
5605         *)
5606                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5607                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5608                 then tval=true;
5609                 else tval=false;
5610                 fi;
5611                 $rm -f t t.c;;
5612         esac;;
5613 *)
5614         case "$tval" in
5615         $define) tval=true;;
5616         *) tval=false;;
5617         esac;;
5618 esac;
5619 eval "$2=$tval"'
5620
5621 : define an is-in-libc? function
5622 inlibc='echo " "; td=$define; tu=$undef;
5623 sym=$1; var=$2; eval "was=\$$2";
5624 tx=yes;
5625 case "$reuseval$was" in
5626 true) ;;
5627 true*) tx=no;;
5628 esac;
5629 case "$tx" in
5630 yes)
5631         set $sym tres -f;
5632         eval $csym;
5633         case "$tres" in
5634         true)
5635                 echo "$sym() found." >&4;
5636                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5637         *)
5638                 echo "$sym() NOT found." >&4;
5639                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5640         esac;;
5641 *)
5642         case "$was" in
5643         $define) echo "$sym() found." >&4;;
5644         *) echo "$sym() NOT found." >&4;;
5645         esac;;
5646 esac'
5647
5648 : see if sqrtl exists
5649 set sqrtl d_sqrtl
5650 eval $inlibc
5651
5652 case "$ccflags" in
5653 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5654 esac
5655
5656 case "$uselongdouble" in
5657 $define|true|[yY]*)     dflt='y';;
5658 *) dflt='n';;
5659 esac
5660 cat <<EOM
5661
5662 Perl can be built to take advantage of long doubles which
5663 (if available) may give more accuracy and range for floating point numbers.
5664
5665 If this doesn't make any sense to you, just accept the default '$dflt'.
5666 EOM
5667 rp='Try to use long doubles if available?'
5668 . ./myread
5669 case "$ans" in
5670 y|Y)    val="$define"   ;;
5671 *)      val="$undef"    ;;
5672 esac
5673 set uselongdouble
5674 eval $setvar
5675
5676 case "$uselongdouble" in
5677 true|[yY]*) uselongdouble="$define" ;;
5678 esac
5679
5680 case "$uselongdouble" in
5681 $define)
5682 : Look for a hint-file generated 'call-back-unit'.  If the
5683 : user has specified that long doubles should be used,
5684 : we may need to set or change some other defaults.
5685         if $test -f uselongdouble.cbu; then
5686                 echo "Your platform has some specific hints for long doubles, using them..."
5687                 . ./uselongdouble.cbu
5688         else
5689                 $cat <<EOM
5690 (Your platform doesn't have any specific hints for long doubles.)
5691 EOM
5692         fi
5693         ;;
5694 esac
5695
5696 case "$uselongdouble:$d_sqrtl" in
5697 $define:$undef)
5698                 $cat <<EOM >&4
5699
5700 *** You requested the use of long doubles but you do not seem to have
5701 *** the mathematic functions for long doubles.  I'm disabling the use
5702 *** of long doubles.
5703
5704 EOM
5705         uselongdouble=$undef
5706         ;;
5707 esac
5708
5709 : check for length of double
5710 echo " "
5711 case "$doublesize" in
5712 '')
5713         echo "Checking to see how big your double precision numbers are..." >&4
5714         $cat >try.c <<'EOCP'
5715 #include <stdio.h>
5716 int main()
5717 {
5718     printf("%d\n", (int)sizeof(double));
5719     exit(0);
5720 }
5721 EOCP
5722         set try
5723         if eval $compile_ok; then
5724                 doublesize=`$run ./try`
5725                 echo "Your double is $doublesize bytes long."
5726         else
5727                 dflt='8'
5728                 echo "(I can't seem to compile the test program.  Guessing...)"
5729                 rp="What is the size of a double precision number (in bytes)?"
5730                 . ./myread
5731                 doublesize="$ans"
5732         fi
5733         ;;
5734 esac
5735 $rm -f try.c try
5736
5737 : check for long doubles
5738 echo " "
5739 echo "Checking to see if you have long double..." >&4
5740 echo 'int main() { long double x = 7.0; }' > try.c
5741 set try
5742 if eval $compile; then
5743         val="$define"
5744         echo "You have long double."
5745 else
5746         val="$undef"
5747         echo "You do not have long double."
5748 fi
5749 $rm try.*
5750 set d_longdbl
5751 eval $setvar
5752
5753 : check for length of long double
5754 case "${d_longdbl}${longdblsize}" in
5755 $define)
5756         echo " "
5757         echo "Checking to see how big your long doubles are..." >&4
5758         $cat >try.c <<'EOCP'
5759 #include <stdio.h>
5760 int main()
5761 {
5762         printf("%d\n", sizeof(long double));
5763 }
5764 EOCP
5765         set try
5766         set try
5767         if eval $compile; then
5768                 longdblsize=`$run ./try`
5769                 echo "Your long doubles are $longdblsize bytes long."
5770         else
5771                 dflt='8'
5772                 echo " "
5773                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5774                 rp="What is the size of a long double (in bytes)?"
5775                 . ./myread
5776                 longdblsize="$ans"
5777         fi
5778         if $test "X$doublesize" = "X$longdblsize"; then
5779                 echo "(That isn't any different from an ordinary double.)"
5780         fi      
5781         ;;
5782 esac
5783 $rm -f try.* try
5784
5785 case "$useperlio" in
5786 $define|true|[yY]*|'')  dflt='y';;
5787 *) dflt='n';;
5788 esac
5789 cat <<EOM
5790
5791 Previous version of $package used the standard IO mechanisms as
5792 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5793 alternate IO mechanisms via the PerlIO abstraction layer, but the
5794 stdio mechanism is still available if needed.  The abstraction layer
5795 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5796 Using PerlIO with sfio may cause problems with some extension modules.
5797
5798 If this doesn't make any sense to you, just accept the default '$dflt'.
5799 EOM
5800 rp='Use the PerlIO abstraction layer?'
5801 . ./myread
5802 case "$ans" in
5803 y|Y) 
5804         val="$define"
5805         ;;
5806 *)      
5807         echo "Ok, doing things the stdio way."
5808         val="$undef"
5809         ;;
5810 esac
5811 set useperlio
5812 eval $setvar 
5813
5814 case "$usesocks" in
5815 $define|true|[yY]*)
5816         case "$useperlio" in
5817         $define|true|[yY]*) ;;
5818         *)      cat >&4 <<EOM
5819
5820 You are using the SOCKS proxy protocol library which means that you
5821 should also use the PerlIO layer.  You may be headed for trouble.
5822
5823 EOM
5824                 ;;
5825         esac
5826         ;;
5827 esac
5828
5829         
5830 : determine the architecture name
5831 echo " "
5832 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5833         tarch=`arch`"-$osname"
5834 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5835         if uname -m > tmparch 2>&1 ; then
5836                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5837                         -e 's/$/'"-$osname/" tmparch`
5838         else
5839                 tarch="$osname"
5840         fi
5841         $rm -f tmparch
5842 else
5843         tarch="$osname"
5844 fi
5845 case "$myarchname" in
5846 ''|"$tarch") ;;
5847 *)
5848         echo "(Your architecture name used to be $myarchname.)"
5849         archname=''
5850         ;;
5851 esac
5852 case "$targetarch" in
5853 '') ;;
5854 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5855 esac
5856 myarchname="$tarch"
5857 case "$archname" in
5858 '') dflt="$tarch";;
5859 *) dflt="$archname";;
5860 esac
5861 rp='What is your architecture name'
5862 . ./myread
5863 archname="$ans"
5864 case "$usethreads" in
5865 $define)
5866         echo "Threads selected." >&4
5867         case "$archname" in
5868         *-thread*) echo "...and architecture name already has -thread." >&4
5869                 ;;
5870         *)      archname="$archname-thread"
5871                 echo "...setting architecture name to $archname." >&4
5872                 ;;
5873         esac
5874         ;;
5875 esac
5876 case "$usemultiplicity" in
5877 $define)
5878         echo "Multiplicity selected." >&4
5879         case "$archname" in
5880         *-multi*) echo "...and architecture name already has -multi." >&4
5881                 ;;
5882         *)      archname="$archname-multi"
5883                 echo "...setting architecture name to $archname." >&4
5884                 ;;
5885         esac
5886         ;;
5887 esac
5888 case "$use64bitint$use64bitall" in
5889 *"$define"*)
5890         case "$archname64" in
5891         '')
5892                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5893                 ;;
5894         *)
5895                 case "$use64bitint" in
5896                 "$define") echo "64 bit integers selected." >&4 ;;
5897                 esac
5898                 case "$use64bitall" in
5899                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5900                 esac
5901                 case "$archname" in
5902                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5903                         ;;
5904                 *)      archname="$archname-$archname64"
5905                         echo "...setting architecture name to $archname." >&4
5906                         ;;
5907                 esac
5908                 ;;
5909         esac
5910 esac
5911 case "$uselongdouble" in
5912 $define)
5913         echo "Long doubles selected." >&4
5914         case "$longdblsize" in
5915         $doublesize)
5916                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5917                 ;;
5918         *)
5919                 case "$archname" in
5920                 *-ld*) echo "...and architecture name already has -ld." >&4
5921                         ;;
5922                 *)      archname="$archname-ld"
5923                         echo "...setting architecture name to $archname." >&4
5924                         ;;
5925                 esac
5926                 ;;
5927         esac
5928         ;;
5929 esac
5930 case "$useperlio" in
5931 $define)
5932         echo "Perlio selected." >&4
5933         ;;
5934 *)
5935         echo "Perlio not selected, using stdio." >&4
5936         case "$archname" in
5937         *-stdio*) echo "...and architecture name already has -stdio." >&4
5938                 ;;
5939         *)      archname="$archname-stdio"
5940                 echo "...setting architecture name to $archname." >&4
5941                 ;;
5942         esac
5943         ;;
5944 esac
5945
5946 : determine root of directory hierarchy where package will be installed.
5947 case "$prefix" in
5948 '')
5949         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5950         ;;
5951 *)
5952         dflt="$prefix"
5953         ;;
5954 esac
5955 $cat <<EOM
5956
5957 By default, $package will be installed in $dflt/bin, manual pages
5958 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5959 installation directories. Typically this is something like /usr/local.
5960 If you wish to have binaries under /usr/bin but other parts of the
5961 installation under /usr/local, that's ok: you will be prompted
5962 separately for each of the installation directories, the prefix being
5963 only used to set the defaults.
5964
5965 EOM
5966 fn=d~
5967 rp='Installation prefix to use?'
5968 . ./getfile
5969 oldprefix=''
5970 case "$prefix" in
5971 '') ;;
5972 *)
5973         case "$ans" in
5974         "$prefix") ;;
5975         *) oldprefix="$prefix";;
5976         esac
5977         ;;
5978 esac
5979 prefix="$ans"
5980 prefixexp="$ansexp"
5981
5982 case "$afsroot" in
5983 '')     afsroot=/afs ;;
5984 *)      afsroot=$afsroot ;;
5985 esac
5986
5987 : is AFS running?
5988 echo " "
5989 case "$afs" in
5990 $define|true)   afs=true ;;
5991 $undef|false)   afs=false ;;
5992 *)      if test -d $afsroot; then
5993                 afs=true
5994         else
5995                 afs=false
5996         fi
5997         ;;
5998 esac
5999 if $afs; then
6000         echo "AFS may be running... I'll be extra cautious then..." >&4
6001 else
6002         echo "AFS does not seem to be running..." >&4
6003 fi
6004
6005 : determine installation prefix for where package is to be installed.
6006 if $afs; then 
6007 $cat <<EOM
6008
6009 Since you are running AFS, I need to distinguish the directory in which
6010 files will reside from the directory in which they are installed (and from
6011 which they are presumably copied to the former directory by occult means).
6012
6013 EOM
6014         case "$installprefix" in
6015         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6016         *) dflt="$installprefix";;
6017         esac
6018 else
6019 $cat <<EOM
6020
6021 In some special cases, particularly when building $package for distribution,
6022 it is convenient to distinguish between the directory in which files should 
6023 be installed from the directory ($prefix) in which they 
6024 will eventually reside.  For most users, these two directories are the same.
6025
6026 EOM
6027         case "$installprefix" in
6028         '') dflt=$prefix ;;
6029         *) dflt=$installprefix;;
6030         esac
6031 fi
6032 fn=d~
6033 rp='What installation prefix should I use for installing files?'
6034 . ./getfile
6035 installprefix="$ans"
6036 installprefixexp="$ansexp"
6037
6038 : set the prefixit variable, to compute a suitable default value
6039 prefixit='case "$3" in
6040 ""|none)
6041         case "$oldprefix" in
6042         "") eval "$1=\"\$$2\"";;
6043         *)
6044                 case "$3" in
6045                 "") eval "$1=";;
6046                 none)
6047                         eval "tp=\"\$$2\"";
6048                         case "$tp" in
6049                         ""|" ") eval "$1=\"\$$2\"";;
6050                         *) eval "$1=";;
6051                         esac;;
6052                 esac;;
6053         esac;;
6054 *)
6055         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6056         case "$tp" in
6057         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6058         /*-$oldprefix/*|\~*-$oldprefix/*)
6059                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6060         *) eval "$1=\"\$$2\"";;
6061         esac;;
6062 esac'
6063
6064
6065 : get the patchlevel
6066 echo " "
6067 echo "Getting the current patchlevel..." >&4
6068 if $test -r $rsrc/patchlevel.h;then
6069         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6070         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6071         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6072         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6073         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6074         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6075        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6076 else
6077         revision=0
6078         patchlevel=0
6079         subversion=0
6080         api_revision=0
6081         api_version=0
6082         api_subversion=0
6083         perl_patchlevel=0
6084         $echo "(You do not have patchlevel.h.  Eek.)"
6085 fi
6086 if $test -r $rsrc/.patch ; then  
6087         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6088                 perl_patchlevel=`cat $rsrc/.patch`
6089         fi
6090 fi
6091 case "$perl_patchlevel" in
6092 0)  ;;
6093 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6094 *)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6095 esac
6096 case "$osname" in
6097 dos|vms)
6098         : XXX Should be a Configure test for double-dots in filenames.
6099         version=`echo $revision $patchlevel $subversion | \
6100                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6101         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6102                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6103         ;;
6104 *)
6105         version=`echo $revision $patchlevel $subversion | \
6106                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6107         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6109         ;;
6110 esac
6111 : Special case the 5.005_xx maintenance series, which used 5.005
6112 : without any subversion label as a subdirectory in $sitelib
6113 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6114         api_versionstring='5.005'
6115 fi
6116
6117 : determine installation style
6118 : For now, try to deduce it from prefix unless it is already set.
6119 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6120 case "$installstyle" in
6121 '')     case "$prefix" in
6122                 *perl*) dflt='lib';;
6123                 *) dflt='lib/perl5' ;;
6124         esac
6125         ;;
6126 *)      dflt="$installstyle" ;;
6127 esac
6128 : Probably not worth prompting for this since we prompt for all
6129 : the directories individually, and the prompt would be too long and
6130 : confusing anyway.
6131 installstyle=$dflt
6132
6133 : determine where private library files go
6134 : Usual default is /usr/local/lib/perl5/$version.
6135 : Also allow things like /opt/perl/lib/$version, since 
6136 : /opt/perl/lib/perl5... would be redundant.
6137 : The default "style" setting is made in installstyle.U
6138 case "$installstyle" in
6139 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6140 *)       set dflt privlib lib/$version ;;
6141 esac
6142 eval $prefixit
6143 $cat <<EOM
6144
6145 There are some auxiliary files for $package that need to be put into a
6146 private library directory that is accessible by everyone.
6147
6148 EOM
6149 fn=d~+
6150 rp='Pathname where the private library files will reside?'
6151 . ./getfile
6152 privlib="$ans"
6153 privlibexp="$ansexp"
6154 : Change installation prefix, if necessary.
6155 if $test X"$prefix" != X"$installprefix"; then
6156         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6157 else
6158         installprivlib="$privlibexp"
6159 fi
6160
6161 : set the prefixup variable, to restore leading tilda escape
6162 prefixup='case "$prefixexp" in
6163 "$prefix") ;;
6164 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6165 esac'
6166
6167 : determine where public architecture dependent libraries go
6168 set archlib archlib
6169 eval $prefixit
6170 : privlib default is /usr/local/lib/$package/$version
6171 : archlib default is /usr/local/lib/$package/$version/$archname
6172 : privlib may have an optional trailing /share.
6173 tdflt=`echo $privlib | $sed 's,/share$,,'`
6174 tdflt=$tdflt/$archname
6175 case "$archlib" in
6176 '')     dflt=$tdflt
6177         ;;
6178 *)      dflt="$archlib"
6179     ;;
6180 esac
6181 $cat <<EOM
6182
6183 $spackage contains architecture-dependent library files.  If you are
6184 sharing libraries in a heterogeneous environment, you might store
6185 these files in a separate location.  Otherwise, you can just include
6186 them with the rest of the public library files.
6187
6188 EOM
6189 fn=d+~
6190 rp='Where do you want to put the public architecture-dependent libraries?'
6191 . ./getfile
6192 archlib="$ans"
6193 archlibexp="$ansexp"
6194 if $test X"$archlib" = X"$privlib"; then
6195         d_archlib="$undef"
6196 else
6197         d_archlib="$define"
6198 fi
6199 : Change installation prefix, if necessary.
6200 if $test X"$prefix" != X"$installprefix"; then
6201         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6202 else
6203         installarchlib="$archlibexp"
6204 fi
6205
6206
6207 : Binary compatibility with 5.005 is not possible for builds
6208 : with advanced features
6209 case "$usethreads$usemultiplicity" in
6210 *define*)
6211         bincompat5005="$undef"
6212         d_bincompat5005="$undef"
6213         ;;
6214 *)      $cat <<EOM
6215
6216 This version of Perl can be compiled for binary compatibility with 5.005.
6217 If you decide to do so, you will be able to continue using most of the
6218 extensions that were compiled for Perl 5.005.
6219
6220 EOM
6221         case "$bincompat5005$d_bincompat5005" in
6222         *"$undef"*) dflt=n ;;
6223         *) dflt=y ;;
6224         esac
6225         rp='Binary compatibility with Perl 5.005?'
6226         . ./myread
6227         case "$ans" in
6228         y*) val="$define" ;;
6229         *)  val="$undef" ;;
6230         esac
6231         set d_bincompat5005
6232         eval $setvar
6233         case "$d_bincompat5005" in
6234         "$define")
6235                 bincompat5005="$define"
6236                 ;;
6237         *)      bincompat5005="$undef"
6238                 d_bincompat5005="$undef"
6239                 ;;
6240         esac
6241         ;;
6242 esac
6243
6244
6245 : see if setuid scripts can be secure
6246 $cat <<EOM
6247
6248 Some kernels have a bug that prevents setuid #! scripts from being
6249 secure.  Some sites have disabled setuid #! scripts because of this.
6250
6251 First let's decide if your kernel supports secure setuid #! scripts.
6252 (If setuid #! scripts would be secure but have been disabled anyway,
6253 don't say that they are secure if asked.)
6254
6255 EOM
6256
6257 val="$undef"
6258 if $test -d /dev/fd; then
6259         echo "#!$ls" >reflect
6260         chmod +x,u+s reflect
6261         ./reflect >flect 2>&1
6262         if $contains "/dev/fd" flect >/dev/null; then
6263                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6264                 val="$define"
6265         else
6266                 $cat <<EOM
6267 If you are not sure if they are secure, I can check but I'll need a
6268 username and password different from the one you are using right now.
6269 If you don't have such a username or don't want me to test, simply
6270 enter 'none'.
6271
6272 EOM
6273                 rp='Other username to test security of setuid scripts with?'
6274                 dflt='none'
6275                 . ./myread
6276                 case "$ans" in
6277                 n|none)
6278                         case "$d_suidsafe" in
6279                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6280                                 dflt=n;;
6281                         "$undef")
6282                                 echo "Well, the $hint value is *not* secure." >&4
6283                                 dflt=n;;
6284                         *)      echo "Well, the $hint value *is* secure." >&4
6285                                 dflt=y;;
6286                         esac
6287                         ;;
6288                 *)
6289                         $rm -f reflect flect
6290                         echo "#!$ls" >reflect
6291                         chmod +x,u+s reflect
6292                         echo >flect
6293                         chmod a+w flect
6294                         echo '"su" will (probably) prompt you for '"$ans's password."
6295                         su $ans -c './reflect >flect'
6296                         if $contains "/dev/fd" flect >/dev/null; then
6297                                 echo "Okay, it looks like setuid scripts are secure." >&4
6298                                 dflt=y
6299                         else
6300                                 echo "I don't think setuid scripts are secure." >&4
6301                                 dflt=n
6302                         fi
6303                         ;;
6304                 esac
6305                 rp='Does your kernel have *secure* setuid scripts?'
6306                 . ./myread
6307                 case "$ans" in
6308                 [yY]*)  val="$define";;
6309                 *)      val="$undef";;
6310                 esac
6311         fi
6312 else
6313         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6314         echo "(That's for file descriptors, not floppy disks.)"
6315         val="$undef"
6316 fi
6317 set d_suidsafe
6318 eval $setvar
6319
6320 $rm -f reflect flect
6321
6322 : now see if they want to do setuid emulation
6323 echo " "
6324 val="$undef"
6325 case "$d_suidsafe" in
6326 "$define")
6327         val="$undef"
6328         echo "No need to emulate SUID scripts since they are secure here." >& 4
6329         ;;
6330 *)
6331         $cat <<EOM
6332 Some systems have disabled setuid scripts, especially systems where
6333 setuid scripts cannot be secure.  On systems where setuid scripts have
6334 been disabled, the setuid/setgid bits on scripts are currently
6335 useless.  It is possible for $package to detect those bits and emulate
6336 setuid/setgid in a secure fashion.  This emulation will only work if
6337 setuid scripts have been disabled in your kernel.
6338
6339 EOM
6340         case "$d_dosuid" in
6341         "$define") dflt=y ;;
6342         *) dflt=n ;;
6343         esac
6344         rp="Do you want to do setuid/setgid emulation?"
6345         . ./myread
6346         case "$ans" in
6347         [yY]*)  val="$define";;
6348         *)      val="$undef";;
6349         esac
6350         ;;
6351 esac
6352 set d_dosuid
6353 eval $setvar
6354
6355 : see if this is a malloc.h system
6356 set malloc.h i_malloc
6357 eval $inhdr
6358
6359 : see if stdlib is available
6360 set stdlib.h i_stdlib
6361 eval $inhdr
6362
6363 : determine which malloc to compile in
6364 echo " "
6365 case "$usemymalloc" in
6366 [yY]*|true|$define)     dflt='y' ;;
6367 [nN]*|false|$undef)     dflt='n' ;;
6368 *)      case "$ptrsize" in
6369         4) dflt='y' ;;
6370         *) dflt='n' ;;
6371         esac
6372         ;;
6373 esac
6374 rp="Do you wish to attempt to use the malloc that comes with $package?"
6375 . ./myread
6376 usemymalloc="$ans"
6377 case "$ans" in
6378 y*|true)
6379         usemymalloc='y'
6380         mallocsrc='malloc.c'
6381         mallocobj="malloc$_o"
6382         d_mymalloc="$define"
6383         case "$libs" in
6384         *-lmalloc*)
6385                 : Remove malloc from list of libraries to use
6386                 echo "Removing unneeded -lmalloc from library list" >&4
6387                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6388                 shift
6389                 libs="$*"
6390                 echo "libs = $libs" >&4
6391                 ;;
6392         esac
6393         ;;
6394 *)
6395         usemymalloc='n'
6396         mallocsrc=''
6397         mallocobj=''
6398         d_mymalloc="$undef"
6399         ;;
6400 esac
6401
6402 : compute the return types of malloc and free
6403 echo " "
6404 $cat >malloc.c <<END
6405 #$i_malloc I_MALLOC
6406 #$i_stdlib I_STDLIB
6407 #include <stdio.h>
6408 #include <sys/types.h>
6409 #ifdef I_MALLOC
6410 #include <malloc.h>
6411 #endif
6412 #ifdef I_STDLIB
6413 #include <stdlib.h>
6414 #endif
6415 #ifdef TRY_MALLOC
6416 void *malloc();
6417 #endif
6418 #ifdef TRY_FREE
6419 void free();
6420 #endif
6421 END
6422 case "$malloctype" in
6423 '')
6424         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6425                 malloctype='void *'
6426         else
6427                 malloctype='char *'
6428         fi
6429         ;;
6430 esac
6431 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6432
6433 case "$freetype" in
6434 '')
6435         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6436                 freetype='void'
6437         else
6438                 freetype='int'
6439         fi
6440         ;;
6441 esac
6442 echo "Your system uses $freetype free(), it would seem." >&4
6443 $rm -f malloc.[co]
6444 $cat <<EOM
6445
6446 After $package is installed, you may wish to install various
6447 add-on modules and utilities.  Typically, these add-ons will
6448 be installed under $prefix with the rest
6449 of this package.  However, you may wish to install such add-ons
6450 elsewhere under a different prefix.
6451
6452 If you do not wish to put everything under a single prefix, that's
6453 ok.  You will be prompted for the individual locations; this siteprefix
6454 is only used to suggest the defaults.
6455
6456 The default should be fine for most people.
6457
6458 EOM
6459 fn=d~+
6460 rp='Installation prefix to use for add-on modules and utilities?'
6461 : XXX Here might be another good place for an installstyle setting.
6462 case "$siteprefix" in
6463 '') dflt=$prefix ;;
6464 *)  dflt=$siteprefix ;;
6465 esac
6466 . ./getfile
6467 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6468 oldsiteprefix=''
6469 case "$siteprefix" in
6470 '') ;;
6471 *)      case "$ans" in
6472         "$prefix") ;;
6473         *) oldsiteprefix="$prefix";;
6474         esac
6475         ;;
6476 esac
6477 siteprefix="$ans"
6478 siteprefixexp="$ansexp"
6479
6480 : determine where site specific libraries go.
6481 : Usual default is /usr/local/lib/perl5/site_perl/$version
6482 : The default "style" setting is made in installstyle.U
6483 : XXX No longer works with Prefixit stuff.
6484 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6485 case "$sitelib" in
6486 '') case "$installstyle" in
6487         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6488         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6489         esac
6490         ;;
6491 *)      dflt="$sitelib"
6492         ;;
6493 esac
6494 $cat <<EOM
6495
6496 The installation process will create a directory for
6497 site-specific extensions and modules.  Most users find it convenient
6498 to place all site-specific files in this directory rather than in the
6499 main distribution directory.
6500
6501 EOM
6502 fn=d~+
6503 rp='Pathname for the site-specific library files?'
6504 . ./getfile
6505 sitelib="$ans"
6506 sitelibexp="$ansexp"
6507 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6508 : Change installation prefix, if necessary.
6509 if $test X"$prefix" != X"$installprefix"; then
6510         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6511 else
6512         installsitelib="$sitelibexp"
6513 fi
6514
6515 : determine where site specific architecture-dependent libraries go.
6516 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6517 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6518 : sitelib may have an optional trailing /share.
6519 case "$sitearch" in
6520 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6521         dflt="$dflt/$archname"
6522         ;;
6523 *)      dflt="$sitearch"
6524         ;;
6525 esac
6526 set sitearch sitearch none
6527 eval $prefixit
6528 $cat <<EOM
6529
6530 The installation process will also create a directory for
6531 architecture-dependent site-specific extensions and modules.
6532
6533 EOM
6534 fn=d~+
6535 rp='Pathname for the site-specific architecture-dependent library files?'
6536 . ./getfile
6537 sitearch="$ans"
6538 sitearchexp="$ansexp"
6539 : Change installation prefix, if necessary.
6540 if $test X"$prefix" != X"$installprefix"; then
6541         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6542 else
6543         installsitearch="$sitearchexp"
6544 fi
6545
6546 $cat <<EOM
6547
6548 The installation process will also create a directory for
6549 vendor-supplied add-ons.  Vendors who supply perl with their system
6550 may find it convenient to place all vendor-supplied files in this
6551 directory rather than in the main distribution directory.  This will
6552 ease upgrades between binary-compatible maintenance versions of perl.
6553
6554 Of course you may also use these directories in whatever way you see
6555 fit.  For example, you might use them to access modules shared over a
6556 company-wide network.
6557
6558 The default answer should be fine for most people.
6559 This causes further questions about vendor add-ons to be skipped
6560 and no vendor-specific directories will be configured for perl.
6561
6562 EOM
6563 rp='Do you want to configure vendor-specific add-on directories?'
6564 case "$usevendorprefix" in
6565 define|true|[yY]*) dflt=y ;;
6566 *)      : User may have set vendorprefix directly on Configure command line.
6567         case "$vendorprefix" in
6568         ''|' ') dflt=n ;;
6569         *)      dflt=y ;;
6570         esac
6571         ;;
6572 esac
6573 . ./myread
6574 case "$ans" in
6575 [yY]*)  fn=d~+
6576         rp='Installation prefix to use for vendor-supplied add-ons?'
6577         case "$vendorprefix" in
6578         '') dflt='' ;;
6579         *)  dflt=$vendorprefix ;;
6580         esac
6581         . ./getfile
6582         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6583         oldvendorprefix=''
6584         case "$vendorprefix" in
6585         '') ;;
6586         *)      case "$ans" in
6587                 "$prefix") ;;
6588                 *) oldvendorprefix="$prefix";;
6589                 esac
6590                 ;;
6591         esac
6592         usevendorprefix="$define"
6593         vendorprefix="$ans"
6594         vendorprefixexp="$ansexp"
6595         ;;
6596 *)      usevendorprefix="$undef"
6597         vendorprefix=''
6598         vendorprefixexp=''
6599         ;;
6600 esac
6601
6602 case "$vendorprefix" in
6603 '')     d_vendorlib="$undef"
6604         vendorlib=''
6605         vendorlibexp=''
6606         ;;
6607 *)      d_vendorlib="$define"
6608         : determine where vendor-supplied modules go.
6609         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6610         case "$vendorlib" in
6611         '')
6612                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6613                 case "$installstyle" in
6614                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6615                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6616                 esac
6617                 ;;
6618         *)      dflt="$vendorlib"
6619                 ;;
6620         esac
6621         fn=d~+
6622         rp='Pathname for the vendor-supplied library files?'
6623         . ./getfile
6624         vendorlib="$ans"
6625         vendorlibexp="$ansexp"
6626         ;;
6627 esac
6628 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6629 : Change installation prefix, if necessary.
6630 if $test X"$prefix" != X"$installprefix"; then
6631         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6632 else
6633         installvendorlib="$vendorlibexp"
6634 fi
6635
6636 case "$vendorprefix" in
6637 '')     d_vendorarch="$undef"
6638         vendorarch=''
6639         vendorarchexp=''
6640         ;;
6641 *)      d_vendorarch="$define"
6642         : determine where vendor-supplied architecture-dependent libraries go.
6643         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6644         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6645         : vendorlib may have an optional trailing /share.
6646         case "$vendorarch" in
6647         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6648                 dflt="$dflt/$archname"
6649                 ;;
6650         *)      dflt="$vendorarch" ;;
6651         esac
6652         fn=d~+
6653         rp='Pathname for vendor-supplied architecture-dependent files?'
6654         . ./getfile
6655         vendorarch="$ans"
6656         vendorarchexp="$ansexp"
6657         ;;
6658 esac
6659 : Change installation prefix, if necessary.
6660 if $test X"$prefix" != X"$installprefix"; then
6661         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6662 else
6663         installvendorarch="$vendorarchexp"
6664 fi
6665
6666 : Final catch-all directories to search
6667 $cat <<EOM
6668
6669 Lastly, you can have perl look in other directories for extensions and
6670 modules in addition to those already specified.
6671 These directories will be searched after 
6672         $sitearch 
6673         $sitelib 
6674 EOM
6675 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6676 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6677 echo ' '
6678 case "$otherlibdirs" in
6679 ''|' ') dflt='none' ;;
6680 *)      dflt="$otherlibdirs" ;;
6681 esac
6682 $cat <<EOM
6683 Enter a colon-separated set of extra paths to include in perl's @INC
6684 search path, or enter 'none' for no extra paths.
6685
6686 EOM
6687
6688 rp='Colon-separated list of additional directories for perl to search?'
6689 . ./myread
6690 case "$ans" in
6691 ' '|''|none)    otherlibdirs=' ' ;;     
6692 *)      otherlibdirs="$ans" ;;
6693 esac
6694 case "$otherlibdirs" in
6695 ' ') val=$undef ;;
6696 *)      val=$define ;;
6697 esac
6698 set d_perl_otherlibdirs
6699 eval $setvar
6700
6701 : Cruising for prototypes
6702 echo " "
6703 echo "Checking out function prototypes..." >&4
6704 $cat >prototype.c <<'EOCP'
6705 int main(int argc, char *argv[]) {
6706         exit(0);}
6707 EOCP
6708 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6709         echo "Your C compiler appears to support function prototypes."
6710         val="$define"
6711 else
6712         echo "Your C compiler doesn't seem to understand function prototypes."
6713         val="$undef"
6714 fi
6715 set prototype
6716 eval $setvar
6717 $rm -f prototype*
6718
6719 case "$prototype" in
6720 "$define") ;;
6721 *)      ansi2knr='ansi2knr'
6722         echo " "
6723         cat <<EOM >&4
6724
6725 $me:  FATAL ERROR:
6726 This version of $package can only be compiled by a compiler that 
6727 understands function prototypes.  Unfortunately, your C compiler 
6728         $cc $ccflags
6729 doesn't seem to understand them.  Sorry about that.
6730
6731 If GNU cc is available for your system, perhaps you could try that instead.  
6732
6733 Eventually, we hope to support building Perl with pre-ANSI compilers.
6734 If you would like to help in that effort, please contact <perlbug@perl.org>.
6735
6736 Aborting Configure now.
6737 EOM
6738         exit 2
6739         ;;
6740 esac
6741
6742 : determine where public executables go
6743 echo " "
6744 set dflt bin bin
6745 eval $prefixit
6746 fn=d~
6747 rp='Pathname where the public executables will reside?'
6748 . ./getfile
6749 if $test "X$ansexp" != "X$binexp"; then
6750         installbin=''
6751 fi
6752 bin="$ans"
6753 binexp="$ansexp"
6754 : Change installation prefix, if necessary.
6755 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6756 if $test X"$prefix" != X"$installprefix"; then
6757         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6758 else
6759         installbin="$binexp"
6760 fi
6761
6762 : Find perl5.005 or later.
6763 echo "Looking for a previously installed perl5.005 or later... "
6764 case "$perl5" in
6765 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6766                 : Check if this perl is recent and can load a simple module
6767                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6768                         perl5=$tdir/perl
6769                         break;
6770                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6771                         perl5=$tdir/perl5
6772                         break;
6773                 fi
6774         done
6775         ;;
6776 *)      perl5="$perl5"
6777         ;;
6778 esac
6779 case "$perl5" in
6780 '')     echo "None found.  That's ok.";;
6781 *)      echo "Using $perl5." ;;
6782 esac
6783
6784 : Determine list of previous versions to include in @INC
6785 $cat > getverlist <<EOPL
6786 #!$perl5 -w
6787 use File::Basename;
6788 \$api_versionstring = "$api_versionstring";
6789 \$version = "$version";
6790 \$stem = "$sitelib_stem";
6791 \$archname = "$archname";
6792 EOPL
6793         $cat >> getverlist <<'EOPL'
6794 # Can't have leading @ because metaconfig interprets it as a command!
6795 ;@inc_version_list=();
6796 # XXX Redo to do opendir/readdir? 
6797 if (-d $stem) {
6798     chdir($stem);
6799     ;@candidates = glob("5.*");
6800 }
6801 else {
6802     ;@candidates = ();
6803 }
6804
6805 # XXX ToDo:  These comparisons must be reworked when two-digit
6806 # subversions come along, so that 5.7.10 compares as greater than
6807 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6808 # widespread that we can use the built-in version vectors rather
6809 # than reinventing them here.  For 5.6.0, however, we must
6810 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6811 foreach $d (@candidates) {
6812     if ($d lt $version) {
6813         if ($d ge $api_versionstring) {
6814             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6815         }
6816         elsif ($d ge "5.005") {
6817             unshift(@inc_version_list, grep { -d } $d);
6818         }
6819     }
6820     else {
6821         # Skip newer version.  I.e. don't look in
6822         # 5.7.0 if we're installing 5.6.1.
6823     }
6824 }
6825
6826 if (@inc_version_list) {
6827     print join(' ', @inc_version_list);
6828 }
6829 else {
6830     # Blank space to preserve value for next Configure run.
6831     print " ";
6832 }
6833 EOPL
6834 chmod +x getverlist
6835 case "$inc_version_list" in
6836 '')     if test -x "$perl5$exe_ext"; then
6837                 dflt=`$perl5 getverlist`
6838         else
6839                 dflt='none'
6840         fi
6841         ;;
6842 $undef) dflt='none' ;;
6843 *)  eval dflt=\"$inc_version_list\" ;;
6844 esac
6845 case "$dflt" in
6846 ''|' ') dflt=none ;;
6847 esac
6848 case "$dflt" in
6849 5.005) case "$bincompat5005" in
6850        $define|true|[yY]*) ;;
6851        *) dflt=none ;;
6852        esac
6853        ;;
6854 esac
6855 $cat <<'EOM'
6856
6857 In order to ease the process of upgrading, this version of perl 
6858 can be configured to use modules built and installed with earlier 
6859 versions of perl that were installed under $prefix.  Specify here
6860 the list of earlier versions that this version of perl should check.
6861 If Configure detected no earlier versions of perl installed under
6862 $prefix, then the list will be empty.  Answer 'none' to tell perl
6863 to not search earlier versions.
6864
6865 The default should almost always be sensible, so if you're not sure,
6866 just accept the default.
6867 EOM
6868
6869 rp='List of earlier versions to include in @INC?'
6870 . ./myread
6871 case "$ans" in
6872 [Nn]one|''|' ') inc_version_list=' ' ;;
6873 *) inc_version_list="$ans" ;;
6874 esac
6875 case "$inc_version_list" in
6876 ''|' ') 
6877         inc_version_list_init='0';;
6878 *)      inc_version_list_init=`echo $inc_version_list |
6879                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6880         ;;
6881 esac
6882 $rm -f getverlist
6883
6884 : determine whether to install perl also as /usr/bin/perl
6885
6886 echo " "
6887 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6888         $cat <<EOM
6889 Many scripts expect perl to be installed as /usr/bin/perl.
6890 I can install the perl you are about to compile also as /usr/bin/perl
6891 (in addition to $installbin/perl).
6892 EOM
6893         case "$installusrbinperl" in
6894         "$undef"|[nN]*) dflt='n';;
6895         *)              dflt='y';;
6896         esac
6897         rp="Do you want to install perl as /usr/bin/perl?"
6898         . ./myread
6899         case "$ans" in
6900         [yY]*)  val="$define";;
6901         *)      val="$undef" ;;
6902         esac
6903 else
6904         val="$undef"
6905 fi
6906 set installusrbinperl
6907 eval $setvar
6908
6909 : see if dld is available
6910 set dld.h i_dld
6911 eval $inhdr
6912
6913 : see if dlopen exists
6914 xxx_runnm="$runnm"
6915 runnm=false
6916 set dlopen d_dlopen
6917 eval $inlibc
6918 runnm="$xxx_runnm"
6919
6920 : determine which dynamic loading, if any, to compile in
6921 echo " "
6922 dldir="ext/DynaLoader"
6923 case "$usedl" in
6924 $define|y|true)
6925         dflt='y'
6926         usedl="$define"
6927         ;;
6928 $undef|n|false)
6929         dflt='n'
6930         usedl="$undef"
6931         ;;
6932 *) 
6933         dflt='n'
6934         case "$d_dlopen" in
6935             $define) dflt='y' ;;
6936         esac
6937         case "$i_dld" in
6938             $define) dflt='y' ;;
6939         esac
6940         : Does a dl_xxx.xs file exist for this operating system
6941         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6942         ;;
6943 esac
6944 rp="Do you wish to use dynamic loading?"
6945 . ./myread
6946 usedl="$ans"
6947 case "$ans" in
6948 y*) usedl="$define"
6949         case "$dlsrc" in
6950         '')
6951                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6952                         dflt="$dldir/dl_${osname}.xs"
6953                 elif $test "$d_dlopen" = "$define" ; then
6954                         dflt="$dldir/dl_dlopen.xs"
6955                 elif $test "$i_dld" = "$define" ; then
6956                         dflt="$dldir/dl_dld.xs"
6957                 else
6958                         dflt=''
6959                 fi
6960                 ;;
6961         *)      dflt="$dldir/$dlsrc"
6962                 ;;
6963         esac
6964     echo "The following dynamic loading files are available:"
6965         : Can not go over to $dldir because getfile has path hard-coded in.
6966         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6967         rp="Source file to use for dynamic loading"
6968         fn="fne"
6969         gfpth="$src"
6970         . ./getfile
6971         usedl="$define"
6972         : emulate basename
6973         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6974
6975         $cat << EOM
6976
6977 Some systems may require passing special flags to $cc -c to
6978 compile modules that will be used to create a shared library.
6979 To use no flags, say "none".
6980
6981 EOM
6982     case "$cccdlflags" in
6983     '') case "$gccversion" in
6984                 '') case "$osname" in
6985                         hpux)   dflt='+z' ;;
6986                         next)   dflt='none' ;;
6987                         irix*)  dflt='-KPIC' ;;
6988                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6989                         sunos)  dflt='-pic' ;;
6990                         *)      dflt='none' ;;
6991                     esac
6992                         ;;
6993                 *)  case "$osname" in
6994                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6995                         *)      dflt='-fpic' ;;
6996                     esac ;;
6997             esac ;;
6998         ' ') dflt='none' ;;
6999     *)  dflt="$cccdlflags" ;;
7000     esac
7001     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7002     . ./myread
7003     case "$ans" in
7004     none) cccdlflags=' ' ;;
7005     *) cccdlflags="$ans" ;;
7006     esac
7007
7008     cat << EOM
7009
7010 Some systems use ld to create libraries that can be dynamically loaded,
7011 while other systems (such as those using ELF) use $cc.
7012
7013 EOM
7014         case "$ld" in
7015         '')     $cat >try.c <<'EOM'
7016 /* Test for whether ELF binaries are produced */
7017 #include <fcntl.h>
7018 #include <stdlib.h>
7019 int main() {
7020         char b[4];
7021         int i = open("a.out",O_RDONLY);
7022         if(i == -1) 
7023                 exit(1); /* fail */
7024         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7025                 exit(0); /* succeed (yes, it's ELF) */
7026         else
7027                 exit(1); /* fail */
7028 }
7029 EOM
7030                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7031                         cat <<EOM
7032 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7033 EOM
7034                         dflt="$cc"
7035                 else
7036                         echo "I'll use ld to build dynamic libraries."
7037                         dflt='ld'
7038                 fi
7039                 rm -f try.c a.out
7040                 ;;
7041         *)      dflt="$ld"
7042                 ;;
7043         esac
7044
7045     rp="What command should be used to create dynamic libraries?"
7046     . ./myread
7047         ld="$ans"
7048
7049     cat << EOM
7050
7051 Some systems may require passing special flags to $ld to create a
7052 library that can be dynamically loaded.  If your ld flags include
7053 -L/other/path options to locate libraries outside your loader's normal
7054 search path, you may need to specify those -L options here as well.  To
7055 use no flags, say "none".
7056
7057 EOM
7058     case "$lddlflags" in
7059     '') case "$osname" in
7060                         beos) dflt='-nostart' ;;
7061                         hpux) dflt='-b';
7062                               case "$gccversion" in
7063                               '') dflt="$dflt +vnocompatwarnings" ;;
7064                               esac
7065                               ;;        
7066                         linux|irix*)    dflt='-shared' ;;
7067                         next)  dflt='none' ;;
7068                         solaris) dflt='-G' ;;
7069                         sunos) dflt='-assert nodefinitions' ;;
7070                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7071                 *)     dflt='none' ;;
7072                         esac
7073                         ;;
7074     *) dflt="$lddlflags" ;;
7075     esac
7076
7077         : Try to guess additional flags to pick up local libraries.
7078         : Be careful not to append to a plain 'none'
7079         case "$dflt" in
7080         none) dflt='' ;;
7081         esac
7082         for thisflag in $ldflags; do
7083                 case "$thisflag" in
7084                 -L*|-R*)
7085                         case " $dflt " in
7086                         *" $thisflag "*) ;;
7087                         *) dflt="$dflt $thisflag" ;;
7088                         esac
7089                         ;;
7090                 esac
7091         done
7092
7093         case "$dflt" in
7094         ''|' ') dflt='none' ;;
7095         esac
7096
7097     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7098     . ./myread
7099     case "$ans" in
7100     none) lddlflags=' ' ;;
7101     *) lddlflags="$ans" ;;
7102     esac
7103
7104         cat <<EOM
7105
7106 Some systems may require passing special flags to $cc to indicate that
7107 the resulting executable will use dynamic linking.  To use no flags,
7108 say "none".
7109
7110 EOM
7111     case "$ccdlflags" in
7112     '') case "$osname" in
7113                 hpux)   dflt='-Wl,-E' ;;
7114                 linux)  dflt='-rdynamic' ;;
7115                 next)   dflt='none' ;;
7116                 sunos)  dflt='none' ;;
7117                 *)      dflt='none' ;;
7118             esac ;;
7119     ' ')  dflt='none' ;;
7120     *)  dflt="$ccdlflags" ;;
7121     esac
7122     rp="Any special flags to pass to $cc to use dynamic linking?"
7123     . ./myread
7124     case "$ans" in
7125     none) ccdlflags=' ' ;;
7126     *) ccdlflags="$ans" ;;
7127     esac
7128     ;;
7129 *)  usedl="$undef"
7130         ld='ld'
7131     dlsrc='dl_none.xs'
7132     lddlflags=''
7133     ccdlflags=''
7134     ;;
7135 esac
7136
7137 also=''
7138 case "$usedl" in
7139 $undef)
7140         # No dynamic loading being used, so don't bother even to prompt.
7141         useshrplib='false'
7142         ;;
7143 *)      case "$useshrplib" in
7144         '')     case "$osname" in
7145                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7146                         dflt=y
7147                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7148                         ;;
7149                 next*)
7150                         case "$osvers" in
7151                         4*)     dflt=y
7152                                 also='Building a shared libperl is needed for MAB support.'
7153                                 ;;
7154                         *)      dflt=n
7155                                 ;;
7156                         esac
7157                         ;;
7158                 *)      dflt=n
7159                         ;;
7160                 esac
7161                 ;;
7162         $define|true|[Yy]*)
7163                 dflt=y
7164                 ;;
7165         *)      dflt=n
7166                 ;;
7167         esac
7168         $cat << EOM
7169
7170 The perl executable is normally obtained by linking perlmain.c with
7171 libperl${_a}, any static extensions (usually just DynaLoader), and
7172 any other libraries needed on this system (such as -lm, etc.).  Since
7173 your system supports dynamic loading, it is probably possible to build
7174 a shared libperl.$so.  If you will have more than one executable linked
7175 to libperl.$so, this will significantly reduce the size of each
7176 executable, but it may have a noticeable affect on performance.  The
7177 default is probably sensible for your system.
7178 $also
7179
7180 EOM
7181         rp="Build a shared libperl.$so (y/n)"
7182         . ./myread
7183         case "$ans" in
7184         true|$define|[Yy]*)
7185                 useshrplib='true'  ;;
7186         *)      useshrplib='false' ;;
7187         esac
7188         ;;
7189 esac
7190
7191 case "$useshrplib" in
7192 true)
7193         case "$libperl" in
7194         '')
7195                 # Figure out a good name for libperl.so.  Since it gets stored in
7196                 # a version-specific architecture-dependent library, the version
7197                 # number isn't really that important, except for making cc/ld happy.
7198                 #
7199                 # A name such as libperl.so.3.1
7200                 majmin="libperl.$so.$patchlevel.$subversion"
7201                 # A name such as libperl.so.301
7202                 majonly=`echo $patchlevel $subversion |
7203                         $awk '{printf "%d%02d", $1, $2}'`
7204                 majonly=libperl.$so.$majonly
7205                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7206                 # rely on figuring it out from the naming of libc.
7207                 case "${osname}${osvers}" in
7208                 next4*)
7209                         dflt=libperl.5.$so
7210                         # XXX How handle the --version stuff for MAB?
7211                         ;;
7212                 linux*)  # ld won't link with a bare -lperl otherwise.
7213                         dflt=libperl.$so
7214                         ;;
7215                 cygwin*) # include version
7216                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7217                         ;;
7218                 *)      # Try to guess based on whether libc has major.minor.
7219                         case "$libc" in
7220                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7221                         *libc.$so.[0-9]*) dflt=$majonly ;;
7222                         *)      dflt=libperl.$so ;;
7223                         esac
7224                         ;;
7225                 esac
7226                 ;;
7227         *)      dflt=$libperl
7228                 ;;
7229         esac
7230         cat << EOM
7231
7232 I need to select a good name for the shared libperl.  If your system uses
7233 library names with major and minor numbers, then you might want something
7234 like $majmin.  Alternatively, if your system uses a single version
7235 number for shared libraries, then you might want to use $majonly.
7236 Or, your system might be quite happy with a simple libperl.$so.
7237
7238 Since the shared libperl will get installed into a version-specific
7239 architecture-dependent directory, the version number of the shared perl
7240 library probably isn't important, so the default should be o.k.
7241
7242 EOM
7243         rp='What name do you want to give to the shared libperl?'
7244         . ./myread
7245         libperl=$ans
7246         echo "Ok, I'll use $libperl"
7247         ;;
7248 *)
7249         libperl="libperl${_a}"
7250         ;;
7251 esac
7252
7253 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7254 case "$shrpdir" in
7255 '') ;;
7256 *)      $cat >&4 <<EOM
7257 WARNING:  Use of the shrpdir variable for the installation location of
7258 the shared $libperl is not supported.  It was never documented and
7259 will not work in this version.  Let me (perlbug@perl.org)
7260 know of any problems this may cause.
7261
7262 EOM
7263         case "$shrpdir" in
7264         "$archlibexp/CORE")
7265                 $cat >&4 <<EOM
7266 But your current setting of $shrpdir is
7267 the default anyway, so it's harmless.
7268 EOM
7269                 ;;
7270         *)
7271                 $cat >&4 <<EOM
7272 Further, your current attempted setting of $shrpdir
7273 conflicts with the value of $archlibexp/CORE
7274 that installperl will use.
7275 EOM
7276                 ;;
7277         esac
7278         ;;
7279 esac
7280
7281 # How will the perl executable find the installed shared $libperl?
7282 # Add $xxx to ccdlflags.
7283 # If we can't figure out a command-line option, use $shrpenv to
7284 # set env LD_RUN_PATH.  The main perl makefile uses this.
7285 shrpdir=$archlibexp/CORE
7286 xxx=''
7287 tmp_shrpenv=''
7288 if "$useshrplib"; then
7289     case "$osname" in 
7290         aix)
7291                 # We'll set it in Makefile.SH...
7292                 ;;
7293         solaris|netbsd)
7294                 xxx="-R $shrpdir"
7295                 ;;
7296         freebsd)
7297                 xxx="-Wl,-R$shrpdir"
7298                 ;;
7299         linux|irix*|dec_osf)
7300                 xxx="-Wl,-rpath,$shrpdir"
7301                 ;;
7302         next)
7303                 # next doesn't like the default...
7304                 ;;
7305         beos)
7306                 # beos doesn't like the default, either.
7307                 ;;
7308         hpux*)
7309                 # hpux doesn't like the default, either.
7310                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7311                 ;;
7312         *)
7313                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7314                 ;;
7315         esac
7316         case "$xxx" in
7317         '') ;;
7318         *)      
7319                 # Only add $xxx if it isn't already in ccdlflags.
7320                 case " $ccdlflags " in
7321                 *" $xxx "*)     ;;
7322                 *)      ccdlflags="$ccdlflags $xxx"
7323                         cat <<EOM >&4
7324
7325 Adding $xxx to the flags
7326 passed to $ld so that the perl executable will find the 
7327 installed shared $libperl.
7328
7329 EOM
7330                         ;;
7331                 esac
7332                 ;;
7333         esac
7334 fi
7335 # Fix ccdlflags in AIX for building external extensions.
7336 # (For building Perl itself bare -bE:perl.exp is needed,
7337 #  Makefile.SH takes care of this.)
7338 case "$osname" in
7339 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7340 esac
7341 # Respect a hint or command-line value.
7342 case "$shrpenv" in
7343 '') shrpenv="$tmp_shrpenv" ;;
7344 esac
7345 case "$ldlibpthname" in
7346 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7347 none)   ldlibpthname='' ;;
7348 esac
7349
7350 : determine where manual pages are on this system
7351 echo " "
7352 case "$sysman" in
7353 '') 
7354         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7355         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7356         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7357         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7358         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7359         sysman=`./loc . /usr/man/man1 $syspath`
7360         ;;
7361 esac
7362 if $test -d "$sysman"; then
7363         echo "System manual is in $sysman." >&4
7364 else
7365         echo "Could not find manual pages in source form." >&4
7366 fi
7367
7368 : determine where manual pages go
7369 set man1dir man1dir none
7370 eval $prefixit
7371 $cat <<EOM
7372
7373 $spackage has manual pages available in source form.
7374 EOM
7375 case "$nroff" in
7376 nroff)
7377         echo "However, you don't have nroff, so they're probably useless to you."
7378         case "$man1dir" in
7379         '') man1dir="none";;
7380         esac;;
7381 esac
7382 echo "If you don't want the manual sources installed, answer 'none'."
7383 case "$man1dir" in
7384 ' ') dflt=none
7385         ;;
7386 '')
7387         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7388         lookpath="$lookpath $prefixexp/man/p_man/man1"
7389         lookpath="$lookpath $prefixexp/man/u_man/man1"
7390         lookpath="$lookpath $prefixexp/man/man.1"
7391         case "$sysman" in
7392         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7393         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7394         esac
7395         set dflt
7396         eval $prefixup
7397         ;;
7398 *)  dflt="$man1dir"
7399         ;;
7400 esac
7401 echo " "
7402 fn=dn+~
7403 rp="Where do the main $spackage manual pages (source) go?"
7404 . ./getfile
7405 if $test "X$man1direxp" != "X$ansexp"; then
7406         installman1dir=''
7407 fi
7408 man1dir="$ans"
7409 man1direxp="$ansexp"
7410 case "$man1dir" in
7411 '')     man1dir=' '
7412         installman1dir='';;
7413 esac
7414
7415 : Change installation prefix, if necessary.
7416 if $test X"$prefix" != X"$installprefix"; then
7417         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7418 else
7419         installman1dir="$man1direxp"
7420 fi
7421
7422 : What suffix to use on installed man pages
7423
7424 case "$man1dir" in
7425 ' ')
7426         man1ext='0'
7427         ;;
7428 *)
7429         rp="What suffix should be used for the main $spackage man pages?"
7430         case "$man1ext" in
7431         '')     case "$man1dir" in
7432                 *1)  dflt=1 ;;
7433                 *1p) dflt=1p ;;
7434                 *1pm) dflt=1pm ;;
7435                 *l) dflt=l;;
7436                 *n) dflt=n;;
7437                 *o) dflt=o;;
7438                 *p) dflt=p;;
7439                 *C) dflt=C;;
7440                 *L) dflt=L;;
7441                 *L1) dflt=L1;;
7442                 *) dflt=1;;
7443                 esac
7444                 ;;
7445         *)      dflt="$man1ext";;
7446         esac
7447         . ./myread
7448         man1ext="$ans"
7449         ;;
7450 esac
7451
7452 : see if we can have long filenames
7453 echo " "
7454 first=123456789abcdef
7455 $rm -f $first
7456 if (echo hi >$first) 2>/dev/null; then
7457         if $test -f 123456789abcde; then
7458                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7459                 val="$undef"
7460         else
7461                 echo 'You can have filenames longer than 14 characters.'>&4
7462                 val="$define"
7463         fi
7464 else
7465         $cat <<'EOM'
7466 You can't have filenames longer than 14 chars.
7467 You can't even think about them!
7468 EOM
7469         val="$undef"
7470 fi 
7471 set d_flexfnam
7472 eval $setvar
7473 $rm -rf 123456789abcde*
7474
7475 : determine where library module manual pages go
7476 set man3dir man3dir none
7477 eval $prefixit
7478 $cat <<EOM
7479
7480 $spackage has manual pages for many of the library modules.
7481 EOM
7482
7483 case "$nroff" in
7484 nroff)
7485         $cat <<'EOM'
7486 However, you don't have nroff, so they're probably useless to you.
7487 EOM
7488         case "$man3dir" in
7489         '') man3dir="none";;
7490         esac;;
7491 esac
7492
7493 case "$d_flexfnam" in
7494 undef)
7495         $cat <<'EOM'
7496 However, your system can't handle the long file names like File::Basename.3. 
7497 EOM
7498         case "$man3dir" in
7499         '') man3dir="none";;
7500         esac;;
7501 esac
7502
7503 echo "If you don't want the manual sources installed, answer 'none'."
7504 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7505 case "$man3dir" in
7506 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7507         if $test -d "$privlib/man/man3"; then
7508                 cat <<EOM >&4
7509
7510 WARNING:  Previous versions of perl installed man3 pages into
7511 $privlib/man/man3.  This version will suggest a 
7512 new default of $dflt.  
7513 EOM
7514                 tdflt=$dflt
7515                 dflt='n'
7516                 rp='Do you wish to preserve the old behavior?(y/n)'
7517                 . ./myread
7518                 case "$ans" in
7519                 y*) dflt="$privlib/man/man3" ;;
7520                 *)  dflt=$tdflt ;;
7521                 esac
7522     fi
7523         ;;
7524 *)      dflt="$man3dir" ;;
7525 esac
7526 case "$dflt" in
7527 ' ') dflt=none ;;
7528 esac
7529 echo " "
7530 fn=dn+~
7531 rp="Where do the $package library man pages (source) go?"
7532 . ./getfile
7533 man3dir="$ans"
7534 man3direxp="$ansexp"
7535 case "$man3dir" in
7536 '')     man3dir=' '
7537         installman3dir='';;
7538 esac
7539
7540 : Change installation prefix, if necessary.
7541 if $test X"$prefix" != X"$installprefix"; then
7542         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7543 else
7544         installman3dir="$man3direxp"
7545 fi
7546
7547 : What suffix to use on installed man pages
7548 case "$man3dir" in
7549 ' ')
7550         man3ext='0'
7551         ;;
7552 *)
7553         rp="What suffix should be used for the $package library man pages?"
7554         case "$man3ext" in
7555         '')     case "$man3dir" in
7556                 *3)  dflt=3 ;;
7557                 *3p) dflt=3p ;;
7558                 *3pm) dflt=3pm ;;
7559                 *l) dflt=l;;
7560                 *n) dflt=n;;
7561                 *o) dflt=o;;
7562                 *p) dflt=p;;
7563                 *C) dflt=C;;
7564                 *L) dflt=L;;
7565                 *L3) dflt=L3;;
7566                 *) dflt=3;;
7567                 esac
7568                 ;;
7569         *)      dflt="$man3ext";;
7570         esac
7571         . ./myread
7572         man3ext="$ans"
7573         ;;
7574 esac
7575
7576 : see if we have to deal with yellow pages, now NIS.
7577 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7578         if $test -f /usr/etc/nibindd; then
7579                 echo " "
7580                 echo "I'm fairly confident you're on a NeXT."
7581                 echo " "
7582                 rp='Do you get the hosts file via NetInfo?'
7583                 dflt=y
7584                 case "$hostcat" in
7585                 nidump*) ;;
7586                 '') ;;
7587                 *) dflt=n;;
7588                 esac
7589                 . ./myread
7590                 case "$ans" in
7591                 y*) hostcat='nidump hosts .';;
7592                 *)      case "$hostcat" in
7593                         nidump*) hostcat='';;
7594                         esac
7595                         ;;
7596                 esac
7597         fi
7598         case "$hostcat" in
7599         nidump*) ;;
7600         *)
7601                 case "$hostcat" in
7602                 *ypcat*) dflt=y;;
7603                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7604                                 dflt=y
7605                         else
7606                                 dflt=n
7607                         fi;;
7608                 *) dflt=n;;
7609                 esac
7610                 echo " "
7611                 rp='Are you getting the hosts file via yellow pages?'
7612                 . ./myread
7613                 case "$ans" in
7614                 y*) hostcat='ypcat hosts';;
7615                 *) hostcat='cat /etc/hosts';;
7616                 esac
7617                 ;;
7618         esac
7619 fi
7620 case "$hostcat" in
7621 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7622 esac
7623 case "$groupcat" in
7624 '') test -f /etc/group && groupcat='cat /etc/group';;
7625 esac
7626 case "$passcat" in
7627 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7628 esac
7629
7630 : now get the host name
7631 echo " "
7632 echo "Figuring out host name..." >&4
7633 case "$myhostname" in
7634 '') cont=true
7635         echo 'Maybe "hostname" will work...'
7636         if tans=`sh -c hostname 2>&1` ; then
7637                 myhostname=$tans
7638                 phostname=hostname
7639                 cont=''
7640         fi
7641         ;;
7642 *) cont='';;
7643 esac
7644 if $test "$cont"; then
7645         if ./xenix; then
7646                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7647                 if tans=`cat /etc/systemid 2>&1` ; then
7648                         myhostname=$tans
7649                         phostname='cat /etc/systemid'
7650                         echo "Whadyaknow.  Xenix always was a bit strange..."
7651                         cont=''
7652                 fi
7653         elif $test -r /etc/systemid; then
7654                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7655         fi
7656 fi
7657 if $test "$cont"; then
7658         echo 'No, maybe "uuname -l" will work...'
7659         if tans=`sh -c 'uuname -l' 2>&1` ; then
7660                 myhostname=$tans
7661                 phostname='uuname -l'
7662         else
7663                 echo 'Strange.  Maybe "uname -n" will work...'
7664                 if tans=`sh -c 'uname -n' 2>&1` ; then
7665                         myhostname=$tans
7666                         phostname='uname -n'
7667                 else
7668                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7669                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7670                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7671                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7672                         else
7673                                 case "$myhostname" in
7674                                 '') echo "Does this machine have an identity crisis or something?"
7675                                         phostname='';;
7676                                 *)
7677                                         echo "Well, you said $myhostname before..."
7678                                         phostname='echo $myhostname';;
7679                                 esac
7680                         fi
7681                 fi
7682         fi
7683 fi
7684 : you do not want to know about this
7685 set $myhostname
7686 myhostname=$1
7687
7688 : verify guess
7689 if $test "$myhostname" ; then
7690         dflt=y
7691         rp='Your host name appears to be "'$myhostname'".'" Right?"
7692         . ./myread
7693         case "$ans" in
7694         y*) ;;
7695         *) myhostname='';;
7696         esac
7697 fi
7698
7699 : bad guess or no guess
7700 while $test "X$myhostname" = X ; do
7701         dflt=''
7702         rp="Please type the (one word) name of your host:"
7703         . ./myread
7704         myhostname="$ans"
7705 done
7706
7707 : translate upper to lower if necessary
7708 case "$myhostname" in
7709 *[A-Z]*)
7710         echo "(Normalizing case in your host name)"
7711         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7712         ;;
7713 esac
7714
7715 case "$myhostname" in
7716 *.*)
7717         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7718         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7719         echo "(Trimming domain name from host name--host name is now $myhostname)"
7720         ;;
7721 *) case "$mydomain" in
7722         '')
7723                 {
7724                         test "X$hostcat" = "Xypcat hosts" &&
7725                         ypmatch "$myhostname" hosts 2>/dev/null |\
7726                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7727                         $test -s hosts
7728                 } || {
7729                         test "X$hostcat" != "X" &&
7730                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7731                                         /[       ]$myhostname[  . ]/p" > hosts
7732                 }
7733                 tmp_re="[       . ]"
7734                 if $test -f hosts; then
7735                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7736                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7737                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7738                                 hosts | $sort | $uniq | \
7739                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7740                         case `$echo X$dflt` in
7741                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7742                                 dflt=.
7743                                 ;;
7744                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7745                                 ;;
7746                         esac
7747                 else
7748                         echo "(I cannot locate a hosts database anywhere)"
7749                         dflt=.
7750                 fi
7751                 case "$dflt" in
7752                 .)
7753                         tans=`./loc resolv.conf X /etc /usr/etc`
7754                         if $test -f "$tans"; then
7755                                 echo "(Attempting domain name extraction from $tans)"
7756                                 dflt=.`$sed -n -e 's/   / /g' \
7757                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7758                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7759                                 case "$dflt" in
7760                                 .) dflt=.`$sed -n -e 's/        / /g' \
7761                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7762                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7763                                         ;;
7764                                 esac
7765                         fi
7766                         ;;
7767                 esac
7768                 case "$dflt" in
7769                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7770                         dflt=.`sh -c domainname 2>/dev/null`
7771                         case "$dflt" in
7772                         '') dflt='.';;
7773                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7774                         esac
7775                         ;;
7776                 esac
7777                 case "$dflt$osname" in
7778                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7779                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7780                         ;;
7781                 esac
7782                 case "$dflt" in
7783                 .) echo "(Lost all hope -- silly guess then)"
7784                         dflt='.uucp'
7785                         ;;
7786                 esac
7787                 $rm -f hosts
7788                 ;;
7789         *) dflt="$mydomain";;
7790         esac;;
7791 esac
7792 echo " "
7793 rp="What is your domain name?"
7794 . ./myread
7795 tans="$ans"
7796 case "$ans" in
7797 '') ;;
7798 .*) ;;
7799 *) tans=".$tans";;
7800 esac
7801 mydomain="$tans"
7802
7803 : translate upper to lower if necessary
7804 case "$mydomain" in
7805 *[A-Z]*)
7806         echo "(Normalizing case in your domain name)"
7807         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7808         ;;
7809 esac
7810
7811 : a little sanity check here
7812 case "$phostname" in
7813 '') ;;
7814 *)
7815         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7816         $myhostname$mydomain|$myhostname) ;;
7817         *)
7818                 case "$phostname" in
7819                 sed*)
7820                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7821                         ;;
7822                 *)
7823                         echo "(That doesn't agree with your $phostname command, by the way.)"
7824                         ;;
7825                 esac
7826         ;;
7827         esac
7828         ;;
7829 esac
7830
7831 $cat <<EOM
7832
7833 I need to get your e-mail address in Internet format if possible, i.e.
7834 something like user@host.domain. Please answer accurately since I have
7835 no easy means to double check it. The default value provided below
7836 is most probably close to reality but may not be valid from outside
7837 your organization...
7838
7839 EOM
7840 cont=x
7841 while test "$cont"; do
7842         case "$cf_email" in
7843         '') dflt="$cf_by@$myhostname$mydomain";;
7844         *) dflt="$cf_email";;
7845         esac
7846         rp='What is your e-mail address?'
7847         . ./myread
7848         cf_email="$ans"
7849         case "$cf_email" in
7850         *@*.*) cont='' ;;
7851         *)
7852                 rp='Address does not look like an Internet one.  Use it anyway?'
7853                 case "$fastread" in
7854                 yes) dflt=y ;;
7855                 *) dflt=n ;;
7856                 esac
7857                 . ./myread
7858                 case "$ans" in
7859                 y*) cont='' ;;
7860                 *) echo " " ;;
7861                 esac
7862                 ;;
7863         esac
7864 done
7865
7866 $cat <<EOM
7867
7868 If you or somebody else will be maintaining perl at your site, please
7869 fill in the correct e-mail address here so that they may be contacted
7870 if necessary. Currently, the "perlbug" program included with perl
7871 will send mail to this address in addition to perlbug@perl.org. You may
7872 enter "none" for no administrator.
7873
7874 EOM
7875 case "$perladmin" in
7876 '') dflt="$cf_email";;
7877 *) dflt="$perladmin";;
7878 esac
7879 rp='Perl administrator e-mail address'
7880 . ./myread
7881 perladmin="$ans"
7882
7883 : determine whether to only install version-specific parts.
7884 echo " "
7885 $cat <<EOM
7886 Do you want to install only the version-specific parts of the perl
7887 distribution?  Usually you do *not* want to do this.
7888 EOM
7889 case "$versiononly" in
7890 "$define"|[Yy]*|true) dflt='y' ;;
7891 *) dflt='n';
7892 esac
7893 rp="Do you want to install only the version-specific parts of perl?"
7894 . ./myread
7895 case "$ans" in
7896 [yY]*)  val="$define";;
7897 *)      val="$undef" ;;
7898 esac
7899 set versiononly
7900 eval $setvar
7901
7902 : figure out how to guarantee perl startup
7903 case "$startperl" in
7904 '')
7905         case "$sharpbang" in
7906         *!)
7907                 $cat <<EOH
7908
7909 I can use the #! construct to start perl on your system. This will
7910 make startup of perl scripts faster, but may cause problems if you
7911 want to share those scripts and perl is not in a standard place
7912 ($binexp/perl) on all your platforms. The alternative is to force
7913 a shell by starting the script with a single ':' character.
7914
7915 EOH
7916                 case "$versiononly" in
7917                 "$define")      dflt="$binexp/perl$version";;  
7918                 *)              dflt="$binexp/perl";;
7919                 esac
7920                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7921                 . ./myread
7922                 case "$ans" in
7923                 none)   startperl=": # use perl";;
7924                 *)      startperl="#!$ans"
7925                         if $test 30 -lt `echo "$ans" | wc -c`; then
7926                                 $cat >&4 <<EOM
7927
7928 WARNING:  Some systems limit the #! command to 32 characters.
7929 If you experience difficulty running Perl scripts with #!, try
7930 installing Perl in a directory with a shorter pathname.
7931
7932 EOM
7933                         fi ;;
7934                 esac
7935                 ;;
7936         *) startperl=": # use perl"
7937                 ;;
7938         esac
7939         ;;
7940 esac
7941 echo "I'll use $startperl to start perl scripts."
7942
7943 : figure best path for perl in scripts
7944 case "$perlpath" in
7945 '')
7946         perlpath="$binexp/perl"
7947         case "$startperl" in
7948         *!*) ;;
7949         *)
7950                 $cat <<EOH
7951
7952 I will use the "eval 'exec'" idiom to start Perl on your system.
7953 I can use the full path of your Perl binary for this purpose, but
7954 doing so may cause problems if you want to share those scripts and
7955 Perl is not always in a standard place ($binexp/perl).
7956
7957 EOH
7958                 dflt="$binexp/perl"
7959                 rp="What path shall I use in \"eval 'exec'\"?"
7960                 . ./myread
7961                 perlpath="$ans"
7962                 ;;
7963         esac
7964         ;;
7965 esac
7966 case "$startperl" in
7967 *!*)    ;;
7968 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7969 esac
7970
7971 : determine where public executable scripts go
7972 set scriptdir scriptdir
7973 eval $prefixit
7974 case "$scriptdir" in
7975 '')
7976         dflt="$bin"
7977         : guess some guesses
7978         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7979         $test -d /usr/share/bin     && dflt=/usr/share/bin
7980         $test -d /usr/local/script  && dflt=/usr/local/script
7981         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7982         $test -d $prefixexp/script  && dflt=$prefixexp/script
7983         set dflt
7984         eval $prefixup
7985         ;;
7986 *)  dflt="$scriptdir"
7987         ;;
7988 esac
7989 $cat <<EOM
7990  
7991 Some installations have a separate directory just for executable scripts so
7992 that they can mount it across multiple architectures but keep the scripts in
7993 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7994 Or you might just lump your scripts in with all your other executables.
7995  
7996 EOM
7997 fn=d~
7998 rp='Where do you keep publicly executable scripts?'
7999 . ./getfile
8000 if $test "X$ansexp" != "X$scriptdirexp"; then
8001         installscript=''
8002 fi
8003 scriptdir="$ans"
8004 scriptdirexp="$ansexp"
8005 : Change installation prefix, if necessary.
8006 if $test X"$prefix" != X"$installprefix"; then
8007         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8008 else
8009         installscript="$scriptdirexp"
8010 fi
8011
8012 : determine where add-on public executables go
8013 case "$sitebin" in
8014 '')     dflt=$siteprefix/bin ;;
8015 *)      dflt=$sitebin ;;
8016 esac
8017 fn=d~
8018 rp='Pathname where the add-on public executables should be installed?'
8019 . ./getfile
8020 sitebin="$ans"
8021 sitebinexp="$ansexp"
8022 : Change installation prefix, if necessary.
8023 if $test X"$prefix" != X"$installprefix"; then
8024         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8025 else
8026         installsitebin="$sitebinexp"
8027 fi
8028
8029 : define an is-a-typedef? function
8030 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8031 case "$inclist" in
8032 "") inclist="sys/types.h";;
8033 esac;
8034 eval "varval=\$$var";
8035 case "$varval" in
8036 "")
8037         $rm -f temp.c;
8038         for inc in $inclist; do
8039                 echo "#include <$inc>" >>temp.c;
8040         done;
8041         echo "#ifdef $type" >> temp.c;
8042         echo "printf(\"We have $type\");" >> temp.c;
8043         echo "#endif" >> temp.c;
8044         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8045         if $contains $type temp.E >/dev/null 2>&1; then
8046                 eval "$var=\$type";
8047         else
8048                 eval "$var=\$def";
8049         fi;
8050         $rm -f temp.?;;
8051 *) eval "$var=\$varval";;
8052 esac'
8053
8054 : define an is-a-typedef? function that prompts if the type is not available.
8055 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8056 case "$inclist" in
8057 "") inclist="sys/types.h";;
8058 esac;
8059 eval "varval=\$$var";
8060 case "$varval" in
8061 "")
8062         $rm -f temp.c;
8063         for inc in $inclist; do
8064                 echo "#include <$inc>" >>temp.c;
8065         done;
8066         echo "#ifdef $type" >> temp.c;
8067         echo "printf(\"We have $type\");" >> temp.c;
8068         echo "#endif" >> temp.c;
8069         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8070         echo " " ;
8071         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8072         if $contains $type temp.E >/dev/null 2>&1; then
8073                 echo "$type found." >&4;
8074                 eval "$var=\$type";
8075         else
8076                 echo "$type NOT found." >&4;
8077                 dflt="$def";
8078                 . ./myread ;
8079                 eval "$var=\$ans";
8080         fi;
8081         $rm -f temp.?;;
8082 *) eval "$var=\$varval";;
8083 esac'
8084
8085 : see what type lseek is declared as in the kernel
8086 rp="What is the type used for lseek's offset on this system?"
8087 set off_t lseektype long stdio.h sys/types.h
8088 eval $typedef_ask
8089
8090 echo " "
8091 echo "Checking to see how big your file offsets are..." >&4
8092 $cat >try.c <<EOCP
8093 #include <sys/types.h>
8094 #include <stdio.h>
8095 int main()
8096 {
8097     printf("%d\n", (int)sizeof($lseektype));
8098     return(0); 
8099 }
8100 EOCP
8101 set try
8102 if eval $compile_ok; then
8103         lseeksize=`$run ./try`
8104         echo "Your file offsets are $lseeksize bytes long."
8105 else
8106         dflt=$longsize
8107         echo " "
8108         echo "(I can't seem to compile the test program.  Guessing...)"
8109         rp="What is the size of your file offsets (in bytes)?"
8110         . ./myread
8111         lseeksize="$ans"
8112 fi
8113 $rm -f try.c try
8114
8115 : see what type file positions are declared as in the library
8116 rp="What is the type for file position used by fsetpos()?"
8117 set fpos_t fpostype long stdio.h sys/types.h
8118 eval $typedef_ask
8119
8120 echo " "
8121 case "$fpostype" in
8122 *_t) zzz="$fpostype"    ;;
8123 *)   zzz="fpos_t"       ;;
8124 esac
8125 echo "Checking the size of $zzz..." >&4 
8126 cat > try.c <<EOCP
8127 #include <sys/types.h>
8128 #include <stdio.h>
8129 int main() {
8130     printf("%d\n", (int)sizeof($fpostype));
8131     exit(0);
8132 }
8133 EOCP
8134 set try
8135 if eval $compile_ok; then
8136         yyy=`$run ./try`
8137         case "$yyy" in
8138         '')     fpossize=4
8139                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8140                 ;;
8141         *)      fpossize=$yyy
8142                 echo "Your $zzz is $fpossize bytes long."
8143                 ;;
8144         esac
8145 else
8146         dflt="$longsize"
8147         echo " " >&4
8148         echo "(I can't compile the test program.  Guessing...)" >&4
8149         rp="What is the size of your file positions (in bytes)?"
8150         . ./myread
8151         fpossize="$ans"
8152 fi
8153
8154
8155
8156 # Backward compatibility (uselfs is deprecated).
8157 case "$uselfs" in
8158 "$define"|true|[yY]*)
8159         cat <<EOM >&4
8160
8161 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8162 EOM
8163         uselargefiles="$define"
8164         ;;
8165 esac                          
8166
8167 case "$lseeksize:$fpossize" in
8168 8:8) cat <<EOM
8169
8170 You can have files larger than 2 gigabytes.
8171 EOM
8172    val="$define" ;;
8173 *)    case "$uselargefiles" in
8174    "$undef"|false|[nN]*) dflt='n' ;;
8175    *)   dflt='y' ;;
8176    esac
8177    cat <<EOM
8178
8179 Perl can be built to understand large files (files larger than 2 gigabytes)
8180 on some systems.  To do so, Configure can be run with -Duselargefiles.
8181
8182 If this doesn't make any sense to you, just accept the default '$dflt'.
8183 EOM
8184    rp='Try to understand large files, if available?'
8185    . ./myread
8186    case "$ans" in
8187    y|Y)         val="$define" ;;
8188    *)           val="$undef"  ;;
8189    esac
8190    ;;
8191 esac
8192 set uselargefiles
8193 eval $setvar
8194 case "$uselargefiles" in
8195 "$define")
8196 : Look for a hint-file generated 'call-back-unit'.  If the
8197 : user has specified that a large files perl is to be built,
8198 : we may need to set or change some other defaults.
8199         if $test -f uselargefiles.cbu; then
8200                 echo "Your platform has some specific hints for large file builds, using them..."
8201                 . ./uselargefiles.cbu
8202                 echo " "
8203                 echo "Rechecking to see how big your file offsets are..." >&4
8204                 $cat >try.c <<EOCP
8205 #include <sys/types.h>
8206 #include <stdio.h>
8207 int main()
8208 {
8209     printf("%d\n", (int)sizeof($lseektype));
8210     return(0); 
8211 }
8212 EOCP
8213                 set try
8214                 if eval $compile_ok; then
8215                         lseeksize=`$run ./try`
8216                         $echo "Your file offsets are now $lseeksize bytes long."
8217                 else
8218                         dflt="$lseeksize"
8219                         echo " "
8220                         echo "(I can't seem to compile the test program.  Guessing...)"
8221                         rp="What is the size of your file offsets (in bytes)?"
8222                         . ./myread
8223                         lseeksize="$ans"
8224                 fi
8225                 case "$fpostype" in
8226                 *_t) zzz="$fpostype"    ;;
8227                 *)   zzz="fpos_t"       ;;
8228                 esac
8229                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8230                 $cat > try.c <<EOCP
8231 #include <sys/types.h>
8232 #include <stdio.h>
8233 int main() {
8234     printf("%d\n", (int)sizeof($fpostype));
8235     exit(0);
8236 }
8237 EOCP
8238                 set try
8239                 if eval $compile_ok; then
8240                         yyy=`$run ./try`
8241                         dflt="$lseeksize"
8242                         case "$yyy" in
8243                         '')     echo " "
8244                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8245                                 ;;
8246                         *)      fpossize=$yyy
8247                                 echo " $fpossize bytes." >&4
8248                                 ;;
8249                         esac
8250                 else
8251                         dflt="$fpossize"
8252                         echo " "
8253                         echo "(I can't compile the test program.  Guessing...)" >&4
8254                         rp="What is the size of your file positions (in bytes)?"
8255                         . ./myread
8256                         fpossize="$ans"
8257                 fi
8258                 $rm -f try.c try
8259         fi
8260         ;;
8261 esac
8262
8263 case "$vendorprefix" in
8264 '')     d_vendorbin="$undef"
8265         vendorbin=''
8266         vendorbinexp=''
8267         ;;
8268 *)      d_vendorbin="$define"
8269         : determine where vendor-supplied executables go.
8270         case "$vendorbin" in
8271         '') dflt=$vendorprefix/bin ;;
8272         *)      dflt="$vendorbin" ;;
8273         esac
8274         fn=d~+
8275         rp='Pathname for the vendor-supplied executables directory?'
8276         . ./getfile
8277         vendorbin="$ans"
8278         vendorbinexp="$ansexp"
8279         ;;
8280 esac
8281 : Change installation prefix, if necessary.
8282 if $test X"$prefix" != X"$installprefix"; then
8283         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8284 else
8285         installvendorbin="$vendorbinexp"
8286 fi
8287
8288 : see if qgcvt exists
8289 set qgcvt d_qgcvt
8290 eval $inlibc
8291
8292 echo " "
8293
8294 if $test X"$d_longdbl" = X"$define"; then
8295
8296 echo "Checking how to print long doubles..." >&4
8297
8298 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8299         $cat >try.c <<'EOCP'
8300 #include <sys/types.h>
8301 #include <stdio.h>
8302 int main() {
8303   double d = 123.456;
8304   printf("%.3f\n", d);
8305 }
8306 EOCP
8307         set try
8308         if eval $compile; then
8309                 yyy=`$run ./try`
8310                 case "$yyy" in
8311                 123.456)
8312                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8313                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8314                         echo "We will use %f."
8315                         ;;
8316                 esac
8317         fi
8318 fi
8319
8320 if $test X"$sPRIfldbl" = X; then
8321         $cat >try.c <<'EOCP'
8322 #include <sys/types.h>
8323 #include <stdio.h>
8324 int main() {
8325   long double d = 123.456;
8326   printf("%.3Lf\n", d);
8327 }
8328 EOCP
8329         set try
8330         if eval $compile; then
8331                 yyy=`$run ./try`
8332                 case "$yyy" in
8333                 123.456)
8334                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8335                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8336                         echo "We will use %Lf."
8337                         ;;
8338                 esac
8339         fi
8340 fi
8341
8342 if $test X"$sPRIfldbl" = X; then
8343         $cat >try.c <<'EOCP'
8344 #include <sys/types.h>
8345 #include <stdio.h>
8346 int main() {
8347   long double d = 123.456;
8348   printf("%.3llf\n", d);
8349 }
8350 EOCP
8351         set try
8352         if eval $compile; then
8353                 yyy=`$run ./try`
8354                 case "$yyy" in
8355                 123.456)
8356                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8357                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8358                         echo "We will use %llf."
8359                         ;;
8360                 esac
8361         fi
8362 fi
8363
8364 if $test X"$sPRIfldbl" = X; then
8365         $cat >try.c <<'EOCP'
8366 #include <sys/types.h>
8367 #include <stdio.h>
8368 int main() {
8369   long double d = 123.456;
8370   printf("%.3lf\n", d);
8371 }
8372 EOCP
8373         set try
8374         if eval $compile; then
8375                 yyy=`$run ./try`
8376                 case "$yyy" in
8377                 123.456)
8378                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8379                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8380                         echo "We will use %lf."
8381                         ;;
8382                 esac
8383         fi
8384 fi
8385
8386 if $test X"$sPRIfldbl" = X; then
8387         echo "Cannot figure out how to print long doubles." >&4
8388 else
8389         sSCNfldbl=$sPRIfldbl    # expect consistency
8390 fi
8391
8392 $rm -f try try.*
8393
8394 fi # d_longdbl
8395
8396 case "$sPRIfldbl" in
8397 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8398         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8399         d_SCNfldbl="$undef";
8400         ;;
8401 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8402         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8403         d_SCNfldbl="$define";
8404         ;;
8405 esac
8406
8407 : Check how to convert floats to strings.
8408 echo " "
8409 echo "Checking for an efficient way to convert floats to strings."
8410 echo " " > try.c
8411 case "$uselongdouble" in
8412 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8413 esac
8414 case "$d_longdbl" in
8415 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8416 esac
8417 case "$d_PRIgldbl" in
8418 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8419 esac
8420 $cat >>try.c <<EOP
8421 #ifdef TRY_gconvert
8422 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8423 char *myname = "gconvert";
8424 #endif
8425 #ifdef TRY_gcvt
8426 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8427 char *myname = "gcvt";
8428 #endif
8429 #ifdef TRY_qgcvt
8430 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8431 char *myname = "qgcvt";
8432 #define DOUBLETYPE long double
8433 #endif
8434 #ifdef TRY_sprintf
8435 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8436 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8437 #else
8438 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8439 #endif
8440 char *myname = "sprintf";
8441 #endif
8442
8443 #ifndef DOUBLETYPE
8444 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8445 #define DOUBLETYPE long double
8446 #else
8447 #define DOUBLETYPE double
8448 #endif
8449 #endif
8450
8451 #include <stdio.h>
8452
8453 #define I_STDLIB $i_stdlib
8454 #ifdef I_STDLIB
8455 #include <stdlib.h>
8456 #endif
8457
8458 int
8459 checkit(expect, got)
8460 char *expect;
8461 char *got;
8462 {
8463     if (strcmp(expect, got)) {
8464                 printf("%s oddity:  Expected %s, got %s\n",
8465                         myname, expect, got);
8466                 exit(1);
8467         }
8468 }
8469
8470 int main()
8471
8472         char buf[64]; 
8473         buf[63] = '\0';
8474
8475         /* This must be 1st test on (which?) platform */
8476         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8477         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8478         checkit("0.1", buf);
8479
8480         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8481         checkit("1", buf);
8482
8483         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8484         checkit("1.1", buf);
8485
8486         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8487         checkit("1.01", buf);
8488
8489         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8490         checkit("1.001", buf);
8491
8492         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8493         checkit("1.0001", buf);
8494
8495         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8496         checkit("1.00001", buf);
8497
8498         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8499         checkit("1.000001", buf);
8500
8501         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8502         checkit("0", buf);
8503
8504         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8505         checkit("-1", buf);
8506
8507         /* Some Linux gcvt's give 1.e+5 here. */
8508         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8509         checkit("100000", buf);
8510         
8511         /* Some Linux gcvt's give -1.e+5 here. */
8512         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8513         checkit("-100000", buf);
8514
8515         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8516         checkit("123.456", buf);
8517
8518         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8519         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8520         if (strlen(buf) > 5)
8521             checkit("1e+030", buf); /* for Microsoft */
8522         else
8523             checkit("1e+30", buf);
8524
8525         exit(0);
8526 }
8527 EOP
8528 case "$d_Gconvert" in
8529 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8530 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8531 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8532 *) xxx_list='gconvert gcvt sprintf' ;;
8533 esac
8534
8535 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8536 "$define$define$define")
8537     # for long doubles prefer first qgcvt, then sprintf
8538     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8539     xxx_list="sprintf $xxx_list"
8540     case "$d_qgcvt" in
8541     "$define") xxx_list="qgcvt $xxx_list" ;;
8542     esac
8543     ;;
8544 esac
8545
8546 for xxx_convert in $xxx_list; do
8547         echo "Trying $xxx_convert..."
8548         $rm -f try try$_o
8549         set try -DTRY_$xxx_convert
8550         if eval $compile; then
8551                 echo "$xxx_convert() found." >&4
8552                 if $run ./try; then
8553                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8554                         break;
8555                 else
8556                         echo "...But $xxx_convert didn't work as I expected."
8557                 fi
8558         else
8559                 echo "$xxx_convert NOT found." >&4
8560         fi
8561 done
8562         
8563 case "$xxx_convert" in
8564 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8565 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8566 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8567 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8568    "$define$define$define")
8569       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8570    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8571    esac
8572    ;;  
8573 esac
8574
8575 : see if _fwalk exists
8576 set fwalk d__fwalk
8577 eval $inlibc
8578
8579 : Initialize h_fcntl
8580 h_fcntl=false
8581
8582 : Initialize h_sysfile
8583 h_sysfile=false
8584
8585 : access call always available on UNIX
8586 set access d_access
8587 eval $inlibc
8588
8589 : locate the flags for 'access()'
8590 case "$d_access" in
8591 "$define")
8592         echo " "
8593         $cat >access.c <<'EOCP'
8594 #include <sys/types.h>
8595 #ifdef I_FCNTL
8596 #include <fcntl.h>
8597 #endif
8598 #ifdef I_SYS_FILE
8599 #include <sys/file.h>
8600 #endif
8601 #ifdef I_UNISTD
8602 #include <unistd.h>
8603 #endif
8604 int main() {
8605         exit(R_OK);
8606 }
8607 EOCP
8608         : check sys/file.h first, no particular reason here
8609         if $test `./findhdr sys/file.h` && \
8610                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8611                 h_sysfile=true;
8612                 echo "<sys/file.h> defines the *_OK access constants." >&4
8613         elif $test `./findhdr fcntl.h` && \
8614                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8615                 h_fcntl=true;
8616                 echo "<fcntl.h> defines the *_OK access constants." >&4
8617         elif $test `./findhdr unistd.h` && \
8618                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8619                 echo "<unistd.h> defines the *_OK access constants." >&4
8620         else
8621                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8622         fi
8623         ;;
8624 esac
8625 $rm -f access*
8626
8627 : see if accessx exists
8628 set accessx d_accessx
8629 eval $inlibc
8630
8631 : see if alarm exists
8632 set alarm d_alarm
8633 eval $inlibc
8634
8635 : see if atolf exists
8636 set atolf d_atolf
8637 eval $inlibc
8638
8639 : see if atoll exists
8640 set atoll d_atoll
8641 eval $inlibc
8642
8643 : Look for GNU-cc style attribute checking
8644 echo " "
8645 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8646 $cat >attrib.c <<'EOCP'
8647 #include <stdio.h>
8648 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8649 EOCP
8650 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8651         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8652                 echo "Your C compiler doesn't fully support __attribute__."
8653                 val="$undef"
8654         else
8655                 echo "Your C compiler supports __attribute__."
8656                 val="$define"
8657         fi
8658 else
8659         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8660         val="$undef"
8661 fi
8662 set d_attribut
8663 eval $setvar
8664 $rm -f attrib*
8665
8666 : see if bcmp exists
8667 set bcmp d_bcmp
8668 eval $inlibc
8669
8670 : see if bcopy exists
8671 set bcopy d_bcopy
8672 eval $inlibc
8673
8674 : see if this is a unistd.h system
8675 set unistd.h i_unistd
8676 eval $inhdr
8677
8678 : see if getpgrp exists
8679 set getpgrp d_getpgrp
8680 eval $inlibc
8681
8682 case "$d_getpgrp" in
8683 "$define")
8684         echo " "
8685         echo "Checking to see which flavor of getpgrp is in use..."
8686         $cat >try.c <<EOP
8687 #$i_unistd I_UNISTD
8688 #include <sys/types.h>
8689 #ifdef I_UNISTD
8690 #  include <unistd.h>
8691 #endif
8692 int main()
8693 {
8694         if (getuid() == 0) {
8695                 printf("(I see you are running Configure as super-user...)\n");
8696                 setuid(1);
8697         }
8698 #ifdef TRY_BSD_PGRP
8699         if (getpgrp(1) == 0)
8700                 exit(0);
8701 #else
8702         if (getpgrp() > 0)
8703                 exit(0);
8704 #endif
8705         exit(1);
8706 }
8707 EOP
8708         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8709                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8710                 val="$define"
8711         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8712                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8713                 val="$undef"
8714         else
8715                 echo "I can't seem to compile and run the test program."
8716                 if ./usg; then
8717                         xxx="a USG one, i.e. you use getpgrp()."
8718                 else
8719                         # SVR4 systems can appear rather BSD-ish.
8720                         case "$i_unistd" in
8721                         $undef)
8722                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8723                                 val="$define"
8724                                 ;;
8725                         $define)
8726                                 xxx="probably a USG one, i.e. you use getpgrp()."
8727                                 val="$undef"
8728                                 ;;
8729                         esac
8730                 fi
8731                 echo "Assuming your getpgrp is $xxx" >&4
8732         fi
8733         ;;
8734 *) val="$undef";;
8735 esac
8736 set d_bsdgetpgrp
8737 eval $setvar
8738 $rm -f try try.*
8739
8740 : see if setpgrp exists
8741 set setpgrp d_setpgrp
8742 eval $inlibc
8743
8744 case "$d_setpgrp" in
8745 "$define")
8746         echo " "
8747         echo "Checking to see which flavor of setpgrp is in use..."
8748         $cat >try.c <<EOP
8749 #$i_unistd I_UNISTD
8750 #include <sys/types.h>
8751 #ifdef I_UNISTD
8752 #  include <unistd.h>
8753 #endif
8754 int main()
8755 {
8756         if (getuid() == 0) {
8757                 printf("(I see you are running Configure as super-user...)\n");
8758                 setuid(1);
8759         }
8760 #ifdef TRY_BSD_PGRP
8761         if (-1 == setpgrp(1, 1))
8762                 exit(0);
8763 #else
8764         if (setpgrp() != -1)
8765                 exit(0);
8766 #endif
8767         exit(1);
8768 }
8769 EOP
8770         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8771                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8772                 val="$define"
8773         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8774                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8775                 val="$undef"
8776         else
8777                 echo "(I can't seem to compile and run the test program.)"
8778                 if ./usg; then
8779                         xxx="a USG one, i.e. you use setpgrp()."
8780                 else
8781                         # SVR4 systems can appear rather BSD-ish.
8782                         case "$i_unistd" in
8783                         $undef)
8784                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8785                                 val="$define"
8786                                 ;;
8787                         $define)
8788                                 xxx="probably a USG one, i.e. you use setpgrp()."
8789                                 val="$undef"
8790                                 ;;
8791                         esac
8792                 fi
8793                 echo "Assuming your setpgrp is $xxx" >&4
8794         fi
8795         ;;
8796 *) val="$undef";;
8797 esac
8798 set d_bsdsetpgrp
8799 eval $setvar
8800 $rm -f try try.*
8801 : see if bzero exists
8802 set bzero d_bzero
8803 eval $inlibc
8804
8805 : see if signal is declared as pointer to function returning int or void
8806 echo " "
8807 xxx=`./findhdr signal.h`
8808 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8809 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8810         echo "You have int (*signal())() instead of void." >&4
8811         val="$undef"
8812 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8813         echo "You have void (*signal())()." >&4
8814         val="$define"
8815 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8816         echo "You have int (*signal())() instead of void." >&4
8817         val="$undef"
8818 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8819         echo "You have void (*signal())()." >&4
8820         val="$define"
8821 else
8822         case "$d_voidsig" in
8823         '')
8824         echo "I can't determine whether signal handler returns void or int..." >&4
8825                 dflt=void
8826                 rp="What type does your signal handler return?"
8827                 . ./myread
8828                 case "$ans" in
8829                 v*) val="$define";;
8830                 *) val="$undef";;
8831                 esac;;
8832         "$define")
8833                 echo "As you already told me, signal handler returns void." >&4
8834                 val="$define"
8835                 ;;
8836         *)      echo "As you already told me, signal handler returns int." >&4
8837                 val="$undef"
8838                 ;;
8839         esac
8840 fi
8841 set d_voidsig
8842 eval $setvar
8843 case "$d_voidsig" in
8844 "$define") signal_t="void";;
8845 *) signal_t="int";;
8846 esac
8847 $rm -f $$.tmp
8848
8849 : check for ability to cast large floats to 32-bit ints.
8850 echo " "
8851 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8852 if $test "$intsize" -ge 4; then
8853         xxx=int
8854 else
8855         xxx=long
8856 fi
8857 $cat >try.c <<EOCP
8858 #include <stdio.h>
8859 #include <sys/types.h>
8860 #include <signal.h>
8861 $signal_t blech(s) int s; { exit(3); }
8862 int main()
8863 {
8864         $xxx i32;
8865         double f, g;
8866         int result = 0;
8867         char str[16];
8868         signal(SIGFPE, blech);
8869
8870         /* Don't let compiler optimize the test away.  Store the number 
8871            in a writable string for gcc to pass to sscanf under HP/UX.
8872         */
8873         sprintf(str, "2147483647");
8874         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8875         g = 10 * f;
8876         i32  = ($xxx) g;
8877
8878         /* x86 processors will probably give 0x8000 0000, which is a
8879        sign change.  We don't want that.  We want to mimic SPARC
8880            behavior here, which is to preserve the sign and give
8881            back 0x7fff ffff.
8882         */
8883         if (i32 != ($xxx) f)
8884                 result |= 1;
8885         exit(result);
8886 }
8887 EOCP
8888 set try
8889 if eval $compile_ok; then
8890         $run ./try
8891         yyy=$?
8892 else
8893         echo "(I can't seem to compile the test program--assuming it can't)"
8894         yyy=1
8895 fi
8896 case "$yyy" in
8897 0)      val="$define"
8898         echo "Yup, it can."
8899         ;;
8900 *)      val="$undef"
8901         echo "Nope, it can't."
8902         ;;
8903 esac
8904 set d_casti32
8905 eval $setvar
8906 $rm -f try try.*
8907
8908 : check for ability to cast negative floats to unsigned
8909 echo " "
8910 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8911 $cat >try.c <<EOCP
8912 #include <stdio.h>
8913 #include <sys/types.h>
8914 #include <signal.h>
8915 $signal_t blech(s) int s; { exit(7); }
8916 $signal_t blech_in_list(s) int s; { exit(4); }
8917 unsigned long dummy_long(p) unsigned long p; { return p; }
8918 unsigned int dummy_int(p) unsigned int p; { return p; }
8919 unsigned short dummy_short(p) unsigned short p; { return p; }
8920 int main()
8921 {
8922         double f;
8923         unsigned long along;
8924         unsigned int aint;
8925         unsigned short ashort;
8926         int result = 0;
8927         char str[16];
8928         
8929         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8930            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8931            optimized the whole file away
8932         */
8933         /* Store the number in a writable string for gcc to pass to 
8934            sscanf under HP/UX.
8935         */
8936         sprintf(str, "-123");
8937         sscanf(str, "%lf", &f);  /* f = -123.; */
8938
8939         signal(SIGFPE, blech);
8940         along = (unsigned long)f;
8941         aint = (unsigned int)f;
8942         ashort = (unsigned short)f;
8943         if (along != (unsigned long)-123)
8944                 result |= 1;
8945         if (aint != (unsigned int)-123)
8946                 result |= 1;
8947         if (ashort != (unsigned short)-123)
8948                 result |= 1;
8949         sprintf(str, "1073741824.");
8950         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8951         f = f + f;
8952         along = 0;
8953         along = (unsigned long)f;
8954         if (along != 0x80000000)
8955                 result |= 2;
8956         f -= 1.;
8957         along = 0;
8958         along = (unsigned long)f;
8959         if (along != 0x7fffffff)
8960                 result |= 1;
8961         f += 2.;
8962         along = 0;
8963         along = (unsigned long)f;
8964         if (along != 0x80000001)
8965                 result |= 2;
8966         if (result)
8967                 exit(result);
8968         signal(SIGFPE, blech_in_list);
8969         sprintf(str, "123.");
8970         sscanf(str, "%lf", &f);  /* f = 123.; */
8971         along = dummy_long((unsigned long)f);
8972         aint = dummy_int((unsigned int)f);
8973         ashort = dummy_short((unsigned short)f);
8974         if (along != (unsigned long)123)
8975                 result |= 4;
8976         if (aint != (unsigned int)123)
8977                 result |= 4;
8978         if (ashort != (unsigned short)123)
8979                 result |= 4;
8980         exit(result);
8981
8982 }
8983 EOCP
8984 set try
8985 if eval $compile_ok; then
8986         $run ./try
8987         castflags=$?
8988 else
8989         echo "(I can't seem to compile the test program--assuming it can't)"
8990         castflags=7
8991 fi
8992 case "$castflags" in
8993 0)      val="$define"
8994         echo "Yup, it can."
8995         ;;
8996 *)      val="$undef"
8997         echo "Nope, it can't."
8998         ;;
8999 esac
9000 set d_castneg
9001 eval $setvar
9002 $rm -f try.*
9003
9004 : see if vprintf exists
9005 echo " "
9006 if set vprintf val -f d_vprintf; eval $csym; $val; then
9007         echo 'vprintf() found.' >&4
9008         val="$define"
9009         $cat >try.c <<'EOF'
9010 #include <varargs.h>
9011
9012 int main() { xxx("foo"); }
9013
9014 xxx(va_alist)
9015 va_dcl
9016 {
9017         va_list args;
9018         char buf[10];
9019
9020         va_start(args);
9021         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9022 }
9023 EOF
9024         set try
9025         if eval $compile && $run ./try; then
9026                 echo "Your vsprintf() returns (int)." >&4
9027                 val2="$undef"
9028         else
9029                 echo "Your vsprintf() returns (char*)." >&4
9030                 val2="$define"
9031         fi
9032 else
9033         echo 'vprintf() NOT found.' >&4
9034                 val="$undef"
9035                 val2="$undef"
9036 fi
9037 $rm -f try try.*
9038 set d_vprintf
9039 eval $setvar
9040 val=$val2
9041 set d_charvspr
9042 eval $setvar
9043
9044 : see if chown exists
9045 set chown d_chown
9046 eval $inlibc
9047
9048 : see if chroot exists
9049 set chroot d_chroot
9050 eval $inlibc
9051
9052 : see if chsize exists
9053 set chsize d_chsize
9054 eval $inlibc
9055
9056 hasstruct='varname=$1; struct=$2; shift; shift;
9057 while $test $# -ge 2; do
9058         case "$1" in
9059         $define) echo "#include <$2>";;
9060         esac ;
9061     shift 2;
9062 done > try.c;
9063 echo "int main () { struct $struct foo; }" >> try.c;
9064 set try;
9065 if eval $compile; then
9066         val="$define";
9067 else
9068         val="$undef";
9069 fi;
9070 set $varname;
9071 eval $setvar;
9072 $rm -f try.c try.o'
9073
9074 : see if sys/types.h has to be included
9075 set sys/types.h i_systypes
9076 eval $inhdr
9077
9078 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9079 while $test $# -ge 2; do
9080         case "$1" in
9081         $define) echo "#include <$2>";;
9082         esac ;
9083     shift 2;
9084 done > try.c;
9085 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9086 set try;
9087 if eval $compile; then
9088         val="$define";
9089 else
9090         val="$undef";
9091 fi;
9092 set $varname;
9093 eval $setvar;
9094 $rm -f try.c try.o'
9095
9096 socketlib=''
9097 sockethdr=''
9098 : see whether socket exists
9099 echo " "
9100 $echo $n "Hmm... $c" >&4
9101 if set socket val -f d_socket; eval $csym; $val; then
9102         echo "Looks like you have Berkeley networking support." >&4
9103         d_socket="$define"
9104         if set setsockopt val -f; eval $csym; $val; then
9105                 d_oldsock="$undef"
9106         else
9107                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9108                 d_oldsock="$define"
9109         fi
9110 else
9111         if $contains socklib libc.list >/dev/null 2>&1; then
9112                 echo "Looks like you have Berkeley networking support." >&4
9113                 d_socket="$define"
9114                 : we will have to assume that it supports the 4.2 BSD interface
9115                 d_oldsock="$undef"
9116         else
9117                 echo "You don't have Berkeley networking in libc$_a..." >&4
9118                 if test "X$d_socket" = "X$define"; then
9119                    echo "...but you seem to believe that you have sockets." >&4
9120                 else
9121                         for net in net socket
9122                         do
9123                                 if test -f /usr/lib/lib$net$_a; then
9124                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9125                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9126                                         if $contains socket libc.list >/dev/null 2>&1; then
9127                                                 d_socket="$define"
9128                                                 socketlib="-l$net"
9129                                                 case "$net" in
9130                                                 net)
9131                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9132                                                         sockethdr="-I/usr/netinclude"
9133                                                         ;;
9134                                                 esac
9135                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9136                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9137                                                         d_oldsock="$undef"
9138                                                 else
9139                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9140                                                         d_oldsock="$define"
9141                                                 fi
9142                                                 break
9143                                         fi
9144                                 fi
9145                         done
9146                         if test "X$d_socket" != "X$define"; then
9147                            echo "or anywhere else I see." >&4
9148                            d_socket="$undef"
9149                            d_oldsock="$undef"
9150                         fi
9151                 fi
9152         fi
9153 fi
9154
9155 : see if socketpair exists
9156 set socketpair d_sockpair
9157 eval $inlibc
9158
9159
9160 echo " "
9161 echo "Checking the availability of certain socket constants..." >& 4
9162 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9163         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9164         $cat >try.c <<EOF
9165 #include <sys/types.h>
9166 #include <sys/socket.h>
9167 int main() {
9168     int i = $ENUM;
9169 }
9170 EOF
9171         val="$undef"
9172         set try; if eval $compile; then
9173                 val="$define"
9174         fi
9175         set d_${enum}; eval $setvar
9176         $rm -f try.c try
9177 done
9178
9179 : see if this is a sys/uio.h system
9180 set sys/uio.h i_sysuio
9181 eval $inhdr
9182
9183
9184 echo " "
9185 echo "Checking to see if your system supports struct cmsghdr..." >&4
9186 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9187 eval $hasstruct
9188 case "$d_cmsghdr_s" in
9189 "$define")      echo "Yes, it does."   ;;
9190 *)              echo "No, it doesn't." ;;
9191 esac
9192
9193
9194 : check for const keyword
9195 echo " "
9196 echo 'Checking to see if your C compiler knows about "const"...' >&4
9197 $cat >const.c <<'EOCP'
9198 typedef struct spug { int drokk; } spug;
9199 int main()
9200 {
9201         const char *foo;
9202         const spug y;
9203 }
9204 EOCP
9205 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9206         val="$define"
9207         echo "Yup, it does."
9208 else
9209         val="$undef"
9210         echo "Nope, it doesn't."
9211 fi
9212 set d_const
9213 eval $setvar
9214
9215 : see if crypt exists
9216 echo " "
9217 if set crypt val -f d_crypt; eval $csym; $val; then
9218         echo 'crypt() found.' >&4
9219         val="$define"
9220         cryptlib=''
9221 else
9222         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9223         if $test -z "$cryptlib"; then
9224                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9225         else
9226                 cryptlib=-lcrypt
9227         fi
9228         if $test -z "$cryptlib"; then
9229                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9230         else
9231                 cryptlib=-lcrypt
9232         fi
9233         if $test -z "$cryptlib"; then
9234                 cryptlib=`./loc libcrypt$_a "" $libpth`
9235         else
9236                 cryptlib=-lcrypt
9237         fi
9238         if $test -z "$cryptlib"; then
9239                 echo 'crypt() NOT found.' >&4
9240                 val="$undef"
9241         else
9242                 val="$define"
9243         fi
9244 fi
9245 set d_crypt
9246 eval $setvar
9247
9248 : get csh whereabouts
9249 case "$csh" in
9250 'csh') val="$undef" ;;
9251 *) val="$define" ;;
9252 esac
9253 set d_csh
9254 eval $setvar
9255 : Respect a hint or command line value for full_csh.
9256 case "$full_csh" in
9257 '') full_csh=$csh ;;
9258 esac
9259
9260 : see if cuserid exists
9261 set cuserid d_cuserid
9262 eval $inlibc
9263
9264 : see if this is a limits.h system
9265 set limits.h i_limits
9266 eval $inhdr
9267
9268 : see if this is a float.h system
9269 set float.h i_float
9270 eval $inhdr
9271
9272 : See if number of significant digits in a double precision number is known
9273 echo " "
9274 $cat >dbl_dig.c <<EOM
9275 #$i_limits I_LIMITS
9276 #$i_float I_FLOAT
9277 #ifdef I_LIMITS
9278 #include <limits.h>
9279 #endif
9280 #ifdef I_FLOAT
9281 #include <float.h>
9282 #endif
9283 #ifdef DBL_DIG
9284 printf("Contains DBL_DIG");
9285 #endif
9286 EOM
9287 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9288 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9289         echo "DBL_DIG found." >&4
9290         val="$define"
9291 else
9292         echo "DBL_DIG NOT found." >&4
9293         val="$undef"
9294 fi
9295 $rm -f dbl_dig.?
9296 set d_dbl_dig
9297 eval $setvar
9298
9299 hasproto='varname=$1; func=$2; shift; shift;
9300 while $test $# -ge 2; do
9301         case "$1" in
9302         $define) echo "#include <$2>";;
9303         esac ;
9304     shift 2;
9305 done > try.c;
9306 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9307 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9308         echo "$func() prototype found.";
9309         val="$define";
9310 else
9311         echo "$func() prototype NOT found.";
9312         val="$undef";
9313 fi;
9314 set $varname;
9315 eval $setvar;
9316 $rm -f try.c tryout.c'
9317
9318 : see if dbm.h is available
9319 : see if dbmclose exists
9320 set dbmclose d_dbmclose
9321 eval $inlibc
9322
9323 case "$d_dbmclose" in
9324 $define)
9325         set dbm.h i_dbm
9326         eval $inhdr
9327         case "$i_dbm" in
9328         $define)
9329                 val="$undef"
9330                 set i_rpcsvcdbm
9331                 eval $setvar
9332                 ;;
9333         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9334                 eval $inhdr
9335                 ;;
9336         esac
9337         ;;
9338 *)      echo "We won't be including <dbm.h>"
9339         val="$undef"
9340         set i_dbm
9341         eval $setvar
9342         val="$undef"
9343         set i_rpcsvcdbm
9344         eval $setvar
9345         ;;
9346 esac
9347
9348 : see if prototype for dbminit is available
9349 echo " "
9350 set d_dbminitproto dbminit $i_dbm dbm.h
9351 eval $hasproto
9352
9353 : see if difftime exists
9354 set difftime d_difftime
9355 eval $inlibc
9356
9357 : see if this is a dirent system
9358 echo " "
9359 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9360         val="$define"
9361         echo "<dirent.h> found." >&4
9362 else
9363         val="$undef"
9364         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9365                 echo "<sys/dir.h> found." >&4
9366                 echo " "
9367         else
9368                 xinc=`./findhdr sys/ndir.h`
9369         fi
9370         echo "<dirent.h> NOT found." >&4
9371 fi
9372 set i_dirent
9373 eval $setvar
9374
9375 : Look for type of directory structure.
9376 echo " "
9377 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9378
9379 case "$direntrytype" in
9380 ''|' ')
9381         case "$i_dirent" in
9382         $define) guess1='struct dirent' ;;
9383         *) guess1='struct direct'  ;;
9384         esac
9385         ;;
9386 *)      guess1="$direntrytype"
9387         ;;
9388 esac
9389
9390 case "$guess1" in
9391 'struct dirent') guess2='struct direct' ;;
9392 *) guess2='struct dirent' ;;
9393 esac
9394                 
9395 if $contains "$guess1" try.c >/dev/null 2>&1; then
9396         direntrytype="$guess1"
9397         echo "Your directory entries are $direntrytype." >&4
9398 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9399         direntrytype="$guess2"
9400         echo "Your directory entries seem to be $direntrytype." >&4
9401 else
9402         echo "I don't recognize your system's directory entries." >&4
9403         rp="What type is used for directory entries on this system?"
9404         dflt="$guess1"
9405         . ./myread
9406         direntrytype="$ans"
9407 fi
9408 $rm -f try.c
9409
9410
9411 : see if the directory entry stores field length
9412 echo " "
9413 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9414 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9415         echo "Good, your directory entry keeps length information in d_namlen." >&4
9416         val="$define"
9417 else
9418         echo "Your directory entry does not know about the d_namlen field." >&4
9419         val="$undef"
9420 fi
9421 set d_dirnamlen
9422 eval $setvar
9423 $rm -f try.c
9424
9425 : see if dlerror exists
9426 xxx_runnm="$runnm"
9427 runnm=false
9428 set dlerror d_dlerror
9429 eval $inlibc
9430 runnm="$xxx_runnm"
9431
9432 : see if dlfcn is available
9433 set dlfcn.h i_dlfcn
9434 eval $inhdr
9435
9436 case "$usedl" in
9437 $define|y|true)
9438         $cat << EOM
9439
9440 On a few systems, the dynamically loaded modules that perl generates and uses
9441 will need a different extension than shared libs. The default will probably
9442 be appropriate.
9443
9444 EOM
9445         case "$dlext" in
9446         '')     dflt="$so" ;;
9447         *)      dflt="$dlext" ;;
9448         esac
9449         rp='What is the extension of dynamically loaded modules'
9450         . ./myread
9451         dlext="$ans"
9452         ;;
9453 *)
9454         dlext="none"
9455         ;;
9456 esac
9457
9458 : Check if dlsym need a leading underscore
9459 echo " "
9460 val="$undef"
9461
9462 case "$dlsrc" in
9463 dl_dlopen.xs)
9464         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9465         $cat >dyna.c <<'EOM'
9466 fred () { }
9467 EOM
9468
9469 $cat >fred.c<<EOM
9470
9471 #include <stdio.h>
9472 #$i_dlfcn I_DLFCN
9473 #ifdef I_DLFCN
9474 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9475 #else
9476 #include <sys/types.h>
9477 #include <nlist.h>
9478 #include <link.h>
9479 #endif
9480
9481 extern int fred() ;
9482
9483 int main()
9484 {
9485     void * handle ;
9486     void * symbol ;
9487 #ifndef RTLD_LAZY
9488     int mode = 1 ;
9489 #else
9490     int mode = RTLD_LAZY ;
9491 #endif
9492     handle = dlopen("./dyna.$dlext", mode) ;
9493     if (handle == NULL) {
9494         printf ("1\n") ;
9495         fflush (stdout) ;
9496         exit(0);
9497     }
9498     symbol = dlsym(handle, "fred") ;
9499     if (symbol == NULL) {
9500         /* try putting a leading underscore */
9501         symbol = dlsym(handle, "_fred") ;
9502         if (symbol == NULL) {
9503             printf ("2\n") ;
9504             fflush (stdout) ;
9505             exit(0);
9506         }
9507         printf ("3\n") ;
9508     }
9509     else
9510         printf ("4\n") ;
9511     fflush (stdout) ;
9512     exit(0);
9513 }
9514 EOM
9515         : Call the object file tmp-dyna.o in case dlext=o.
9516         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9517                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9518                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9519                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9520                 xxx=`$run ./fred`
9521                 case $xxx in
9522                 1)      echo "Test program failed using dlopen." >&4
9523                         echo "Perhaps you should not use dynamic loading." >&4;;
9524                 2)      echo "Test program failed using dlsym." >&4
9525                         echo "Perhaps you should not use dynamic loading." >&4;;
9526                 3)      echo "dlsym needs a leading underscore" >&4
9527                         val="$define" ;;
9528                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9529                 esac
9530         else
9531                 echo "I can't compile and run the test program." >&4
9532                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9533         fi
9534         ;;
9535 esac
9536                 
9537 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9538
9539 set d_dlsymun
9540 eval $setvar
9541
9542 : see if prototype for drand48 is available
9543 echo " "
9544 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9545 eval $hasproto
9546
9547 : see if dup2 exists
9548 set dup2 d_dup2
9549 eval $inlibc
9550
9551 : see if eaccess exists
9552 set eaccess d_eaccess
9553 eval $inlibc
9554
9555 : see if endgrent exists
9556 set endgrent d_endgrent
9557 eval $inlibc
9558
9559 : see if endhostent exists
9560 set endhostent d_endhent
9561 eval $inlibc
9562
9563 : see if endnetent exists
9564 set endnetent d_endnent
9565 eval $inlibc
9566
9567 : see if endprotoent exists
9568 set endprotoent d_endpent
9569 eval $inlibc
9570
9571 : see if endpwent exists
9572 set endpwent d_endpwent
9573 eval $inlibc
9574
9575 : see if endservent exists
9576 set endservent d_endsent
9577 eval $inlibc
9578
9579 : Locate the flags for 'open()'
9580 echo " "
9581 $cat >try.c <<'EOCP'
9582 #include <sys/types.h>
9583 #ifdef I_FCNTL
9584 #include <fcntl.h>
9585 #endif
9586 #ifdef I_SYS_FILE
9587 #include <sys/file.h>
9588 #endif
9589 int main() {
9590         if(O_RDONLY);
9591 #ifdef O_TRUNC
9592         exit(0);
9593 #else
9594         exit(1);
9595 #endif
9596 }
9597 EOCP
9598 : check sys/file.h first to get FREAD on Sun
9599 if $test `./findhdr sys/file.h` && \
9600                 set try -DI_SYS_FILE && eval $compile; then
9601         h_sysfile=true;
9602         echo "<sys/file.h> defines the O_* constants..." >&4
9603         if $run ./try; then
9604                 echo "and you have the 3 argument form of open()." >&4
9605                 val="$define"
9606         else
9607                 echo "but not the 3 argument form of open().  Oh, well." >&4
9608                 val="$undef"
9609         fi
9610 elif $test `./findhdr fcntl.h` && \
9611                 set try -DI_FCNTL && eval $compile; then
9612         h_fcntl=true;
9613         echo "<fcntl.h> defines the O_* constants..." >&4
9614         if $run ./try; then
9615                 echo "and you have the 3 argument form of open()." >&4
9616                 val="$define"
9617         else
9618                 echo "but not the 3 argument form of open().  Oh, well." >&4
9619                 val="$undef"
9620         fi
9621 else
9622         val="$undef"
9623         echo "I can't find the O_* constant definitions!  You got problems." >&4
9624 fi
9625 set d_open3
9626 eval $setvar
9627 $rm -f try try.*
9628
9629 : see which of string.h or strings.h is needed
9630 echo " "
9631 strings=`./findhdr string.h`
9632 if $test "$strings" && $test -r "$strings"; then
9633         echo "Using <string.h> instead of <strings.h>." >&4
9634         val="$define"
9635 else
9636         val="$undef"
9637         strings=`./findhdr strings.h`
9638         if $test "$strings" && $test -r "$strings"; then
9639                 echo "Using <strings.h> instead of <string.h>." >&4
9640         else
9641                 echo "No string header found -- You'll surely have problems." >&4
9642         fi
9643 fi
9644 set i_string
9645 eval $setvar
9646 case "$i_string" in
9647 "$undef") strings=`./findhdr strings.h`;;
9648 *)        strings=`./findhdr string.h`;;
9649 esac
9650
9651 : check for non-blocking I/O stuff
9652 case "$h_sysfile" in
9653 true) echo "#include <sys/file.h>" > head.c;;
9654 *)
9655        case "$h_fcntl" in
9656        true) echo "#include <fcntl.h>" > head.c;;
9657        *) echo "#include <sys/fcntl.h>" > head.c;;
9658        esac
9659        ;;
9660 esac
9661 echo " "
9662 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9663 case "$o_nonblock" in
9664 '')
9665         $cat head.c > try.c
9666         $cat >>try.c <<'EOCP'
9667 #include <stdio.h>
9668 int main() {
9669 #ifdef O_NONBLOCK
9670         printf("O_NONBLOCK\n");
9671         exit(0);
9672 #endif
9673 #ifdef O_NDELAY
9674         printf("O_NDELAY\n");
9675         exit(0);
9676 #endif
9677 #ifdef FNDELAY
9678         printf("FNDELAY\n");
9679         exit(0);
9680 #endif
9681         exit(0);
9682 }
9683 EOCP
9684         set try
9685         if eval $compile_ok; then
9686                 o_nonblock=`$run ./try`
9687                 case "$o_nonblock" in
9688                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9689                 *) echo "Seems like we can use $o_nonblock.";;
9690                 esac
9691         else
9692                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9693         fi
9694         ;;
9695 *) echo "Using $hint value $o_nonblock.";;
9696 esac
9697 $rm -f try try.* .out core
9698
9699 echo " "
9700 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9701 case "$eagain" in
9702 '')
9703         $cat head.c > try.c
9704         $cat >>try.c <<EOCP
9705 #include <errno.h>
9706 #include <sys/types.h>
9707 #include <signal.h>
9708 #include <stdio.h> 
9709 #define MY_O_NONBLOCK $o_nonblock
9710 #ifndef errno  /* XXX need better Configure test */
9711 extern int errno;
9712 #endif
9713 #$i_unistd I_UNISTD
9714 #ifdef I_UNISTD
9715 #include <unistd.h>
9716 #endif
9717 #$i_string I_STRING
9718 #ifdef I_STRING
9719 #include <string.h>
9720 #else
9721 #include <strings.h>
9722 #endif
9723 $signal_t blech(x) int x; { exit(3); }
9724 EOCP
9725         $cat >> try.c <<'EOCP'
9726 int main()
9727 {
9728         int pd[2];
9729         int pu[2];
9730         char buf[1];
9731         char string[100];
9732
9733         pipe(pd);       /* Down: child -> parent */
9734         pipe(pu);       /* Up: parent -> child */
9735         if (0 != fork()) {
9736                 int ret;
9737                 close(pd[1]);   /* Parent reads from pd[0] */
9738                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9739 #ifdef F_SETFL
9740                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9741                         exit(1);
9742 #else
9743                 exit(4);
9744 #endif
9745                 signal(SIGALRM, blech);
9746                 alarm(5);
9747                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9748                         exit(2);
9749                 sprintf(string, "%d\n", ret);
9750                 write(2, string, strlen(string));
9751                 alarm(0);
9752 #ifdef EAGAIN
9753                 if (errno == EAGAIN) {
9754                         printf("EAGAIN\n");
9755                         goto ok;
9756                 }
9757 #endif
9758 #ifdef EWOULDBLOCK
9759                 if (errno == EWOULDBLOCK)
9760                         printf("EWOULDBLOCK\n");
9761 #endif
9762         ok:
9763                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9764                 sleep(2);                               /* Give it time to close our pipe */
9765                 alarm(5);
9766                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9767                 alarm(0);
9768                 sprintf(string, "%d\n", ret);
9769                 write(3, string, strlen(string));
9770                 exit(0);
9771         }
9772
9773         close(pd[0]);                   /* We write to pd[1] */
9774         close(pu[1]);                   /* We read from pu[0] */
9775         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9776         close(pd[1]);                   /* Pipe pd is now fully closed! */
9777         exit(0);                                /* Bye bye, thank you for playing! */
9778 }
9779 EOCP
9780         set try
9781         if eval $compile_ok; then
9782                 echo "$startsh" >mtry
9783                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9784                 chmod +x mtry
9785                 ./mtry >/dev/null 2>&1
9786                 case $? in
9787                 0) eagain=`$cat try.out`;;
9788                 1) echo "Could not perform non-blocking setting!";;
9789                 2) echo "I did a successful read() for something that was not there!";;
9790                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9791                 4) echo "Could not find F_SETFL!";;
9792                 *) echo "Something terribly wrong happened during testing.";;
9793                 esac
9794                 rd_nodata=`$cat try.ret`
9795                 echo "A read() system call with no data present returns $rd_nodata."
9796                 case "$rd_nodata" in
9797                 0|-1) ;;
9798                 *)
9799                         echo "(That's peculiar, fixing that to be -1.)"
9800                         rd_nodata=-1
9801                         ;;
9802                 esac
9803                 case "$eagain" in
9804                 '')
9805                         echo "Forcing errno EAGAIN on read() with no data available."
9806                         eagain=EAGAIN
9807                         ;;
9808                 *)
9809                         echo "Your read() sets errno to $eagain when no data is available."
9810                         ;;
9811                 esac
9812                 status=`$cat try.err`
9813                 case "$status" in
9814                 0) echo "And it correctly returns 0 to signal EOF.";;
9815                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9816                 *) echo "However, your read() returns '$status' on EOF??";;
9817                 esac
9818                 val="$define"
9819                 if test "$status" = "$rd_nodata"; then
9820                         echo "WARNING: you can't distinguish between EOF and no data!"
9821                         val="$undef"
9822                 fi
9823         else
9824                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9825                 eagain=EAGAIN
9826         fi
9827         set d_eofnblk
9828         eval $setvar
9829         ;;
9830 *)
9831         echo "Using $hint value $eagain."
9832         echo "Your read() returns $rd_nodata when no data is present."
9833         case "$d_eofnblk" in
9834         "$define") echo "And you can see EOF because read() returns 0.";;
9835         "$undef") echo "But you can't see EOF status from read() returned value.";;
9836         *)
9837                 echo "(Assuming you can't see EOF status from read anyway.)"
9838                 d_eofnblk=$undef
9839                 ;;
9840         esac
9841         ;;
9842 esac
9843 $rm -f try try.* .out core head.c mtry
9844
9845 : see if fchdir exists
9846 set fchdir d_fchdir
9847 eval $inlibc
9848
9849 : see if fchmod exists
9850 set fchmod d_fchmod
9851 eval $inlibc
9852
9853 : see if fchown exists
9854 set fchown d_fchown
9855 eval $inlibc
9856
9857 : see if this is an fcntl system
9858 set fcntl d_fcntl
9859 eval $inlibc
9860
9861 echo " "
9862 : See if fcntl-based locking works.
9863 $cat >try.c <<EOCP
9864 #include <stdlib.h>
9865 #include <unistd.h>
9866 #include <fcntl.h>
9867 #include <signal.h>
9868 #ifdef SIGALRM
9869 $signal_t blech(x) int x; { exit(3); }
9870 #endif
9871 EOCP
9872 $cat >try.c <<'EOCP'
9873 int main() {
9874 #if defined(F_SETLK) && defined(F_SETLKW)
9875      struct flock flock;
9876      int retval, fd;
9877      fd = open("try.c", O_RDONLY);
9878      flock.l_type = F_RDLCK;
9879      flock.l_whence = SEEK_SET;
9880      flock.l_start = flock.l_len = 0;
9881 #ifdef SIGALRM
9882      signal(SIGALRM, blech);
9883      alarm(10);
9884 #endif
9885      retval = fcntl(fd, F_SETLK, &flock);
9886      close(fd);
9887      (retval < 0 ? exit(2) : exit(0));
9888 #else
9889      exit(2);
9890 #endif
9891 }
9892 EOCP
9893 echo "Checking if fcntl-based file locking works... "
9894 case "$d_fcntl" in
9895 "$define")
9896         set try
9897         if eval $compile_ok; then
9898                 if $run ./try; then
9899                         echo "Yes, it seems to work."
9900                         val="$define"
9901                 else
9902                         echo "Nope, it didn't work."
9903                         val="$undef"
9904                         case "$?" in
9905                         3) $cat >&4 <<EOM
9906 ***
9907 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9908 *** This is (almost) impossible.
9909 *** If your NFS lock daemons are not feeling well, something like
9910 *** this may happen, please investigate.  Cannot continue, aborting.
9911 ***
9912 EOM
9913                                 exit 1
9914                                 ;;
9915                         esac
9916                 fi
9917         else
9918                 echo "I'm unable to compile the test program, so I'll assume not."
9919                 val="$undef"
9920         fi
9921         ;;
9922 *) val="$undef";
9923         echo "Nope, since you don't even have fcntl()."
9924         ;;
9925 esac
9926 set d_fcntl_can_lock
9927 eval $setvar
9928 $rm -f try*
9929
9930
9931 : see if sys/select.h has to be included
9932 set sys/select.h i_sysselct
9933 eval $inhdr
9934
9935 : see if we should include time.h, sys/time.h, or both
9936 echo " "
9937 if test "X$timeincl" = X; then
9938         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9939         $echo $n "I'm now running the test program...$c"
9940         $cat >try.c <<'EOCP'
9941 #include <sys/types.h>
9942 #ifdef I_TIME
9943 #include <time.h>
9944 #endif
9945 #ifdef I_SYSTIME
9946 #ifdef SYSTIMEKERNEL
9947 #define KERNEL
9948 #endif
9949 #include <sys/time.h>
9950 #endif
9951 #ifdef I_SYSSELECT
9952 #include <sys/select.h>
9953 #endif
9954 int main()
9955 {
9956         struct tm foo;
9957 #ifdef S_TIMEVAL
9958         struct timeval bar;
9959 #endif
9960 #ifdef S_TIMEZONE
9961         struct timezone tzp;
9962 #endif
9963         if (foo.tm_sec == foo.tm_sec)
9964                 exit(0);
9965 #ifdef S_TIMEVAL
9966         if (bar.tv_sec == bar.tv_sec)
9967                 exit(0);
9968 #endif
9969         exit(1);
9970 }
9971 EOCP
9972         flags=''
9973         for s_timezone in '-DS_TIMEZONE' ''; do
9974         sysselect=''
9975         for s_timeval in '-DS_TIMEVAL' ''; do
9976         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9977         for i_time in '' '-DI_TIME'; do
9978         for i_systime in '-DI_SYSTIME' ''; do
9979                 case "$flags" in
9980                 '') $echo $n ".$c"
9981                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9982                         if eval $compile; then
9983                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9984                                 shift
9985                                 flags="$*"
9986                                 echo " "
9987                                 $echo $n "Succeeded with $flags$c"
9988                         fi
9989                         ;;
9990                 esac
9991         done
9992         done
9993         done
9994         done
9995         done
9996         timeincl=''
9997         echo " "
9998         case "$flags" in
9999         *SYSTIMEKERNEL*) i_systimek="$define"
10000                 timeincl=`./findhdr sys/time.h`
10001                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10002         *) i_systimek="$undef";;
10003         esac
10004         case "$flags" in
10005         *I_TIME*) i_time="$define"
10006                 timeincl=`./findhdr time.h`" $timeincl"
10007                 echo "We'll include <time.h>." >&4;;
10008         *) i_time="$undef";;
10009         esac
10010         case "$flags" in
10011         *I_SYSTIME*) i_systime="$define"
10012                 timeincl=`./findhdr sys/time.h`" $timeincl"
10013                 echo "We'll include <sys/time.h>." >&4;;
10014         *) i_systime="$undef";;
10015         esac
10016         $rm -f try.c try
10017 fi
10018
10019 : check for fd_set items
10020 $cat <<EOM
10021
10022 Checking to see how well your C compiler handles fd_set and friends ...
10023 EOM
10024 $cat >try.c <<EOCP
10025 #$i_systime I_SYS_TIME
10026 #$i_sysselct I_SYS_SELECT
10027 #$d_socket HAS_SOCKET
10028 #include <sys/types.h>
10029 #ifdef HAS_SOCKET
10030 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10031 #endif
10032 #ifdef I_SYS_TIME
10033 #include <sys/time.h>
10034 #endif
10035 #ifdef I_SYS_SELECT
10036 #include <sys/select.h>
10037 #endif
10038 int main() {
10039         fd_set fds;
10040
10041 #ifdef TRYBITS
10042         if(fds.fds_bits);
10043 #endif
10044
10045 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10046         exit(0);
10047 #else
10048         exit(1);
10049 #endif
10050 }
10051 EOCP
10052 set try -DTRYBITS
10053 if eval $compile; then
10054         d_fds_bits="$define"
10055         d_fd_set="$define"
10056         echo "Well, your system knows about the normal fd_set typedef..." >&4
10057         if $run ./try; then
10058                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10059                 d_fd_macros="$define"
10060         else
10061                 $cat >&4 <<'EOM'
10062 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10063 EOM
10064                 d_fd_macros="$undef"
10065         fi
10066 else
10067         $cat <<'EOM'
10068 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10069 EOM
10070         set try
10071         if eval $compile; then
10072                 d_fds_bits="$undef"
10073                 d_fd_set="$define"
10074                 echo "Well, your system has some sort of fd_set available..." >&4
10075                 if $run ./try; then
10076                         echo "and you have the normal fd_set macros." >&4
10077                         d_fd_macros="$define"
10078                 else
10079                         $cat <<'EOM'
10080 but not the normal fd_set macros!  Gross!  More work for me...
10081 EOM
10082                         d_fd_macros="$undef"
10083                 fi
10084         else
10085         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10086                 d_fd_set="$undef"
10087                 d_fds_bits="$undef"
10088                 d_fd_macros="$undef"
10089         fi
10090 fi
10091 $rm -f try try.*
10092
10093 : see if fgetpos exists
10094 set fgetpos d_fgetpos
10095 eval $inlibc
10096
10097 : see if flock exists
10098 set flock d_flock
10099 eval $inlibc
10100
10101 : see if this is a sys/file.h system
10102 val=''
10103 set sys/file.h val
10104 eval $inhdr
10105
10106 : do we need to include sys/file.h ?
10107 case "$val" in
10108 "$define")
10109         echo " "
10110         if $h_sysfile; then
10111                 val="$define"
10112                 echo "We'll be including <sys/file.h>." >&4
10113         else
10114                 val="$undef"
10115                 echo "We won't be including <sys/file.h>." >&4
10116         fi
10117         ;;
10118 *)
10119         h_sysfile=false
10120         ;;
10121 esac
10122 set i_sysfile
10123 eval $setvar
10124
10125 : see if prototype for flock is available
10126 echo " "
10127 set d_flockproto flock $i_sysfile sys/file.h
10128 eval $hasproto
10129
10130 : see if fork exists
10131 set fork d_fork
10132 eval $inlibc
10133
10134 : see if pathconf exists
10135 set pathconf d_pathconf
10136 eval $inlibc
10137
10138 : see if fpathconf exists
10139 set fpathconf d_fpathconf
10140 eval $inlibc
10141
10142
10143 : check for fpos64_t
10144 echo " "
10145 echo "Checking to see if you have fpos64_t..." >&4
10146 $cat >try.c <<EOCP
10147 #include <stdio.h>
10148 int main() { fpos64_t x = 7; }
10149 EOCP
10150 set try
10151 if eval $compile; then
10152         val="$define"
10153         echo "You have fpos64_t."
10154 else
10155         val="$undef"
10156         echo "You do not have fpos64_t."
10157         case "$fpossize" in
10158         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10159         esac
10160 fi
10161 $rm -f try.* try
10162 set d_fpos64_t
10163 eval $setvar
10164
10165 : see if frexpl exists
10166 set frexpl d_frexpl
10167 eval $inlibc
10168
10169 : see if this is a sys/param system
10170 set sys/param.h i_sysparam
10171 eval $inhdr
10172
10173 : see if this is a sys/mount.h system
10174 set sys/mount.h i_sysmount
10175 eval $inhdr
10176
10177
10178 echo " "
10179 echo "Checking to see if your system supports struct fs_data..." >&4
10180 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10181 eval $hasstruct
10182 case "$d_fs_data_s" in
10183 "$define")      echo "Yes, it does."   ;;
10184 *)              echo "No, it doesn't." ;;
10185 esac
10186
10187 : see if fseeko exists
10188 set fseeko d_fseeko
10189 eval $inlibc
10190 case "$longsize" in
10191 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10192 esac
10193
10194 : see if fsetpos exists
10195 set fsetpos d_fsetpos
10196 eval $inlibc
10197
10198
10199 : see if fstatfs exists
10200 set fstatfs d_fstatfs
10201 eval $inlibc
10202
10203
10204 : see if statvfs exists
10205 set statvfs d_statvfs
10206 eval $inlibc
10207
10208 : see if fstatvfs exists
10209 set fstatvfs d_fstatvfs
10210 eval $inlibc
10211
10212
10213 : see if fsync exists
10214 set fsync d_fsync
10215 eval $inlibc
10216
10217 : see if ftello exists
10218 set ftello d_ftello
10219 eval $inlibc
10220 case "$longsize" in
10221 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10222 esac
10223
10224 : see if getcwd exists
10225 set getcwd d_getcwd
10226 eval $inlibc
10227
10228 : see if getespwnam exists
10229 set getespwnam d_getespwnam
10230 eval $inlibc
10231
10232
10233 : see if getfsstat exists
10234 set getfsstat d_getfsstat
10235 eval $inlibc
10236
10237 : see if getgrent exists
10238 set getgrent d_getgrent
10239 eval $inlibc
10240
10241 : see if gethostbyaddr exists
10242 set gethostbyaddr d_gethbyaddr
10243 eval $inlibc
10244
10245 : see if gethostbyname exists
10246 set gethostbyname d_gethbyname
10247 eval $inlibc
10248
10249 : see if gethostent exists
10250 set gethostent d_gethent
10251 eval $inlibc
10252
10253 : see how we will look up host name
10254 echo " "
10255 call=''
10256 if set gethostname val -f d_gethname; eval $csym; $val; then
10257         echo 'gethostname() found.' >&4
10258         d_gethname="$define"
10259         call=gethostname
10260 fi
10261 if set uname val -f d_uname; eval $csym; $val; then
10262         if ./xenix; then
10263                 $cat <<'EOM'
10264 uname() was found, but you're running xenix, and older versions of xenix
10265 have a broken uname(). If you don't really know whether your xenix is old
10266 enough to have a broken system call, use the default answer.
10267
10268 EOM
10269                 dflt=y
10270                 case "$d_uname" in
10271                 "$define") dflt=n;;
10272                 esac
10273                 rp='Is your uname() broken?'
10274                 . ./myread
10275                 case "$ans" in
10276                 n*) d_uname="$define"; call=uname;;
10277                 esac
10278         else
10279                 echo 'uname() found.' >&4
10280                 d_uname="$define"
10281                 case "$call" in
10282                 '') call=uname ;;
10283                 esac
10284         fi
10285 fi
10286 case "$d_gethname" in
10287 '') d_gethname="$undef";;
10288 esac
10289 case "$d_uname" in
10290 '') d_uname="$undef";;
10291 esac
10292 case "$d_uname$d_gethname" in
10293 *define*)
10294         dflt=n
10295         cat <<EOM
10296  
10297 Every now and then someone has a $call() that lies about the hostname
10298 but can't be fixed for political or economic reasons.  If you wish, I can
10299 pretend $call() isn't there and maybe compute hostname at run-time
10300 thanks to the '$phostname' command.
10301
10302 EOM
10303         rp="Shall I ignore $call() from now on?"
10304         . ./myread
10305         case "$ans" in
10306         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10307         esac;;
10308 esac
10309 case "$phostname" in
10310 '') aphostname='';;
10311 *) case "$aphostname" in
10312         /*) ;;
10313         *) set X $phostname
10314                 shift
10315                 file=$1
10316                 shift
10317                 file=`./loc $file $file $pth`
10318                 aphostname=`echo $file $*`
10319                 ;;
10320         esac
10321         ;;
10322 esac
10323 case "$d_uname$d_gethname" in
10324 *define*) ;;
10325 *)
10326         case "$phostname" in
10327         '')
10328                 echo "There will be no way for $package to get your hostname." >&4;;
10329         *)
10330         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10331                 ;;
10332         esac;;
10333 esac
10334 case "$d_phostname" in
10335 '') d_phostname="$undef";;
10336 esac
10337
10338 : see if this is a netdb.h system
10339 set netdb.h i_netdb
10340 eval $inhdr
10341
10342 : see if prototypes for various gethostxxx netdb.h functions are available
10343 echo " "
10344 set d_gethostprotos gethostent $i_netdb netdb.h
10345 eval $hasproto
10346
10347 : see if getitimer exists
10348 set getitimer d_getitimer
10349 eval $inlibc
10350
10351 : see if getlogin exists
10352 set getlogin d_getlogin
10353 eval $inlibc
10354
10355 : see if getmnt exists
10356 set getmnt d_getmnt
10357 eval $inlibc
10358
10359 : see if getmntent exists
10360 set getmntent d_getmntent
10361 eval $inlibc
10362
10363 : see if getnetbyaddr exists
10364 set getnetbyaddr d_getnbyaddr
10365 eval $inlibc
10366
10367 : see if getnetbyname exists
10368 set getnetbyname d_getnbyname
10369 eval $inlibc
10370
10371 : see if getnetent exists
10372 set getnetent d_getnent
10373 eval $inlibc
10374
10375 : see if prototypes for various getnetxxx netdb.h functions are available
10376 echo " "
10377 set d_getnetprotos getnetent $i_netdb netdb.h
10378 eval $hasproto
10379
10380 : see if getpagesize exists
10381 set getpagesize d_getpagsz
10382 eval $inlibc
10383
10384
10385 : see if getprotobyname exists
10386 set getprotobyname d_getpbyname
10387 eval $inlibc
10388
10389 : see if getprotobynumber exists
10390 set getprotobynumber d_getpbynumber
10391 eval $inlibc
10392
10393 : see if getprotoent exists
10394 set getprotoent d_getpent
10395 eval $inlibc
10396
10397 : see if getpgid exists
10398 set getpgid d_getpgid
10399 eval $inlibc
10400
10401 : see if getpgrp2 exists
10402 set getpgrp2 d_getpgrp2
10403 eval $inlibc
10404
10405 : see if getppid exists
10406 set getppid d_getppid
10407 eval $inlibc
10408
10409 : see if getpriority exists
10410 set getpriority d_getprior
10411 eval $inlibc
10412
10413 : see if prototypes for various getprotoxxx netdb.h functions are available
10414 echo " "
10415 set d_getprotoprotos getprotoent $i_netdb netdb.h
10416 eval $hasproto
10417
10418 : see if getprpwnam exists
10419 set getprpwnam d_getprpwnam
10420 eval $inlibc
10421
10422 : see if getpwent exists
10423 set getpwent d_getpwent
10424 eval $inlibc
10425
10426
10427 : see if getservbyname exists
10428 set getservbyname d_getsbyname
10429 eval $inlibc
10430
10431 : see if getservbyport exists
10432 set getservbyport d_getsbyport
10433 eval $inlibc
10434
10435 : see if getservent exists
10436 set getservent d_getsent
10437 eval $inlibc
10438
10439 : see if prototypes for various getservxxx netdb.h functions are available
10440 echo " "
10441 set d_getservprotos getservent $i_netdb netdb.h
10442 eval $hasproto
10443
10444 : see if getspnam exists
10445 set getspnam d_getspnam
10446 eval $inlibc
10447
10448 : see if gettimeofday or ftime exists
10449 set gettimeofday d_gettimeod
10450 eval $inlibc
10451 case "$d_gettimeod" in
10452 "$undef")
10453         set ftime d_ftime 
10454         eval $inlibc
10455         ;;
10456 *)
10457         val="$undef"; set d_ftime; eval $setvar
10458         ;;
10459 esac
10460 case "$d_gettimeod$d_ftime" in
10461 "$undef$undef")
10462         echo " "
10463         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10464         ;;
10465 esac
10466
10467 : see if this is an grp system
10468 set grp.h i_grp
10469 eval $inhdr
10470
10471 case "$i_grp" in
10472 $define)
10473         xxx=`./findhdr grp.h`
10474         $cppstdin $cppflags $cppminus < $xxx >$$.h
10475
10476         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10477                 val="$define"
10478         else
10479                 val="$undef"
10480         fi
10481         set d_grpasswd
10482         eval $setvar
10483
10484         $rm -f $$.h
10485         ;;
10486 *)
10487         val="$undef";
10488         set d_grpasswd; eval $setvar
10489         ;;
10490 esac
10491
10492 : see if hasmntopt exists
10493 set hasmntopt d_hasmntopt
10494 eval $inlibc
10495
10496 : see if this is a netinet/in.h or sys/in.h system
10497 set netinet/in.h i_niin sys/in.h i_sysin
10498 eval $inhdr
10499
10500 : see if arpa/inet.h has to be included
10501 set arpa/inet.h i_arpainet
10502 eval $inhdr
10503
10504 : see if htonl --and friends-- exists
10505 val=''
10506 set htonl val
10507 eval $inlibc
10508
10509 : Maybe they are macros.
10510 case "$val" in
10511 $undef)
10512         $cat >htonl.c <<EOM
10513 #include <stdio.h>
10514 #include <sys/types.h>
10515 #$i_niin I_NETINET_IN
10516 #$i_sysin I_SYS_IN
10517 #$i_arpainet I_ARPA_INET
10518 #ifdef I_NETINET_IN
10519 #include <netinet/in.h>
10520 #endif
10521 #ifdef I_SYS_IN
10522 #include <sys/in.h>
10523 #endif
10524 #ifdef I_ARPA_INET
10525 #include <arpa/inet.h>
10526 #endif
10527 #ifdef htonl
10528 printf("Defined as a macro.");
10529 #endif
10530 EOM
10531         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10532         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10533                 val="$define"
10534                 echo "But it seems to be defined as a macro." >&4
10535         fi
10536         $rm -f htonl.?
10537         ;;
10538 esac
10539 set d_htonl
10540 eval $setvar
10541
10542 : see if iconv exists
10543 set iconv d_iconv
10544 eval $inlibc
10545
10546 : index or strchr
10547 echo " "
10548 if set index val -f; eval $csym; $val; then
10549         if set strchr val -f d_strchr; eval $csym; $val; then
10550                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10551                         val="$define"
10552                         vali="$undef"
10553                         echo "strchr() found." >&4
10554                 else
10555                         val="$undef"
10556                         vali="$define"
10557                         echo "index() found." >&4
10558                 fi
10559         else
10560                 val="$undef"
10561                 vali="$define"
10562                 echo "index() found." >&4
10563         fi
10564 else
10565         if set strchr val -f d_strchr; eval $csym; $val; then
10566                 val="$define"
10567                 vali="$undef"
10568                 echo "strchr() found." >&4
10569         else
10570                 echo "No index() or strchr() found!" >&4
10571                 val="$undef"
10572                 vali="$undef"
10573         fi
10574 fi
10575 set d_strchr; eval $setvar
10576 val="$vali"
10577 set d_index; eval $setvar
10578
10579 : check whether inet_aton exists
10580 set inet_aton d_inetaton
10581 eval $inlibc
10582
10583 : Look for isascii
10584 echo " "
10585 $cat >isascii.c <<'EOCP'
10586 #include <stdio.h>
10587 #include <ctype.h>
10588 int main() {
10589         int c = 'A';
10590         if (isascii(c))
10591                 exit(0);
10592         else
10593                 exit(1);
10594 }
10595 EOCP
10596 set isascii
10597 if eval $compile; then
10598         echo "isascii() found." >&4
10599         val="$define"
10600 else
10601         echo "isascii() NOT found." >&4
10602         val="$undef"
10603 fi
10604 set d_isascii
10605 eval $setvar
10606 $rm -f isascii*
10607
10608 : see if isnan exists
10609 set isnan d_isnan
10610 eval $inlibc
10611
10612 : see if isnanl exists
10613 set isnanl d_isnanl
10614 eval $inlibc
10615
10616 : see if killpg exists
10617 set killpg d_killpg
10618 eval $inlibc
10619
10620 : see if lchown exists
10621 echo " "
10622 $cat > try.c <<'EOCP'
10623 /* System header to define __stub macros and hopefully few prototypes,
10624     which can conflict with char lchown(); below.  */
10625 #include <assert.h>
10626 /* Override any gcc2 internal prototype to avoid an error.  */
10627 /* We use char because int might match the return type of a gcc2
10628    builtin and then its argument prototype would still apply.  */
10629 char lchown();
10630 int main() {
10631     /*  The GNU C library defines this for functions which it implements
10632         to always fail with ENOSYS.  Some functions are actually named
10633         something starting with __ and the normal name is an alias.  */
10634 #if defined (__stub_lchown) || defined (__stub___lchown)
10635 choke me
10636 #else
10637 lchown();
10638 #endif
10639 ; return 0; }
10640 EOCP
10641 set try
10642 if eval $compile; then
10643     $echo "lchown() found." >&4
10644     val="$define"
10645 else
10646     $echo "lchown() NOT found." >&4
10647     val="$undef"
10648 fi
10649 set d_lchown
10650 eval $setvar
10651
10652 : See if number of significant digits in a double precision number is known
10653 echo " "
10654 $cat >ldbl_dig.c <<EOM
10655 #$i_limits I_LIMITS
10656 #$i_float I_FLOAT
10657 #ifdef I_LIMITS
10658 #include <limits.h>
10659 #endif
10660 #ifdef I_FLOAT
10661 #include <float.h>
10662 #endif
10663 #ifdef LDBL_DIG
10664 printf("Contains LDBL_DIG");
10665 #endif
10666 EOM
10667 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10668 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10669         echo "LDBL_DIG found." >&4
10670         val="$define"
10671 else
10672         echo "LDBL_DIG NOT found." >&4
10673         val="$undef"
10674 fi
10675 $rm -f ldbl_dig.?
10676 set d_ldbl_dig
10677 eval $setvar
10678
10679 : see if link exists
10680 set link d_link
10681 eval $inlibc
10682
10683 : see if localeconv exists
10684 set localeconv d_locconv
10685 eval $inlibc
10686
10687 : see if lockf exists
10688 set lockf d_lockf
10689 eval $inlibc
10690
10691 : see if prototype for lseek is available
10692 echo " "
10693 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10694 eval $hasproto
10695
10696 : see if lstat exists
10697 set lstat d_lstat
10698 eval $inlibc
10699
10700 : see if madvise exists
10701 set madvise d_madvise
10702 eval $inlibc
10703
10704 : see if mblen exists
10705 set mblen d_mblen
10706 eval $inlibc
10707
10708 : see if mbstowcs exists
10709 set mbstowcs d_mbstowcs
10710 eval $inlibc
10711
10712 : see if mbtowc exists
10713 set mbtowc d_mbtowc
10714 eval $inlibc
10715
10716 : see if memchr exists
10717 set memchr d_memchr
10718 eval $inlibc
10719
10720 : see if memcmp exists
10721 set memcmp d_memcmp
10722 eval $inlibc
10723
10724 : see if memcpy exists
10725 set memcpy d_memcpy
10726 eval $inlibc
10727
10728 : see if memmove exists
10729 set memmove d_memmove
10730 eval $inlibc
10731
10732 : see if memset exists
10733 set memset d_memset
10734 eval $inlibc
10735
10736 : see if mkdir exists
10737 set mkdir d_mkdir
10738 eval $inlibc
10739
10740 : see if mkdtemp exists
10741 set mkdtemp d_mkdtemp
10742 eval $inlibc
10743
10744 : see if mkfifo exists
10745 set mkfifo d_mkfifo
10746 eval $inlibc
10747
10748 : see if mkstemp exists
10749 set mkstemp d_mkstemp
10750 eval $inlibc
10751
10752 : see if mkstemps exists
10753 set mkstemps d_mkstemps
10754 eval $inlibc
10755
10756 : see if mktime exists
10757 set mktime d_mktime
10758 eval $inlibc
10759
10760 : see if this is a sys/mman.h system
10761 set sys/mman.h i_sysmman
10762 eval $inhdr
10763
10764 : see if mmap exists
10765 set mmap d_mmap
10766 eval $inlibc
10767 : see what shmat returns
10768 : default to something harmless
10769 mmaptype='void *'
10770 case "$i_sysmman$d_mmap" in
10771 "$define$define")
10772         $cat >mmap.c <<'END'
10773 #include <sys/mman.h>
10774 void *mmap();
10775 END
10776         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10777                 mmaptype='void *'
10778         else
10779                 mmaptype='caddr_t'
10780         fi
10781         echo "and it returns ($mmaptype)." >&4
10782         ;;
10783 esac
10784
10785
10786
10787 : see if modfl exists
10788 set modfl d_modfl
10789 eval $inlibc
10790
10791 d_modfl_pow32_bug="$undef"
10792
10793 case "$d_longdbl$d_modfl" in
10794 $define$define)
10795         $cat <<EOM
10796 Checking to see whether your modfl() is okay for large values...
10797 EOM
10798 $cat >try.c <<EOCP
10799 #include <math.h> 
10800 #include <stdio.h>
10801 int main() {
10802     long double nv = 4294967303.15;
10803     long double v, w;
10804     v = modfl(nv, &w);         
10805 #ifdef __GLIBC__
10806     printf("glibc");
10807 #endif
10808     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10809     return 0;
10810 }
10811 EOCP
10812         case "$osname:$gccversion" in
10813         aix:)   saveccflags="$ccflags"
10814                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10815         esac
10816         set try
10817         if eval $compile; then
10818                 foo=`$run ./try`
10819                 case "$foo" in
10820                 *" 4294967303.150000 1.150000 4294967302.000000")
10821                         echo >&4 "Your modfl() is broken for large values."
10822                         d_modfl_pow32_bug="$define"
10823                         case "$foo" in
10824                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10825                         ;;
10826                         esac
10827                         ;;
10828                 *" 4294967303.150000 0.150000 4294967303.000000")
10829                         echo >&4 "Your modfl() seems okay for large values."
10830                         ;;
10831                 *)      echo >&4 "I don't understand your modfl() at all."
10832                         d_modfl="$undef"
10833                         ;;
10834                 esac
10835                 $rm -f try.* try core core.try.*
10836         else
10837                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10838                 d_modfl="$undef"
10839         fi
10840         case "$osname:$gccversion" in
10841         aix:)   ccflags="$saveccflags" ;; # restore
10842         esac
10843         ;;
10844 esac
10845
10846 : see if mprotect exists
10847 set mprotect d_mprotect
10848 eval $inlibc
10849
10850 : see if msgctl exists
10851 set msgctl d_msgctl
10852 eval $inlibc
10853
10854 : see if msgget exists
10855 set msgget d_msgget
10856 eval $inlibc
10857
10858 : see if msgsnd exists
10859 set msgsnd d_msgsnd
10860 eval $inlibc
10861
10862 : see if msgrcv exists
10863 set msgrcv d_msgrcv
10864 eval $inlibc
10865
10866 : see how much of the 'msg*(2)' library is present.
10867 h_msg=true
10868 echo " "
10869 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10870 *"$undef"*) h_msg=false;;
10871 esac
10872 case "$osname" in
10873 freebsd)
10874     case "`ipcs 2>&1`" in
10875     "SVID messages"*"not configured"*)
10876         echo "Your $osname does not have the msg*(2) configured." >&4
10877         h_msg=false
10878         val="$undef"
10879         set msgctl d_msgctl
10880         eval $setvar
10881         set msgget d_msgget
10882         eval $setvar
10883         set msgsnd d_msgsnd
10884         eval $setvar
10885         set msgrcv d_msgrcv
10886         eval $setvar
10887         ;;
10888     esac
10889     ;;
10890 esac
10891 : we could also check for sys/ipc.h ...
10892 if $h_msg && $test `./findhdr sys/msg.h`; then
10893         echo "You have the full msg*(2) library." >&4
10894         val="$define"
10895 else
10896         echo "You don't have the full msg*(2) library." >&4
10897         val="$undef"
10898 fi
10899 set d_msg
10900 eval $setvar
10901
10902
10903 echo " "
10904 echo "Checking to see if your system supports struct msghdr..." >&4
10905 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10906 eval $hasstruct
10907 case "$d_msghdr_s" in
10908 "$define")      echo "Yes, it does."   ;;
10909 *)              echo "No, it doesn't." ;;
10910 esac
10911
10912
10913 : see if msync exists
10914 set msync d_msync
10915 eval $inlibc
10916
10917 : see if munmap exists
10918 set munmap d_munmap
10919 eval $inlibc
10920
10921 : see if nice exists
10922 set nice d_nice
10923 eval $inlibc
10924
10925 : see if this is a langinfo.h system
10926 set langinfo.h i_langinfo
10927 eval $inhdr
10928
10929 : see if nl_langinfo exists
10930 set nl_langinfo d_nl_langinfo
10931 eval $inlibc
10932
10933 : check for length of character
10934 echo " "
10935 case "$charsize" in
10936 '')
10937         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10938         $cat >try.c <<'EOCP'
10939 #include <stdio.h>
10940 int main()
10941 {
10942     printf("%d\n", (int)sizeof(char));
10943     exit(0);
10944 }
10945 EOCP
10946         set try
10947         if eval $compile_ok; then
10948                 dflt=`$run ./try`
10949         else
10950                 dflt='1'
10951                 echo "(I can't seem to compile the test program.  Guessing...)"
10952         fi
10953         ;;
10954 *)
10955         dflt="$charsize"
10956         ;;
10957 esac
10958 rp="What is the size of a character (in bytes)?"
10959 . ./myread
10960 charsize="$ans"
10961 $rm -f try.c try
10962
10963 : check for volatile keyword
10964 echo " "
10965 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10966 $cat >try.c <<'EOCP'
10967 int main()
10968 {
10969         typedef struct _goo_struct goo_struct;
10970         goo_struct * volatile goo = ((goo_struct *)0);
10971         struct _goo_struct {
10972                 long long_int;
10973                 int reg_int;
10974                 char char_var;
10975         };
10976         typedef unsigned short foo_t;
10977         char *volatile foo;
10978         volatile int bar;
10979         volatile foo_t blech;
10980         foo = foo;
10981 }
10982 EOCP
10983 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10984         val="$define"
10985         echo "Yup, it does."
10986 else
10987         val="$undef"
10988         echo "Nope, it doesn't."
10989 fi
10990 set d_volatile
10991 eval $setvar
10992 $rm -f try.*
10993
10994
10995 echo " "
10996 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10997
10998 case "$use64bitint:$d_quad:$quadtype" in
10999 define:define:?*)
11000         ivtype="$quadtype"
11001         uvtype="$uquadtype"
11002         ivsize=8
11003         uvsize=8
11004         ;;
11005 *)      ivtype="long"
11006         uvtype="unsigned long"
11007         ivsize=$longsize
11008         uvsize=$longsize
11009         ;;
11010 esac
11011
11012 case "$uselongdouble:$d_longdbl" in
11013 define:define)
11014         nvtype="long double"
11015         nvsize=$longdblsize
11016         ;;
11017 *)      nvtype=double
11018         nvsize=$doublesize
11019         ;;
11020 esac
11021
11022 $echo "(IV will be "$ivtype", $ivsize bytes)"
11023 $echo "(UV will be "$uvtype", $uvsize bytes)"
11024 $echo "(NV will be "$nvtype", $nvsize bytes)"
11025
11026 $cat >try.c <<EOCP
11027 #$i_inttypes I_INTTYPES
11028 #ifdef I_INTTYPES
11029 #include <inttypes.h>
11030 #endif
11031 #include <stdio.h>
11032 int main() {
11033 #ifdef INT8
11034    int8_t i =  INT8_MAX;
11035   uint8_t u = UINT8_MAX;
11036   printf("int8_t\n");
11037 #endif
11038 #ifdef INT16
11039    int16_t i =  INT16_MAX;
11040   uint16_t i = UINT16_MAX;
11041   printf("int16_t\n");
11042 #endif
11043 #ifdef INT32
11044    int32_t i =  INT32_MAX;
11045   uint32_t u = UINT32_MAX;
11046   printf("int32_t\n");
11047 #endif
11048 }
11049 EOCP
11050
11051 case "$i8type" in
11052 '')     case "$charsize" in
11053         1)      i8type=char
11054                 u8type="unsigned char"
11055                 i8size=$charsize
11056                 u8size=$charsize
11057                 ;;
11058         esac
11059         ;;
11060 esac
11061 case "$i8type" in
11062 '')     set try -DINT8
11063         if eval $compile; then
11064                 case "`$run ./try`" in
11065                 int8_t) i8type=int8_t
11066                         u8type=uint8_t
11067                         i8size=1
11068                         u8size=1
11069                         ;;
11070                 esac
11071         fi
11072         ;;
11073 esac
11074 case "$i8type" in
11075 '')     if $test $charsize -ge 1; then
11076                 i8type=char
11077                 u8type="unsigned char"
11078                 i8size=$charsize
11079                 u8size=$charsize
11080         fi
11081         ;;
11082 esac
11083
11084 case "$i16type" in
11085 '')     case "$shortsize" in
11086         2)      i16type=short
11087                 u16type="unsigned short"
11088                 i16size=$shortsize
11089                 u16size=$shortsize
11090                 ;;
11091         esac
11092         ;;
11093 esac
11094 case "$i16type" in
11095 '')     set try -DINT16
11096         if eval $compile; then
11097                 case "`$run ./try`" in
11098                 int16_t)
11099                         i16type=int16_t
11100                         u16type=uint16_t
11101                         i16size=2
11102                         u16size=2
11103                         ;;
11104                 esac
11105         fi
11106         ;;
11107 esac
11108 case "$i16type" in
11109 '')     if $test $shortsize -ge 2; then
11110                 i16type=short
11111                 u16type="unsigned short"
11112                 i16size=$shortsize
11113                 u16size=$shortsize
11114         fi
11115         ;;
11116 esac
11117
11118 case "$i32type" in
11119 '')     case "$longsize" in
11120         4)      i32type=long
11121                 u32type="unsigned long"
11122                 i32size=$longsize
11123                 u32size=$longsize
11124                 ;;
11125         *)      case "$intsize" in
11126                 4)      i32type=int
11127                         u32type="unsigned int"
11128                         i32size=$intsize
11129                         u32size=$intsize
11130                         ;;
11131                 esac
11132                 ;;
11133         esac
11134         ;;
11135 esac
11136 case "$i32type" in
11137 '')     set try -DINT32
11138         if eval $compile; then
11139                 case "`$run ./try`" in
11140                 int32_t)
11141                         i32type=int32_t
11142                         u32type=uint32_t
11143                         i32size=4
11144                         u32size=4
11145                         ;;
11146                 esac
11147         fi
11148         ;;
11149 esac
11150 case "$i32type" in
11151 '')     if $test $intsize -ge 4; then
11152                 i32type=int
11153                 u32type="unsigned int"
11154                 i32size=$intsize
11155                 u32size=$intsize
11156         fi
11157         ;;
11158 esac
11159
11160 case "$i64type" in
11161 '')     case "$d_quad:$quadtype" in
11162         define:?*)
11163                 i64type="$quadtype"
11164                 u64type="$uquadtype"
11165                 i64size=8
11166                 u64size=8
11167                 ;;
11168         esac
11169         ;;
11170 esac
11171
11172 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11173 : volatile so that the compiler has to store it out to memory.
11174 if test X"$d_volatile" = X"$define"; then
11175         volatile=volatile
11176 fi
11177 $cat <<EOP >try.c
11178 #include <stdio.h>
11179 #include <sys/types.h>
11180 #include <signal.h>
11181 #ifdef SIGFPE
11182 $volatile int bletched = 0;
11183 $signal_t blech(s) int s; { bletched = 1; }
11184 #endif
11185 int main() {
11186     $uvtype u = 0;
11187     $nvtype d;
11188     int     n = 8 * $uvsize;
11189     int     i;
11190 #ifdef SIGFPE
11191     signal(SIGFPE, blech);
11192 #endif
11193
11194     for (i = 0; i < n; i++) {
11195       u = u << 1 | ($uvtype)1;
11196       d = ($nvtype)u;
11197       if (($uvtype)d != u)
11198         break;
11199       if (d <= 0)
11200         break;
11201       d = ($nvtype)(u - 1);
11202       if (($uvtype)d != (u - 1))
11203         break;
11204 #ifdef SIGFPE
11205       if (bletched) {
11206         break;
11207 #endif
11208       } 
11209     }
11210     printf("%d\n", ((i == n) ? -n : i));
11211     exit(0);
11212 }
11213 EOP
11214 set try
11215
11216 d_nv_preserves_uv="$undef"
11217 if eval $compile; then
11218         d_nv_preserves_uv_bits="`$run ./try`"
11219 fi
11220 case "$d_nv_preserves_uv_bits" in
11221 \-[1-9]*)       
11222         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11223         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11224         d_nv_preserves_uv="$define"
11225         ;;
11226 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11227         d_nv_preserves_uv="$undef" ;;
11228 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11229         d_nv_preserves_uv_bits="$undef" ;;
11230 esac
11231
11232 $rm -f try.* try
11233
11234
11235 : check for off64_t
11236 echo " "
11237 echo "Checking to see if you have off64_t..." >&4
11238 $cat >try.c <<EOCP
11239 #include <sys/types.h>
11240 #include <unistd.h>
11241 int main() { off64_t x = 7; }
11242 EOCP
11243 set try
11244 if eval $compile; then
11245         val="$define"
11246         echo "You have off64_t."
11247 else
11248         val="$undef"
11249         echo "You do not have off64_t."
11250         case "$lseeksize" in
11251         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11252         esac
11253 fi
11254 $rm -f try.* try
11255 set d_off64_t
11256 eval $setvar
11257
11258 : see if POSIX threads are available
11259 set pthread.h i_pthread
11260 eval $inhdr
11261
11262
11263
11264
11265 : how to create joinable pthreads
11266 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11267         echo " "
11268         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11269         $cat >try.c <<'EOCP'
11270 #include <pthread.h>
11271 int main() {
11272     int detachstate = JOINABLE;
11273 }
11274 EOCP
11275         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11276         if eval $compile; then
11277                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11278                 val="$undef" # Yes, undef.
11279                 set d_old_pthread_create_joinable
11280                 eval $setvar
11281                 val=""
11282                 set old_pthread_create_joinable
11283                 eval $setvar
11284         else
11285                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11286                 if eval $compile; then
11287                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11288                         val="$define"
11289                         set d_old_pthread_create_joinable
11290                         eval $setvar
11291                         val=PTHREAD_CREATE_UNDETACHED
11292                         set old_pthread_create_joinable
11293                         eval $setvar
11294                 else            
11295                         set try -DJOINABLE=__UNDETACHED
11296                         if eval $compile; then
11297                                 echo "You seem to use __UNDETACHED." >&4
11298                                 val="$define"
11299                                 set d_old_pthread_create_joinable
11300                                 eval $setvar
11301                                 val=__UNDETACHED
11302                                 set old_pthread_create_joinable
11303                                 eval $setvar
11304                         else
11305                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11306                                 val="$define"
11307                                 set d_old_pthread_create_joinable
11308                                 eval $setvar
11309                                 val=0
11310                                 set old_pthread_create_joinable
11311                                 eval $setvar
11312                         fi
11313                 fi
11314         fi
11315         $rm -f try try.*
11316 else
11317     d_old_pthread_create_joinable="$undef"
11318     old_pthread_create_joinable=""
11319 fi
11320
11321 : see if pause exists
11322 set pause d_pause
11323 eval $inlibc
11324
11325 : see if pipe exists
11326 set pipe d_pipe
11327 eval $inlibc
11328
11329 : see if poll exists
11330 set poll d_poll
11331 eval $inlibc
11332
11333
11334 : see whether the various POSIXish _yields exist
11335 $cat >try.c <<EOP
11336 #include <pthread.h>
11337 #include <stdio.h>
11338 int main() {
11339 #ifdef SCHED_YIELD
11340         sched_yield();
11341 #else
11342 #ifdef PTHREAD_YIELD
11343         pthread_yield();
11344 #else
11345 #ifdef PTHREAD_YIELD_NULL
11346         pthread_yield(NULL);
11347 #endif
11348 #endif
11349 #endif
11350 }
11351 EOP
11352 : see if sched_yield exists
11353 set try -DSCHED_YIELD
11354 if eval $compile; then
11355     val="$define"
11356     sched_yield='sched_yield()'
11357 else
11358     val="$undef"
11359 fi
11360 case "$usethreads" in
11361 $define)
11362         case "$val" in
11363         $define) echo 'sched_yield() found.' >&4        ;;
11364         *)       echo 'sched_yield() NOT found.' >&4    ;;
11365         esac
11366 esac
11367 set d_sched_yield
11368 eval $setvar
11369
11370 : see if pthread_yield exists
11371 set try -DPTHREAD_YIELD
11372 if eval $compile; then
11373     val="$define"
11374     case "$sched_yield" in
11375     '') sched_yield='pthread_yield()' ;;
11376     esac
11377 else
11378     set try -DPTHREAD_YIELD_NULL
11379     if eval $compile; then
11380         val="$define"
11381         case "$sched_yield" in
11382         '') sched_yield='pthread_yield(NULL)' ;;
11383         esac
11384     else
11385         val="$undef"
11386     fi
11387 fi
11388 case "$usethreads" in
11389 $define)
11390         case "$val" in
11391         $define) echo 'pthread_yield() found.' >&4      ;;
11392         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11393         esac
11394         ;;
11395 esac
11396 set d_pthread_yield
11397 eval $setvar
11398
11399 case "$sched_yield" in
11400 '') sched_yield=undef ;;
11401 esac
11402
11403 $rm -f try try.*
11404
11405 : see if this is a pwd.h system
11406 set pwd.h i_pwd
11407 eval $inhdr
11408
11409 case "$i_pwd" in
11410 $define)
11411         xxx=`./findhdr pwd.h`
11412         $cppstdin $cppflags $cppminus < $xxx >$$.h
11413
11414         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11415                 val="$define"
11416         else
11417                 val="$undef"
11418         fi
11419         set d_pwquota
11420         eval $setvar
11421
11422         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11423                 val="$define"
11424         else
11425                 val="$undef"
11426         fi
11427         set d_pwage
11428         eval $setvar
11429
11430         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11431                 val="$define"
11432         else
11433                 val="$undef"
11434         fi
11435         set d_pwchange
11436         eval $setvar
11437
11438         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11439                 val="$define"
11440         else
11441                 val="$undef"
11442         fi
11443         set d_pwclass
11444         eval $setvar
11445
11446         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11447                 val="$define"
11448         else
11449                 val="$undef"
11450         fi
11451         set d_pwexpire
11452         eval $setvar
11453
11454         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11455                 val="$define"
11456         else
11457                 val="$undef"
11458         fi
11459         set d_pwcomment
11460         eval $setvar
11461
11462         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11463                 val="$define"
11464         else
11465                 val="$undef"
11466         fi
11467         set d_pwgecos
11468         eval $setvar
11469
11470         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11471                 val="$define"
11472         else
11473                 val="$undef"
11474         fi
11475         set d_pwpasswd
11476         eval $setvar
11477
11478         $rm -f $$.h
11479         ;;
11480 *)
11481         val="$undef"; 
11482         set d_pwquota; eval $setvar
11483         set d_pwage; eval $setvar
11484         set d_pwchange; eval $setvar
11485         set d_pwclass; eval $setvar
11486         set d_pwexpire; eval $setvar
11487         set d_pwcomment; eval $setvar
11488         set d_pwgecos; eval $setvar
11489         set d_pwpasswd; eval $setvar
11490         ;;
11491 esac
11492
11493 : see if readdir and friends exist
11494 set readdir d_readdir
11495 eval $inlibc
11496 set seekdir d_seekdir
11497 eval $inlibc
11498 set telldir d_telldir
11499 eval $inlibc
11500 set rewinddir d_rewinddir
11501 eval $inlibc
11502
11503 : see if readlink exists
11504 set readlink d_readlink
11505 eval $inlibc
11506
11507 : see if readv exists
11508 set readv d_readv
11509 eval $inlibc
11510
11511 : see if recvmsg exists
11512 set recvmsg d_recvmsg
11513 eval $inlibc
11514
11515 : see if rename exists
11516 set rename d_rename
11517 eval $inlibc
11518
11519 : see if rmdir exists
11520 set rmdir d_rmdir
11521 eval $inlibc
11522
11523 : see if memory.h is available.
11524 val=''
11525 set memory.h val
11526 eval $inhdr
11527
11528 : See if it conflicts with string.h
11529 case "$val" in
11530 $define)
11531         case "$strings" in
11532         '') ;;
11533         *)
11534                 $cppstdin $cppflags $cppminus < $strings > mem.h
11535                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11536                         echo " "
11537                         echo "We won't be including <memory.h>."
11538                         val="$undef"
11539                 fi
11540                 $rm -f mem.h
11541                 ;;
11542         esac
11543 esac
11544 set i_memory
11545 eval $setvar
11546
11547 : can bcopy handle overlapping blocks?
11548 echo " "
11549 val="$undef"
11550 case "$d_memmove" in
11551 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11552 *)      case "$d_bcopy" in
11553         "$define")
11554                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11555                 $cat >try.c <<EOCP
11556 #$i_memory I_MEMORY
11557 #$i_stdlib I_STDLIB
11558 #$i_string I_STRING
11559 #$i_unistd I_UNISTD
11560 EOCP
11561         $cat >>try.c <<'EOCP'
11562 #include <stdio.h>
11563 #ifdef I_MEMORY
11564 #  include <memory.h>
11565 #endif
11566 #ifdef I_STDLIB
11567 #  include <stdlib.h>
11568 #endif
11569 #ifdef I_STRING
11570 #  include <string.h>
11571 #else
11572 #  include <strings.h>
11573 #endif
11574 #ifdef I_UNISTD
11575 #  include <unistd.h>  /* Needed for NetBSD */
11576 #endif
11577 int main()
11578 {
11579 char buf[128], abc[128];
11580 char *b;
11581 int len;
11582 int off;
11583 int align;
11584
11585 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11586    try to store the string in read-only memory. */
11587 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11588
11589 for (align = 7; align >= 0; align--) {
11590         for (len = 36; len; len--) {
11591                 b = buf+align;
11592                 bcopy(abc, b, len);
11593                 for (off = 1; off <= len; off++) {
11594                         bcopy(b, b+off, len);
11595                         bcopy(b+off, b, len);
11596                         if (bcmp(b, abc, len))
11597                                 exit(1);
11598                 }
11599         }
11600 }
11601 exit(0);
11602 }
11603 EOCP
11604                 set try
11605                 if eval $compile_ok; then
11606                         if ./try 2>/dev/null; then
11607                                 echo "Yes, it can."
11608                                 val="$define"
11609                         else
11610                                 echo "It can't, sorry."
11611                         fi
11612                 else
11613                         echo "(I can't compile the test program, so we'll assume not...)"
11614                 fi
11615                 ;;
11616         esac
11617         $rm -f try.* try core
11618         ;;
11619 esac
11620 set d_safebcpy
11621 eval $setvar
11622
11623 : can memcpy handle overlapping blocks?
11624 echo " "
11625 val="$undef"
11626 case "$d_memmove" in
11627 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11628 *)      case "$d_memcpy" in
11629         "$define")
11630                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11631                 $cat >try.c <<EOCP
11632 #$i_memory I_MEMORY
11633 #$i_stdlib I_STDLIB
11634 #$i_string I_STRING
11635 #$i_unistd I_UNISTD
11636 EOCP
11637         $cat >>try.c <<'EOCP'
11638 #include <stdio.h>
11639 #ifdef I_MEMORY
11640 #  include <memory.h>
11641 #endif
11642 #ifdef I_STDLIB
11643 #  include <stdlib.h>
11644 #endif
11645 #ifdef I_STRING
11646 #  include <string.h>
11647 #else
11648 #  include <strings.h>
11649 #endif
11650 #ifdef I_UNISTD
11651 #  include <unistd.h>  /* Needed for NetBSD */
11652 #endif
11653 int main()
11654 {
11655 char buf[128], abc[128];
11656 char *b;
11657 int len;
11658 int off;
11659 int align;
11660
11661 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11662    try to store the string in read-only memory. */
11663 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11664
11665 for (align = 7; align >= 0; align--) {
11666         for (len = 36; len; len--) {
11667                 b = buf+align;
11668                 memcpy(b, abc, len);
11669                 for (off = 1; off <= len; off++) {
11670                         memcpy(b+off, b, len);
11671                         memcpy(b, b+off, len);
11672                         if (memcmp(b, abc, len))
11673                                 exit(1);
11674                 }
11675         }
11676 }
11677 exit(0);
11678 }
11679 EOCP
11680                 set try
11681                 if eval $compile_ok; then
11682                         if ./try 2>/dev/null; then
11683                                 echo "Yes, it can."
11684                                 val="$define"
11685                         else
11686                                 echo "It can't, sorry."
11687                         fi
11688                 else
11689                         echo "(I can't compile the test program, so we'll assume not...)"
11690                 fi
11691                 ;;
11692         esac
11693         $rm -f try.* try core
11694         ;;
11695 esac
11696 set d_safemcpy
11697 eval $setvar
11698
11699 : can memcmp be trusted to compare relative magnitude?
11700 val="$undef"
11701 case "$d_memcmp" in
11702 "$define")
11703         echo " "
11704         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11705         $cat >try.c <<EOCP
11706 #$i_memory I_MEMORY
11707 #$i_stdlib I_STDLIB
11708 #$i_string I_STRING
11709 #$i_unistd I_UNISTD
11710 EOCP
11711         $cat >>try.c <<'EOCP'
11712 #include <stdio.h>
11713 #ifdef I_MEMORY
11714 #  include <memory.h>
11715 #endif
11716 #ifdef I_STDLIB
11717 #  include <stdlib.h>
11718 #endif
11719 #ifdef I_STRING
11720 #  include <string.h>
11721 #else
11722 #  include <strings.h>
11723 #endif
11724 #ifdef I_UNISTD
11725 #  include <unistd.h>  /* Needed for NetBSD */
11726 #endif
11727 int main()
11728 {
11729 char a = -1;
11730 char b = 0;
11731 if ((a < b) && memcmp(&a, &b, 1) < 0)
11732         exit(1);
11733 exit(0);
11734 }
11735 EOCP
11736         set try
11737         if eval $compile_ok; then
11738                 if $run ./try 2>/dev/null; then
11739                         echo "Yes, it can."
11740                         val="$define"
11741                 else
11742                         echo "No, it can't (it uses signed chars)."
11743                 fi
11744         else
11745                 echo "(I can't compile the test program, so we'll assume not...)"
11746         fi
11747         ;;
11748 esac
11749 $rm -f try.* try core
11750 set d_sanemcmp
11751 eval $setvar
11752
11753 : see if prototype for sbrk is available
11754 echo " "
11755 set d_sbrkproto sbrk $i_unistd unistd.h
11756 eval $hasproto
11757
11758 : see if select exists
11759 set select d_select
11760 eval $inlibc
11761
11762 : see if semctl exists
11763 set semctl d_semctl
11764 eval $inlibc
11765
11766 : see if semget exists
11767 set semget d_semget
11768 eval $inlibc
11769
11770 : see if semop exists
11771 set semop d_semop
11772 eval $inlibc
11773
11774 : see how much of the 'sem*(2)' library is present.
11775 h_sem=true
11776 echo " "
11777 case "$d_semctl$d_semget$d_semop" in
11778 *"$undef"*) h_sem=false;;
11779 esac
11780 case "$osname" in
11781 freebsd)
11782     case "`ipcs 2>&1`" in
11783     "SVID messages"*"not configured"*)
11784         echo "Your $osname does not have the sem*(2) configured." >&4
11785         h_sem=false
11786         val="$undef"
11787         set semctl d_semctl
11788         eval $setvar
11789         set semget d_semget
11790         eval $setvar
11791         set semop d_semop
11792         eval $setvar
11793         ;;
11794     esac
11795     ;;
11796 esac
11797 : we could also check for sys/ipc.h ...
11798 if $h_sem && $test `./findhdr sys/sem.h`; then
11799         echo "You have the full sem*(2) library." >&4
11800         val="$define"
11801 else
11802         echo "You don't have the full sem*(2) library." >&4
11803         val="$undef"
11804 fi
11805 set d_sem
11806 eval $setvar
11807
11808 : see whether sys/sem.h defines union semun
11809 echo " "
11810 $cat > try.c <<'END'
11811 #include <sys/types.h>
11812 #include <sys/ipc.h>
11813 #include <sys/sem.h>
11814 int main () { union semun semun; semun.buf = 0; }
11815 END
11816 set try
11817 if eval $compile; then
11818     echo "You have union semun in <sys/sem.h>." >&4
11819     val="$define"
11820 else
11821     echo "You do not have union semun in <sys/sem.h>." >&4
11822     val="$undef"
11823 fi
11824 $rm -f try try.c try.h
11825 set d_union_semun
11826 eval $setvar
11827
11828 : see how to do semctl IPC_STAT
11829 case "$d_sem" in
11830 $define)
11831     : see whether semctl IPC_STAT can use union semun
11832     echo " "
11833     $cat > try.h <<END
11834 #ifndef S_IRUSR
11835 #   ifdef S_IREAD
11836 #       define S_IRUSR S_IREAD
11837 #       define S_IWUSR S_IWRITE
11838 #       define S_IXUSR S_IEXEC
11839 #   else
11840 #       define S_IRUSR 0400
11841 #       define S_IWUSR 0200
11842 #       define S_IXUSR 0100
11843 #   endif
11844 #   define S_IRGRP (S_IRUSR>>3)
11845 #   define S_IWGRP (S_IWUSR>>3)
11846 #   define S_IXGRP (S_IXUSR>>3)
11847 #   define S_IROTH (S_IRUSR>>6)
11848 #   define S_IWOTH (S_IWUSR>>6)
11849 #   define S_IXOTH (S_IXUSR>>6)
11850 #endif
11851 #ifndef S_IRWXU
11852 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11853 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11854 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11855 #endif
11856 END
11857
11858     $cat > try.c <<END
11859 #include <sys/types.h>
11860 #include <sys/ipc.h>
11861 #include <sys/sem.h>
11862 #include <sys/stat.h>
11863 #include <stdio.h>
11864 #include <errno.h>
11865 #include "try.h"
11866 #ifndef errno
11867 extern int errno;
11868 #endif
11869 #$d_union_semun HAS_UNION_SEMUN
11870 int main() {
11871     union semun
11872 #ifndef HAS_UNION_SEMUN
11873     {
11874         int val;
11875         struct semid_ds *buf;
11876         unsigned short *array;
11877     }
11878 #endif
11879     arg;
11880     int sem, st;
11881
11882 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11883     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11884     if (sem > -1) {
11885         struct semid_ds argbuf;
11886         arg.buf = &argbuf;
11887 #       ifdef IPC_STAT
11888         st = semctl(sem, 0, IPC_STAT, arg);
11889         if (st == 0)
11890             printf("semun\n");
11891         else
11892 #       endif /* IPC_STAT */
11893             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11894 #       ifdef IPC_RMID
11895         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11896 #       endif /* IPC_RMID */
11897             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11898     } else
11899 #endif /* IPC_PRIVATE && ... */
11900         printf("semget failed: errno = %d\n", errno);
11901   return 0;
11902 }
11903 END
11904     val="$undef"
11905     set try
11906     if eval $compile; then
11907         xxx=`$run ./try`
11908         case "$xxx" in
11909         semun) val="$define" ;;
11910         esac
11911     fi
11912     $rm -f try try.c
11913     set d_semctl_semun
11914     eval $setvar
11915     case "$d_semctl_semun" in
11916     $define)
11917         echo "You can use union semun for semctl IPC_STAT." >&4
11918         also='also'
11919         ;;
11920     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11921         also=''
11922         ;;
11923     esac
11924
11925     : see whether semctl IPC_STAT can use struct semid_ds pointer
11926     $cat > try.c <<'END'
11927 #include <sys/types.h>
11928 #include <sys/ipc.h>
11929 #include <sys/sem.h>
11930 #include <sys/stat.h>
11931 #include "try.h"
11932 #include <stdio.h>
11933 #include <errno.h>
11934 #ifndef errno
11935 extern int errno;
11936 #endif
11937 int main() {
11938     struct semid_ds arg;
11939     int sem, st;
11940
11941 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11942     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11943     if (sem > -1) {
11944 #       ifdef IPC_STAT
11945         st = semctl(sem, 0, IPC_STAT, &arg);
11946         if (st == 0)
11947             printf("semid_ds\n");
11948         else
11949 #       endif /* IPC_STAT */
11950             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11951 #       ifdef IPC_RMID
11952         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11953 #       endif /* IPC_RMID */
11954             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11955     } else
11956 #endif /* IPC_PRIVATE && ... */
11957         printf("semget failed: errno = %d\n", errno);
11958
11959     return 0;
11960 }
11961 END
11962     val="$undef"
11963     set try
11964     if eval $compile; then
11965         xxx=`$run ./try`
11966         case "$xxx" in
11967         semid_ds) val="$define" ;;
11968         esac
11969     fi
11970     $rm -f try try.c
11971     set d_semctl_semid_ds
11972     eval $setvar
11973     case "$d_semctl_semid_ds" in
11974     $define)
11975         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11976         ;;
11977     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11978         ;;
11979     esac
11980     $rm -f try.h
11981     ;;
11982 *)  val="$undef"
11983
11984     # We do not have the full sem*(2) library, so assume we can not
11985     # use either.
11986
11987     set d_semctl_semun
11988     eval $setvar
11989
11990     set d_semctl_semid_ds
11991     eval $setvar
11992     ;;
11993 esac
11994
11995 : see if sendmsg exists
11996 set sendmsg d_sendmsg
11997 eval $inlibc
11998
11999 : see if setegid exists
12000 set setegid d_setegid
12001 eval $inlibc
12002
12003 : see if seteuid exists
12004 set seteuid d_seteuid
12005 eval $inlibc
12006
12007 : see if setgrent exists
12008 set setgrent d_setgrent
12009 eval $inlibc
12010
12011 : see if sethostent exists
12012 set sethostent d_sethent
12013 eval $inlibc
12014
12015 : see if setitimer exists
12016 set setitimer d_setitimer
12017 eval $inlibc
12018
12019 : see if setlinebuf exists
12020 set setlinebuf d_setlinebuf
12021 eval $inlibc
12022
12023 : see if setlocale exists
12024 set setlocale d_setlocale
12025 eval $inlibc
12026
12027 : see if setnetent exists
12028 set setnetent d_setnent
12029 eval $inlibc
12030
12031 : see if setprotoent exists
12032 set setprotoent d_setpent
12033 eval $inlibc
12034
12035 : see if setpgid exists
12036 set setpgid d_setpgid
12037 eval $inlibc
12038
12039 : see if setpgrp2 exists
12040 set setpgrp2 d_setpgrp2
12041 eval $inlibc
12042
12043 : see if setpriority exists
12044 set setpriority d_setprior
12045 eval $inlibc
12046
12047 : see if setproctitle exists
12048 set setproctitle d_setproctitle
12049 eval $inlibc
12050
12051 : see if setpwent exists
12052 set setpwent d_setpwent
12053 eval $inlibc
12054
12055 : see if setregid exists
12056 set setregid d_setregid
12057 eval $inlibc
12058 set setresgid d_setresgid
12059 eval $inlibc
12060
12061 : see if setreuid exists
12062 set setreuid d_setreuid
12063 eval $inlibc
12064 set setresuid d_setresuid
12065 eval $inlibc
12066
12067 : see if setrgid exists
12068 set setrgid d_setrgid
12069 eval $inlibc
12070
12071 : see if setruid exists
12072 set setruid d_setruid
12073 eval $inlibc
12074
12075 : see if setservent exists
12076 set setservent d_setsent
12077 eval $inlibc
12078
12079 : see if setsid exists
12080 set setsid d_setsid
12081 eval $inlibc
12082
12083 : see if setvbuf exists
12084 set setvbuf d_setvbuf
12085 eval $inlibc
12086
12087 : see if sfio.h is available
12088 set sfio.h i_sfio
12089 eval $inhdr
12090
12091
12092 : see if sfio library is available
12093 case "$i_sfio" in
12094 $define)
12095         val=''
12096         set sfreserve val
12097         eval $inlibc
12098         ;;
12099 *)
12100         val="$undef"
12101         ;;
12102 esac
12103 : Ok, but do we want to use it.
12104 case "$val" in
12105 $define)
12106         case "$usesfio" in
12107         true|$define|[yY]*) dflt='y';;
12108         *) dflt='n';;
12109         esac
12110         echo "$package can use the sfio library, but it is experimental."
12111         case "$useperlio" in
12112         "$undef")
12113             echo "For sfio also the PerlIO abstraction layer is needed."
12114             echo "Earlier you said you wouldn't want that."
12115             ;;
12116         esac
12117         rp="You seem to have sfio available, do you want to try using it?"
12118         . ./myread
12119         case "$ans" in
12120         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12121                 useperlio="$define"
12122                 val="$define"
12123                 ;;
12124         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12125                 val="$undef"
12126                 ;;
12127         esac
12128         ;;
12129 *)      case "$usesfio" in
12130         true|$define|[yY]*)
12131                 echo "Sorry, cannot find sfio on this machine." >&4
12132                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12133                 val="$undef"
12134                 ;;
12135         esac
12136         ;;
12137 esac
12138 set d_sfio
12139 eval $setvar
12140 case "$d_sfio" in
12141 $define) usesfio='true';;
12142 *) usesfio='false';;
12143 esac
12144 case "$d_sfio" in
12145 $define) ;;
12146 *)      : Remove sfio from list of libraries to use
12147         case "$libs" in
12148         *-lsfio*)
12149                 echo "Removing unneeded -lsfio from library list" >&4
12150                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12151                 shift
12152                 libs="$*"
12153                 echo "libs = $libs" >&4
12154                 ;;
12155         esac
12156 ;;
12157 esac
12158
12159
12160 : see if shmctl exists
12161 set shmctl d_shmctl
12162 eval $inlibc
12163
12164 : see if shmget exists
12165 set shmget d_shmget
12166 eval $inlibc
12167
12168 : see if shmat exists
12169 set shmat d_shmat
12170 eval $inlibc
12171 : see what shmat returns
12172 case "$d_shmat" in
12173 "$define")
12174         $cat >shmat.c <<'END'
12175 #include <sys/shm.h>
12176 void *shmat();
12177 END
12178         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12179                 shmattype='void *'
12180         else
12181                 shmattype='char *'
12182         fi
12183         echo "and it returns ($shmattype)." >&4
12184         : see if a prototype for shmat is available
12185         xxx=`./findhdr sys/shm.h`
12186         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12187         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12188                 val="$define"
12189         else
12190                 val="$undef"
12191         fi
12192         $rm -f shmat.[co]
12193         ;;
12194 *)
12195         val="$undef"
12196         ;;
12197 esac
12198 set d_shmatprototype
12199 eval $setvar
12200
12201 : see if shmdt exists
12202 set shmdt d_shmdt
12203 eval $inlibc
12204
12205 : see how much of the 'shm*(2)' library is present.
12206 h_shm=true
12207 echo " "
12208 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12209 *"$undef"*) h_shm=false;;
12210 esac
12211 case "$osname" in
12212 freebsd)
12213     case "`ipcs 2>&1`" in
12214     "SVID shared memory"*"not configured"*)
12215         echo "Your $osname does not have the shm*(2) configured." >&4
12216         h_shm=false
12217         val="$undef"
12218         set shmctl d_shmctl
12219         evat $setvar
12220         set shmget d_shmget
12221         evat $setvar
12222         set shmat d_shmat
12223         evat $setvar
12224         set shmdt d_shmdt
12225         evat $setvar
12226         ;;
12227     esac
12228     ;;
12229 esac
12230 : we could also check for sys/ipc.h ...
12231 if $h_shm && $test `./findhdr sys/shm.h`; then
12232         echo "You have the full shm*(2) library." >&4
12233         val="$define"
12234 else
12235         echo "You don't have the full shm*(2) library." >&4
12236         val="$undef"
12237 fi
12238 set d_shm
12239 eval $setvar
12240
12241 echo " "
12242 : see if we have sigaction
12243 if set sigaction val -f d_sigaction; eval $csym; $val; then
12244         echo 'sigaction() found.' >&4
12245         $cat > try.c <<'EOP'
12246 #include <stdio.h>
12247 #include <sys/types.h>
12248 #include <signal.h>
12249 int main()
12250 {
12251     struct sigaction act, oact;
12252     act.sa_flags = 0;
12253     oact.sa_handler = 0;
12254     /* so that act and oact are used */
12255     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12256 }
12257 EOP
12258         set try
12259         if eval $compile_ok; then
12260                 val="$define"
12261         else
12262                 echo "But you don't seem to have a useable struct sigaction." >&4
12263                 val="$undef"
12264         fi
12265 else
12266         echo 'sigaction NOT found.' >&4
12267         val="$undef"
12268 fi
12269 set d_sigaction; eval $setvar
12270 $rm -f try try$_o try.c
12271
12272 : see if sigprocmask exists
12273 set sigprocmask d_sigprocmask
12274 eval $inlibc
12275
12276 : see if sigsetjmp exists
12277 echo " "
12278 case "$d_sigsetjmp" in
12279 '')
12280         $cat >try.c <<'EOP'
12281 #include <setjmp.h>
12282 sigjmp_buf env;
12283 int set = 1;
12284 int main()
12285 {
12286         if (sigsetjmp(env,1))
12287                 exit(set);
12288         set = 0;
12289         siglongjmp(env, 1);
12290         exit(1);
12291 }
12292 EOP
12293         set try
12294         if eval $compile; then
12295                 if $run ./try >/dev/null 2>&1; then
12296                         echo "POSIX sigsetjmp found." >&4
12297                         val="$define"
12298                 else
12299                         $cat >&4 <<EOM
12300 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12301 I'll ignore them.
12302 EOM
12303                         val="$undef"
12304                 fi
12305         else
12306                 echo "sigsetjmp not found." >&4
12307                 val="$undef"
12308         fi
12309         ;;
12310 *) val="$d_sigsetjmp"
12311         case "$d_sigsetjmp" in
12312         $define) echo "POSIX sigsetjmp found." >&4;;
12313         $undef) echo "sigsetjmp not found." >&4;;
12314         esac
12315         ;;
12316 esac
12317 set d_sigsetjmp
12318 eval $setvar
12319 $rm -f try.c try
12320
12321 : see if sockatmark exists
12322 set sockatmark d_sockatmark
12323 eval $inlibc
12324
12325 : see if prototype for sockatmark is available
12326 echo " "
12327 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12328 eval $hasproto
12329
12330 : see if socks5_init exists
12331 set socks5_init d_socks5_init
12332 eval $inlibc
12333
12334 : see if prototype for setresgid is available
12335 echo " "
12336 set d_sresgproto setresgid $i_unistd unistd.h
12337 eval $hasproto
12338
12339 : see if prototype for setresuid is available
12340 echo " "
12341 set d_sresuproto setresuid $i_unistd unistd.h
12342 eval $hasproto
12343
12344 : see if sys/stat.h is available
12345 set sys/stat.h i_sysstat
12346 eval $inhdr
12347
12348
12349 : see if stat knows about block sizes
12350 echo " "
12351 echo "Checking to see if your struct stat has st_blocks field..." >&4
12352 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12353 eval $hasfield
12354
12355
12356 : see if this is a sys/vfs.h system
12357 set sys/vfs.h i_sysvfs
12358 eval $inhdr
12359
12360
12361 : see if this is a sys/statfs.h system
12362 set sys/statfs.h i_sysstatfs
12363 eval $inhdr
12364
12365
12366 echo " "
12367 echo "Checking to see if your system supports struct statfs..." >&4
12368 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
12369 eval $hasstruct
12370 case "$d_statfs_s" in
12371 "$define")      echo "Yes, it does."   ;;
12372 *)              echo "No, it doesn't." ;;
12373 esac
12374
12375
12376
12377 : see if struct statfs knows about f_flags
12378 case "$d_statfs_s" in
12379 define) 
12380         echo " "
12381         echo "Checking to see if your struct statfs has f_flags field..." >&4
12382         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
12383         eval $hasfield
12384         ;;
12385 *)      val="$undef"
12386         set d_statfs_f_flags
12387         eval $setvar
12388         ;;
12389 esac
12390 case "$d_statfs_f_flags" in
12391 "$define")      echo "Yes, it does."   ;;
12392 *)              echo "No, it doesn't." ;;
12393 esac
12394
12395 : see if _ptr and _cnt from stdio act std
12396 echo " "
12397
12398 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12399         echo "(Looks like you have stdio.h from BSD.)"
12400         case "$stdio_ptr" in
12401         '') stdio_ptr='((fp)->_p)'
12402                 ptr_lval=$define
12403                 ;;
12404         *)      ptr_lval=$d_stdio_ptr_lval;;
12405         esac
12406         case "$stdio_cnt" in
12407         '') stdio_cnt='((fp)->_r)'
12408                 cnt_lval=$define
12409                 ;;
12410         *)      cnt_lval=$d_stdio_cnt_lval;;
12411         esac
12412         case "$stdio_base" in
12413         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12414         esac
12415         case "$stdio_bufsiz" in
12416         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12417         esac
12418 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12419         echo "(Looks like you have stdio.h from Linux.)"
12420         case "$stdio_ptr" in
12421         '') stdio_ptr='((fp)->_IO_read_ptr)'
12422                 ptr_lval=$define
12423                 ;;
12424         *)      ptr_lval=$d_stdio_ptr_lval;;
12425         esac
12426         case "$stdio_cnt" in
12427         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12428                 cnt_lval=$undef
12429                 ;;
12430         *)      cnt_lval=$d_stdio_cnt_lval;;
12431         esac
12432         case "$stdio_base" in
12433         '') stdio_base='((fp)->_IO_read_base)';;
12434         esac
12435         case "$stdio_bufsiz" in
12436         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12437         esac
12438 else
12439         case "$stdio_ptr" in
12440         '') stdio_ptr='((fp)->_ptr)'
12441                 ptr_lval=$define
12442                 ;;
12443         *)      ptr_lval=$d_stdio_ptr_lval;;
12444         esac
12445         case "$stdio_cnt" in
12446         '') stdio_cnt='((fp)->_cnt)'
12447                 cnt_lval=$define
12448                 ;;
12449         *)      cnt_lval=$d_stdio_cnt_lval;;
12450         esac
12451         case "$stdio_base" in
12452         '') stdio_base='((fp)->_base)';;
12453         esac
12454         case "$stdio_bufsiz" in
12455         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12456         esac
12457 fi
12458
12459 : test whether _ptr and _cnt really work
12460 echo "Checking how std your stdio is..." >&4
12461 $cat >try.c <<EOP
12462 #include <stdio.h>
12463 #define FILE_ptr(fp)    $stdio_ptr
12464 #define FILE_cnt(fp)    $stdio_cnt
12465 int main() {
12466         FILE *fp = fopen("try.c", "r");
12467         char c = getc(fp);
12468         if (
12469                 18 <= FILE_cnt(fp) &&
12470                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12471         )
12472                 exit(0);
12473         exit(1);
12474 }
12475 EOP
12476 val="$undef"
12477 set try
12478 if eval $compile && $to try.c; then
12479         if $run ./try; then
12480                 echo "Your stdio acts pretty std."
12481                 val="$define"
12482         else
12483                 echo "Your stdio isn't very std."
12484         fi
12485 else
12486         echo "Your stdio doesn't appear very std."
12487 fi
12488 $rm -f try.c try
12489 set d_stdstdio
12490 eval $setvar
12491
12492 : Can _ptr be used as an lvalue?
12493 case "$d_stdstdio$ptr_lval" in
12494 $define$define) val=$define ;;
12495 *) val=$undef ;;
12496 esac
12497 set d_stdio_ptr_lval
12498 eval $setvar
12499
12500 : Can _cnt be used as an lvalue?
12501 case "$d_stdstdio$cnt_lval" in
12502 $define$define) val=$define ;;
12503 *) val=$undef ;;
12504 esac
12505 set d_stdio_cnt_lval
12506 eval $setvar
12507
12508
12509 : test whether setting _ptr sets _cnt as a side effect
12510 d_stdio_ptr_lval_sets_cnt="$undef"
12511 d_stdio_ptr_lval_nochange_cnt="$undef"
12512 case "$d_stdio_ptr_lval$d_stdstdio" in
12513 $define$define)
12514         echo "Checking to see what happens if we set the stdio ptr..." >&4
12515 $cat >try.c <<EOP
12516 #include <stdio.h>
12517 /* Can we scream? */
12518 /* Eat dust sed :-) */
12519 /* In the buffer space, no one can hear you scream. */
12520 #define FILE_ptr(fp)    $stdio_ptr
12521 #define FILE_cnt(fp)    $stdio_cnt
12522 #include <sys/types.h>
12523 int main() {
12524         FILE *fp = fopen("try.c", "r");
12525         int c;
12526         char *ptr;
12527         size_t cnt;
12528         if (!fp) {
12529             puts("Fail even to read");
12530             exit(1);
12531         }
12532         c = getc(fp); /* Read away the first # */
12533         if (c == EOF) {
12534             puts("Fail even to read");
12535             exit(1);
12536         }
12537         if (!(
12538                 18 <= FILE_cnt(fp) &&
12539                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12540         )) {
12541                 puts("Fail even to read");
12542                 exit (1);
12543         }
12544         ptr = (char*) FILE_ptr(fp);
12545         cnt = (size_t)FILE_cnt(fp);
12546
12547         FILE_ptr(fp) += 42;
12548
12549         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12550                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12551                 exit (1);
12552         }
12553         if (FILE_cnt(fp) <= 20) {
12554                 printf ("Fail (<20 chars to test)");
12555                 exit (1);
12556         }
12557         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12558                 puts("Fail compare");
12559                 exit (1);
12560         }
12561         if (cnt == FILE_cnt(fp)) {
12562                 puts("Pass_unchanged");
12563                 exit (0);
12564         }       
12565         if (FILE_cnt(fp) == (cnt - 42)) {
12566                 puts("Pass_changed");
12567                 exit (0);
12568         }
12569         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12570         return 1;
12571
12572 }
12573 EOP
12574         set try
12575         if eval $compile && $to try.c; then
12576                 case `$run ./try` in
12577                 Pass_changed)
12578                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12579                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12580                 Pass_unchanged)
12581                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12582                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12583                 Fail*)
12584                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12585                 *)
12586                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12587         esac
12588         else
12589                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12590         fi
12591         $rm -f try.c try
12592         ;;
12593 esac
12594
12595 : see if _base is also standard
12596 val="$undef"
12597 case "$d_stdstdio" in
12598 $define)
12599         $cat >try.c <<EOP
12600 #include <stdio.h>
12601 #define FILE_base(fp)   $stdio_base
12602 #define FILE_bufsiz(fp) $stdio_bufsiz
12603 int main() {
12604         FILE *fp = fopen("try.c", "r");
12605         char c = getc(fp);
12606         if (
12607                 19 <= FILE_bufsiz(fp) &&
12608                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12609         )
12610                 exit(0);
12611         exit(1);
12612 }
12613 EOP
12614         set try
12615         if eval $compile && $to try.c; then
12616                 if $run ./try; then
12617                         echo "And its _base field acts std."
12618                         val="$define"
12619                 else
12620                         echo "But its _base field isn't std."
12621                 fi
12622         else
12623                 echo "However, it seems to be lacking the _base field."
12624         fi
12625         $rm -f try.c try
12626         ;;
12627 esac
12628 set d_stdiobase
12629 eval $setvar
12630
12631 $cat >&4 <<EOM
12632 Checking how to access stdio streams by file descriptor number...
12633 EOM
12634 case "$stdio_stream_array" in
12635 '')     $cat >try.c <<EOCP
12636 #include <stdio.h>
12637 int main() {
12638   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12639     printf("yes\n");
12640 }
12641 EOCP
12642         for s in _iob __iob __sF
12643         do
12644                 set try -DSTDIO_STREAM_ARRAY=$s
12645                 if eval $compile; then
12646                         case "`$run ./try`" in
12647                         yes)    stdio_stream_array=$s; break ;;
12648                         esac
12649                 fi
12650         done
12651         $rm -f try.* try$exe_ext
12652 esac
12653 case "$stdio_stream_array" in
12654 '')     $cat >&4 <<EOM
12655 I can't figure out how to access stdio streams by file descriptor number.
12656 EOM
12657         d_stdio_stream_array="$undef"
12658         ;;
12659 *)      $cat >&4 <<EOM
12660 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12661 EOM
12662         d_stdio_stream_array="$define"
12663         ;;
12664 esac
12665
12666 : see if strcoll exists
12667 set strcoll d_strcoll
12668 eval $inlibc
12669
12670 : check for structure copying
12671 echo " "
12672 echo "Checking to see if your C compiler can copy structs..." >&4
12673 $cat >try.c <<'EOCP'
12674 int main()
12675 {
12676         struct blurfl {
12677                 int dyick;
12678         } foo, bar;
12679
12680         foo = bar;
12681 }
12682 EOCP
12683 if $cc -c try.c >/dev/null 2>&1 ; then
12684         val="$define"
12685         echo "Yup, it can."
12686 else
12687         val="$undef"
12688         echo "Nope, it can't."
12689 fi
12690 set d_strctcpy
12691 eval $setvar
12692 $rm -f try.*
12693
12694 : see if strerror and/or sys_errlist[] exist
12695 echo " "
12696 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12697     if set strerror val -f d_strerror; eval $csym; $val; then
12698                 echo 'strerror() found.' >&4
12699                 d_strerror="$define"
12700                 d_strerrm='strerror(e)'
12701                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12702                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12703                         d_syserrlst="$define"
12704                 else
12705                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12706                         d_syserrlst="$undef"
12707                 fi
12708     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12709                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12710                 echo 'strerror() found in string header.' >&4
12711                 d_strerror="$define"
12712                 d_strerrm='strerror(e)'
12713                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12714                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12715                                 d_syserrlst="$define"
12716                 else
12717                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12718                         d_syserrlst="$undef"
12719                 fi
12720     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12721                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12722                 d_strerror="$undef"
12723                 d_syserrlst="$define"
12724                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12725     else
12726                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12727                 d_strerror="$undef"
12728                 d_syserrlst="$undef"
12729                 d_strerrm='"unknown"'
12730     fi
12731 fi
12732
12733 : see if strftime exists
12734 set strftime d_strftime
12735 eval $inlibc
12736
12737 : see if strtod exists
12738 set strtod d_strtod
12739 eval $inlibc
12740
12741 : see if strtol exists
12742 set strtol d_strtol
12743 eval $inlibc
12744
12745 : see if strtold exists
12746 set strtold d_strtold
12747 eval $inlibc
12748
12749 : see if strtoll exists
12750 set strtoll d_strtoll
12751 eval $inlibc
12752
12753 case "$d_longlong-$d_strtoll" in
12754 "$define-$define")
12755         $cat <<EOM
12756 Checking whether your strtoll() works okay...
12757 EOM
12758         $cat >try.c <<'EOCP'
12759 #include <errno.h>
12760 #ifdef __hpux
12761 #define strtoll __strtoll
12762 #endif
12763 #ifdef __EMX__
12764 #define strtoll _strtoll
12765 #endif
12766 #include <stdio.h>
12767 extern long long int strtoll(char *s, char **, int); 
12768 static int bad = 0;
12769 int check(char *s, long long ell, int een) {
12770         long long gll;
12771         errno = 0;
12772         gll = strtoll(s, 0, 10);
12773         if (!((gll == ell) && (errno == een)))
12774                 bad++;
12775 }
12776 int main() {
12777         check(" 1",                                      1LL, 0);
12778         check(" 0",                                      0LL, 0);
12779         check("-1",                                     -1LL, 0);
12780         check("-9223372036854775808", -9223372036854775808LL, 0);
12781         check("-9223372036854775808", -9223372036854775808LL, 0);
12782         check(" 9223372036854775807",  9223372036854775807LL, 0);
12783         check("-9223372036854775808", -9223372036854775808LL, 0);
12784         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12785         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12786         if (!bad)
12787                 printf("ok\n");
12788 }
12789 EOCP
12790         set try
12791         if eval $compile; then
12792                 yyy=`$run ./try`
12793                 case "$yyy" in
12794                 ok) echo "Your strtoll() seems to be working okay." ;;
12795                 *) cat <<EOM >&4
12796 Your strtoll() doesn't seem to be working okay.
12797 EOM
12798                    d_strtoll="$undef"
12799                    ;;
12800                 esac
12801         else
12802                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12803                 d_strtoll="$undef"
12804         fi
12805         ;;
12806 esac
12807
12808 : see if strtoq exists
12809 set strtoq d_strtoq
12810 eval $inlibc
12811
12812 : see if strtoul exists
12813 set strtoul d_strtoul
12814 eval $inlibc
12815
12816 case "$d_strtoul" in
12817 "$define")
12818         $cat <<EOM
12819 Checking whether your strtoul() works okay...
12820 EOM
12821         $cat >try.c <<'EOCP'
12822 #include <errno.h>
12823 #include <stdio.h>
12824 extern unsigned long int strtoul(char *s, char **, int); 
12825 static int bad = 0;
12826 void check(char *s, unsigned long eul, int een) {
12827         unsigned long gul;
12828         errno = 0;
12829         gul = strtoul(s, 0, 10);
12830         if (!((gul == eul) && (errno == een)))
12831                 bad++;
12832 }
12833 int main() {
12834         check(" 1", 1L, 0);
12835         check(" 0", 0L, 0);
12836 EOCP
12837         case "$longsize" in
12838         8)
12839             $cat >>try.c <<'EOCP'
12840         check("18446744073709551615", 18446744073709551615UL, 0);
12841         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12842 #if 0 /* strtoul() for /^-/ strings is undefined. */
12843         check("-1", 18446744073709551615UL, 0);
12844         check("-18446744073709551614", 2, 0);
12845         check("-18446744073709551615", 1, 0);
12846         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12847         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12848 #endif
12849 EOCP
12850                 ;;
12851         4)
12852                     $cat >>try.c <<'EOCP'
12853         check("4294967295", 4294967295UL, 0);
12854         check("4294967296", 4294967295UL, ERANGE);
12855 #if 0 /* strtoul() for /^-/ strings is undefined. */
12856         check("-1", 4294967295UL, 0);
12857         check("-4294967294", 2, 0);
12858         check("-4294967295", 1, 0);
12859         check("-4294967296", 4294967295UL, ERANGE);
12860         check("-4294967297", 4294967295UL, ERANGE);
12861 #endif
12862 EOCP
12863                 ;;
12864         *)
12865 : Should we write these tests to be more portable by sprintf-ing
12866 : ~0 and then manipulating that char string as input for strtol?
12867                 ;;
12868         esac
12869         $cat >>try.c <<'EOCP'
12870         if (!bad)
12871                 printf("ok\n");
12872         return 0;
12873 }
12874 EOCP
12875         set try
12876         if eval $compile; then
12877                 case "`$run ./try`" in
12878                 ok) echo "Your strtoul() seems to be working okay." ;;
12879                 *) cat <<EOM >&4
12880 Your strtoul() doesn't seem to be working okay.
12881 EOM
12882                    d_strtoul="$undef"
12883                    ;;
12884                 esac
12885         fi
12886         ;;
12887 esac
12888
12889 : see if strtoull exists
12890 set strtoull d_strtoull
12891 eval $inlibc
12892
12893 case "$d_longlong-$d_strtoull" in
12894 "$define-$define")
12895         $cat <<EOM
12896 Checking whether your strtoull() works okay...
12897 EOM
12898         $cat >try.c <<'EOCP'
12899 #include <errno.h>
12900 #ifdef __hpux
12901 #define strtoull __strtoull
12902 #endif
12903 #include <stdio.h>
12904 extern unsigned long long int strtoull(char *s, char **, int); 
12905 static int bad = 0;
12906 int check(char *s, long long eull, int een) {
12907         long long gull;
12908         errno = 0;
12909         gull = strtoull(s, 0, 10);
12910         if (!((gull == eull) && (errno == een)))
12911                 bad++;
12912 }
12913 int main() {
12914         check(" 1",                                        1LL, 0);
12915         check(" 0",                                        0LL, 0);
12916         check("18446744073709551615",  18446744073709551615ULL, 0);
12917         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12918 #if 0 /* strtoull() for /^-/ strings is undefined. */
12919         check("-1",                    18446744073709551615ULL, 0);
12920         check("-18446744073709551614",                     2LL, 0);
12921         check("-18446744073709551615",                     1LL, 0);
12922         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12923         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12924 #endif
12925         if (!bad)
12926                 printf("ok\n");
12927 }
12928 EOCP
12929         set try
12930         if eval $compile; then
12931                 case "`$run ./try`" in
12932                 ok) echo "Your strtoull() seems to be working okay." ;;
12933                 *) cat <<EOM >&4
12934 Your strtoull() doesn't seem to be working okay.
12935 EOM
12936                    d_strtoull="$undef"
12937                    ;;
12938                 esac
12939         fi
12940         ;;
12941 esac
12942
12943 : see if strtouq exists
12944 set strtouq d_strtouq
12945 eval $inlibc
12946
12947 case "$d_strtouq" in
12948 "$define")
12949         $cat <<EOM
12950 Checking whether your strtouq() works okay...
12951 EOM
12952         $cat >try.c <<'EOCP'
12953 #include <errno.h>
12954 #include <stdio.h>
12955 extern unsigned long long int strtouq(char *s, char **, int); 
12956 static int bad = 0;
12957 void check(char *s, unsigned long long eull, int een) {
12958         unsigned long long gull;
12959         errno = 0;
12960         gull = strtouq(s, 0, 10);
12961         if (!((gull == eull) && (errno == een)))
12962                 bad++;
12963 }
12964 int main() {
12965         check(" 1",                                        1LL, 0);
12966         check(" 0",                                        0LL, 0);
12967         check("18446744073709551615",  18446744073709551615ULL, 0);
12968         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12969 #if 0 /* strtouq() for /^-/ strings is undefined. */
12970         check("-1",                    18446744073709551615ULL, 0);
12971         check("-18446744073709551614",                     2LL, 0);
12972         check("-18446744073709551615",                     1LL, 0);
12973         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12974         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12975 #endif
12976         if (!bad)
12977                 printf("ok\n");
12978         return 0;
12979 }
12980 EOCP
12981         set try
12982         if eval $compile; then
12983                 case "`$run ./try`" in
12984                 ok) echo "Your strtouq() seems to be working okay." ;;
12985                 *) cat <<EOM >&4
12986 Your strtouq() doesn't seem to be working okay.
12987 EOM
12988                    d_strtouq="$undef"
12989                    ;;
12990                 esac
12991         fi
12992         ;;
12993 esac
12994
12995 : see if strxfrm exists
12996 set strxfrm d_strxfrm
12997 eval $inlibc
12998
12999 : see if symlink exists
13000 set symlink d_symlink
13001 eval $inlibc
13002
13003 : see if syscall exists
13004 set syscall d_syscall
13005 eval $inlibc
13006
13007 : see if prototype for syscall is available
13008 echo " "
13009 set d_syscallproto syscall $i_unistd unistd.h
13010 eval $hasproto
13011
13012 : see if sysconf exists
13013 set sysconf d_sysconf
13014 eval $inlibc
13015
13016 : see if system exists
13017 set system d_system
13018 eval $inlibc
13019
13020 : see if tcgetpgrp exists
13021 set tcgetpgrp d_tcgetpgrp
13022 eval $inlibc
13023
13024 : see if tcsetpgrp exists
13025 set tcsetpgrp d_tcsetpgrp
13026 eval $inlibc
13027
13028 : see if prototype for telldir is available
13029 echo " "
13030 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13031 eval $hasproto
13032
13033 : see if this is a sys/times.h system
13034 set sys/times.h i_systimes
13035 eval $inhdr
13036
13037 : see if times exists
13038 echo " "
13039 if set times val -f d_times; eval $csym; $val; then
13040         echo 'times() found.' >&4
13041         d_times="$define"
13042         inc=''
13043         case "$i_systimes" in
13044         "$define") inc='sys/times.h';;
13045         esac
13046         rp="What is the type returned by times() on this system?"
13047         set clock_t clocktype long stdio.h sys/types.h $inc
13048         eval $typedef_ask
13049 else
13050         echo 'times() NOT found, hope that will do.' >&4
13051         d_times="$undef"
13052         clocktype='int'
13053 fi
13054
13055 : see if truncate exists
13056 set truncate d_truncate
13057 eval $inlibc
13058
13059 : see if tzname[] exists
13060 echo " "
13061 if set tzname val -a d_tzname; eval $csym; $val; then
13062         val="$define"
13063         echo 'tzname[] found.' >&4
13064 else
13065         val="$undef"
13066         echo 'tzname[] NOT found.' >&4
13067 fi
13068 set d_tzname
13069 eval $setvar
13070
13071 case "$osname" in
13072 next|rhapsody|darwin) multiarch="$define" ;;
13073 esac
13074 case "$multiarch" in
13075 ''|[nN]*) multiarch="$undef" ;;
13076 esac
13077
13078 : check for ordering of bytes in a long
13079 echo " "
13080 case "$usecrosscompile$multiarch" in
13081 *$define*)
13082         $cat <<EOM
13083 You seem to be either cross-compiling or doing a multiarchitecture build,
13084 skipping the byteorder check.
13085
13086 EOM
13087         byteorder='ffff'
13088         ;;
13089 *)
13090         case "$byteorder" in
13091         '')
13092                 $cat <<'EOM'
13093 In the following, larger digits indicate more significance.  A big-endian
13094 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13095 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13096 machines may have weird orders like 3412.  A Cray will report 87654321,
13097 an Alpha will report 12345678. If the test program works the default is
13098 probably right.
13099 I'm now running the test program...
13100 EOM
13101                 $cat >try.c <<'EOCP'
13102 #include <stdio.h>
13103 int main()
13104 {
13105         int i;
13106         union {
13107                 unsigned long l;
13108                 char c[sizeof(long)];
13109         } u;
13110
13111         if (sizeof(long) > 4)
13112                 u.l = (0x08070605L << 32) | 0x04030201L;
13113         else
13114                 u.l = 0x04030201L;
13115         for (i = 0; i < sizeof(long); i++)
13116                 printf("%c", u.c[i]+'0');
13117         printf("\n");
13118         exit(0);
13119 }
13120 EOCP
13121                 xxx_prompt=y
13122                 set try
13123                 if eval $compile && ./try > /dev/null; then
13124                         dflt=`$run ./try`
13125                         case "$dflt" in
13126                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13127                                 echo "(The test program ran ok.)"
13128                                 echo "byteorder=$dflt"
13129                                 xxx_prompt=n
13130                         ;;
13131                         ????|????????) echo "(The test program ran ok.)" ;;
13132                         *) echo "(The test program didn't run right for some reason.)" ;;
13133                         esac
13134                 else
13135                         dflt='4321'
13136                         cat <<'EOM'
13137 (I can't seem to compile the test program.  Guessing big-endian...)
13138 EOM
13139                 fi
13140                 case "$xxx_prompt" in
13141                 y)
13142                         rp="What is the order of bytes in a long?"
13143                         . ./myread
13144                         byteorder="$ans"
13145                         ;;
13146                 *)      byteorder=$dflt
13147                         ;;
13148                 esac
13149                 ;;
13150         esac
13151         $rm -f try.c try
13152         ;;
13153 esac
13154
13155
13156 $cat <<EOM
13157
13158 Checking to see whether you can access character data unalignedly...
13159 EOM
13160 $cat >try.c <<EOCP
13161 #include <stdio.h>
13162 #define U32 $u32type
13163 #define BYTEORDER $byteorder
13164 int main() {
13165 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13166     U8 buf[] = "\0\0\0\1\0\0\0\0";
13167     U32 *up;
13168     int i;
13169
13170     if (sizeof(U32) != 4) {
13171         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13172         exit(1);
13173     }
13174
13175     fflush(stdout);
13176
13177     for (i = 0; i < 4; i++) {
13178         up = (U32*)(buf + i);
13179         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13180                (*up == 1 << (8*(3-i)))  /* little-endian */
13181               )
13182            )
13183         {
13184             printf("read failed (%x)\n", *up);
13185             exit(2);
13186         }
13187     }
13188
13189     /* write test */
13190     for (i = 0; i < 4; i++) {
13191         up = (U32*)(buf + i);
13192         *up = 0xBeef;
13193         if (*up != 0xBeef) {
13194             printf("write failed (%x)\n", *up);
13195             exit(3);
13196         }
13197     }
13198
13199     exit(0);
13200 #else
13201     printf("1\n");
13202     exit(1);
13203 #endif
13204     return 0;
13205 }
13206 EOCP
13207 set try
13208 if eval $compile_ok; then
13209         echo "(Testing for character data alignment may dump core.)" >&4
13210         $run ./try 2>&1 >/dev/null
13211         case "$?" in
13212         0)      cat >&4 <<EOM
13213 You can access character data pretty unalignedly.
13214 EOM
13215                 d_u32align="$undef"
13216                 ;;
13217         *)      cat >&4 <<EOM
13218 It seems that you must access character data in an aligned manner.
13219 EOM
13220                 d_u32align="$define"
13221                 ;;
13222         esac
13223         $rm -f core core.try.* try.core
13224 else
13225         rp='Can you access character data at unaligned addresses?'
13226         dflt='n'
13227         . ./myread
13228         case "$ans" in
13229         [yY]*)  d_u32align="$undef"  ;;
13230         *)      d_u32align="$define" ;;
13231         esac
13232 fi
13233
13234 : see if ualarm exists
13235 set ualarm d_ualarm
13236 eval $inlibc
13237
13238 : see if umask exists
13239 set umask d_umask
13240 eval $inlibc
13241
13242 : see if usleep exists
13243 set usleep d_usleep
13244 eval $inlibc
13245
13246 : see if prototype for usleep is available
13247 echo " "
13248 set d_usleepproto usleep $i_unistd unistd.h
13249 eval $hasproto
13250
13251 : see if ustat exists
13252 set ustat d_ustat
13253 eval $inlibc
13254
13255 : backward compatibility for d_hvfork
13256 if test X$d_hvfork != X; then
13257         d_vfork="$d_hvfork"
13258         d_hvfork=''
13259 fi
13260 : see if there is a vfork
13261 val=''
13262 set vfork val
13263 eval $inlibc
13264
13265 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13266 : perl on Solaris 2.x, and probably elsewhere.
13267 case "$val" in
13268 $define)
13269         echo " "
13270         case "$usevfork" in
13271         false) dflt='n';;
13272         *) dflt='y';;
13273         esac
13274         cat <<'EOM'
13275  
13276 Perl can only use a vfork() that doesn't suffer from strict
13277 restrictions on calling functions or modifying global data in
13278 the child.  For example, glibc-2.1 contains such a vfork()
13279 that is unsuitable.  If your system provides a proper fork()
13280 call, chances are that you do NOT want perl to use vfork().
13281
13282 EOM
13283         rp="Do you still want to use vfork()?"
13284         . ./myread
13285         case "$ans" in
13286         y|Y) ;;
13287         *)
13288                 echo "Ok, we won't use vfork()."
13289                 val="$undef"
13290                 ;;
13291         esac
13292         ;;
13293 esac
13294 set d_vfork
13295 eval $setvar
13296 case "$d_vfork" in
13297 $define) usevfork='true';;
13298 *) usevfork='false';;
13299 esac
13300
13301 : see if this is an sysdir system
13302 set sys/dir.h i_sysdir
13303 eval $inhdr
13304
13305 : see if this is an sysndir system
13306 set sys/ndir.h i_sysndir
13307 eval $inhdr
13308
13309 : see if closedir exists
13310 set closedir d_closedir
13311 eval $inlibc
13312
13313 case "$d_closedir" in
13314 "$define")
13315         echo " "
13316         echo "Checking whether closedir() returns a status..." >&4
13317         cat > try.c <<EOM
13318 #$i_dirent I_DIRENT             /**/
13319 #$i_sysdir I_SYS_DIR            /**/
13320 #$i_sysndir I_SYS_NDIR          /**/
13321 #$i_systypes I_SYS_TYPES        /**/
13322
13323 #if defined(I_SYS_TYPES)
13324 #include <sys/types.h>
13325 #endif
13326 #if defined(I_DIRENT)
13327 #include <dirent.h>
13328 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13329 #include <sys/dir.h>
13330 #endif
13331 #else
13332 #ifdef I_SYS_NDIR
13333 #include <sys/ndir.h>
13334 #else
13335 #ifdef I_SYS_DIR
13336 #ifdef hp9000s500
13337 #include <ndir.h>       /* may be wrong in the future */
13338 #else
13339 #include <sys/dir.h>
13340 #endif
13341 #endif
13342 #endif
13343 #endif 
13344 int main() { return closedir(opendir(".")); }
13345 EOM
13346         set try
13347         if eval $compile_ok; then
13348                 if $run ./try > /dev/null 2>&1 ; then
13349                         echo "Yes, it does."
13350                         val="$undef"
13351                 else
13352                         echo "No, it doesn't."
13353                         val="$define"
13354                 fi
13355         else
13356                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13357                 val="$define"
13358         fi
13359         ;;
13360 *)
13361         val="$undef";
13362         ;;
13363 esac
13364 set d_void_closedir
13365 eval $setvar
13366 $rm -f try try.*
13367 : see if there is a wait4
13368 set wait4 d_wait4
13369 eval $inlibc
13370
13371 : see if waitpid exists
13372 set waitpid d_waitpid
13373 eval $inlibc
13374
13375 : see if wcstombs exists
13376 set wcstombs d_wcstombs
13377 eval $inlibc
13378
13379 : see if wctomb exists
13380 set wctomb d_wctomb
13381 eval $inlibc
13382
13383 : see if writev exists
13384 set writev d_writev
13385 eval $inlibc
13386
13387 : preserve RCS keywords in files with variable substitution, grrr
13388 Date='$Date'
13389 Id='$Id'
13390 Log='$Log'
13391 RCSfile='$RCSfile'
13392 Revision='$Revision'
13393
13394 : check for alignment requirements
13395 echo " "
13396 case "$usecrosscompile$multiarch" in
13397 *$define*)
13398         $cat <<EOM
13399 You seem to be either cross-compiling or doing a multiarchitecture build,
13400 skipping the memory alignment check.
13401
13402 EOM
13403         case "$alignbytes" in
13404         '') alignbytes=8 ;;
13405         esac
13406         ;;
13407 *)
13408         case "$alignbytes" in
13409         '') echo "Checking alignment constraints..." >&4
13410                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13411                         $cat >try.c <<'EOCP'
13412 typedef long double NV;
13413 EOCP
13414                 else
13415                         $cat >try.c <<'EOCP'
13416 typedef double NV;
13417 EOCP
13418                 fi
13419                 $cat >>try.c <<'EOCP'
13420 #include <stdio.h>
13421 struct foobar {
13422         char foo;
13423         NV bar;
13424 } try_algn;
13425 int main()
13426 {
13427     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13428     return(0);
13429 }
13430 EOCP
13431                 set try
13432                 if eval $compile_ok; then
13433                         dflt=`$run ./try`
13434                 else
13435                         dflt='8'
13436                         echo "(I can't seem to compile the test program...)"
13437                 fi
13438                 ;;
13439         *) dflt="$alignbytes"
13440                 ;;
13441         esac
13442         rp="Doubles must be aligned on a how-many-byte boundary?"
13443         . ./myread
13444         alignbytes="$ans"
13445         $rm -f try.c try
13446         ;;
13447 esac
13448
13449
13450 : set the base revision
13451 baserev=5.0
13452
13453 : how do we catenate cpp tokens here?
13454 echo " "
13455 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13456 $cat >cpp_stuff.c <<'EOCP'
13457 #define RCAT(a,b)a/**/b
13458 #define ACAT(a,b)a ## b
13459 RCAT(Rei,ser)
13460 ACAT(Cir,cus)
13461 EOCP
13462 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13463 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13464         echo "Oh!  Smells like ANSI's been here." >&4
13465         echo "We can catify or stringify, separately or together!"
13466         cpp_stuff=42
13467 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13468         echo "Ah, yes!  The good old days!" >&4
13469         echo "However, in the good old days we don't know how to stringify and"
13470         echo "catify at the same time."
13471         cpp_stuff=1
13472 else
13473         $cat >&4 <<EOM
13474 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13475 to have to edit the values of CAT[2-5] in config.h...
13476 EOM
13477         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13478 fi
13479 $rm -f cpp_stuff.*
13480
13481 : see if this is a db.h system
13482 set db.h i_db
13483 eval $inhdr
13484
13485 case "$i_db" in
13486 $define)
13487         : Check db version.
13488         echo " "
13489         echo "Checking Berkeley DB version ..." >&4
13490         $cat >try.c <<EOCP
13491 #$d_const HASCONST
13492 #ifndef HASCONST
13493 #define const
13494 #endif
13495 #include <sys/types.h>
13496 #include <stdio.h>
13497 #include <db.h>
13498 int main(int argc, char *argv[])
13499 {
13500 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13501     int Major, Minor, Patch ;
13502     unsigned long Version ;
13503     (void)db_version(&Major, &Minor, &Patch) ;
13504     if (argc == 2) {
13505         printf("%d %d %d %d %d %d\n",
13506                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13507                Major, Minor, Patch);
13508         exit(0);
13509     }
13510     printf("You have Berkeley DB Version 2 or greater.\n");
13511
13512     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13513                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13514     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13515                 Major, Minor, Patch) ;
13516
13517     /* check that db.h & libdb are compatible */
13518     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13519         printf("db.h and libdb are incompatible.\n") ;
13520         exit(3);        
13521     }
13522
13523     printf("db.h and libdb are compatible.\n") ;
13524
13525     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13526                 + DB_VERSION_PATCH ;
13527
13528     /* needs to be >= 2.3.4 */
13529     if (Version < 2003004) {
13530     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13531         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13532         exit(2);        
13533     }
13534
13535     exit(0);
13536 #else
13537 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13538     if (argc == 2) {
13539         printf("1 0 0\n");
13540         exit(0);
13541     }
13542     printf("You have Berkeley DB Version 1.\n");
13543     exit(0);    /* DB version < 2: the coast is clear. */
13544 #else
13545     exit(1);    /* <db.h> not Berkeley DB? */
13546 #endif
13547 #endif
13548 }
13549 EOCP
13550         set try
13551         if eval $compile_ok && $run ./try; then
13552                 echo 'Looks OK.' >&4
13553                 set `$run ./try 1`
13554                 db_version_major=$1
13555                 db_version_minor=$2
13556                 db_version_patch=$3
13557         else
13558                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13559                 i_db=$undef
13560                 case " $libs " in
13561                 *"-ldb "*)
13562                         : Remove db from list of libraries to use
13563                         echo "Removing unusable -ldb from library list" >&4
13564                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13565                         shift
13566                         libs="$*"
13567                         echo "libs = $libs" >&4
13568                         ;;
13569                 esac
13570         fi
13571         $rm -f try.*
13572         ;;
13573 esac
13574
13575 case "$i_db" in
13576 define)
13577         : Check the return type needed for hash 
13578         echo " "
13579         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13580         $cat >try.c <<EOCP
13581 #$d_const HASCONST
13582 #ifndef HASCONST
13583 #define const
13584 #endif
13585 #include <sys/types.h>
13586 #include <db.h>
13587
13588 #ifndef DB_VERSION_MAJOR
13589 u_int32_t hash_cb (ptr, size)
13590 const void *ptr;
13591 size_t size;
13592 {
13593 }
13594 HASHINFO info;
13595 int main()
13596 {
13597         info.hash = hash_cb;
13598 }
13599 #endif
13600 EOCP
13601         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13602                 if $contains warning try.out >>/dev/null 2>&1 ; then
13603                         db_hashtype='int'
13604                 else
13605                         db_hashtype='u_int32_t'
13606                 fi
13607         else
13608                 : XXX Maybe we should just give up here.
13609                 db_hashtype=u_int32_t
13610                 $cat try.out >&4
13611                 echo "Help:  I can't seem to compile the db test program." >&4
13612                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13613         fi
13614         $rm -f try.*
13615         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13616         ;;
13617 *)      db_hashtype=u_int32_t
13618         ;;
13619 esac
13620 case "$i_db" in
13621 define)
13622         : Check the return type needed for prefix 
13623         echo " "
13624         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13625         cat >try.c <<EOCP
13626 #$d_const HASCONST
13627 #ifndef HASCONST
13628 #define const
13629 #endif
13630 #include <sys/types.h>
13631 #include <db.h>
13632
13633 #ifndef DB_VERSION_MAJOR
13634 size_t prefix_cb (key1, key2)
13635 const DBT *key1;
13636 const DBT *key2;
13637 {
13638 }
13639 BTREEINFO info;
13640 int main()
13641 {
13642         info.prefix = prefix_cb;
13643 }
13644 #endif
13645 EOCP
13646         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13647                 if $contains warning try.out >>/dev/null 2>&1 ; then
13648                         db_prefixtype='int'
13649                 else
13650                         db_prefixtype='size_t'
13651                 fi
13652         else
13653                 db_prefixtype='size_t'
13654                 : XXX Maybe we should just give up here.
13655                 $cat try.out >&4
13656                 echo "Help:  I can't seem to compile the db test program." >&4
13657                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13658         fi
13659         $rm -f try.*
13660         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13661         ;;
13662 *)      db_prefixtype='size_t'
13663         ;;
13664 esac
13665
13666
13667 : How can we generate normalized random numbers ?
13668 echo " "
13669 echo "Looking for a random number function..." >&4
13670 case "$randfunc" in
13671 '')
13672         if set drand48 val -f; eval $csym; $val; then
13673                 dflt="drand48"
13674                 echo "Good, found drand48()." >&4
13675         elif set random val -f; eval $csym; $val; then
13676                 dflt="random"
13677                 echo "OK, found random()." >&4
13678         else
13679                 dflt="rand"
13680                 echo "Yick, looks like I have to use rand()." >&4
13681         fi
13682         echo " "
13683         ;;
13684 *)
13685         dflt="$randfunc"
13686         ;;
13687 esac
13688 cont=true
13689
13690 case "$ccflags" in
13691 *-Dmy_rand=*|*-Dmy_srand=*)
13692         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13693         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13694         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13695         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13696         ;;
13697 esac
13698
13699 while $test "$cont"; do
13700         rp="Use which function to generate random numbers?"
13701         . ./myread
13702         if $test "$ans" = "$dflt"; then
13703                 : null
13704         else
13705                 randbits=''
13706         fi
13707         randfunc="$ans"
13708         if set $ans val -f; eval $csym; $val; then
13709                 cont=''
13710         else
13711                 dflt=y
13712                 rp="I cannot find function $ans. Use that name anyway?"
13713                 . ./myread
13714                 dflt=rand
13715                 case "$ans" in
13716                         [yY]*) cont='';;
13717                 esac
13718         fi
13719         case "$cont" in
13720         '')
13721                 case "$randfunc" in
13722                 drand48)
13723                         drand01="drand48()"
13724                         seedfunc="srand48"
13725                         randbits=48
13726                         randseedtype=long
13727                         ;;
13728                 rand|random)
13729                         case "$randbits" in
13730                         '')
13731 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13732                                 $cat >try.c <<EOCP
13733 #$i_unistd I_UNISTD
13734 #$i_stdlib I_STDLIB
13735 #include <stdio.h>
13736 #ifdef I_UNISTD
13737 #  include <unistd.h>
13738 #endif
13739 #ifdef I_STDLIB
13740 #  include <stdlib.h>
13741 #endif
13742 int main()
13743 {
13744         register int i;
13745         register unsigned long tmp;
13746         register unsigned long max = 0L;
13747
13748         for (i = 1000; i; i--) {
13749                 tmp = (unsigned long) $randfunc();
13750                 if (tmp > max) max = tmp;
13751         }
13752         for (i = 0; max; i++)
13753                 max /= 2;
13754         printf("%d\n",i);
13755 }
13756 EOCP
13757                                 set try
13758                                 if eval $compile_ok; then
13759                                         dflt=`try`
13760                                 else
13761                                         dflt='?'
13762                                         echo "(I can't seem to compile the test program...)"
13763                                 fi
13764                                 ;;
13765                         *)
13766                                 dflt="$randbits"
13767                                 ;;
13768                         esac
13769                         rp="How many bits does your $randfunc() function produce?"
13770                         . ./myread
13771                         randbits="$ans"
13772                         $rm -f try.c try
13773                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13774                         seedfunc="s$randfunc"
13775                         randseedtype=unsigned
13776                         ;;
13777                 *)
13778                         dflt="31"
13779                         rp="How many bits does your $randfunc() function produce?"
13780                         . ./myread
13781                         randbits="$ans"
13782                         seedfunc="s$randfunc"
13783                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13784                         if set $seedfunc val -f; eval $csym; $val; then
13785                                 echo "(Using $seedfunc() to seed random generator)"
13786                         else
13787                                 echo "(Warning: no $seedfunc() to seed random generator)"
13788                                 seedfunc=rand
13789                         fi
13790                         randseedtype=unsigned
13791                         ;;
13792                 esac
13793                 ;;
13794         esac
13795 done
13796
13797 echo " "
13798 echo "Determining whether or not we are on an EBCDIC system..." >&4
13799 $cat >try.c <<'EOM'
13800 int main()
13801 {
13802   if ('M'==0xd4) return 0;
13803   return 1;
13804 }
13805 EOM
13806
13807 val=$undef
13808 set try
13809 if eval $compile_ok; then
13810         if $run ./try; then
13811                 echo "You seem to speak EBCDIC." >&4
13812                 val="$define"
13813         else
13814                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13815         fi
13816 else
13817         echo "I'm unable to compile the test program." >&4
13818         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13819 fi
13820 $rm -f try try.*
13821 set ebcdic
13822 eval $setvar
13823
13824 echo " "
13825 $cat >&4 <<EOM
13826 Checking how to flush all pending stdio output...
13827 EOM
13828 # I only know how to find the first 32 possibly open files on SunOS.
13829 # See also hints/sunos_4_1.sh and util.c  --AD
13830 case "$osname" in
13831 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13832 esac
13833 $cat >>try.c <<EOCP
13834 #include <stdio.h>
13835 #$i_unistd I_UNISTD
13836 #ifdef I_UNISTD
13837 # include <unistd.h>
13838 #endif
13839 #$d_sysconf HAS_SYSCONF
13840 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13841 #ifdef HAS_STDIO_STREAM_ARRAY
13842 # define STDIO_STREAM_ARRAY $stdio_stream_array
13843 #endif
13844 int main() {
13845   FILE* p;
13846   unlink("try.out");
13847   p = fopen("try.out", "w");
13848 #ifdef TRY_FPUTC
13849   fputc('x', p);
13850 #else
13851 # ifdef TRY_FPRINTF
13852   fprintf(p, "x");
13853 # endif
13854 #endif
13855 #ifdef TRY_FFLUSH_NULL
13856   fflush(NULL);
13857 #endif
13858 #ifdef TRY_FFLUSH_ALL
13859   {
13860     long open_max = -1;
13861 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13862     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13863 # else
13864 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13865     open_max = sysconf(_SC_OPEN_MAX);
13866 #  else
13867 #   ifdef FOPEN_MAX
13868     open_max = FOPEN_MAX;
13869 #   else
13870 #    ifdef OPEN_MAX
13871     open_max = OPEN_MAX;
13872 #    else
13873 #     ifdef _NFILE
13874     open_max = _NFILE;
13875 #     endif
13876 #    endif
13877 #   endif
13878 #  endif
13879 # endif 
13880 # ifdef HAS_STDIO_STREAM_ARRAY
13881     if (open_max > 0) {
13882       long i;
13883       for (i = 0; i < open_max; i++)
13884             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13885                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13886                 STDIO_STREAM_ARRAY[i]._flag)
13887                 fflush(&STDIO_STREAM_ARRAY[i]);
13888     }   
13889   }
13890 # endif
13891 #endif
13892   _exit(42);
13893 }
13894 EOCP
13895 : first we have to find out how _not_ to flush
13896 $to try.c
13897 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13898     output=''
13899     set try -DTRY_FPUTC
13900     if eval $compile; then
13901             $run ./try 2>/dev/null
13902             code="$?"
13903             $from try.out
13904             if $test ! -s try.out -a "X$code" = X42; then
13905                 output=-DTRY_FPUTC
13906             fi
13907     fi
13908     case "$output" in
13909     '')
13910             set try -DTRY_FPRINTF
13911             if eval $compile; then
13912                     $run ./try 2>/dev/null
13913                     code="$?"
13914                     $from try.out
13915                     if $test ! -s try.out -a "X$code" = X42; then
13916                         output=-DTRY_FPRINTF
13917                     fi
13918             fi
13919         ;;
13920     esac
13921 fi
13922 : check for fflush NULL behaviour
13923 case "$fflushNULL" in
13924 '')     set try -DTRY_FFLUSH_NULL $output
13925         if eval $compile; then
13926                 $run ./try 2>/dev/null
13927                 code="$?"
13928                 $from try.out
13929                 if $test -s try.out -a "X$code" = X42; then
13930                         fflushNULL="`$cat try.out`"
13931                 else
13932                         if $test "X$code" != X42; then
13933                                 $cat >&4 <<EOM
13934 (If this test failed, don't worry, we'll try another method shortly.)
13935 EOM
13936                         fi
13937                 fi
13938         fi
13939         $rm -f core try.core core.try.*
13940         case "$fflushNULL" in
13941         x)      $cat >&4 <<EOM
13942 Your fflush(NULL) works okay for output streams.
13943 Let's see if it clobbers input pipes...
13944 EOM
13945 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13946 # bug that improperly flushes the input end of pipes.  So we avoid the
13947 # autoflush on fork/system/exec support for now. :-(
13948 $cat >tryp.c <<EOCP
13949 #include <stdio.h>
13950 int
13951 main(int argc, char **argv)
13952 {
13953     char buf[1024];
13954     int i;
13955     char *bp = buf;
13956     while (1) {
13957         while ((i = getc(stdin)) != -1
13958                && (*bp++ = i) != '\n'
13959                && bp < &buf[1024])
13960         /* DO NOTHING */ ;
13961         *bp = '\0';
13962         fprintf(stdout, "%s", buf);
13963         fflush(NULL);
13964         if (i == -1)
13965             return 0;
13966         bp = buf;
13967     }
13968 }
13969 EOCP
13970                 fflushNULL="$define"
13971                 set tryp
13972                 if eval $compile; then
13973                     $rm -f tryp.out
13974                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13975                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13976                        $cat >&4 <<EOM
13977 fflush(NULL) seems to behave okay with input streams.
13978 EOM
13979                         fflushNULL="$define"
13980                     else
13981                         $cat >&4 <<EOM
13982 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13983 EOM
13984                         fflushNULL="$undef"
13985                     fi
13986                 fi
13987                 $rm -f core tryp.c tryp.core core.tryp.*
13988                 ;;
13989         '')     $cat >&4 <<EOM
13990 Your fflush(NULL) isn't working (contrary to ANSI C).
13991 EOM
13992                 fflushNULL="$undef"
13993                 ;;
13994         *)      $cat >&4 <<EOM
13995 Cannot figure out whether your fflush(NULL) works or not.
13996 I'm assuming it doesn't (contrary to ANSI C).
13997 EOM
13998                 fflushNULL="$undef"
13999                 ;;
14000         esac
14001         ;;
14002 $define|true|[yY]*)
14003         fflushNULL="$define"
14004         ;;
14005 *)
14006         fflushNULL="$undef"
14007         ;;
14008 esac
14009 : check explicit looping only if NULL did not work, and if the pipe
14010 : bug does not show up on an explicit flush too
14011 case "$fflushNULL" in
14012 "$undef")
14013         $cat >tryp.c <<EOCP
14014 #include <stdio.h>
14015 int
14016 main(int argc, char **argv)
14017 {
14018     char buf[1024];
14019     int i;
14020     char *bp = buf;
14021     while (1) {
14022         while ((i = getc(stdin)) != -1
14023                && (*bp++ = i) != '\n'
14024                && bp < &buf[1024])
14025         /* DO NOTHING */ ;
14026         *bp = '\0';
14027         fprintf(stdout, "%s", buf);
14028         fflush(stdin);
14029         if (i == -1)
14030             return 0;
14031         bp = buf;
14032     }
14033 }
14034 EOCP
14035         set tryp
14036         if eval $compile; then
14037             $rm -f tryp.out
14038             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14039             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14040                $cat >&4 <<EOM
14041 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14042 EOM
14043                 : now check for fflushall behaviour
14044                 case "$fflushall" in
14045                 '')     set try -DTRY_FFLUSH_ALL $output
14046                         if eval $compile; then
14047                                 $cat >&4 <<EOM
14048 (Now testing the other method--but note that this also may fail.)
14049 EOM
14050                                 $run ./try 2>/dev/null
14051                                 code=$?
14052                                 $from try.out
14053                                 if $test -s try.out -a "X$code" = X42; then
14054                                         fflushall="`$cat try.out`"
14055                                 fi
14056                         fi
14057                         $rm -f core try.core core.try.*
14058                         case "$fflushall" in
14059                         x)      $cat >&4 <<EOM
14060 Whew. Flushing explicitly all the stdio streams works.
14061 EOM
14062                                 fflushall="$define"
14063                                 ;;
14064                         '')     $cat >&4 <<EOM
14065 Sigh. Flushing explicitly all the stdio streams doesn't work.
14066 EOM
14067                                 fflushall="$undef"
14068                                 ;;
14069                         *)      $cat >&4 <<EOM
14070 Cannot figure out whether flushing stdio streams explicitly works or not.
14071 I'm assuming it doesn't.
14072 EOM
14073                                 fflushall="$undef"
14074                                 ;;
14075                         esac
14076                         ;;
14077                 "$define"|true|[yY]*)
14078                         fflushall="$define"
14079                         ;;
14080                 *)
14081                         fflushall="$undef"
14082                         ;;
14083                 esac
14084             else
14085                 $cat >&4 <<EOM
14086 All is futile.  Even fflush(stdin) clobbers input pipes!
14087 EOM
14088                 fflushall="$undef"
14089             fi
14090         else
14091             fflushall="$undef"
14092         fi
14093         $rm -f core tryp.c tryp.core core.tryp.*
14094         ;;
14095 *)      fflushall="$undef"
14096         ;;
14097 esac
14098
14099 case "$fflushNULL$fflushall" in
14100 undefundef)
14101         $cat <<EOM
14102 OK, I give up.  I cannot figure out how to flush pending stdio output.
14103 We won't be flushing handles at all before fork/exec/popen.
14104 EOM
14105         ;;
14106 esac
14107 $rm -f try.* try$exe_ext
14108
14109 : Store the full pathname to the ar program for use in the C program
14110 : Respect a hint or command line value for full_ar.
14111 case "$full_ar" in
14112 '') full_ar=$ar ;;
14113 esac
14114
14115 : Store the full pathname to the sed program for use in the C program
14116 full_sed=$sed
14117
14118 : see what type gids are declared as in the kernel
14119 echo " "
14120 echo "Looking for the type for group ids returned by getgid()."
14121 set gid_t gidtype xxx stdio.h sys/types.h
14122 eval $typedef
14123 case "$gidtype" in
14124 xxx)
14125         xxx=`./findhdr sys/user.h`
14126         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14127         case $1 in
14128         unsigned) dflt="$1 $2" ;;
14129         *) dflt="$1" ;;
14130         esac
14131         ;;
14132 *) dflt="$gidtype";;
14133 esac
14134 case "$gidtype" in
14135 gid_t) echo "gid_t found." ;;
14136 *)      rp="What is the type for group ids returned by getgid()?"
14137         . ./myread
14138         gidtype="$ans"
14139         ;;
14140 esac
14141
14142 echo " "
14143 case "$gidtype" in
14144 *_t) zzz="$gidtype"     ;;
14145 *)   zzz="gid"          ;;
14146 esac
14147 echo "Checking the size of $zzz..." >&4 
14148 cat > try.c <<EOCP
14149 #include <sys/types.h>
14150 #include <stdio.h>
14151 int main() {
14152     printf("%d\n", (int)sizeof($gidtype));
14153     exit(0);
14154 }
14155 EOCP
14156 set try
14157 if eval $compile_ok; then
14158         yyy=`$run ./try`
14159         case "$yyy" in
14160         '')     gidsize=4
14161                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14162                 ;;
14163         *)      gidsize=$yyy
14164                 echo "Your $zzz is $gidsize bytes long."
14165                 ;;
14166         esac
14167 else
14168         gidsize=4
14169         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14170 fi
14171
14172
14173 echo " "
14174 case "$gidtype" in
14175 *_t) zzz="$gidtype"     ;;
14176 *)   zzz="gid"          ;;
14177 esac
14178 echo "Checking the sign of $zzz..." >&4 
14179 cat > try.c <<EOCP
14180 #include <sys/types.h>
14181 #include <stdio.h>
14182 int main() {
14183         $gidtype foo = -1;
14184         if (foo < 0)
14185                 printf("-1\n");
14186         else
14187                 printf("1\n");
14188 }
14189 EOCP
14190 set try
14191 if eval $compile; then
14192         yyy=`$run ./try`
14193         case "$yyy" in
14194         '')     gidsign=1
14195                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14196                 ;;
14197         *)      gidsign=$yyy
14198                 case "$gidsign" in
14199                  1) echo "Your $zzz is unsigned." ;;
14200                 -1) echo "Your $zzz is signed."   ;;
14201                 esac
14202                 ;;
14203         esac
14204 else
14205         gidsign=1
14206         echo "(I can't compile the test program--guessing unsigned.)" >&4
14207 fi
14208
14209
14210 echo " "
14211
14212 if $test X"$quadtype" != X; then
14213
14214 echo "Checking how to print 64-bit integers..." >&4
14215
14216 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14217         $cat >try.c <<'EOCP'
14218 #include <sys/types.h>
14219 #include <stdio.h>
14220 int main() {
14221   int 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='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14231                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14232                         echo "We will use %d."
14233                         ;;
14234                 esac
14235         fi
14236 fi
14237
14238 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14239         $cat >try.c <<'EOCP'
14240 #include <sys/types.h>
14241 #include <stdio.h>
14242 int main() {
14243   long q = 12345678901;
14244   printf("%ld\n", q);
14245 }
14246 EOCP
14247         set try
14248         if eval $compile; then
14249                 yyy=`$run ./try`
14250                 case "$yyy" in
14251                 12345678901)
14252                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14253                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14254                         echo "We will use %ld."
14255                         ;;
14256                 esac
14257         fi
14258 fi
14259
14260 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14261         $cat >try.c <<'EOCP'
14262 #include <sys/types.h>
14263 #include <inttypes.h>
14264 #include <stdio.h>
14265 int main() {
14266   int64_t q = 12345678901;
14267   printf("%" PRId64 "\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=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14276                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14277                         echo "We will use the C9X style."
14278                         ;;
14279                 esac
14280         fi
14281 fi
14282
14283 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14284         $cat >try.c <<EOCP
14285 #include <sys/types.h>
14286 #include <stdio.h>
14287 int main() {
14288   $quadtype q = 12345678901;
14289   printf("%Ld\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='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14298                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14299                         echo "We will use %Ld."
14300                         ;;
14301                 esac
14302         fi
14303 fi
14304
14305 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14306         $cat >try.c <<'EOCP'
14307 #include <sys/types.h>
14308 #include <stdio.h>
14309 int main() {
14310   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14311   printf("%lld\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='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14320                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14321                         echo "We will use the %lld style."
14322                         ;;
14323                 esac
14324         fi
14325 fi
14326
14327 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14328         $cat >try.c <<EOCP
14329 #include <sys/types.h>
14330 #include <stdio.h>
14331 int main() {
14332   $quadtype q = 12345678901;
14333   printf("%qd\n", q);
14334 }
14335 EOCP
14336         set try
14337         if eval $compile; then
14338                 yyy=`$run ./try`
14339                 case "$yyy" in
14340                 12345678901)
14341                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14342                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14343                         echo "We will use %qd."
14344                         ;;
14345                 esac
14346         fi
14347 fi
14348
14349 if $test X"$sPRId64" = X; then
14350         echo "Cannot figure out how to print 64-bit integers." >&4
14351 fi
14352
14353 $rm -f try try.*
14354
14355 fi
14356
14357 case "$sPRId64" in
14358 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14359         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14360         ;;
14361 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14362         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14363         ;;
14364 esac
14365
14366
14367 echo " "
14368 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14369
14370 if $test X"$ivsize" = X8; then
14371         ivdformat="$sPRId64"
14372         uvuformat="$sPRIu64"
14373         uvoformat="$sPRIo64"
14374         uvxformat="$sPRIx64"
14375         uvXUformat="$sPRIXU64"
14376 else
14377         if $test X"$ivsize" = X"$longsize"; then
14378                 ivdformat='"ld"'
14379                 uvuformat='"lu"'
14380                 uvoformat='"lo"'
14381                 uvxformat='"lx"'
14382                 uvXUformat='"lX"'
14383         else
14384                 if $test X"$ivsize" = X"$intsize"; then
14385                         ivdformat='"d"'
14386                         uvuformat='"u"'
14387                         uvoformat='"o"'
14388                         uvxformat='"x"'
14389                         uvXUformat='"X"'
14390                 else
14391                         : far out
14392                         if $test X"$ivsize" = X"$shortsize"; then
14393                                 ivdformat='"hd"'
14394                                 uvuformat='"hu"'
14395                                 uvoformat='"ho"'
14396                                 uvxformat='"hx"'
14397                                 uvXUformat='"hX"'
14398                         fi
14399                 fi
14400         fi
14401 fi
14402
14403 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14404         nveformat="$sPRIeldbl"
14405         nvfformat="$sPRIfldbl"
14406         nvgformat="$sPRIgldbl"
14407         nvEUformat="$sPRIEUldbl"
14408         nvFUformat="$sPRIFUldbl"
14409         nvGUformat="$sPRIGUldbl"
14410 else
14411         nveformat='"e"'
14412         nvfformat='"f"'
14413         nvgformat='"g"'
14414         nvEUformat='"E"'
14415         nvFUformat='"F"'
14416         nvGUformat='"G"'
14417 fi
14418
14419 case "$ivdformat" in
14420 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14421     exit 1
14422     ;;
14423 esac
14424
14425
14426 echo " "
14427 $echo "Checking the format string to be used for gids..." >&4
14428
14429 case "$gidsign" in
14430 -1)     if $test X"$gidsize" = X"$ivsize"; then
14431                 gidformat="$ivdformat"
14432         else
14433                 if $test X"$gidsize" = X"$longsize"; then
14434                         gidformat='"ld"'
14435                 else
14436                         if $test X"$gidsize" = X"$intsize"; then
14437                                 gidformat='"d"'
14438                         else
14439                                 if $test X"$gidsize" = X"$shortsize"; then
14440                                         gidformat='"hd"'
14441                                 fi
14442                         fi
14443                 fi
14444         fi
14445         ;;
14446 *)      if $test X"$gidsize" = X"$uvsize"; then
14447                 gidformat="$uvuformat"
14448         else
14449                 if $test X"$gidsize" = X"$longsize"; then
14450                         gidformat='"lu"'
14451                 else
14452                         if $test X"$gidsize" = X"$intsize"; then
14453                                 gidformat='"u"'
14454                         else
14455                                 if $test X"$gidsize" = X"$shortsize"; then
14456                                         gidformat='"hu"'
14457                                 fi
14458                         fi
14459                 fi
14460         fi
14461         ;;
14462 esac
14463
14464 : see if getgroups exists
14465 set getgroups d_getgrps
14466 eval $inlibc
14467
14468 : see if setgroups exists
14469 set setgroups d_setgrps
14470 eval $inlibc
14471
14472
14473 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14474 echo " "
14475 case "$d_getgrps$d_setgrps" in
14476 *define*)
14477         case "$groupstype" in
14478         '') dflt="$gidtype" ;;
14479         *)  dflt="$groupstype" ;;
14480         esac
14481         $cat <<EOM
14482 What type of pointer is the second argument to getgroups() and setgroups()?
14483 Usually this is the same as group ids, $gidtype, but not always.
14484
14485 EOM
14486         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14487         . ./myread
14488         groupstype="$ans"
14489         ;;
14490 *)  groupstype="$gidtype";;
14491 esac
14492
14493 echo " "
14494 echo "Checking if your $make program sets \$(MAKE)..." >&4
14495 case "$make_set_make" in
14496 '')
14497         $sed 's/^X //' > testmake.mak << 'EOF'
14498 Xall:
14499 X       @echo 'maketemp="$(MAKE)"'
14500 EOF
14501         case "`$make -f testmake.mak 2>/dev/null`" in
14502         *maketemp=*) make_set_make='#' ;;
14503         *)      make_set_make="MAKE=$make" ;;
14504         esac
14505         $rm -f testmake.mak
14506         ;;
14507 esac
14508 case "$make_set_make" in
14509 '#') echo "Yup, it does.";;
14510 *) echo "Nope, it doesn't.";;
14511 esac
14512
14513 : see what type is used for mode_t
14514 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14515 set mode_t modetype int stdio.h sys/types.h
14516 eval $typedef_ask
14517
14518 : see if stdarg is available
14519 echo " "
14520 if $test `./findhdr stdarg.h`; then
14521         echo "<stdarg.h> found." >&4
14522         valstd="$define"
14523 else
14524         echo "<stdarg.h> NOT found." >&4
14525         valstd="$undef"
14526 fi
14527
14528 : see if varags is available
14529 echo " "
14530 if $test `./findhdr varargs.h`; then
14531         echo "<varargs.h> found." >&4
14532 else
14533         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14534 fi
14535
14536 : set up the varargs testing programs
14537 $cat > varargs.c <<EOP
14538 #ifdef I_STDARG
14539 #include <stdarg.h>
14540 #endif
14541 #ifdef I_VARARGS
14542 #include <varargs.h>
14543 #endif
14544
14545 #ifdef I_STDARG
14546 int f(char *p, ...)
14547 #else
14548 int f(va_alist)
14549 va_dcl
14550 #endif
14551 {
14552         va_list ap;
14553 #ifndef I_STDARG
14554         char *p;
14555 #endif
14556 #ifdef I_STDARG
14557         va_start(ap,p);
14558 #else
14559         va_start(ap);
14560         p = va_arg(ap, char *);
14561 #endif
14562         va_end(ap);
14563 }
14564 EOP
14565 $cat > varargs <<EOP
14566 $startsh
14567 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14568         echo "true"
14569 else
14570         echo "false"
14571 fi
14572 $rm -f varargs$_o
14573 EOP
14574 chmod +x varargs
14575
14576 : now check which varargs header should be included
14577 echo " "
14578 i_varhdr=''
14579 case "$valstd" in
14580 "$define")
14581         if `./varargs I_STDARG`; then
14582                 val='stdarg.h'
14583         elif `./varargs I_VARARGS`; then
14584                 val='varargs.h'
14585         fi
14586         ;;
14587 *)
14588         if `./varargs I_VARARGS`; then
14589                 val='varargs.h'
14590         fi
14591         ;;
14592 esac
14593 case "$val" in
14594 '')
14595 echo "I could not find the definition for va_dcl... You have problems..." >&4
14596         val="$undef"; set i_stdarg; eval $setvar
14597         val="$undef"; set i_varargs; eval $setvar
14598         ;;
14599 *) 
14600         set i_varhdr
14601         eval $setvar
14602         case "$i_varhdr" in
14603         stdarg.h)
14604                 val="$define"; set i_stdarg; eval $setvar
14605                 val="$undef"; set i_varargs; eval $setvar
14606                 ;;
14607         varargs.h)
14608                 val="$undef"; set i_stdarg; eval $setvar
14609                 val="$define"; set i_varargs; eval $setvar
14610                 ;;
14611         esac
14612         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14613 esac
14614 $rm -f varargs*
14615
14616 : see if we need va_copy
14617 echo " "
14618 case "$i_stdarg" in
14619 "$define")
14620         $cat >try.c <<EOCP
14621 #include <stdarg.h>
14622 #include <stdio.h>
14623 #$i_stdlib I_STDLIB
14624 #ifdef I_STDLIB
14625 #include <stdlib.h>
14626 #endif
14627 #include <signal.h>
14628
14629 int
14630 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14631 {
14632   return vfprintf(f, fmt, *valp);
14633 }
14634  
14635 int    
14636 myvfprintf(FILE *f, const  char *fmt, va_list val)
14637 {
14638   return ivfprintf(f, fmt, &val);
14639 }
14640       
14641 int
14642 myprintf(char *fmt, ...) 
14643 {
14644   va_list val;
14645   va_start(val, fmt);
14646   return myvfprintf(stdout, fmt, val); 
14647 }         
14648
14649 int
14650 main(int ac, char **av)
14651 {
14652   signal(SIGSEGV, exit);
14653
14654   myprintf("%s%cs all right, then\n", "that", '\'');                            
14655   exit(0);      
14656 }
14657 EOCP
14658         set try
14659         if eval $compile && $run ./try 2>&1 >/dev/null; then
14660                 case "`$run ./try`" in
14661                 "that's all right, then")
14662                         okay=yes
14663                         ;;
14664                 esac
14665         fi
14666         case "$okay" in
14667         yes)    echo "It seems that you don't need va_copy()." >&4
14668                 need_va_copy="$undef"
14669                 ;;
14670         *)      echo "It seems that va_copy() or similar will be needed." >&4
14671                 need_va_copy="$define"
14672                 ;;
14673         esac
14674         $rm -f try.* core core.* *.core *.core.*
14675         ;;
14676 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14677         ;;
14678 esac
14679
14680 : define a fucntion to check prototypes
14681 $cat > protochk <<EOSH
14682 $startsh
14683 cc="$cc"
14684 optimize="$optimize"
14685 ccflags="$ccflags"
14686 prototype="$prototype"
14687 define="$define"
14688 rm=$rm
14689 EOSH
14690
14691 $cat >> protochk <<'EOSH'
14692
14693 $rm -f try.c
14694 foo="$1"
14695 shift
14696 while test $# -ge 2; do
14697         case "$1" in
14698                 $define) echo "#include <$2>" >> try.c ;;
14699                 literal) echo "$2" >> try.c ;;
14700         esac
14701     shift 2
14702 done
14703 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14704 cat >> try.c <<'EOCP'
14705 #ifdef CAN_PROTOTYPE
14706 #define _(args) args
14707 #else
14708 #define _(args) ()
14709 #endif
14710 EOCP
14711 echo "$foo" >> try.c
14712 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14713 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14714 status=$?
14715 $rm -f try.[co]
14716 exit $status
14717 EOSH
14718 chmod +x protochk
14719 $eunicefix protochk
14720
14721 : see what type is used for size_t
14722 rp="What is the type used for the length parameter for string functions?"
14723 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14724 eval $typedef_ask
14725
14726 : check for type of arguments to gethostbyaddr. 
14727 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14728         case "$d_gethbyaddr" in
14729         $define)
14730                 $cat <<EOM
14731
14732 Checking to see what type of arguments are accepted by gethostbyaddr().
14733 EOM
14734                 hdrs="$define sys/types.h
14735                         $d_socket sys/socket.h 
14736                         $i_niin netinet/in.h 
14737                         $i_netdb netdb.h
14738                         $i_unistd unistd.h"
14739                 : The first arg can 'char *' or 'void *'
14740                 : The second arg is some of integral type
14741                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14742                         for yyy in size_t long int; do
14743                                 case "$netdb_host_type" in
14744                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14745                                         if ./protochk "$try" $hdrs; then
14746                                                 echo "Your system accepts $xxx for the first arg."
14747                                                 echo "...and $yyy for the second arg."
14748                                                 netdb_host_type="$xxx"
14749                                                 netdb_hlen_type="$yyy"
14750                                         fi
14751                                         ;;
14752                                 esac
14753                         done
14754                 done
14755                 : In case none of those worked, prompt the user.
14756                 case "$netdb_host_type" in
14757                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14758                         dflt='char *'
14759                         . ./myread
14760                         netdb_host_type=$ans
14761                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14762                         dflt="$sizetype"
14763                         . ./myread
14764                         netdb_hlen_type=$ans
14765                         ;;
14766                 esac
14767                 ;;
14768         *)      : no gethostbyaddr, so pick harmless defaults
14769                 netdb_host_type='char *'
14770                 netdb_hlen_type="$sizetype"
14771                 ;;
14772         esac
14773         # Remove the "const" if needed. -- but then we'll have a 
14774         # prototype clash!
14775         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14776 fi
14777
14778 : check for type of argument to gethostbyname. 
14779 if test "X$netdb_name_type" = X ; then
14780         case "$d_gethbyname" in
14781         $define)
14782                 $cat <<EOM
14783
14784 Checking to see what type of argument is accepted by gethostbyname().
14785 EOM
14786                 hdrs="$define sys/types.h
14787                         $d_socket sys/socket.h 
14788                         $i_niin netinet/in.h 
14789                         $i_netdb netdb.h
14790                         $i_unistd unistd.h"
14791                 for xxx in "const char *" "char *"; do
14792                         case "$netdb_name_type" in
14793                         '')     try="extern struct hostent *gethostbyname($xxx);"
14794                                 if ./protochk "$try" $hdrs; then
14795                                         echo "Your system accepts $xxx."
14796                                         netdb_name_type="$xxx"
14797                                 fi
14798                                 ;;
14799                         esac
14800                 done
14801                 : In case none of those worked, prompt the user.
14802                 case "$netdb_name_type" in
14803                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14804                         dflt='char *'
14805                         . ./myread
14806                         netdb_name_type=$ans
14807                         ;;
14808                 esac
14809                 ;;
14810         *)      : no gethostbyname, so pick harmless default
14811                 netdb_name_type='char *'
14812                 ;;
14813         esac
14814 fi
14815
14816 : check for type of 1st argument to getnetbyaddr. 
14817 if test "X$netdb_net_type" = X ; then
14818         case "$d_getnbyaddr" in
14819         $define)
14820                 $cat <<EOM
14821
14822 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14823 EOM
14824                 hdrs="$define sys/types.h
14825                         $d_socket sys/socket.h 
14826                         $i_niin netinet/in.h 
14827                         $i_netdb netdb.h
14828                         $i_unistd unistd.h"
14829                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14830                         case "$netdb_net_type" in
14831                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14832                                 if ./protochk "$try" $hdrs; then
14833                                         echo "Your system accepts $xxx."
14834                                         netdb_net_type="$xxx"
14835                                 fi
14836                                 ;;
14837                         esac
14838                 done
14839                 : In case none of those worked, prompt the user.
14840                 case "$netdb_net_type" in
14841                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14842                         dflt='long'
14843                         . ./myread
14844                         netdb_net_type=$ans
14845                         ;;
14846                 esac
14847                 ;;
14848         *)      : no getnetbyaddr, so pick harmless default
14849                 netdb_net_type='long'
14850                 ;;
14851         esac
14852 fi
14853 : locate the preferred pager for this system
14854 case "$pager" in
14855 '')
14856         dflt=''
14857         case "$pg" in
14858         /*) dflt=$pg;;
14859         [a-zA-Z]:/*) dflt=$pg;;
14860         esac
14861         case "$more" in
14862         /*) dflt=$more;;
14863         [a-zA-Z]:/*) dflt=$more;;
14864         esac
14865         case "$less" in
14866         /*) dflt=$less;;
14867         [a-zA-Z]:/*) dflt=$less;;
14868         esac
14869         case "$dflt" in
14870         '') dflt=/usr/ucb/more;;
14871         esac
14872         ;;
14873 *) dflt="$pager";;
14874 esac
14875 echo " "
14876 fn=f/
14877 rp='What pager is used on your system?'
14878 . ./getfile
14879 pager="$ans"
14880
14881 : see what type pids are declared as in the kernel
14882 rp="What is the type of process ids on this system?"
14883 set pid_t pidtype int stdio.h sys/types.h
14884 eval $typedef_ask
14885
14886 : Find earliest binary compatible site_perl subdirectory perl can use.
14887 case "$bincompat5005" in
14888 "$define") xs_apiversion='5.005' ;;
14889 *) xs_apiversion=$version ;;   # The current site_perl version.
14890 esac
14891 : Find earliest pure perl site_perl subdirectory perl can use.
14892 : The versioned directories started at 5.005.
14893 pm_apiversion='5.005'
14894
14895 : see if ar generates random libraries by itself
14896 echo " "
14897 echo "Checking how to generate random libraries on your machine..." >&4
14898 echo 'int bar1() { return bar2(); }' > bar1.c
14899 echo 'int bar2() { return 2; }' > bar2.c
14900 $cat > foo.c <<'EOP'
14901 int main() { printf("%d\n", bar1()); exit(0); }
14902 EOP
14903 $cc $ccflags -c bar1.c >/dev/null 2>&1
14904 $cc $ccflags -c bar2.c >/dev/null 2>&1
14905 $cc $ccflags -c foo.c >/dev/null 2>&1
14906 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14907 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14908         $run ./foobar >/dev/null 2>&1; then
14909         echo "$ar appears to generate random libraries itself."
14910         orderlib=false
14911         ranlib=":"
14912 elif $ar ts bar$_a >/dev/null 2>&1 &&
14913         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14914         $run ./foobar >/dev/null 2>&1; then
14915                 echo "a table of contents needs to be added with '$ar ts'."
14916                 orderlib=false
14917                 ranlib="$ar ts"
14918 else
14919         case "$ranlib" in
14920         :) ranlib='';;
14921         '')
14922                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14923                 $test -f $ranlib || ranlib=''
14924                 ;;
14925         esac
14926         if $test -n "$ranlib"; then
14927                 echo "your system has '$ranlib'; we'll use that."
14928                 orderlib=false
14929         else
14930                 echo "your system doesn't seem to support random libraries"
14931                 echo "so we'll use lorder and tsort to order the libraries."
14932                 orderlib=true
14933                 ranlib=":"
14934         fi
14935 fi
14936 $rm -f foo* bar* 
14937
14938 : check for type of arguments to select. 
14939 case "$selecttype" in
14940 '') case "$d_select" in
14941         $define)
14942                 echo " "
14943                 $cat <<EOM
14944 Checking to see what type of arguments are accepted by select().
14945 EOM
14946                 hdrs="$define sys/types.h
14947                         $i_systime sys/time.h 
14948                         $i_sysselct sys/select.h
14949                         $d_socket sys/socket.h"
14950                 : The first arg can be int, unsigned, or size_t
14951                 : The last arg may or may not be 'const'
14952                 val=''
14953                 : void pointer has been seen but using that
14954                 : breaks the selectminbits test
14955                 for xxx in 'fd_set *' 'int *'; do
14956                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14957                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14958                                         case "$val" in
14959                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14960                                                 if ./protochk "$try" $hdrs; then
14961                                                         echo "Your system accepts $xxx."
14962                                                         val="$xxx"
14963                                                 fi
14964                                                 ;;
14965                                         esac
14966                                 done
14967                         done
14968                 done
14969                 case "$val" in
14970                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14971                         case "$d_fd_set" in
14972                                 $define) dflt="fd_set *" ;;
14973                                 *)              dflt="int *" ;;
14974                         esac
14975                         . ./myread
14976                         val=$ans
14977                         ;;
14978                 esac
14979                 selecttype="$val"
14980                 ;;
14981         *)      : no select, so pick a harmless default
14982                 selecttype='int *'
14983                 ;;
14984         esac
14985         ;;
14986 esac
14987
14988 : check for the select 'width'
14989 case "$selectminbits" in
14990 '') case "$d_select" in
14991         $define)
14992                 $cat <<EOM
14993
14994 Checking to see on how many bits at a time your select() operates...
14995 EOM
14996                 $cat >try.c <<EOCP
14997 #include <sys/types.h>
14998 #$i_time I_TIME
14999 #$i_systime I_SYS_TIME
15000 #$i_systimek I_SYS_TIME_KERNEL
15001 #ifdef I_TIME
15002 #   include <time.h>
15003 #endif
15004 #ifdef I_SYS_TIME
15005 #   ifdef I_SYS_TIME_KERNEL
15006 #       define KERNEL
15007 #   endif
15008 #   include <sys/time.h>
15009 #   ifdef I_SYS_TIME_KERNEL
15010 #       undef KERNEL
15011 #   endif
15012 #endif
15013 #$i_sysselct I_SYS_SELECT
15014 #ifdef I_SYS_SELECT
15015 #include <sys/select.h>
15016 #endif
15017 #$d_socket HAS_SOCKET
15018 #ifdef HAS_SOCKET
15019 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15020 #endif
15021 #include <stdio.h>
15022 $selecttype b;
15023 #define S sizeof(*(b))
15024 #define MINBITS 64
15025 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15026 #define NBITS  (NBYTES * 8)
15027 int main() {
15028     char s[NBYTES];
15029     struct timeval t;
15030     int i;
15031     FILE* fp;
15032     int fd;
15033
15034     fclose(stdin);
15035     fp = fopen("try.c", "r");
15036     if (fp == 0)
15037       exit(1);
15038     fd = fileno(fp);
15039     if (fd < 0)
15040       exit(2);
15041     b = ($selecttype)s;
15042     for (i = 0; i < NBITS; i++)
15043         FD_SET(i, b);
15044     t.tv_sec  = 0;
15045     t.tv_usec = 0;
15046     select(fd + 1, b, 0, 0, &t);
15047     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15048     printf("%d\n", i + 1);
15049     return 0;
15050 }
15051 EOCP
15052                 set try
15053                 if eval $compile_ok; then
15054                         selectminbits=`$run ./try`
15055                         case "$selectminbits" in
15056                         '')     cat >&4 <<EOM
15057 Cannot figure out on how many bits at a time your select() operates.
15058 I'll play safe and guess it is 32 bits.
15059 EOM
15060                                 selectminbits=32
15061                                 bits="32 bits"
15062                                 ;;
15063                         1)      bits="1 bit" ;;
15064                         *)      bits="$selectminbits bits" ;;
15065                         esac
15066                         echo "Your select() operates on $bits at a time." >&4
15067                 else
15068                         rp='What is the minimum number of bits your select() operates on?'
15069                         case "$byteorder" in
15070                         1234|12345678)  dflt=32 ;;
15071                         *)              dflt=1  ;;
15072                         esac
15073                         . ./myread
15074                         val=$ans
15075                         selectminbits="$val"
15076                 fi
15077                 $rm -f try.* try
15078                 ;;
15079         *)      : no select, so pick a harmless default
15080                 selectminbits='32'
15081                 ;;
15082         esac
15083         ;;
15084 esac
15085
15086 : Trace out the files included by signal.h, then look for SIGxxx names.
15087 : Remove SIGARRAYSIZE used by HPUX.
15088 : Remove SIGSTKSIZE used by Linux.
15089 : Remove SIGSTKSZ used by Posix.
15090 : Remove SIGTYP void lines used by OS2.
15091 : Some cpps, like os390, dont give the file name anywhere
15092 if [ "X$fieldn" = X ]; then
15093         : Just make some guesses.  We check them later.
15094         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15095 else
15096         xxx=`echo '#include <signal.h>' |
15097         $cppstdin $cppminus $cppflags 2>/dev/null |
15098         $grep '^[       ]*#.*include' | 
15099         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15100 fi
15101 : Check this list of files to be sure we have parsed the cpp output ok.
15102 : This will also avoid potentially non-existent files, such 
15103 : as ../foo/bar.h
15104 xxxfiles=''
15105 for xx in $xxx /dev/null ; do
15106         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15107 done
15108 : If we have found no files, at least try signal.h
15109 case "$xxxfiles" in
15110 '')     xxxfiles=`./findhdr signal.h` ;;
15111 esac
15112 xxx=`awk '
15113 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15114         print substr($2, 4, 20)
15115 }
15116 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15117         print substr($3, 4, 20)
15118 }' $xxxfiles`
15119 : Append some common names just in case the awk scan failed.
15120 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15121 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15122 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15123 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15124 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15125
15126 : generate a few handy files for later
15127 $cat > signal.c <<'EOCP'
15128 #include <sys/types.h>
15129 #include <signal.h>
15130 #include <stdio.h>
15131 int main() {
15132
15133 /* Strange style to avoid deeply-nested #if/#else/#endif */
15134 #ifndef NSIG
15135 #  ifdef _NSIG
15136 #    define NSIG (_NSIG)
15137 #  endif
15138 #endif
15139
15140 #ifndef NSIG
15141 #  ifdef SIGMAX
15142 #    define NSIG (SIGMAX+1)
15143 #  endif
15144 #endif
15145
15146 #ifndef NSIG
15147 #  ifdef SIG_MAX
15148 #    define NSIG (SIG_MAX+1)
15149 #  endif
15150 #endif
15151
15152 #ifndef NSIG
15153 #  ifdef MAXSIG
15154 #    define NSIG (MAXSIG+1)
15155 #  endif
15156 #endif
15157
15158 #ifndef NSIG
15159 #  ifdef MAX_SIG
15160 #    define NSIG (MAX_SIG+1)
15161 #  endif
15162 #endif
15163
15164 #ifndef NSIG
15165 #  ifdef SIGARRAYSIZE
15166 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15167 #  endif
15168 #endif
15169
15170 #ifndef NSIG
15171 #  ifdef _sys_nsig
15172 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15173 #  endif
15174 #endif
15175
15176 /* Default to some arbitrary number that's big enough to get most
15177    of the common signals.
15178 */
15179 #ifndef NSIG
15180 #    define NSIG 50
15181 #endif
15182
15183 printf("NSIG %d\n", NSIG);
15184
15185 #ifndef JUST_NSIG
15186
15187 EOCP
15188
15189 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15190 {
15191         printf "#ifdef SIG"; printf $1; printf "\n"
15192         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15193         printf $1; printf ");\n"
15194         printf "#endif\n"
15195 }
15196 END {
15197         printf "#endif /* JUST_NSIG */\n";
15198         printf "exit(0);\n}\n";
15199 }
15200 ' >>signal.c
15201 $cat >signal.awk <<'EOP'
15202 BEGIN { ndups = 0 }
15203 $1 ~ /^NSIG$/ { nsig = $2 }
15204 ($1 !~ /^NSIG$/) && (NF == 2) {
15205     if ($2 > maxsig) { maxsig = $2 }
15206     if (sig_name[$2]) {
15207         dup_name[ndups] = $1
15208         dup_num[ndups] = $2
15209         ndups++ 
15210     }
15211     else {
15212         sig_name[$2] = $1
15213         sig_num[$2] = $2
15214     }
15215 }
15216 END { 
15217     if (nsig == 0) {
15218         nsig = maxsig + 1
15219     }
15220     printf("NSIG %d\n", nsig);
15221     for (n = 1; n < nsig; n++) {
15222         if (sig_name[n]) {
15223             printf("%s %d\n", sig_name[n], sig_num[n])
15224         }
15225         else {
15226             printf("NUM%d %d\n", n, n) 
15227         }
15228     }
15229     for (n = 0; n < ndups; n++) {
15230         printf("%s %d\n", dup_name[n], dup_num[n])
15231     }
15232 }
15233 EOP
15234 $cat >signal_cmd <<EOS
15235 $startsh
15236 if $test -s signal.lst; then
15237     echo "Using your existing signal.lst file"
15238         exit 0
15239 fi
15240 xxx="$xxx"
15241 EOS
15242 $cat >>signal_cmd <<'EOS'
15243
15244 set signal
15245 if eval $compile_ok; then
15246         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15247 else
15248         echo "(I can't seem be able to compile the whole test program)" >&4
15249         echo "(I'll try it in little pieces.)" >&4
15250         set signal -DJUST_NSIG
15251         if eval $compile_ok; then
15252                 $run ./signal$_exe > signal.nsg
15253                 $cat signal.nsg
15254         else
15255                 echo "I can't seem to figure out how many signals you have." >&4
15256                 echo "Guessing 50." >&4
15257                 echo 'NSIG 50' > signal.nsg
15258         fi
15259         : Now look at all the signal names, one at a time.
15260         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15261                 $cat > signal.c <<EOCP
15262 #include <sys/types.h>
15263 #include <signal.h>
15264 #include <stdio.h>
15265 int main() {
15266 printf("$xx %d\n", SIG${xx});
15267 return 0;
15268 }
15269 EOCP
15270                 set signal
15271                 if eval $compile; then
15272                         echo "SIG${xx} found."
15273                         $run ./signal$_exe  >> signal.ls1
15274                 else
15275                         echo "SIG${xx} NOT found."
15276                 fi
15277         done
15278         if $test -s signal.ls1; then
15279                 $cat signal.nsg signal.ls1 |
15280                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15281         fi
15282
15283 fi
15284 if $test -s signal.lst; then
15285         :
15286 else
15287         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15288         echo 'kill -l' >signal
15289         set X `csh -f <signal`
15290         $rm -f signal
15291         shift
15292         case $# in
15293         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15294         esac
15295         echo $@ | $tr ' ' $trnl | \
15296             $awk '{ printf "%s %d\n", $1, ++s; }
15297                   END { printf "NSIG %d\n", ++s }' >signal.lst
15298 fi
15299 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15300 EOS
15301 chmod a+x signal_cmd
15302 $eunicefix signal_cmd
15303
15304 : generate list of signal names
15305 echo " "
15306 case "$sig_name_init" in
15307 '') doinit=yes ;;
15308 *)  case "$sig_num_init" in
15309     ''|*,*) doinit=yes ;;
15310     esac ;;
15311 esac
15312 case "$doinit" in
15313 yes)
15314         echo "Generating a list of signal names and numbers..." >&4
15315         . ./signal_cmd
15316         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15317         sig_name=`$awk 'BEGIN { printf "ZERO " }
15318                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15319         sig_num=`$awk  'BEGIN { printf "0 " }
15320                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15321         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15322                              !/^NSIG/   { printf "\"%s\", ", $1 }
15323                              END        { printf "0\n" }' signal.lst`
15324         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15325                              !/^NSIG/   { printf "%d, ", $2}
15326                              END        { printf "0\n"}' signal.lst`
15327         ;;
15328 esac
15329 echo "The following $sig_count signals are available:"
15330 echo " "
15331 echo $sig_name | $awk \
15332 'BEGIN { linelen = 0 }
15333 {
15334         for (i = 1; i <= NF; i++) {
15335                 name = "SIG" $i " "
15336                 linelen = linelen + length(name)
15337                 if (linelen > 70) {
15338                         printf "\n"
15339                         linelen = length(name)
15340                 }
15341                 printf "%s", name
15342         }
15343         printf "\n"
15344 }'
15345 sig_size=`echo $sig_name | awk '{print NF}'`
15346 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15347
15348 echo " "
15349 case "$sizetype" in
15350 *_t) zzz="$sizetype"    ;;
15351 *)   zzz="filesize"     ;;
15352 esac
15353 echo "Checking the size of $zzz..." >&4 
15354 cat > try.c <<EOCP
15355 #include <sys/types.h>
15356 #include <stdio.h>
15357 int main() {
15358     printf("%d\n", (int)sizeof($sizetype));
15359     exit(0);
15360 }
15361 EOCP
15362 set try
15363 if eval $compile_ok; then
15364         yyy=`$run ./try`
15365         case "$yyy" in
15366         '')     sizesize=4
15367                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15368                 ;;
15369         *)      sizesize=$yyy
15370                 echo "Your $zzz size is $sizesize bytes."
15371                 ;;
15372         esac
15373 else
15374         sizesize=4
15375         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15376 fi
15377
15378
15379 : check for socklen_t
15380 echo " "
15381 echo "Checking to see if you have socklen_t..." >&4
15382 $cat >try.c <<EOCP
15383 #include <sys/types.h>
15384 #$d_socket HAS_SOCKET
15385 #ifdef HAS_SOCKET
15386 #include <sys/socket.h>
15387 #endif
15388 int main() { socklen_t x = 16; }
15389 EOCP
15390 set try
15391 if eval $compile; then
15392         val="$define"
15393         echo "You have socklen_t."
15394 else
15395         val="$undef"
15396         echo "You do not have socklen_t."
15397         case "$sizetype" in
15398         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15399         esac
15400 fi
15401 $rm -f try try.*
15402 set d_socklen_t
15403 eval $setvar
15404
15405 : see if this is a socks.h system
15406 set socks.h i_socks
15407 eval $inhdr
15408
15409 : check for type of the size argument to socket calls
15410 case "$d_socket" in
15411 "$define")
15412         $cat <<EOM
15413
15414 Checking to see what type is the last argument of accept().
15415 EOM
15416         yyy=''
15417         case "$d_socklen_t" in
15418         "$define") yyy="$yyy socklen_t"
15419         esac
15420         yyy="$yyy $sizetype int long unsigned"
15421         for xxx in $yyy; do
15422                 case "$socksizetype" in
15423                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15424                         case "$usesocks" in
15425                         "$define")
15426                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15427                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15428                                         socksizetype="$xxx"
15429                                 fi
15430                                 ;;
15431                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15432                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15433                                         socksizetype="$xxx"
15434                                 fi
15435                                 ;;
15436                         esac
15437                         ;;
15438                 esac
15439         done
15440 : In case none of those worked, prompt the user.
15441         case "$socksizetype" in
15442         '')     rp='What is the type for socket address structure sizes?'
15443                 dflt='int'
15444                 . ./myread
15445                 socksizetype=$ans
15446                 ;;
15447         esac
15448         ;;
15449 *)      : no sockets, so pick relatively harmless default
15450         socksizetype='int'
15451         ;;
15452 esac
15453
15454 : see what type is used for signed size_t
15455 set ssize_t ssizetype int stdio.h sys/types.h
15456 eval $typedef
15457 dflt="$ssizetype"
15458 $cat > try.c <<EOM
15459 #include <stdio.h>
15460 #include <sys/types.h>
15461 #define Size_t $sizetype
15462 #define SSize_t $dflt
15463 int main()
15464 {
15465         if (sizeof(Size_t) == sizeof(SSize_t))
15466                 printf("$dflt\n");
15467         else if (sizeof(Size_t) == sizeof(int))
15468                 printf("int\n");
15469         else 
15470                 printf("long\n");
15471         exit(0);
15472 }
15473 EOM
15474 echo " "
15475 set try
15476 if eval $compile_ok && $run ./try > /dev/null; then
15477         ssizetype=`$run ./try`
15478         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15479 else
15480         $cat >&4 <<EOM
15481 Help! I can't compile and run the ssize_t test program: please enlighten me!
15482 (This is probably a misconfiguration in your system or libraries, and
15483 you really ought to fix it.  Still, I'll try anyway.)
15484
15485 I need a type that is the same size as $sizetype, but is guaranteed to
15486 be signed.  Common values are ssize_t, int and long.
15487
15488 EOM
15489         rp="What signed type is the same size as $sizetype?"
15490         . ./myread
15491         ssizetype="$ans"
15492 fi
15493 $rm -f try try.*
15494
15495 : see what type of char stdio uses.
15496 echo " "
15497 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15498 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15499         echo "Your stdio uses unsigned chars." >&4
15500         stdchar="unsigned char"
15501 else
15502         echo "Your stdio uses signed chars." >&4
15503         stdchar="char"
15504 fi
15505 $rm -f stdioh
15506
15507
15508
15509 : see if time exists
15510 echo " "
15511 if test "X$d_time" = X -o X"$timetype" = X; then
15512     if set time val -f d_time; eval $csym; $val; then
15513                 echo 'time() found.' >&4
15514                 val="$define"
15515                 rp="What is the type returned by time() on this system?"
15516                 set time_t timetype long stdio.h sys/types.h
15517                 eval $typedef_ask
15518     else
15519                 echo 'time() not found, hope that will do.' >&4
15520                 val="$undef"
15521                 timetype='int';
15522     fi
15523     set d_time
15524     eval $setvar
15525 fi
15526
15527 : see what type uids are declared as in the kernel
15528 echo " "
15529 echo "Looking for the type for user ids returned by getuid()."
15530 set uid_t uidtype xxx stdio.h sys/types.h
15531 eval $typedef
15532 case "$uidtype" in
15533 xxx)
15534         xxx=`./findhdr sys/user.h`
15535         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15536         case $1 in
15537         unsigned) dflt="$1 $2" ;;
15538         *) dflt="$1" ;;
15539         esac
15540         ;;
15541 *) dflt="$uidtype";;
15542 esac
15543 case "$uidtype" in
15544 uid_t)  echo "uid_t found." ;;
15545 *)      rp="What is the type for user ids returned by getuid()?"
15546         . ./myread
15547         uidtype="$ans"
15548         ;;
15549 esac
15550
15551 echo " "
15552 case "$uidtype" in
15553 *_t) zzz="$uidtype"     ;;
15554 *)   zzz="uid"          ;;
15555 esac
15556 echo "Checking the size of $zzz..." >&4 
15557 cat > try.c <<EOCP
15558 #include <sys/types.h>
15559 #include <stdio.h>
15560 int main() {
15561     printf("%d\n", (int)sizeof($uidtype));
15562     exit(0);
15563 }
15564 EOCP
15565 set try
15566 if eval $compile_ok; then
15567         yyy=`$run ./try`
15568         case "$yyy" in
15569         '')     uidsize=4
15570                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15571                 ;;
15572         *)      uidsize=$yyy
15573                 echo "Your $zzz is $uidsize bytes long."
15574                 ;;
15575         esac
15576 else
15577         uidsize=4
15578         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15579 fi
15580
15581 echo " "
15582 case "$uidtype" in
15583 *_t) zzz="$uidtype"     ;;
15584 *)   zzz="uid"          ;;
15585 esac
15586 echo "Checking the sign of $zzz..." >&4
15587 cat > try.c <<EOCP
15588 #include <sys/types.h>
15589 #include <stdio.h>
15590 int main() {
15591         $uidtype foo = -1;
15592         if (foo < 0)
15593                 printf("-1\n");
15594         else
15595                 printf("1\n");
15596 }
15597 EOCP
15598 set try
15599 if eval $compile; then
15600         yyy=`$run ./try`
15601         case "$yyy" in
15602         '')     uidsign=1
15603                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15604                 ;;
15605         *)      uidsign=$yyy
15606                 case "$uidsign" in
15607                  1) echo "Your $zzz is unsigned." ;;
15608                 -1) echo "Your $zzz is signed."   ;;
15609                 esac
15610                 ;;
15611         esac
15612 else
15613         uidsign=1
15614         echo "(I can't compile the test program--guessing unsigned.)" >&4
15615 fi
15616
15617
15618
15619 echo " "
15620 $echo "Checking the format string to be used for uids..." >&4
15621
15622 case "$uidsign" in
15623 -1)     if $test X"$uidsize" = X"$ivsize"; then
15624                 uidformat="$ivdformat"
15625         else
15626                 if $test X"$uidsize" = X"$longsize"; then
15627                         uidformat='"ld"'
15628                 else
15629                         if $test X"$uidsize" = X"$intsize"; then
15630                                 uidformat='"d"'
15631                         else
15632                                 if $test X"$uidsize" = X"$shortsize"; then
15633                                         uidformat='"hd"'
15634                                 fi
15635                         fi
15636                 fi
15637         fi
15638         ;;
15639 *)      if $test X"$uidsize" = X"$uvsize"; then
15640                 uidformat="$uvuformat"
15641         else
15642                 if $test X"$uidsize" = X"$longsize"; then
15643                         uidformat='"lu"'
15644                 else
15645                         if $test X"$uidsize" = X"$intsize"; then
15646                                 uidformat='"u"'
15647                         else
15648                                 if $test X"$uidsize" = X"$shortsize"; then
15649                                         uidformat='"hu"'
15650                                 fi
15651                         fi
15652                 fi
15653         fi
15654         ;;
15655 esac
15656
15657 : determine compiler compiler
15658 case "$yacc" in
15659 '')
15660         dflt=yacc;;
15661 *)
15662         dflt="$yacc";;
15663 esac
15664 echo " "
15665 comp='yacc'
15666 if $test -f "$byacc"; then
15667         dflt="$byacc"
15668         comp="byacc or $comp"
15669 fi
15670 if $test -f "$bison"; then
15671         comp="$comp or bison -y"
15672 fi
15673 rp="Which compiler compiler ($comp) shall I use?"
15674 . ./myread
15675 yacc="$ans"
15676 case "$yacc" in
15677 *bis*)
15678         case "$yacc" in
15679         *-y*) ;;
15680         *)
15681                 yacc="$yacc -y"
15682                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15683                 ;;
15684         esac
15685         ;;
15686 esac
15687
15688 : see if fcntl.h is there
15689 val=''
15690 set fcntl.h val
15691 eval $inhdr
15692
15693 : see if we can include fcntl.h
15694 case "$val" in
15695 "$define")
15696         echo " "
15697         if $h_fcntl; then
15698                 val="$define"
15699                 echo "We'll be including <fcntl.h>." >&4
15700         else
15701                 val="$undef"
15702                 if $h_sysfile; then
15703         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15704                 else
15705                         echo "We won't be including <fcntl.h>." >&4
15706                 fi
15707         fi
15708         ;;
15709 *)
15710         h_fcntl=false
15711         val="$undef"
15712         ;;
15713 esac
15714 set i_fcntl
15715 eval $setvar
15716
15717 : see if this is a iconv.h system
15718 set iconv.h i_iconv
15719 eval $inhdr
15720
15721 : see if this is a ieeefp.h system
15722 set ieeefp.h i_ieeefp
15723 eval $inhdr
15724
15725 : see if this is a libutil.h system
15726 set libutil.h i_libutil
15727 eval $inhdr
15728
15729 : see if locale.h is available
15730 set locale.h i_locale
15731 eval $inhdr
15732
15733 : see if mach cthreads are available
15734 if test "X$usethreads" = "X$define"; then
15735         set mach/cthreads.h i_machcthr
15736         eval $inhdr
15737 else
15738         i_machcthr="$undef"
15739 fi
15740
15741
15742
15743 : see if this is a math.h system
15744 set math.h i_math
15745 eval $inhdr
15746
15747 : see if this is a mntent.h system
15748 set mntent.h i_mntent
15749 eval $inhdr
15750
15751 : see if ndbm.h is available
15752 set ndbm.h t_ndbm
15753 eval $inhdr
15754 case "$t_ndbm" in
15755 $define)
15756         : see if dbm_open exists
15757         set dbm_open d_dbm_open
15758         eval $inlibc
15759         case "$d_dbm_open" in
15760         $undef)
15761                 t_ndbm="$undef"
15762                 echo "We won't be including <ndbm.h>"
15763                 ;;
15764         esac
15765         ;;
15766 esac
15767 val="$t_ndbm"
15768 set i_ndbm
15769 eval $setvar
15770
15771 : see if net/errno.h is available
15772 val=''
15773 set net/errno.h val
15774 eval $inhdr
15775
15776 : Unfortunately, it causes problems on some systems.  Arrgh.
15777 case "$val" in
15778 $define)
15779         cat > try.c <<'EOM'
15780 #include <stdio.h>
15781 #include <errno.h>
15782 #include <net/errno.h>
15783 int func()
15784 {
15785         return ENOTSOCK;
15786 }
15787 EOM
15788         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15789                 echo "We'll be including <net/errno.h>." >&4
15790         else
15791                 echo "We won't be including <net/errno.h>." >&4
15792                 val="$undef"
15793         fi
15794         $rm -f try.* try
15795         ;;
15796 esac
15797 set i_neterrno
15798 eval $setvar
15799
15800 : see if netinet/tcp.h is available
15801 set netinet/tcp.h i_netinettcp
15802 eval $inhdr
15803
15804 : see if this is a poll.h system
15805 set poll.h i_poll
15806 eval $inhdr
15807
15808 : see if this is a prot.h system
15809 set prot.h i_prot
15810 eval $inhdr
15811
15812 echo " "
15813 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15814 $cat <<'EOSH' > Cppsym.know
15815 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15816 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15817 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15818 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15819 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15820 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15821 bull c cadmus clipper CMU COFF COMPILER_VERSION
15822 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15823 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15824 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15825 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15826 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15827 H3050R H3050RX hbullx20 hcx host_mips
15828 hp200 hp300 hp700 HP700 hp800 hp9000
15829 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15830 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15831 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15832 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15833 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15834 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15835 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15836 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15837 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15838 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15839 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15840 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15841 MATH_HAS_NO_SIDE_EFFECTS
15842 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15843 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15844 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15845 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15846 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15847 NetBSD news1500 news1700 news1800 news1900 news3700
15848 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15849 ns32016 ns32332 ns32k nsc32000
15850 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15851 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15852 pc532 pdp11 PGC PIC plexus PORTAR posix
15853 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15854 POSIX_C_SOURCE POSIX_SOURCE POWER
15855 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15856 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15857 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15858 sony sony_news sonyrisc sparc sparclite spectrum
15859 stardent stdc STDC_EXT stratos sun sun3 sun386
15860 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15861 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15862 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15863 sysV68 sysV88 Tek4132 Tek4300 titan
15864 TM3200 TM5400 TM5600
15865 tower tower32 tower32_200 tower32_600 tower32_700
15866 tower32_800 tower32_850 tss
15867 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15868 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15869 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15870 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15871 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15872 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15873 z8000
15874 EOSH
15875 # Maybe put other stuff here too.
15876 cat <<EOSH >>Cppsym.know
15877 $osname
15878 EOSH
15879 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15880 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15881 $cat Cppsym.know > Cppsym.c
15882 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15883 $rm -f Cppsym.a Cppsym.b Cppsym.c
15884 cat <<EOSH > Cppsym
15885 $startsh
15886 if $test \$# -gt 0; then
15887     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15888     if $test -s Cppsym.got; then
15889         $rm -f Cppsym.got
15890         exit 0
15891     fi
15892     $rm -f Cppsym.got
15893     exit 1
15894 else
15895     $tr " " "$trnl" | ./Cppsym.try
15896     exit 0
15897 fi
15898 EOSH
15899 chmod +x Cppsym
15900 $eunicefix Cppsym
15901 cat <<EOSH > Cppsym.try
15902 $startsh
15903 cat <<'EOCP' > try.c
15904 #include <stdio.h>
15905 int main() {
15906 EOCP
15907 $awk \\
15908 EOSH
15909 cat <<'EOSH' >> Cppsym.try
15910 'length($1) > 0 {
15911     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
15912     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
15913     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
15914     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
15915 }'       >> try.c
15916 echo 'return 0;}' >> try.c
15917 EOSH
15918 cat <<EOSH >> Cppsym.try
15919 ccflags="$ccflags"
15920 case "$osname-$gccversion" in
15921 irix-) ccflags="\$ccflags -woff 1178" ;;
15922 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15923 esac
15924 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15925 EOSH
15926 chmod +x Cppsym.try
15927 $eunicefix Cppsym.try
15928 ./Cppsym < Cppsym.know > Cppsym.true
15929 : now check the C compiler for additional symbols
15930 postprocess_cc_v=''
15931 case "$osname" in
15932 aix) postprocess_cc_v="|$tr , ' '" ;;
15933 esac
15934 $cat >ccsym <<EOS
15935 $startsh
15936 $cat >tmp.c <<EOF
15937 extern int foo;
15938 EOF
15939 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15940 do
15941         case "\$i" in
15942         -D*) echo "\$i" | $sed 's/^-D//';;
15943         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15944         esac
15945 done
15946 $rm -f try.c
15947 EOS
15948 postprocess_cc_v=''
15949 chmod +x ccsym
15950 $eunicefix ccsym
15951 ./ccsym > ccsym1.raw
15952 if $test -s ccsym1.raw; then
15953        $sort ccsym1.raw | $uniq >ccsym.raw
15954 else
15955        mv ccsym1.raw ccsym.raw
15956 fi
15957
15958 $awk '/\=/ { print $0; next }
15959         { print $0"=1" }' ccsym.raw >ccsym.list
15960 $awk '/\=/ { print $0; next }
15961         { print $0"=1" }' Cppsym.true >ccsym.true
15962 $comm -13 ccsym.true ccsym.list >ccsym.own
15963 $comm -12 ccsym.true ccsym.list >ccsym.com
15964 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15965 also=''
15966 if $test -z ccsym.raw; then
15967         echo "Your C compiler doesn't seem to define any symbols!" >&4
15968         echo " "
15969         echo "However, your C preprocessor defines the following symbols:"
15970         $cat Cppsym.true
15971         ccsymbols=''
15972         cppsymbols=`$cat Cppsym.true`
15973         cppsymbols=`echo $cppsymbols`
15974         cppccsymbols="$cppsymbols"
15975 else
15976         if $test -s ccsym.com; then
15977                 echo "Your C compiler and pre-processor define these symbols:"
15978                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15979                 also='also '
15980                 symbols='ones'
15981                 cppccsymbols=`$cat ccsym.com`
15982                 cppccsymbols=`echo $cppccsymbols`
15983                 $test "$silent" || sleep 1
15984         fi
15985         if $test -s ccsym.cpp; then
15986                 $test "$also" && echo " "
15987                 echo "Your C pre-processor ${also}defines the following symbols:"
15988                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15989                 also='further '
15990                 cppsymbols=`$cat ccsym.cpp`
15991                 cppsymbols=`echo $cppsymbols`
15992                 $test "$silent" || sleep 1
15993         fi
15994         if $test -s ccsym.own; then
15995                 $test "$also" && echo " "
15996                 echo "Your C compiler ${also}defines the following cpp symbols:"
15997                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15998                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15999                 ccsymbols=`$cat ccsym.own`
16000                 ccsymbols=`echo $ccsymbols`
16001                 $test "$silent" || sleep 1
16002         fi
16003 fi
16004
16005 : see if this is a termio system
16006 val="$undef"
16007 val2="$undef"
16008 val3="$undef"
16009 if $test `./findhdr termios.h`; then
16010         set tcsetattr i_termios
16011         eval $inlibc
16012         val3="$i_termios"
16013 fi
16014 echo " "
16015 case "$val3" in
16016 "$define") echo "You have POSIX termios.h... good!" >&4;;
16017 *) if ./Cppsym pyr; then
16018                 case "`/bin/universe`" in
16019                 ucb) if $test `./findhdr sgtty.h`; then
16020                                 val2="$define"
16021                                 echo "<sgtty.h> found." >&4
16022                         else
16023                                 echo "System is pyramid with BSD universe."
16024                                 echo "<sgtty.h> not found--you could have problems." >&4
16025                         fi;;
16026                 *) if $test `./findhdr termio.h`; then
16027                                 val="$define"
16028                                 echo "<termio.h> found." >&4
16029                         else
16030                                 echo "System is pyramid with USG universe."
16031                                 echo "<termio.h> not found--you could have problems." >&4
16032                         fi;;
16033                 esac
16034         elif ./usg; then
16035                 if $test `./findhdr termio.h`; then
16036                         echo "<termio.h> found." >&4
16037                         val="$define"
16038                 elif $test `./findhdr sgtty.h`; then
16039                         echo "<sgtty.h> found." >&4
16040                         val2="$define"
16041                 else
16042 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16043                 fi
16044         else
16045                 if $test `./findhdr sgtty.h`; then
16046                         echo "<sgtty.h> found." >&4
16047                         val2="$define"
16048                 elif $test `./findhdr termio.h`; then
16049                         echo "<termio.h> found." >&4
16050                         val="$define"
16051                 else
16052 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16053                 fi
16054         fi;;
16055 esac
16056 set i_termio; eval $setvar
16057 val=$val2; set i_sgtty; eval $setvar
16058 val=$val3; set i_termios; eval $setvar
16059
16060 : see if this is a shadow.h system
16061 set shadow.h i_shadow
16062 eval $inhdr
16063
16064 : see if stddef is available
16065 set stddef.h i_stddef
16066 eval $inhdr
16067
16068 : see if this is a sunmath.h system
16069 set sunmath.h i_sunmath
16070 eval $inhdr
16071
16072 : see if sys/access.h is available
16073 set sys/access.h i_sysaccess
16074 eval $inhdr
16075
16076 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16077 set sys/filio.h i_sysfilio
16078 eval $inhdr
16079 echo " "
16080 if $test `./findhdr sys/ioctl.h`; then
16081         val="$define"
16082         echo '<sys/ioctl.h> found.' >&4
16083 else
16084         val="$undef"
16085         if $test $i_sysfilio = "$define"; then
16086             echo '<sys/ioctl.h> NOT found.' >&4
16087         else
16088                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16089                 $test $i_termio = "$define" && xxx="termio.h"
16090                 $test $i_termios = "$define" && xxx="termios.h"
16091 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16092         fi
16093 fi
16094 set i_sysioctl
16095 eval $setvar
16096
16097 : see if socket ioctl defs are in sys/sockio.h
16098 echo " "
16099 xxx=`./findhdr sys/sockio.h`
16100 if $test "$xxx"; then
16101         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16102                 val="$define"
16103                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16104         else
16105                 val="$undef"
16106                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16107         fi
16108 else
16109         val="$undef"
16110         $cat <<EOM
16111 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16112 EOM
16113 fi
16114 set i_syssockio
16115 eval $setvar
16116
16117
16118 : see if this is a syslog.h system
16119 set syslog.h i_syslog
16120 eval $inhdr
16121
16122
16123 : see if this is a sys/mode.h system
16124 set sys/mode.h i_sysmode
16125 eval $inhdr
16126
16127 : see if sys/resource.h has to be included
16128 set sys/resource.h i_sysresrc
16129 eval $inhdr
16130
16131 : see if sys/security.h is available
16132 set sys/security.h i_syssecrt
16133 eval $inhdr
16134
16135 : see if this is a sys/statvfs.h system
16136 set sys/statvfs.h i_sysstatvfs
16137 eval $inhdr
16138
16139 : see if this is a sys/un.h system
16140 set sys/un.h i_sysun
16141 eval $inhdr
16142
16143
16144 : see if this is a sys/utsname.h system
16145 set sys/utsname.h i_sysutsname
16146 eval $inhdr
16147
16148 : see if this is a syswait system
16149 set sys/wait.h i_syswait
16150 eval $inhdr
16151
16152 : see if this is a ustat.h system
16153 set ustat.h i_ustat
16154 eval $inhdr
16155
16156 : see if this is an utime system
16157 set utime.h i_utime
16158 eval $inhdr
16159
16160 : see if this is a values.h system
16161 set values.h i_values
16162 eval $inhdr
16163
16164 : see if this is a vfork system
16165 case "$d_vfork" in
16166 "$define")
16167         set vfork.h i_vfork
16168         eval $inhdr
16169         ;;
16170 *)
16171         i_vfork="$undef"
16172         ;;
16173 esac
16174
16175 : see if gdbm.h is available
16176 set gdbm.h t_gdbm
16177 eval $inhdr
16178 case "$t_gdbm" in
16179 $define)
16180         : see if gdbm_open exists
16181         set gdbm_open d_gdbm_open
16182         eval $inlibc
16183         case "$d_gdbm_open" in
16184         $undef)
16185                 t_gdbm="$undef"
16186                 echo "We won't be including <gdbm.h>"
16187                 ;;
16188         esac
16189         ;;
16190 esac
16191 val="$t_gdbm"
16192 set i_gdbm
16193 eval $setvar
16194
16195 echo " "
16196 echo "Looking for extensions..." >&4
16197 : If we are using the old config.sh, known_extensions may contain
16198 : old or inaccurate or duplicate values.
16199 known_extensions=''
16200 nonxs_extensions=''
16201 : We do not use find because it might not be available.
16202 : We do not just use MANIFEST because the user may have dropped
16203 : some additional extensions into the source tree and expect them
16204 : to be built.
16205
16206 : Function to recursively find available extensions, ignoring DynaLoader
16207 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16208 find_extensions='
16209     for xxx in *; do
16210        case "$xxx" in
16211            DynaLoader|dynaload) ;;
16212            *)
16213            if $test -f $xxx/$xxx.xs; then
16214                known_extensions="$known_extensions $1$xxx";
16215            elif $test -f $xxx/Makefile.PL; then
16216                nonxs_extensions="$nonxs_extensions $1$xxx";
16217            else
16218                if $test -d $xxx -a $# -lt 10; then
16219                    set $1$xxx/ $*;
16220                    cd $xxx;
16221                    eval $find_extensions;
16222                    cd ..;
16223                    shift;
16224                fi;
16225            fi
16226            ;;
16227        esac;
16228     done'
16229 tdir=`pwd`
16230 cd $rsrc/ext
16231 set X
16232 shift
16233 eval $find_extensions
16234 set X $nonxs_extensions
16235 shift
16236 nonxs_extensions="$*"
16237 set X $known_extensions
16238 shift
16239 known_extensions="$*"
16240 cd $tdir
16241
16242 : Now see which are supported on this system.
16243 avail_ext=''
16244 for xxx in $known_extensions ; do
16245         case "$xxx" in
16246         DB_File|db_file)
16247                 case "$i_db" in
16248                 $define) avail_ext="$avail_ext $xxx" ;;
16249                 esac
16250                 ;;
16251         GDBM_File|gdbm_fil)
16252                 case "$i_gdbm" in 
16253                 $define) avail_ext="$avail_ext $xxx" ;;
16254                 esac
16255                 ;;
16256         NDBM_File|ndbm_fil)
16257                 case "$i_ndbm" in
16258                 $define)
16259                     case "$osname-$use64bitint" in
16260                     cygwin-*|hpux-define)
16261                         case "$libs" in
16262                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16263                         esac
16264                         ;;
16265                     *) avail_ext="$avail_ext $xxx" ;;
16266                     esac
16267                     ;;
16268                 esac
16269                 ;;
16270         ODBM_File|odbm_fil) 
16271                 case "${i_dbm}${i_rpcsvcdbm}" in
16272                 *"${define}"*)
16273                     case "$osname-$use64bitint" in
16274                     cygwin-*|hpux-define)
16275                         case "$libs" in
16276                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16277                         esac
16278                         ;;
16279                     *) avail_ext="$avail_ext $xxx" ;;
16280                     esac
16281                     ;;
16282                 esac
16283                 ;;
16284         POSIX|posix)
16285                 case "$useposix" in
16286                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16287                 esac
16288                 ;;
16289         Opcode|opcode)
16290                 case "$useopcode" in
16291                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16292                 esac
16293                 ;;
16294         Socket|socket)
16295                 case "$d_socket" in 
16296                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16297                 esac
16298                 ;;
16299         Sys/Syslog|sys/syslog)
16300                 : XXX syslog requires socket
16301                 case "$d_socket" in 
16302                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16303                 esac
16304                 ;;
16305         Thread|thread)
16306                 case "$usethreads" in
16307                 true|$define|y)
16308                         case "$useithreads" in
16309                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16310                         esac
16311                 esac
16312                 ;;
16313         IPC/SysV|ipc/sysv)
16314                 : XXX Do we need a useipcsysv variable here
16315                 case "${d_msg}${d_sem}${d_shm}" in 
16316                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16317                 esac
16318                 ;;
16319         *)      avail_ext="$avail_ext $xxx"
16320                 ;;
16321         esac
16322 done
16323
16324 set X $avail_ext
16325 shift
16326 avail_ext="$*"
16327
16328 : Now see which nonxs extensions are supported on this system.
16329 : For now assume all are.
16330 nonxs_ext=''
16331 for xxx in $nonxs_extensions ; do
16332         case "$xxx" in
16333         *)      nonxs_ext="$nonxs_ext $xxx"
16334                 ;;
16335         esac
16336 done
16337
16338 set X $nonxs_ext
16339 shift
16340 nonxs_ext="$*"
16341
16342 case $usedl in
16343 $define)
16344         $cat <<EOM
16345 A number of extensions are supplied with $package.  You may choose to
16346 compile these extensions for dynamic loading (the default), compile
16347 them into the $package executable (static loading), or not include
16348 them at all.  Answer "none" to include no extensions.
16349 Note that DynaLoader is always built and need not be mentioned here.
16350
16351 EOM
16352         case "$dynamic_ext" in
16353         '') dflt="$avail_ext" ;;
16354         *)      dflt="$dynamic_ext"
16355                 # Perhaps we are reusing an old out-of-date config.sh.
16356                 case "$hint" in
16357                 previous)
16358                         if test X"$dynamic_ext" != X"$avail_ext"; then
16359                                 $cat <<EOM
16360 NOTICE:  Your previous config.sh list may be incorrect. 
16361 The extensions now available to you are 
16362         ${avail_ext}
16363 but the default list from your previous config.sh is
16364         ${dynamic_ext} 
16365
16366 EOM
16367                         fi
16368                         ;;
16369                 esac
16370                 ;;
16371         esac
16372         case "$dflt" in
16373         '')     dflt=none;;
16374         esac
16375         rp="What extensions do you wish to load dynamically?"
16376         . ./myread
16377         case "$ans" in
16378         none) dynamic_ext=' ' ;;
16379         *) dynamic_ext="$ans" ;;
16380         esac
16381
16382         case "$static_ext" in
16383         '')
16384                 : Exclude those already listed in dynamic linking
16385                 dflt=''
16386                 for xxx in $avail_ext; do
16387                         case " $dynamic_ext " in
16388                         *" $xxx "*) ;;
16389                         *) dflt="$dflt $xxx" ;;
16390                         esac
16391                 done
16392                 set X $dflt
16393                 shift
16394                 dflt="$*"
16395                 ;;
16396         *)  dflt="$static_ext" 
16397                 ;;
16398         esac
16399
16400         case "$dflt" in
16401         '')     dflt=none;;
16402         esac
16403         rp="What extensions do you wish to load statically?"
16404         . ./myread
16405         case "$ans" in
16406         none) static_ext=' ' ;;
16407         *) static_ext="$ans" ;;
16408         esac
16409         ;;
16410 *)
16411         $cat <<EOM
16412 A number of extensions are supplied with $package.  Answer "none" 
16413 to include no extensions. 
16414 Note that DynaLoader is always built and need not be mentioned here.
16415
16416 EOM
16417         case "$static_ext" in
16418         '') dflt="$avail_ext" ;;
16419         *)      dflt="$static_ext"
16420                 # Perhaps we are reusing an old out-of-date config.sh.
16421                 case "$hint" in
16422                 previous)
16423                         if test X"$static_ext" != X"$avail_ext"; then
16424                                 $cat <<EOM
16425 NOTICE:  Your previous config.sh list may be incorrect. 
16426 The extensions now available to you are 
16427         ${avail_ext}
16428 but the default list from your previous config.sh is
16429         ${static_ext} 
16430
16431 EOM
16432                         fi
16433                         ;;
16434                 esac
16435                 ;;
16436         esac
16437         : Exclude those that are not xs extensions
16438         case "$dflt" in
16439         '')     dflt=none;;
16440         esac
16441         rp="What extensions do you wish to include?"
16442         . ./myread
16443         case "$ans" in
16444         none) static_ext=' ' ;;
16445         *) static_ext="$ans" ;;
16446         esac
16447         ;;
16448 esac
16449
16450 set X $dynamic_ext $static_ext $nonxs_ext
16451 shift
16452 extensions="$*"
16453
16454 : Remove libraries needed only for extensions
16455 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16456 : The exception is SunOS 4.x, which needs them.
16457 case "${osname}X${osvers}" in
16458 sunos*X4*)
16459     perllibs="$libs"
16460     ;;
16461 *) case "$usedl" in
16462     $define|true|[yY]*)
16463             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16464             shift
16465             perllibs="$*"
16466             ;;
16467     *)  perllibs="$libs"
16468             ;;
16469     esac
16470     ;;
16471 esac
16472
16473 : Remove build directory name from cppstdin so it can be used from
16474 : either the present location or the final installed location.
16475 echo " "
16476 : Get out of the UU directory to get correct path name.
16477 cd ..
16478 case "$cppstdin" in
16479 `pwd`/cppstdin)
16480         echo "Stripping down cppstdin path name"
16481         cppstdin=cppstdin
16482         ;;
16483 esac
16484 cd UU
16485
16486 : end of configuration questions
16487 echo " "
16488 echo "End of configuration questions."
16489 echo " "
16490
16491 : back to where it started
16492 if test -d ../UU; then
16493         cd ..
16494 fi
16495
16496 : configuration may be patched via a 'config.over' file
16497 if $test -f config.over; then
16498         echo " "
16499         dflt=y
16500         rp='I see a config.over file.  Do you wish to load it?'
16501         . UU/myread
16502         case "$ans" in
16503         n*) echo "OK, I'll ignore it.";;
16504         *)      . ./config.over
16505                 echo "Configuration override changes have been loaded."
16506                 ;;
16507         esac
16508 fi
16509
16510 : in case they want portability, strip down executable paths
16511 case "$d_portable" in
16512 "$define")
16513         echo " "
16514         echo "Stripping down executable paths..." >&4
16515         for file in $loclist $trylist; do
16516                 eval temp=\$$file
16517                 eval $file=`basename $temp`
16518         done
16519         ;;
16520 esac
16521
16522 : create config.sh file
16523 echo " "
16524 echo "Creating config.sh..." >&4
16525 $spitshell <<EOT >config.sh
16526 $startsh
16527 #
16528 # This file was produced by running the Configure script. It holds all the
16529 # definitions figured out by Configure. Should you modify one of these values,
16530 # do not forget to propagate your changes by running "Configure -der". You may
16531 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16532 #
16533
16534 # Package name      : $package
16535 # Source directory  : $src
16536 # Configuration time: $cf_time
16537 # Configured by     : $cf_by
16538 # Target system     : $myuname
16539
16540 Author='$Author'
16541 Date='$Date'
16542 Header='$Header'
16543 Id='$Id'
16544 Locker='$Locker'
16545 Log='$Log'
16546 Mcc='$Mcc'
16547 RCSfile='$RCSfile'
16548 Revision='$Revision'
16549 Source='$Source'
16550 State='$State'
16551 _a='$_a'
16552 _exe='$_exe'
16553 _o='$_o'
16554 afs='$afs'
16555 afsroot='$afsroot'
16556 alignbytes='$alignbytes'
16557 ansi2knr='$ansi2knr'
16558 aphostname='$aphostname'
16559 api_revision='$api_revision'
16560 api_subversion='$api_subversion'
16561 api_version='$api_version'
16562 api_versionstring='$api_versionstring'
16563 ar='$ar'
16564 archlib='$archlib'
16565 archlibexp='$archlibexp'
16566 archname64='$archname64'
16567 archname='$archname'
16568 archobjs='$archobjs'
16569 awk='$awk'
16570 baserev='$baserev'
16571 bash='$bash'
16572 bin='$bin'
16573 bincompat5005='$bincompat5005'
16574 binexp='$binexp'
16575 bison='$bison'
16576 byacc='$byacc'
16577 byteorder='$byteorder'
16578 c='$c'
16579 castflags='$castflags'
16580 cat='$cat'
16581 cc='$cc'
16582 cccdlflags='$cccdlflags'
16583 ccdlflags='$ccdlflags'
16584 ccflags='$ccflags'
16585 ccflags_uselargefiles='$ccflags_uselargefiles'
16586 ccname='$ccname'
16587 ccsymbols='$ccsymbols'
16588 ccversion='$ccversion'
16589 cf_by='$cf_by'
16590 cf_email='$cf_email'
16591 cf_time='$cf_time'
16592 charsize='$charsize'
16593 chgrp='$chgrp'
16594 chmod='$chmod'
16595 chown='$chown'
16596 clocktype='$clocktype'
16597 comm='$comm'
16598 compress='$compress'
16599 contains='$contains'
16600 cp='$cp'
16601 cpio='$cpio'
16602 cpp='$cpp'
16603 cpp_stuff='$cpp_stuff'
16604 cppccsymbols='$cppccsymbols'
16605 cppflags='$cppflags'
16606 cpplast='$cpplast'
16607 cppminus='$cppminus'
16608 cpprun='$cpprun'
16609 cppstdin='$cppstdin'
16610 cppsymbols='$cppsymbols'
16611 cryptlib='$cryptlib'
16612 csh='$csh'
16613 d_Gconvert='$d_Gconvert'
16614 d_PRIEUldbl='$d_PRIEUldbl'
16615 d_PRIFUldbl='$d_PRIFUldbl'
16616 d_PRIGUldbl='$d_PRIGUldbl'
16617 d_PRIXU64='$d_PRIXU64'
16618 d_PRId64='$d_PRId64'
16619 d_PRIeldbl='$d_PRIeldbl'
16620 d_PRIfldbl='$d_PRIfldbl'
16621 d_PRIgldbl='$d_PRIgldbl'
16622 d_PRIi64='$d_PRIi64'
16623 d_PRIo64='$d_PRIo64'
16624 d_PRIu64='$d_PRIu64'
16625 d_PRIx64='$d_PRIx64'
16626 d_SCNfldbl='$d_SCNfldbl'
16627 d__fwalk='$d__fwalk'
16628 d_access='$d_access'
16629 d_accessx='$d_accessx'
16630 d_alarm='$d_alarm'
16631 d_archlib='$d_archlib'
16632 d_atolf='$d_atolf'
16633 d_atoll='$d_atoll'
16634 d_attribut='$d_attribut'
16635 d_bcmp='$d_bcmp'
16636 d_bcopy='$d_bcopy'
16637 d_bincompat5005='$d_bincompat5005'
16638 d_bsd='$d_bsd'
16639 d_bsdgetpgrp='$d_bsdgetpgrp'
16640 d_bsdsetpgrp='$d_bsdsetpgrp'
16641 d_bzero='$d_bzero'
16642 d_casti32='$d_casti32'
16643 d_castneg='$d_castneg'
16644 d_charvspr='$d_charvspr'
16645 d_chown='$d_chown'
16646 d_chroot='$d_chroot'
16647 d_chsize='$d_chsize'
16648 d_closedir='$d_closedir'
16649 d_cmsghdr_s='$d_cmsghdr_s'
16650 d_const='$d_const'
16651 d_crypt='$d_crypt'
16652 d_csh='$d_csh'
16653 d_cuserid='$d_cuserid'
16654 d_dbl_dig='$d_dbl_dig'
16655 d_dbminitproto='$d_dbminitproto'
16656 d_difftime='$d_difftime'
16657 d_dirnamlen='$d_dirnamlen'
16658 d_dlerror='$d_dlerror'
16659 d_dlopen='$d_dlopen'
16660 d_dlsymun='$d_dlsymun'
16661 d_dosuid='$d_dosuid'
16662 d_drand48proto='$d_drand48proto'
16663 d_dup2='$d_dup2'
16664 d_eaccess='$d_eaccess'
16665 d_endgrent='$d_endgrent'
16666 d_endhent='$d_endhent'
16667 d_endnent='$d_endnent'
16668 d_endpent='$d_endpent'
16669 d_endpwent='$d_endpwent'
16670 d_endsent='$d_endsent'
16671 d_eofnblk='$d_eofnblk'
16672 d_eunice='$d_eunice'
16673 d_fchdir='$d_fchdir'
16674 d_fchmod='$d_fchmod'
16675 d_fchown='$d_fchown'
16676 d_fcntl='$d_fcntl'
16677 d_fcntl_can_lock='$d_fcntl_can_lock'
16678 d_fd_macros='$d_fd_macros'
16679 d_fd_set='$d_fd_set'
16680 d_fds_bits='$d_fds_bits'
16681 d_fgetpos='$d_fgetpos'
16682 d_flexfnam='$d_flexfnam'
16683 d_flock='$d_flock'
16684 d_flockproto='$d_flockproto'
16685 d_fork='$d_fork'
16686 d_fpathconf='$d_fpathconf'
16687 d_fpos64_t='$d_fpos64_t'
16688 d_frexpl='$d_frexpl'
16689 d_fs_data_s='$d_fs_data_s'
16690 d_fseeko='$d_fseeko'
16691 d_fsetpos='$d_fsetpos'
16692 d_fstatfs='$d_fstatfs'
16693 d_fstatvfs='$d_fstatvfs'
16694 d_fsync='$d_fsync'
16695 d_ftello='$d_ftello'
16696 d_ftime='$d_ftime'
16697 d_getcwd='$d_getcwd'
16698 d_getespwnam='$d_getespwnam'
16699 d_getfsstat='$d_getfsstat'
16700 d_getgrent='$d_getgrent'
16701 d_getgrps='$d_getgrps'
16702 d_gethbyaddr='$d_gethbyaddr'
16703 d_gethbyname='$d_gethbyname'
16704 d_gethent='$d_gethent'
16705 d_gethname='$d_gethname'
16706 d_gethostprotos='$d_gethostprotos'
16707 d_getitimer='$d_getitimer'
16708 d_getlogin='$d_getlogin'
16709 d_getmnt='$d_getmnt'
16710 d_getmntent='$d_getmntent'
16711 d_getnbyaddr='$d_getnbyaddr'
16712 d_getnbyname='$d_getnbyname'
16713 d_getnent='$d_getnent'
16714 d_getnetprotos='$d_getnetprotos'
16715 d_getpagsz='$d_getpagsz'
16716 d_getpbyname='$d_getpbyname'
16717 d_getpbynumber='$d_getpbynumber'
16718 d_getpent='$d_getpent'
16719 d_getpgid='$d_getpgid'
16720 d_getpgrp2='$d_getpgrp2'
16721 d_getpgrp='$d_getpgrp'
16722 d_getppid='$d_getppid'
16723 d_getprior='$d_getprior'
16724 d_getprotoprotos='$d_getprotoprotos'
16725 d_getprpwnam='$d_getprpwnam'
16726 d_getpwent='$d_getpwent'
16727 d_getsbyname='$d_getsbyname'
16728 d_getsbyport='$d_getsbyport'
16729 d_getsent='$d_getsent'
16730 d_getservprotos='$d_getservprotos'
16731 d_getspnam='$d_getspnam'
16732 d_gettimeod='$d_gettimeod'
16733 d_gnulibc='$d_gnulibc'
16734 d_grpasswd='$d_grpasswd'
16735 d_hasmntopt='$d_hasmntopt'
16736 d_htonl='$d_htonl'
16737 d_iconv='$d_iconv'
16738 d_index='$d_index'
16739 d_inetaton='$d_inetaton'
16740 d_int64_t='$d_int64_t'
16741 d_isascii='$d_isascii'
16742 d_isnan='$d_isnan'
16743 d_isnanl='$d_isnanl'
16744 d_killpg='$d_killpg'
16745 d_lchown='$d_lchown'
16746 d_ldbl_dig='$d_ldbl_dig'
16747 d_link='$d_link'
16748 d_locconv='$d_locconv'
16749 d_lockf='$d_lockf'
16750 d_longdbl='$d_longdbl'
16751 d_longlong='$d_longlong'
16752 d_lseekproto='$d_lseekproto'
16753 d_lstat='$d_lstat'
16754 d_madvise='$d_madvise'
16755 d_mblen='$d_mblen'
16756 d_mbstowcs='$d_mbstowcs'
16757 d_mbtowc='$d_mbtowc'
16758 d_memchr='$d_memchr'
16759 d_memcmp='$d_memcmp'
16760 d_memcpy='$d_memcpy'
16761 d_memmove='$d_memmove'
16762 d_memset='$d_memset'
16763 d_mkdir='$d_mkdir'
16764 d_mkdtemp='$d_mkdtemp'
16765 d_mkfifo='$d_mkfifo'
16766 d_mkstemp='$d_mkstemp'
16767 d_mkstemps='$d_mkstemps'
16768 d_mktime='$d_mktime'
16769 d_mmap='$d_mmap'
16770 d_modfl='$d_modfl'
16771 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16772 d_mprotect='$d_mprotect'
16773 d_msg='$d_msg'
16774 d_msg_ctrunc='$d_msg_ctrunc'
16775 d_msg_dontroute='$d_msg_dontroute'
16776 d_msg_oob='$d_msg_oob'
16777 d_msg_peek='$d_msg_peek'
16778 d_msg_proxy='$d_msg_proxy'
16779 d_msgctl='$d_msgctl'
16780 d_msgget='$d_msgget'
16781 d_msghdr_s='$d_msghdr_s'
16782 d_msgrcv='$d_msgrcv'
16783 d_msgsnd='$d_msgsnd'
16784 d_msync='$d_msync'
16785 d_munmap='$d_munmap'
16786 d_mymalloc='$d_mymalloc'
16787 d_nice='$d_nice'
16788 d_nl_langinfo='$d_nl_langinfo'
16789 d_nv_preserves_uv='$d_nv_preserves_uv'
16790 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16791 d_off64_t='$d_off64_t'
16792 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16793 d_oldpthreads='$d_oldpthreads'
16794 d_oldsock='$d_oldsock'
16795 d_open3='$d_open3'
16796 d_pathconf='$d_pathconf'
16797 d_pause='$d_pause'
16798 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16799 d_phostname='$d_phostname'
16800 d_pipe='$d_pipe'
16801 d_poll='$d_poll'
16802 d_portable='$d_portable'
16803 d_pthread_yield='$d_pthread_yield'
16804 d_pwage='$d_pwage'
16805 d_pwchange='$d_pwchange'
16806 d_pwclass='$d_pwclass'
16807 d_pwcomment='$d_pwcomment'
16808 d_pwexpire='$d_pwexpire'
16809 d_pwgecos='$d_pwgecos'
16810 d_pwpasswd='$d_pwpasswd'
16811 d_pwquota='$d_pwquota'
16812 d_qgcvt='$d_qgcvt'
16813 d_quad='$d_quad'
16814 d_readdir='$d_readdir'
16815 d_readlink='$d_readlink'
16816 d_readv='$d_readv'
16817 d_recvmsg='$d_recvmsg'
16818 d_rename='$d_rename'
16819 d_rewinddir='$d_rewinddir'
16820 d_rmdir='$d_rmdir'
16821 d_safebcpy='$d_safebcpy'
16822 d_safemcpy='$d_safemcpy'
16823 d_sanemcmp='$d_sanemcmp'
16824 d_sbrkproto='$d_sbrkproto'
16825 d_sched_yield='$d_sched_yield'
16826 d_scm_rights='$d_scm_rights'
16827 d_seekdir='$d_seekdir'
16828 d_select='$d_select'
16829 d_sem='$d_sem'
16830 d_semctl='$d_semctl'
16831 d_semctl_semid_ds='$d_semctl_semid_ds'
16832 d_semctl_semun='$d_semctl_semun'
16833 d_semget='$d_semget'
16834 d_semop='$d_semop'
16835 d_sendmsg='$d_sendmsg'
16836 d_setegid='$d_setegid'
16837 d_seteuid='$d_seteuid'
16838 d_setgrent='$d_setgrent'
16839 d_setgrps='$d_setgrps'
16840 d_sethent='$d_sethent'
16841 d_setitimer='$d_setitimer'
16842 d_setlinebuf='$d_setlinebuf'
16843 d_setlocale='$d_setlocale'
16844 d_setnent='$d_setnent'
16845 d_setpent='$d_setpent'
16846 d_setpgid='$d_setpgid'
16847 d_setpgrp2='$d_setpgrp2'
16848 d_setpgrp='$d_setpgrp'
16849 d_setprior='$d_setprior'
16850 d_setproctitle='$d_setproctitle'
16851 d_setpwent='$d_setpwent'
16852 d_setregid='$d_setregid'
16853 d_setresgid='$d_setresgid'
16854 d_setresuid='$d_setresuid'
16855 d_setreuid='$d_setreuid'
16856 d_setrgid='$d_setrgid'
16857 d_setruid='$d_setruid'
16858 d_setsent='$d_setsent'
16859 d_setsid='$d_setsid'
16860 d_setvbuf='$d_setvbuf'
16861 d_sfio='$d_sfio'
16862 d_shm='$d_shm'
16863 d_shmat='$d_shmat'
16864 d_shmatprototype='$d_shmatprototype'
16865 d_shmctl='$d_shmctl'
16866 d_shmdt='$d_shmdt'
16867 d_shmget='$d_shmget'
16868 d_sigaction='$d_sigaction'
16869 d_sigprocmask='$d_sigprocmask'
16870 d_sigsetjmp='$d_sigsetjmp'
16871 d_sockatmark='$d_sockatmark'
16872 d_sockatmarkproto='$d_sockatmarkproto'
16873 d_socket='$d_socket'
16874 d_socklen_t='$d_socklen_t'
16875 d_sockpair='$d_sockpair'
16876 d_socks5_init='$d_socks5_init'
16877 d_sqrtl='$d_sqrtl'
16878 d_sresgproto='$d_sresgproto'
16879 d_sresuproto='$d_sresuproto'
16880 d_statblks='$d_statblks'
16881 d_statfs_f_flags='$d_statfs_f_flags'
16882 d_statfs_s='$d_statfs_s'
16883 d_statvfs='$d_statvfs'
16884 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16885 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16886 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16887 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16888 d_stdio_stream_array='$d_stdio_stream_array'
16889 d_stdiobase='$d_stdiobase'
16890 d_stdstdio='$d_stdstdio'
16891 d_strchr='$d_strchr'
16892 d_strcoll='$d_strcoll'
16893 d_strctcpy='$d_strctcpy'
16894 d_strerrm='$d_strerrm'
16895 d_strerror='$d_strerror'
16896 d_strftime='$d_strftime'
16897 d_strtod='$d_strtod'
16898 d_strtol='$d_strtol'
16899 d_strtold='$d_strtold'
16900 d_strtoll='$d_strtoll'
16901 d_strtoq='$d_strtoq'
16902 d_strtoul='$d_strtoul'
16903 d_strtoull='$d_strtoull'
16904 d_strtouq='$d_strtouq'
16905 d_strxfrm='$d_strxfrm'
16906 d_suidsafe='$d_suidsafe'
16907 d_symlink='$d_symlink'
16908 d_syscall='$d_syscall'
16909 d_syscallproto='$d_syscallproto'
16910 d_sysconf='$d_sysconf'
16911 d_sysernlst='$d_sysernlst'
16912 d_syserrlst='$d_syserrlst'
16913 d_system='$d_system'
16914 d_tcgetpgrp='$d_tcgetpgrp'
16915 d_tcsetpgrp='$d_tcsetpgrp'
16916 d_telldir='$d_telldir'
16917 d_telldirproto='$d_telldirproto'
16918 d_time='$d_time'
16919 d_times='$d_times'
16920 d_truncate='$d_truncate'
16921 d_tzname='$d_tzname'
16922 d_u32align='$d_u32align'
16923 d_ualarm='$d_ualarm'
16924 d_umask='$d_umask'
16925 d_uname='$d_uname'
16926 d_union_semun='$d_union_semun'
16927 d_usleep='$d_usleep'
16928 d_usleepproto='$d_usleepproto'
16929 d_ustat='$d_ustat'
16930 d_vendorarch='$d_vendorarch'
16931 d_vendorbin='$d_vendorbin'
16932 d_vendorlib='$d_vendorlib'
16933 d_vfork='$d_vfork'
16934 d_void_closedir='$d_void_closedir'
16935 d_voidsig='$d_voidsig'
16936 d_voidtty='$d_voidtty'
16937 d_volatile='$d_volatile'
16938 d_vprintf='$d_vprintf'
16939 d_wait4='$d_wait4'
16940 d_waitpid='$d_waitpid'
16941 d_wcstombs='$d_wcstombs'
16942 d_wctomb='$d_wctomb'
16943 d_writev='$d_writev'
16944 d_xenix='$d_xenix'
16945 date='$date'
16946 db_hashtype='$db_hashtype'
16947 db_prefixtype='$db_prefixtype'
16948 db_version_major='$db_version_major'
16949 db_version_minor='$db_version_minor'
16950 db_version_patch='$db_version_patch'
16951 defvoidused='$defvoidused'
16952 direntrytype='$direntrytype'
16953 dlext='$dlext'
16954 dlsrc='$dlsrc'
16955 doublesize='$doublesize'
16956 drand01='$drand01'
16957 dynamic_ext='$dynamic_ext'
16958 eagain='$eagain'
16959 ebcdic='$ebcdic'
16960 echo='$echo'
16961 egrep='$egrep'
16962 emacs='$emacs'
16963 eunicefix='$eunicefix'
16964 exe_ext='$exe_ext'
16965 expr='$expr'
16966 extensions='$extensions'
16967 fflushNULL='$fflushNULL'
16968 fflushall='$fflushall'
16969 find='$find'
16970 firstmakefile='$firstmakefile'
16971 flex='$flex'
16972 fpossize='$fpossize'
16973 fpostype='$fpostype'
16974 freetype='$freetype'
16975 from='$from'
16976 full_ar='$full_ar'
16977 full_csh='$full_csh'
16978 full_sed='$full_sed'
16979 gccosandvers='$gccosandvers'
16980 gccversion='$gccversion'
16981 gidformat='$gidformat'
16982 gidsign='$gidsign'
16983 gidsize='$gidsize'
16984 gidtype='$gidtype'
16985 glibpth='$glibpth'
16986 grep='$grep'
16987 groupcat='$groupcat'
16988 groupstype='$groupstype'
16989 gzip='$gzip'
16990 h_fcntl='$h_fcntl'
16991 h_sysfile='$h_sysfile'
16992 hint='$hint'
16993 hostcat='$hostcat'
16994 i16size='$i16size'
16995 i16type='$i16type'
16996 i32size='$i32size'
16997 i32type='$i32type'
16998 i64size='$i64size'
16999 i64type='$i64type'
17000 i8size='$i8size'
17001 i8type='$i8type'
17002 i_arpainet='$i_arpainet'
17003 i_bsdioctl='$i_bsdioctl'
17004 i_db='$i_db'
17005 i_dbm='$i_dbm'
17006 i_dirent='$i_dirent'
17007 i_dld='$i_dld'
17008 i_dlfcn='$i_dlfcn'
17009 i_fcntl='$i_fcntl'
17010 i_float='$i_float'
17011 i_gdbm='$i_gdbm'
17012 i_grp='$i_grp'
17013 i_iconv='$i_iconv'
17014 i_ieeefp='$i_ieeefp'
17015 i_inttypes='$i_inttypes'
17016 i_langinfo='$i_langinfo'
17017 i_libutil='$i_libutil'
17018 i_limits='$i_limits'
17019 i_locale='$i_locale'
17020 i_machcthr='$i_machcthr'
17021 i_malloc='$i_malloc'
17022 i_math='$i_math'
17023 i_memory='$i_memory'
17024 i_mntent='$i_mntent'
17025 i_ndbm='$i_ndbm'
17026 i_netdb='$i_netdb'
17027 i_neterrno='$i_neterrno'
17028 i_netinettcp='$i_netinettcp'
17029 i_niin='$i_niin'
17030 i_poll='$i_poll'
17031 i_prot='$i_prot'
17032 i_pthread='$i_pthread'
17033 i_pwd='$i_pwd'
17034 i_rpcsvcdbm='$i_rpcsvcdbm'
17035 i_sfio='$i_sfio'
17036 i_sgtty='$i_sgtty'
17037 i_shadow='$i_shadow'
17038 i_socks='$i_socks'
17039 i_stdarg='$i_stdarg'
17040 i_stddef='$i_stddef'
17041 i_stdlib='$i_stdlib'
17042 i_string='$i_string'
17043 i_sunmath='$i_sunmath'
17044 i_sysaccess='$i_sysaccess'
17045 i_sysdir='$i_sysdir'
17046 i_sysfile='$i_sysfile'
17047 i_sysfilio='$i_sysfilio'
17048 i_sysin='$i_sysin'
17049 i_sysioctl='$i_sysioctl'
17050 i_syslog='$i_syslog'
17051 i_sysmman='$i_sysmman'
17052 i_sysmode='$i_sysmode'
17053 i_sysmount='$i_sysmount'
17054 i_sysndir='$i_sysndir'
17055 i_sysparam='$i_sysparam'
17056 i_sysresrc='$i_sysresrc'
17057 i_syssecrt='$i_syssecrt'
17058 i_sysselct='$i_sysselct'
17059 i_syssockio='$i_syssockio'
17060 i_sysstat='$i_sysstat'
17061 i_sysstatfs='$i_sysstatfs'
17062 i_sysstatvfs='$i_sysstatvfs'
17063 i_systime='$i_systime'
17064 i_systimek='$i_systimek'
17065 i_systimes='$i_systimes'
17066 i_systypes='$i_systypes'
17067 i_sysuio='$i_sysuio'
17068 i_sysun='$i_sysun'
17069 i_sysutsname='$i_sysutsname'
17070 i_sysvfs='$i_sysvfs'
17071 i_syswait='$i_syswait'
17072 i_termio='$i_termio'
17073 i_termios='$i_termios'
17074 i_time='$i_time'
17075 i_unistd='$i_unistd'
17076 i_ustat='$i_ustat'
17077 i_utime='$i_utime'
17078 i_values='$i_values'
17079 i_varargs='$i_varargs'
17080 i_varhdr='$i_varhdr'
17081 i_vfork='$i_vfork'
17082 ignore_versioned_solibs='$ignore_versioned_solibs'
17083 inc_version_list='$inc_version_list'
17084 inc_version_list_init='$inc_version_list_init'
17085 incpath='$incpath'
17086 inews='$inews'
17087 installarchlib='$installarchlib'
17088 installbin='$installbin'
17089 installman1dir='$installman1dir'
17090 installman3dir='$installman3dir'
17091 installprefix='$installprefix'
17092 installprefixexp='$installprefixexp'
17093 installprivlib='$installprivlib'
17094 installscript='$installscript'
17095 installsitearch='$installsitearch'
17096 installsitebin='$installsitebin'
17097 installsitelib='$installsitelib'
17098 installstyle='$installstyle'
17099 installusrbinperl='$installusrbinperl'
17100 installvendorarch='$installvendorarch'
17101 installvendorbin='$installvendorbin'
17102 installvendorlib='$installvendorlib'
17103 intsize='$intsize'
17104 issymlink='$issymlink'
17105 ivdformat='$ivdformat'
17106 ivsize='$ivsize'
17107 ivtype='$ivtype'
17108 known_extensions='$known_extensions'
17109 ksh='$ksh'
17110 ld='$ld'
17111 lddlflags='$lddlflags'
17112 ldflags='$ldflags'
17113 ldflags_uselargefiles='$ldflags_uselargefiles'
17114 ldlibpthname='$ldlibpthname'
17115 less='$less'
17116 lib_ext='$lib_ext'
17117 libc='$libc'
17118 libperl='$libperl'
17119 libpth='$libpth'
17120 libs='$libs'
17121 libsdirs='$libsdirs'
17122 libsfiles='$libsfiles'
17123 libsfound='$libsfound'
17124 libspath='$libspath'
17125 libswanted='$libswanted'
17126 libswanted_uselargefiles='$libswanted_uselargefiles'
17127 line='$line'
17128 lint='$lint'
17129 lkflags='$lkflags'
17130 ln='$ln'
17131 lns='$lns'
17132 locincpth='$locincpth'
17133 loclibpth='$loclibpth'
17134 longdblsize='$longdblsize'
17135 longlongsize='$longlongsize'
17136 longsize='$longsize'
17137 lp='$lp'
17138 lpr='$lpr'
17139 ls='$ls'
17140 lseeksize='$lseeksize'
17141 lseektype='$lseektype'
17142 mail='$mail'
17143 mailx='$mailx'
17144 make='$make'
17145 make_set_make='$make_set_make'
17146 mallocobj='$mallocobj'
17147 mallocsrc='$mallocsrc'
17148 malloctype='$malloctype'
17149 man1dir='$man1dir'
17150 man1direxp='$man1direxp'
17151 man1ext='$man1ext'
17152 man3dir='$man3dir'
17153 man3direxp='$man3direxp'
17154 man3ext='$man3ext'
17155 mips_type='$mips_type'
17156 mkdir='$mkdir'
17157 mmaptype='$mmaptype'
17158 modetype='$modetype'
17159 more='$more'
17160 multiarch='$multiarch'
17161 mv='$mv'
17162 myarchname='$myarchname'
17163 mydomain='$mydomain'
17164 myhostname='$myhostname'
17165 myuname='$myuname'
17166 n='$n'
17167 need_va_copy='$need_va_copy'
17168 netdb_hlen_type='$netdb_hlen_type'
17169 netdb_host_type='$netdb_host_type'
17170 netdb_name_type='$netdb_name_type'
17171 netdb_net_type='$netdb_net_type'
17172 nm='$nm'
17173 nm_opt='$nm_opt'
17174 nm_so_opt='$nm_so_opt'
17175 nonxs_ext='$nonxs_ext'
17176 nroff='$nroff'
17177 nvEUformat='$nvEUformat'
17178 nvFUformat='$nvFUformat'
17179 nvGUformat='$nvGUformat'
17180 nveformat='$nveformat'
17181 nvfformat='$nvfformat'
17182 nvgformat='$nvgformat'
17183 nvsize='$nvsize'
17184 nvtype='$nvtype'
17185 o_nonblock='$o_nonblock'
17186 obj_ext='$obj_ext'
17187 old_pthread_create_joinable='$old_pthread_create_joinable'
17188 optimize='$optimize'
17189 orderlib='$orderlib'
17190 osname='$osname'
17191 osvers='$osvers'
17192 otherlibdirs='$otherlibdirs'
17193 package='$package'
17194 pager='$pager'
17195 passcat='$passcat'
17196 patchlevel='$patchlevel'
17197 path_sep='$path_sep'
17198 perl5='$perl5'
17199 perl='$perl'
17200 perl_patchlevel='$perl_patchlevel'
17201 perladmin='$perladmin'
17202 perllibs='$perllibs'
17203 perlpath='$perlpath'
17204 pg='$pg'
17205 phostname='$phostname'
17206 pidtype='$pidtype'
17207 plibpth='$plibpth'
17208 pm_apiversion='$pm_apiversion'
17209 pmake='$pmake'
17210 pr='$pr'
17211 prefix='$prefix'
17212 prefixexp='$prefixexp'
17213 privlib='$privlib'
17214 privlibexp='$privlibexp'
17215 prototype='$prototype'
17216 ptrsize='$ptrsize'
17217 quadkind='$quadkind'
17218 quadtype='$quadtype'
17219 randbits='$randbits'
17220 randfunc='$randfunc'
17221 randseedtype='$randseedtype'
17222 ranlib='$ranlib'
17223 rd_nodata='$rd_nodata'
17224 revision='$revision'
17225 rm='$rm'
17226 rmail='$rmail'
17227 run='$run'
17228 runnm='$runnm'
17229 sPRIEUldbl='$sPRIEUldbl'
17230 sPRIFUldbl='$sPRIFUldbl'
17231 sPRIGUldbl='$sPRIGUldbl'
17232 sPRIXU64='$sPRIXU64'
17233 sPRId64='$sPRId64'
17234 sPRIeldbl='$sPRIeldbl'
17235 sPRIfldbl='$sPRIfldbl'
17236 sPRIgldbl='$sPRIgldbl'
17237 sPRIi64='$sPRIi64'
17238 sPRIo64='$sPRIo64'
17239 sPRIu64='$sPRIu64'
17240 sPRIx64='$sPRIx64'
17241 sSCNfldbl='$sSCNfldbl'
17242 sched_yield='$sched_yield'
17243 scriptdir='$scriptdir'
17244 scriptdirexp='$scriptdirexp'
17245 sed='$sed'
17246 seedfunc='$seedfunc'
17247 selectminbits='$selectminbits'
17248 selecttype='$selecttype'
17249 sendmail='$sendmail'
17250 sh='$sh'
17251 shar='$shar'
17252 sharpbang='$sharpbang'
17253 shmattype='$shmattype'
17254 shortsize='$shortsize'
17255 shrpenv='$shrpenv'
17256 shsharp='$shsharp'
17257 sig_count='$sig_count'
17258 sig_name='$sig_name'
17259 sig_name_init='$sig_name_init'
17260 sig_num='$sig_num'
17261 sig_num_init='$sig_num_init'
17262 sig_size='$sig_size'
17263 signal_t='$signal_t'
17264 sitearch='$sitearch'
17265 sitearchexp='$sitearchexp'
17266 sitebin='$sitebin'
17267 sitebinexp='$sitebinexp'
17268 sitelib='$sitelib'
17269 sitelib_stem='$sitelib_stem'
17270 sitelibexp='$sitelibexp'
17271 siteprefix='$siteprefix'
17272 siteprefixexp='$siteprefixexp'
17273 sizesize='$sizesize'
17274 sizetype='$sizetype'
17275 sleep='$sleep'
17276 smail='$smail'
17277 so='$so'
17278 sockethdr='$sockethdr'
17279 socketlib='$socketlib'
17280 socksizetype='$socksizetype'
17281 sort='$sort'
17282 spackage='$spackage'
17283 spitshell='$spitshell'
17284 src='$src'
17285 ssizetype='$ssizetype'
17286 startperl='$startperl'
17287 startsh='$startsh'
17288 static_ext='$static_ext'
17289 stdchar='$stdchar'
17290 stdio_base='$stdio_base'
17291 stdio_bufsiz='$stdio_bufsiz'
17292 stdio_cnt='$stdio_cnt'
17293 stdio_filbuf='$stdio_filbuf'
17294 stdio_ptr='$stdio_ptr'
17295 stdio_stream_array='$stdio_stream_array'
17296 strings='$strings'
17297 submit='$submit'
17298 subversion='$subversion'
17299 sysman='$sysman'
17300 tail='$tail'
17301 tar='$tar'
17302 targetarch='$targetarch'
17303 tbl='$tbl'
17304 tee='$tee'
17305 test='$test'
17306 timeincl='$timeincl'
17307 timetype='$timetype'
17308 to='$to'
17309 touch='$touch'
17310 tr='$tr'
17311 trnl='$trnl'
17312 troff='$troff'
17313 u16size='$u16size'
17314 u16type='$u16type'
17315 u32size='$u32size'
17316 u32type='$u32type'
17317 u64size='$u64size'
17318 u64type='$u64type'
17319 u8size='$u8size'
17320 u8type='$u8type'
17321 uidformat='$uidformat'
17322 uidsign='$uidsign'
17323 uidsize='$uidsize'
17324 uidtype='$uidtype'
17325 uname='$uname'
17326 uniq='$uniq'
17327 uquadtype='$uquadtype'
17328 use5005threads='$use5005threads'
17329 use64bitall='$use64bitall'
17330 use64bitint='$use64bitint'
17331 usecrosscompile='$usecrosscompile'
17332 usedl='$usedl'
17333 useithreads='$useithreads'
17334 uselargefiles='$uselargefiles'
17335 uselongdouble='$uselongdouble'
17336 usemorebits='$usemorebits'
17337 usemultiplicity='$usemultiplicity'
17338 usemymalloc='$usemymalloc'
17339 usenm='$usenm'
17340 useopcode='$useopcode'
17341 useperlio='$useperlio'
17342 useposix='$useposix'
17343 usereentrant='$usereentrant'
17344 usesfio='$usesfio'
17345 useshrplib='$useshrplib'
17346 usesocks='$usesocks'
17347 usethreads='$usethreads'
17348 usevendorprefix='$usevendorprefix'
17349 usevfork='$usevfork'
17350 usrinc='$usrinc'
17351 uuname='$uuname'
17352 uvXUformat='$uvXUformat'
17353 uvoformat='$uvoformat'
17354 uvsize='$uvsize'
17355 uvtype='$uvtype'
17356 uvuformat='$uvuformat'
17357 uvxformat='$uvxformat'
17358 vendorarch='$vendorarch'
17359 vendorarchexp='$vendorarchexp'
17360 vendorbin='$vendorbin'
17361 vendorbinexp='$vendorbinexp'
17362 vendorlib='$vendorlib'
17363 vendorlib_stem='$vendorlib_stem'
17364 vendorlibexp='$vendorlibexp'
17365 vendorprefix='$vendorprefix'
17366 vendorprefixexp='$vendorprefixexp'
17367 version='$version'
17368 versiononly='$versiononly'
17369 vi='$vi'
17370 voidflags='$voidflags'
17371 xlibpth='$xlibpth'
17372 xs_apiversion='$xs_apiversion'
17373 yacc='$yacc'
17374 yaccflags='$yaccflags'
17375 zcat='$zcat'
17376 zip='$zip'
17377 EOT
17378
17379 : Add in command line options if available
17380 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17381
17382 : add special variables
17383 $test -f $src/patchlevel.h && \
17384 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17385 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17386 echo "PERL_CONFIG_SH=true" >>config.sh
17387
17388 : propagate old symbols
17389 if $test -f UU/config.sh; then
17390         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17391         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17392         $sort | $uniq -u >UU/oldsyms
17393         set X `cat UU/oldsyms`
17394         shift
17395         case $# in
17396         0) ;;
17397         *)
17398                 cat <<EOM
17399 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17400 EOM
17401                 echo "# Variables propagated from previous config.sh file." >>config.sh
17402                 for sym in `cat UU/oldsyms`; do
17403                         echo "    Propagating $hint variable "'$'"$sym..."
17404                         eval 'tmp="$'"${sym}"'"'
17405                         echo "$tmp" | \
17406                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17407                 done
17408                 ;;
17409         esac
17410 fi
17411
17412 : Finish up by extracting the .SH files
17413 case "$alldone" in
17414 exit)
17415         $rm -rf UU
17416         echo "Extraction done."
17417         exit 0
17418         ;;
17419 cont)
17420         ;;
17421 '')
17422         dflt=''
17423         nostick=true
17424         $cat <<EOM
17425
17426 If you'd like to make any changes to the config.sh file before I begin
17427 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17428
17429 EOM
17430         rp="Press return or use a shell escape to edit config.sh:"
17431         . UU/myread
17432         nostick=''
17433         case "$ans" in
17434         '') ;;
17435         *) : in case they cannot read
17436                 sh 1>&4 -c "$ans";;
17437         esac
17438         ;;
17439 esac
17440
17441 : if this fails, just run all the .SH files by hand
17442 . ./config.sh
17443
17444 echo " "
17445 exec 1>&4
17446 pwd=`pwd`
17447 . ./UU/extract
17448 cd $pwd
17449
17450 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17451         dflt=y
17452         case "$silent" in
17453         true) ;;
17454         *)
17455                 $cat <<EOM
17456
17457 Now you need to generate make dependencies by running "$make depend".
17458 You might prefer to run it in background: "$make depend > makedepend.out &"
17459 It can take a while, so you might not want to run it right now.
17460
17461 EOM
17462                 ;;
17463         esac
17464         rp="Run $make depend now?"
17465         . UU/myread
17466         case "$ans" in
17467         y*)
17468                 $make depend && echo "Now you must run '$make'."
17469                 ;;
17470         *)
17471                 echo "You must run '$make depend' then '$make'."
17472                 ;;
17473         esac
17474 elif test -f [Mm]akefile; then
17475         echo " "
17476         echo "Now you must run a $make."
17477 else
17478         echo "Configure done."
17479 fi
17480
17481 if $test -f Policy.sh; then
17482     $cat <<EOM
17483
17484 If you compile $package on a different machine or from a different object
17485 directory, copy the Policy.sh file from this object directory to the
17486 new one before you run Configure -- this will help you with most of
17487 the policy defaults.
17488
17489 EOM
17490 fi
17491 if $test -f config.msg; then
17492     echo "Hmm.  I also noted the following information while running:"
17493     echo " "
17494     $cat config.msg >&4
17495     $rm -f config.msg
17496 fi
17497 $rm -f kit*isdone ark*isdone
17498 $rm -rf UU
17499
17500 : End of Configure
17501