Forgotten deMANIFESTation.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Mar  7 07:37:32 EET 2002 [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                 case "X${MACHTYPE:-nonesuchmach}" in
69                 *cygwin) ;;
70                 *) p_=\; ;;
71                 esac
72         fi
73 fi
74
75 : Proper PATH setting
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
84 paths="$paths /system/gnu_library/bin"
85
86 for p in $paths
87 do
88         case "$p_$PATH$p_" in
89         *$p_$p$p_*) ;;
90         *) test -d $p && PATH=$PATH$p_$p ;;
91         esac
92 done
93
94 PATH=.$p_$PATH
95 export PATH
96
97 : shall we be using ksh?
98 inksh=''
99 needksh=''
100 avoidksh=''
101 newsh=/bin/ksh
102 changesh=''
103 if (PATH=.; alias -x) >/dev/null 2>&1; then
104                 inksh=true
105 fi
106 if test -f /hp-ux -a -f /bin/ksh; then
107         needksh='to avoid sh bug in "here document" expansion'
108 fi
109 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
110         if test X`/usr/bin/uname -v` = X4; then
111                 avoidksh="to avoid AIX 4's /bin/sh"
112                 newsh=/usr/bin/bsh
113         fi
114 fi
115 if test -f /osf_boot -a -f /usr/sbin/setld; then
116         if test X`/usr/bin/uname -s` = XOSF1; then
117                 avoidksh="to avoid Digital UNIX' ksh"
118                 newsh=/bin/sh
119                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
120         fi
121 fi
122 case "$inksh/$needksh" in
123 /[a-z]*)
124                 ENV=''
125                 changesh=true
126                 reason="$needksh"
127         ;;
128 esac
129 case "$inksh/$avoidksh" in
130 true/[a-z]*)
131         changesh=true
132         reason="$avoidksh"
133         ;;
134 esac
135 case "$inksh/$needksh-$avoidksh-" in
136 true/--)
137                 cat <<EOM
138 (I see you are using the Korn shell.  Some ksh's blow up on $me,
139 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
140 EOM
141         ;;
142 esac
143 case "$changesh" in
144 true)
145         export newsh
146         echo "(Feeding myself to $newsh $reason.)"
147         case "$0" in
148         Configure|*/Configure) exec $newsh $0 "$@";;
149         *) exec $newsh Configure "$@";;
150         esac
151         ;;
152 esac
153
154 : if needed set CDPATH to a harmless value that is not chatty
155 : avoid bash 2.02 problems with empty CDPATH.
156 case "$CDPATH" in
157 '')     ;;
158 *)      case "$SHELL" in
159         *bash*) CDPATH='.' ;;
160         *)              CDPATH='' ;;
161         esac
162         ;;
163 esac
164 : Configure runs within the UU subdirectory
165 test -d UU || mkdir UU
166 cd UU && rm -f ./*
167
168
169 ccname=''
170 ccversion=''
171 ccsymbols=''
172 cppccsymbols=''
173 cppsymbols=''
174 from=''
175 run=''
176 targetarch=''
177 to=''
178 usecrosscompile=''
179 perllibs=''
180 dynamic_ext=''
181 extensions=''
182 known_extensions=''
183 nonxs_ext=''
184 static_ext=''
185 useopcode=''
186 useposix=''
187 extras=''
188 d_bsd=''
189 d_eunice=''
190 d_xenix=''
191 eunicefix=''
192 Mcc=''
193 ar=''
194 awk=''
195 bash=''
196 bison=''
197 byacc=''
198 cat=''
199 chgrp=''
200 chmod=''
201 chown=''
202 comm=''
203 compress=''
204 cp=''
205 cpio=''
206 cpp=''
207 csh=''
208 date=''
209 echo=''
210 egrep=''
211 emacs=''
212 expr=''
213 find=''
214 flex=''
215 gmake=''
216 grep=''
217 gzip=''
218 inews=''
219 ksh=''
220 less=''
221 line=''
222 lint=''
223 ln=''
224 lp=''
225 lpr=''
226 ls=''
227 mail=''
228 mailx=''
229 make=''
230 mkdir=''
231 more=''
232 mv=''
233 nm=''
234 nroff=''
235 perl=''
236 pg=''
237 pmake=''
238 pr=''
239 rm=''
240 rmail=''
241 sed=''
242 sendmail=''
243 shar=''
244 sleep=''
245 smail=''
246 sort=''
247 submit=''
248 tail=''
249 tar=''
250 tbl=''
251 tee=''
252 test=''
253 touch=''
254 tr=''
255 troff=''
256 uname=''
257 uniq=''
258 uuname=''
259 vi=''
260 zcat=''
261 zip=''
262 full_ar=''
263 full_sed=''
264 libswanted=''
265 hint=''
266 myuname=''
267 osname=''
268 osvers=''
269 Author=''
270 Date=''
271 Header=''
272 Id=''
273 Locker=''
274 Log=''
275 RCSfile=''
276 Revision=''
277 Source=''
278 State=''
279 _a=''
280 _exe=''
281 _o=''
282 archobjs=''
283 exe_ext=''
284 firstmakefile=''
285 lib_ext=''
286 obj_ext=''
287 path_sep=''
288 afs=''
289 afsroot=''
290 alignbytes=''
291 ansi2knr=''
292 archlib=''
293 archlibexp=''
294 d_archlib=''
295 installarchlib=''
296 archname=''
297 myarchname=''
298 d_atolf=''
299 d_atoll=''
300 baserev=''
301 bin=''
302 binexp=''
303 installbin=''
304 bincompat5005=''
305 d_bincompat5005=''
306 byteorder=''
307 cc=''
308 ccflags=''
309 cppflags=''
310 ldflags=''
311 lkflags=''
312 locincpth=''
313 optimize=''
314 cf_email=''
315 cf_by=''
316 cf_time=''
317 charsize=''
318 contains=''
319 cpp_stuff=''
320 cpplast=''
321 cppminus=''
322 cpprun=''
323 cppstdin=''
324 d__fwalk=''
325 d_access=''
326 d_accessx=''
327 d_alarm=''
328 d_attribut=''
329 d_bcmp=''
330 d_bcopy=''
331 d_bzero=''
332 d_casti32=''
333 castflags=''
334 d_castneg=''
335 d_chown=''
336 d_chroot=''
337 d_chsize=''
338 d_class=''
339 d_closedir=''
340 d_void_closedir=''
341 d_cmsghdr_s=''
342 d_const=''
343 cryptlib=''
344 d_crypt=''
345 d_csh=''
346 full_csh=''
347 d_cuserid=''
348 d_dbl_dig=''
349 d_dbminitproto=''
350 d_difftime=''
351 d_dirfd=''
352 d_dlerror=''
353 d_dlopen=''
354 d_dlsymun=''
355 d_dosuid=''
356 d_suidsafe=''
357 d_drand48proto=''
358 d_dup2=''
359 d_eaccess=''
360 d_endgrent=''
361 d_endhent=''
362 d_endnent=''
363 d_endpent=''
364 d_endpwent=''
365 d_endsent=''
366 d_fchdir=''
367 d_fchmod=''
368 d_fchown=''
369 d_fcntl=''
370 d_fcntl_can_lock=''
371 d_fd_macros=''
372 d_fd_set=''
373 d_fds_bits=''
374 d_fgetpos=''
375 d_finite=''
376 d_finitel=''
377 d_flexfnam=''
378 d_flock=''
379 d_flockproto=''
380 d_fork=''
381 d_fp_class=''
382 d_fpclass=''
383 d_fpclassify=''
384 d_fpclassl=''
385 d_fpos64_t=''
386 d_frexpl=''
387 d_fs_data_s=''
388 d_fseeko=''
389 d_fsetpos=''
390 d_fstatfs=''
391 d_fsync=''
392 d_ftello=''
393 d_ftime=''
394 d_gettimeod=''
395 d_Gconvert=''
396 d_getcwd=''
397 d_getespwnam=''
398 d_getfsstat=''
399 d_getgrent=''
400 d_getgrps=''
401 d_gethbyaddr=''
402 d_gethbyname=''
403 d_gethent=''
404 aphostname=''
405 d_gethname=''
406 d_phostname=''
407 d_uname=''
408 d_gethostprotos=''
409 d_getitimer=''
410 d_getlogin=''
411 d_getmnt=''
412 d_getmntent=''
413 d_getnbyaddr=''
414 d_getnbyname=''
415 d_getnent=''
416 d_getnetprotos=''
417 d_getpagsz=''
418 d_getpent=''
419 d_getpgid=''
420 d_getpgrp2=''
421 d_bsdgetpgrp=''
422 d_getpgrp=''
423 d_getppid=''
424 d_getprior=''
425 d_getpbyname=''
426 d_getpbynumber=''
427 d_getprotoprotos=''
428 d_getprpwnam=''
429 d_getpwent=''
430 d_getsent=''
431 d_getservprotos=''
432 d_getspnam=''
433 d_getsbyname=''
434 d_getsbyport=''
435 d_gnulibc=''
436 d_hasmntopt=''
437 d_htonl=''
438 d_inetaton=''
439 d_int64_t=''
440 d_isascii=''
441 d_isfinite=''
442 d_isinf=''
443 d_isnan=''
444 d_isnanl=''
445 d_killpg=''
446 d_lchown=''
447 d_ldbl_dig=''
448 d_link=''
449 d_locconv=''
450 d_lockf=''
451 d_longdbl=''
452 longdblsize=''
453 d_longlong=''
454 longlongsize=''
455 d_lseekproto=''
456 d_lstat=''
457 d_madvise=''
458 d_mblen=''
459 d_mbstowcs=''
460 d_mbtowc=''
461 d_memchr=''
462 d_memcmp=''
463 d_memcpy=''
464 d_memmove=''
465 d_memset=''
466 d_mkdir=''
467 d_mkdtemp=''
468 d_mkfifo=''
469 d_mkstemp=''
470 d_mkstemps=''
471 d_mktime=''
472 d_mmap=''
473 mmaptype=''
474 d_modfl=''
475 d_modfl_pow32_bug=''
476 d_mprotect=''
477 d_msg=''
478 d_msgctl=''
479 d_msgget=''
480 d_msghdr_s=''
481 d_msgrcv=''
482 d_msgsnd=''
483 d_msync=''
484 d_munmap=''
485 d_nice=''
486 d_nl_langinfo=''
487 d_off64_t=''
488 d_open3=''
489 d_fpathconf=''
490 d_pathconf=''
491 d_pause=''
492 d_pipe=''
493 d_poll=''
494 d_portable=''
495 d_procselfexe=''
496 procselfexe=''
497 d_old_pthread_create_joinable=''
498 old_pthread_create_joinable=''
499 d_pthread_atfork=''
500 d_pthread_yield=''
501 d_sched_yield=''
502 sched_yield=''
503 d_qgcvt=''
504 d_readdir=''
505 d_rewinddir=''
506 d_seekdir=''
507 d_telldir=''
508 d_readlink=''
509 d_readv=''
510 d_recvmsg=''
511 d_rename=''
512 d_rmdir=''
513 d_safebcpy=''
514 d_safemcpy=''
515 d_sanemcmp=''
516 d_sbrkproto=''
517 d_select=''
518 d_sem=''
519 d_semctl=''
520 d_semget=''
521 d_semop=''
522 d_sendmsg=''
523 d_setegid=''
524 d_seteuid=''
525 d_setgrent=''
526 d_setgrps=''
527 d_sethent=''
528 d_setitimer=''
529 d_setlinebuf=''
530 d_setlocale=''
531 d_setnent=''
532 d_setpent=''
533 d_setpgid=''
534 d_setpgrp2=''
535 d_bsdsetpgrp=''
536 d_setpgrp=''
537 d_setprior=''
538 d_setproctitle=''
539 d_setpwent=''
540 d_setregid=''
541 d_setresgid=''
542 d_setresuid=''
543 d_setreuid=''
544 d_setrgid=''
545 d_setruid=''
546 d_setsent=''
547 d_setsid=''
548 d_setvbuf=''
549 d_sfio=''
550 usesfio=''
551 d_shm=''
552 d_shmat=''
553 d_shmatprototype=''
554 shmattype=''
555 d_shmctl=''
556 d_shmdt=''
557 d_shmget=''
558 d_sigaction=''
559 d_sigprocmask=''
560 d_sigsetjmp=''
561 d_sockatmark=''
562 d_sockatmarkproto=''
563 d_msg_ctrunc=''
564 d_msg_dontroute=''
565 d_msg_oob=''
566 d_msg_peek=''
567 d_msg_proxy=''
568 d_oldsock=''
569 d_scm_rights=''
570 d_socket=''
571 d_sockpair=''
572 sockethdr=''
573 socketlib=''
574 d_socklen_t=''
575 d_socks5_init=''
576 d_sqrtl=''
577 d_sresgproto=''
578 d_sresuproto=''
579 d_statblks=''
580 d_statfs_f_flags=''
581 d_statfs_s=''
582 d_fstatvfs=''
583 d_statvfs=''
584 d_stdio_cnt_lval=''
585 d_stdio_ptr_lval=''
586 d_stdio_ptr_lval_nochange_cnt=''
587 d_stdio_ptr_lval_sets_cnt=''
588 d_stdiobase=''
589 d_stdstdio=''
590 stdio_base=''
591 stdio_bufsiz=''
592 stdio_cnt=''
593 stdio_filbuf=''
594 stdio_ptr=''
595 d_index=''
596 d_strchr=''
597 d_strcoll=''
598 d_strctcpy=''
599 d_strerrm=''
600 d_strerror=''
601 d_sysernlst=''
602 d_syserrlst=''
603 d_strftime=''
604 d_strtod=''
605 d_strtol=''
606 d_strtold=''
607 d_strtoll=''
608 d_strtoq=''
609 d_strtoul=''
610 d_strtoull=''
611 d_strtouq=''
612 d_strxfrm=''
613 d_symlink=''
614 d_syscall=''
615 d_syscallproto=''
616 d_sysconf=''
617 d_system=''
618 d_tcgetpgrp=''
619 d_tcsetpgrp=''
620 d_telldirproto=''
621 d_time=''
622 timetype=''
623 clocktype=''
624 d_times=''
625 d_truncate=''
626 d_tzname=''
627 d_u32align=''
628 d_ualarm=''
629 d_umask=''
630 d_semctl_semid_ds=''
631 d_semctl_semun=''
632 d_union_semun=''
633 d_unordered=''
634 d_usleep=''
635 d_usleepproto=''
636 d_ustat=''
637 d_vfork=''
638 usevfork=''
639 d_voidsig=''
640 signal_t=''
641 d_volatile=''
642 d_charvspr=''
643 d_vprintf=''
644 d_wait4=''
645 d_waitpid=''
646 d_wcstombs=''
647 d_wctomb=''
648 d_writev=''
649 dlext=''
650 cccdlflags=''
651 ccdlflags=''
652 dlsrc=''
653 ld=''
654 lddlflags=''
655 usedl=''
656 doublesize=''
657 ebcdic=''
658 fflushNULL=''
659 fflushall=''
660 fpossize=''
661 fpostype=''
662 gccosandvers=''
663 gccversion=''
664 gidformat=''
665 gidsign=''
666 gidsize=''
667 gidtype=''
668 groupstype=''
669 h_fcntl=''
670 h_sysfile=''
671 i_arpainet=''
672 db_hashtype=''
673 db_prefixtype=''
674 db_version_major=''
675 db_version_minor=''
676 db_version_patch=''
677 i_db=''
678 i_dbm=''
679 i_rpcsvcdbm=''
680 d_dirnamlen=''
681 direntrytype=''
682 i_dirent=''
683 i_dld=''
684 i_dlfcn=''
685 i_fcntl=''
686 i_float=''
687 i_fp=''
688 i_fp_class=''
689 i_gdbm=''
690 d_grpasswd=''
691 i_grp=''
692 i_ieeefp=''
693 i_inttypes=''
694 i_langinfo=''
695 i_libutil=''
696 i_limits=''
697 i_locale=''
698 i_machcthr=''
699 i_malloc=''
700 i_math=''
701 i_memory=''
702 i_mntent=''
703 i_ndbm=''
704 i_netdb=''
705 i_neterrno=''
706 i_netinettcp=''
707 i_niin=''
708 i_sysin=''
709 i_poll=''
710 i_prot=''
711 i_pthread=''
712 d_pwage=''
713 d_pwchange=''
714 d_pwclass=''
715 d_pwcomment=''
716 d_pwexpire=''
717 d_pwgecos=''
718 d_pwpasswd=''
719 d_pwquota=''
720 i_pwd=''
721 i_sfio=''
722 i_shadow=''
723 i_socks=''
724 i_stddef=''
725 i_stdlib=''
726 i_string=''
727 strings=''
728 i_sunmath=''
729 i_sysaccess=''
730 i_sysdir=''
731 i_sysfile=''
732 d_voidtty=''
733 i_bsdioctl=''
734 i_sysfilio=''
735 i_sysioctl=''
736 i_syssockio=''
737 i_syslog=''
738 i_sysmman=''
739 i_sysmode=''
740 i_sysmount=''
741 i_sysndir=''
742 i_sysparam=''
743 i_sysresrc=''
744 i_syssecrt=''
745 i_sysselct=''
746 i_sysstat=''
747 i_sysstatfs=''
748 i_sysstatvfs=''
749 i_systimes=''
750 i_systypes=''
751 i_sysuio=''
752 i_sysun=''
753 i_sysutsname=''
754 i_sysvfs=''
755 i_syswait=''
756 i_sgtty=''
757 i_termio=''
758 i_termios=''
759 d_tm_tm_gmtoff=''
760 d_tm_tm_zone=''
761 i_systime=''
762 i_systimek=''
763 i_time=''
764 timeincl=''
765 i_unistd=''
766 i_ustat=''
767 i_utime=''
768 i_values=''
769 i_stdarg=''
770 i_varargs=''
771 i_varhdr=''
772 i_vfork=''
773 inc_version_list=''
774 inc_version_list_init=''
775 installprefix=''
776 installprefixexp=''
777 installstyle=''
778 installusrbinperl=''
779 intsize=''
780 longsize=''
781 shortsize=''
782 issymlink=''
783 libc=''
784 ldlibpthname=''
785 libperl=''
786 shrpenv=''
787 useshrplib=''
788 glibpth=''
789 libpth=''
790 loclibpth=''
791 plibpth=''
792 xlibpth=''
793 ignore_versioned_solibs=''
794 libs=''
795 libsdirs=''
796 libsfiles=''
797 libsfound=''
798 libspath=''
799 lns=''
800 d_PRIEUldbl=''
801 d_PRIFUldbl=''
802 d_PRIGUldbl=''
803 d_PRIeldbl=''
804 d_PRIfldbl=''
805 d_PRIgldbl=''
806 d_SCNfldbl=''
807 sPRIEUldbl=''
808 sPRIFUldbl=''
809 sPRIGUldbl=''
810 sPRIeldbl=''
811 sPRIfldbl=''
812 sPRIgldbl=''
813 sSCNfldbl=''
814 lseeksize=''
815 lseektype=''
816 make_set_make=''
817 d_mymalloc=''
818 freetype=''
819 mallocobj=''
820 mallocsrc=''
821 malloctype=''
822 usemymalloc=''
823 installman1dir=''
824 man1dir=''
825 man1direxp=''
826 man1ext=''
827 installman3dir=''
828 man3dir=''
829 man3direxp=''
830 man3ext=''
831 modetype=''
832 multiarch=''
833 mydomain=''
834 myhostname=''
835 phostname=''
836 c=''
837 n=''
838 d_eofnblk=''
839 eagain=''
840 o_nonblock=''
841 rd_nodata=''
842 need_va_copy=''
843 netdb_hlen_type=''
844 netdb_host_type=''
845 netdb_name_type=''
846 netdb_net_type=''
847 groupcat=''
848 hostcat=''
849 passcat=''
850 orderlib=''
851 ranlib=''
852 d_perl_otherlibdirs=''
853 otherlibdirs=''
854 package=''
855 spackage=''
856 pager=''
857 api_revision=''
858 api_subversion=''
859 api_version=''
860 api_versionstring=''
861 patchlevel=''
862 perl_patchlevel=''
863 revision=''
864 subversion=''
865 version=''
866 version_patchlevel_string=''
867 perl5=''
868 perladmin=''
869 perlpath=''
870 d_nv_preserves_uv=''
871 d_nv_preserves_uv_bits=''
872 i16size=''
873 i16type=''
874 i32size=''
875 i32type=''
876 i64size=''
877 i64type=''
878 i8size=''
879 i8type=''
880 ivsize=''
881 ivtype=''
882 nvsize=''
883 nvtype=''
884 u16size=''
885 u16type=''
886 u32size=''
887 u32type=''
888 u64size=''
889 u64type=''
890 u8size=''
891 u8type=''
892 uvsize=''
893 uvtype=''
894 ivdformat=''
895 nvEUformat=''
896 nvFUformat=''
897 nvGUformat=''
898 nveformat=''
899 nvfformat=''
900 nvgformat=''
901 uvXUformat=''
902 uvoformat=''
903 uvuformat=''
904 uvxformat=''
905 pidtype=''
906 prefix=''
907 prefixexp=''
908 installprivlib=''
909 privlib=''
910 privlibexp=''
911 prototype=''
912 ptrsize=''
913 d_PRIXU64=''
914 d_PRId64=''
915 d_PRIi64=''
916 d_PRIo64=''
917 d_PRIu64=''
918 d_PRIx64=''
919 sPRIXU64=''
920 sPRId64=''
921 sPRIi64=''
922 sPRIo64=''
923 sPRIu64=''
924 sPRIx64=''
925 d_quad=''
926 quadkind=''
927 quadtype=''
928 uquadtype=''
929 drand01=''
930 randbits=''
931 randfunc=''
932 randseedtype=''
933 seedfunc=''
934 installscript=''
935 scriptdir=''
936 scriptdirexp=''
937 selectminbits=''
938 selecttype=''
939 sh=''
940 sig_count=''
941 sig_name=''
942 sig_name_init=''
943 sig_num=''
944 sig_num_init=''
945 sig_size=''
946 installsitearch=''
947 sitearch=''
948 sitearchexp=''
949 installsitebin=''
950 sitebin=''
951 sitebinexp=''
952 installsitelib=''
953 sitelib=''
954 sitelib_stem=''
955 sitelibexp=''
956 siteprefix=''
957 siteprefixexp=''
958 sizesize=''
959 sizetype=''
960 so=''
961 socksizetype=''
962 sharpbang=''
963 shsharp=''
964 spitshell=''
965 src=''
966 ssizetype=''
967 startperl=''
968 startsh=''
969 stdchar=''
970 d_stdio_stream_array=''
971 stdio_stream_array=''
972 sysman=''
973 trnl=''
974 uidformat=''
975 uidsign=''
976 uidsize=''
977 uidtype=''
978 archname64=''
979 use64bitall=''
980 use64bitint=''
981 ccflags_uselargefiles=''
982 ldflags_uselargefiles=''
983 libswanted_uselargefiles=''
984 uselargefiles=''
985 uselongdouble=''
986 usemorebits=''
987 usemultiplicity=''
988 nm_opt=''
989 nm_so_opt=''
990 runnm=''
991 usenm=''
992 useperlio=''
993 usesocks=''
994 d_oldpthreads=''
995 use5005threads=''
996 useithreads=''
997 usereentrant=''
998 usethreads=''
999 incpath=''
1000 mips_type=''
1001 usrinc=''
1002 d_vendorarch=''
1003 installvendorarch=''
1004 vendorarch=''
1005 vendorarchexp=''
1006 d_vendorbin=''
1007 installvendorbin=''
1008 vendorbin=''
1009 vendorbinexp=''
1010 d_vendorlib=''
1011 installvendorlib=''
1012 vendorlib=''
1013 vendorlib_stem=''
1014 vendorlibexp=''
1015 usevendorprefix=''
1016 vendorprefix=''
1017 vendorprefixexp=''
1018 versiononly=''
1019 defvoidused=''
1020 voidflags=''
1021 pm_apiversion=''
1022 xs_apiversion=''
1023 yacc=''
1024 yaccflags=''
1025 CONFIG=''
1026
1027 define='define'
1028 undef='undef'
1029 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1030 rmlist=''
1031
1032 : We must find out about Eunice early
1033 eunicefix=':'
1034 if test -f /etc/unixtovms; then
1035         eunicefix=/etc/unixtovms
1036 fi
1037 if test -f /etc/unixtovms.exe; then
1038         eunicefix=/etc/unixtovms.exe
1039 fi
1040
1041 : Set executable suffix now -- needed before hints available
1042 if test -f "/libs/version.library"; then
1043 : Amiga OS
1044     _exe=""
1045 elif test -f "/system/gnu_library/bin/ar.pm"; then
1046 : Stratus VOS
1047     _exe=".pm"
1048 elif test -n "$DJGPP"; then
1049 : DOS DJGPP
1050     _exe=".exe"
1051 elif test -d c:/. ; then
1052 : OS/2 or cygwin
1053     _exe=".exe"
1054 fi
1055
1056 i_whoami=''
1057 ccname=''
1058 ccversion=''
1059 perllibs=''
1060 : set useposix=false in your hint file to disable the POSIX extension.
1061 useposix=true
1062 : set useopcode=false in your hint file to disable the Opcode extension.
1063 useopcode=true
1064 : Trailing extension.  Override this in a hint file, if needed.
1065 : Extra object files, if any, needed on this platform.
1066 archobjs=''
1067 archname=''
1068 : Possible local include directories to search.
1069 : Set locincpth to "" in a hint file to defeat local include searches.
1070 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1071 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1072 :
1073 : no include file wanted by default
1074 inclwanted=''
1075
1076 groupstype=''
1077 libnames=''
1078 : change the next line if compiling for Xenix/286 on Xenix/386
1079 xlibpth='/usr/lib/386 /lib/386'
1080 : Possible local library directories to search.
1081 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1082 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1083
1084 : general looking path for locating libraries
1085 glibpth="/lib /usr/lib $xlibpth"
1086 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1087 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1088 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1089
1090 : Private path used by Configure to find libraries.  Its value
1091 : is prepended to libpth. This variable takes care of special
1092 : machines, like the mips.  Usually, it should be empty.
1093 plibpth=''
1094
1095 : default library list
1096 libswanted=''
1097 : some systems want to use only the non-versioned libso:s
1098 ignore_versioned_solibs=''
1099 archname64=''
1100 ccflags_uselargefiles=''
1101 ldflags_uselargefiles=''
1102 libswanted_uselargefiles=''
1103 : set usemultiplicity on the Configure command line to enable multiplicity.
1104 : set usesocks on the Configure command line to enable socks.
1105 : set usethreads on the Configure command line to enable threads.
1106 usereentrant='undef'
1107 : full support for void wanted by default
1108 defvoidused=15
1109
1110 : List of libraries we want.
1111 : If anyone needs -lnet, put it in a hint file.
1112 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1113 libswanted="$libswanted dld ld sun m c cposix posix"
1114 libswanted="$libswanted ndir dir crypt sec"
1115 libswanted="$libswanted ucb bsd BSD PW x util"
1116 : We probably want to search /usr/shlib before most other libraries.
1117 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1118 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1119 glibpth="/usr/shlib $glibpth"
1120 : Do not use vfork unless overridden by a hint file.
1121 usevfork=false
1122
1123 : Find the basic shell for Bourne shell scripts
1124 case "$sh" in
1125 '')
1126         case "$SYSTYPE" in
1127         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1128         *) xxx='/bin/sh';;
1129         esac
1130         if test -f "$xxx"; then
1131                 sh="$xxx"
1132         else
1133                 : Build up a list and do a single loop so we can 'break' out.
1134                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1135                 for xxx in sh bash ksh pdksh ash; do
1136                         for p in $pth; do
1137                                 try="$try ${p}/${xxx}"
1138                         done
1139                 done
1140                 for xxx in $try; do
1141                         if test -f "$xxx"; then
1142                                 sh="$xxx";
1143                                 break
1144                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1145                                 sh="$xxx";
1146                                 break
1147                         elif test -f "$xxx.exe"; then
1148                                 sh="$xxx";
1149                                 break
1150                         fi
1151                 done
1152         fi
1153         ;;
1154 esac
1155
1156 case "$sh" in
1157 '')     cat >&2 <<EOM
1158 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1159
1160 Usually it's in /bin/sh.  How did you even get this far?
1161 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1162 we'll try to straighten this all out.
1163 EOM
1164         exit 1
1165         ;;
1166 esac
1167
1168 : see if sh knows # comments
1169 if `$sh -c '#' >/dev/null 2>&1`; then
1170         shsharp=true
1171         spitshell=cat
1172         xcat=/bin/cat
1173         test -f $xcat$_exe || xcat=/usr/bin/cat
1174         if test ! -f $xcat$_exe; then
1175                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1176                         if test -f $p/cat$_exe; then
1177                                 xcat=$p/cat
1178                                 break
1179                         fi
1180                 done
1181                 if test ! -f $xcat$_exe; then
1182                         echo "Can't find cat anywhere!"
1183                         exit 1
1184                 fi
1185         fi
1186         echo "#!$xcat" >sharp
1187         $eunicefix sharp
1188         chmod +x sharp
1189         ./sharp > today
1190         if test -s today; then
1191                 sharpbang='#!'
1192         else
1193                 echo "#! $xcat" > sharp
1194                 $eunicefix sharp
1195                 chmod +x sharp
1196                 ./sharp > today
1197                 if test -s today; then
1198                         sharpbang='#! '
1199                 else
1200                         sharpbang=': use '
1201                 fi
1202         fi
1203 else
1204         echo " "
1205         echo "Your $sh doesn't grok # comments--I will strip them later on."
1206         shsharp=false
1207         cd ..
1208         echo "exec grep -v '^[  ]*#'" >spitshell
1209         chmod +x spitshell
1210         $eunicefix spitshell
1211         spitshell=`pwd`/spitshell
1212         cd UU
1213         echo "I presume that if # doesn't work, #! won't work either!"
1214         sharpbang=': use '
1215 fi
1216 rm -f sharp today
1217
1218 : figure out how to guarantee sh startup
1219 case "$startsh" in
1220 '') startsh=${sharpbang}${sh} ;;
1221 *)
1222 esac
1223 cat >sharp <<EOSS
1224 $startsh
1225 set abc
1226 test "$?abc" != 1
1227 EOSS
1228
1229 chmod +x sharp
1230 $eunicefix sharp
1231 if ./sharp; then
1232         : echo "Yup, it does."
1233 else
1234         echo "Hmm... '$startsh' does not guarantee sh startup..."
1235         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1236 fi
1237 rm -f sharp
1238
1239
1240 : Save command line options in file UU/cmdline.opt for later use in
1241 : generating config.sh.
1242 cat > cmdline.opt <<EOSH
1243 # Configure command line arguments.
1244 config_arg0='$0'
1245 config_args='$*'
1246 config_argc=$#
1247 EOSH
1248 argn=1
1249 args_exp=''
1250 args_sep=''
1251 for arg in "$@"; do
1252         cat >>cmdline.opt <<EOSH
1253 config_arg$argn='$arg'
1254 EOSH
1255         # Extreme backslashitis: replace each ' by '"'"'
1256         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1257 $arg
1258 EOC
1259         arg_exp=`cat cmdl.opt`
1260         args_exp="$args_exp$args_sep'$arg_exp'"
1261         argn=`expr $argn + 1`
1262         args_sep=' '
1263 done
1264 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1265 # used by ./hints/os2.sh
1266 rm -f cmdl.opt
1267
1268 : produce awk script to parse command line options
1269 cat >options.awk <<'EOF'
1270 BEGIN {
1271         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1272
1273         len = length(optstr);
1274         for (i = 1; i <= len; i++) {
1275                 c = substr(optstr, i, 1);
1276                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1277                 if (a == ":") {
1278                         arg[c] = 1;
1279                         i++;
1280                 }
1281                 opt[c] = 1;
1282         }
1283 }
1284 {
1285         expect = 0;
1286         str = $0;
1287         if (substr(str, 1, 1) != "-") {
1288                 printf("'%s'\n", str);
1289                 next;
1290         }
1291         len = length($0);
1292         for (i = 2; i <= len; i++) {
1293                 c = substr(str, i, 1);
1294                 if (!opt[c]) {
1295                         printf("-%s\n", substr(str, i));
1296                         next;
1297                 }
1298                 printf("-%s\n", c);
1299                 if (arg[c]) {
1300                         if (i < len)
1301                                 printf("'%s'\n", substr(str, i + 1));
1302                         else
1303                                 expect = 1;
1304                         next;
1305                 }
1306         }
1307 }
1308 END {
1309         if (expect)
1310                 print "?";
1311 }
1312 EOF
1313
1314 : process the command line options
1315 set X `for arg in "$@"; do echo "X$arg"; done |
1316         sed -e s/X// | awk -f options.awk`
1317 eval "set $*"
1318 shift
1319 rm -f options.awk
1320
1321 : set up default values
1322 fastread=''
1323 reuseval=false
1324 config_sh=''
1325 alldone=''
1326 error=''
1327 silent=''
1328 extractsh=''
1329 override=''
1330 knowitall=''
1331 rm -f optdef.sh posthint.sh
1332 cat >optdef.sh <<EOS
1333 $startsh
1334 EOS
1335
1336
1337 : option parsing
1338 while test $# -gt 0; do
1339         case "$1" in
1340         -d) shift; fastread=yes;;
1341         -e) shift; alldone=cont;;
1342         -f)
1343                 shift
1344                 cd ..
1345                 if test -r "$1"; then
1346                         config_sh="$1"
1347                 else
1348                         echo "$me: cannot read config file $1." >&2
1349                         error=true
1350                 fi
1351                 cd UU
1352                 shift;;
1353         -h) shift; error=true;;
1354         -r) shift; reuseval=true;;
1355         -s) shift; silent=true; realsilent=true;;
1356         -E) shift; alldone=exit;;
1357         -K) shift; knowitall=true;;
1358         -O) shift; override=true;;
1359         -S) shift; silent=true; extractsh=true;;
1360         -D)
1361                 shift
1362                 case "$1" in
1363                 *=)
1364                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1365                         echo "$me: ignoring -D $1" >&2
1366                         ;;
1367                 *=*) echo "$1" | \
1368                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1369                 *) echo "$1='define'" >> optdef.sh;;
1370                 esac
1371                 shift
1372                 ;;
1373         -U)
1374                 shift
1375                 case "$1" in
1376                 *=) echo "$1" >> optdef.sh;;
1377                 *=*)
1378                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1379                         echo "$me: ignoring -U $1" >&2
1380                         ;;
1381                 *) echo "$1='undef'" >> optdef.sh;;
1382                 esac
1383                 shift
1384                 ;;
1385         -A)
1386             shift
1387             xxx=''
1388             yyy="$1"
1389             zzz=''
1390             uuu=undef
1391             case "$yyy" in
1392             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1393                  case "$zzz" in
1394                  *:*) zzz='' ;;
1395                  *)   xxx=append
1396                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1397                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1398                  esac
1399                  ;;
1400             esac
1401             case "$xxx" in
1402             '')  case "$yyy" in
1403                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1404                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1405                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1406                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1407                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1408                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1409                  esac
1410                  ;;       
1411             esac
1412             case "$xxx" in
1413             append)
1414                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1415             clear)
1416                 echo "$yyy=''"                  >> posthint.sh ;;
1417             define)
1418                 case "$zzz" in
1419                 '') zzz=define ;;
1420                 esac
1421                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1422             eval)
1423                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1424             prepend)
1425                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1426             undef)
1427                 case "$zzz" in
1428                 '') zzz="$uuu" ;;
1429                 esac
1430                 echo "$yyy=$zzz"                >> posthint.sh ;;
1431             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1432             esac
1433             shift
1434             ;;
1435         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1436             exit 0;;
1437         --) break;;
1438         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1439         *) break;;
1440         esac
1441 done
1442
1443 case "$error" in
1444 true)
1445         cat >&2 <<EOM
1446 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1447                  [-U symbol] [-U symbol=] [-A command:symbol...]
1448   -d : use defaults for all answers.
1449   -e : go on without questioning past the production of config.sh.
1450   -f : specify an alternate default configuration file.
1451   -h : print this help message and exit (with an error status).
1452   -r : reuse C symbols value if possible (skips costly nm extraction).
1453   -s : silent mode, only echoes questions and essential information.
1454   -D : define symbol to have some value:
1455          -D symbol         symbol gets the value 'define'
1456          -D symbol=value   symbol gets the value 'value'
1457   -E : stop at the end of questions, after having produced config.sh.
1458   -K : do not use unless you know what you are doing.
1459   -O : let -D and -U override definitions from loaded configuration file.
1460   -S : perform variable substitutions on all .SH files (can mix with -f)
1461   -U : undefine symbol:
1462          -U symbol    symbol gets the value 'undef'
1463          -U symbol=   symbol gets completely empty
1464   -A : manipulate symbol after the platform specific hints have been applied:
1465          -A symbol=value                append " "value to symbol
1466          -A append:symbol=value         append value to symbol
1467          -A define:symbol=value         define symbol to have value
1468          -A clear:symbol                define symbol to be ''
1469          -A define:symbol               define symbol to be 'define'
1470          -A eval:symbol=value           define symbol to be eval of value
1471          -A prepend:symbol=value        prepend value to symbol
1472          -A undef:symbol                define symbol to be 'undef'
1473          -A undef:symbol=               define symbol to be ''
1474   -V : print version number and exit (with a zero status).
1475 EOM
1476         exit 1
1477         ;;
1478 esac
1479
1480 : Sanity checks
1481 case "$fastread$alldone" in
1482 yescont|yesexit) ;;
1483 *)
1484         case "$extractsh" in
1485         true) ;;
1486         *)
1487                 if test ! -t 0; then
1488                         echo "Say 'sh Configure', not 'sh <Configure'"
1489                         exit 1
1490                 fi
1491                 ;;
1492         esac
1493         ;;
1494 esac
1495
1496 exec 4>&1
1497 case "$silent" in
1498 true) exec 1>/dev/null;;
1499 esac
1500
1501 : run the defines and the undefines, if any, but leave the file out there...
1502 touch optdef.sh
1503 . ./optdef.sh
1504 : create the posthint manipulation script and leave the file out there...
1505 touch posthint.sh
1506
1507 : set package name
1508 package=perl5
1509 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1510 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1511 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1512 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1513 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1514 esac
1515
1516 : Some greps do not return status, grrr.
1517 echo "grimblepritz" >grimble
1518 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1519         contains=contains
1520 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1521         contains=grep
1522 else
1523         contains=contains
1524 fi
1525 rm -f grimble
1526 : the following should work in any shell
1527 case "$contains" in
1528 contains*)
1529         echo " "
1530         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1531         cat >contains <<'EOSS'
1532 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1533 EOSS
1534 chmod +x contains
1535 esac
1536
1537 : Find the path to the source tree
1538 case "$src" in
1539 '') case "$0" in
1540     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1541          case "$src" in
1542          /*)    ;;
1543          .)     ;;
1544          *)     src=`cd ../$src && pwd` ;;
1545          esac
1546          ;;
1547     *)   src='.';;
1548     esac;;
1549 esac
1550 case "$src" in
1551 '')     src=/
1552         rsrc=/
1553         ;;
1554 /*) rsrc="$src";;
1555 *) rsrc="../$src";;
1556 esac
1557 if test -f $rsrc/Configure && \
1558         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1559 then
1560    : found it, so we are ok.
1561 else
1562         rsrc=''
1563         for src in . .. ../.. ../../.. ../../../..; do
1564                 if test -f ../$src/Configure && \
1565                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1566                 then
1567                         rsrc=../$src
1568                         break
1569                 fi
1570         done
1571 fi
1572 case "$rsrc" in
1573 '')
1574         cat <<EOM >&4
1575
1576 Sorry, I can't seem to locate the source dir for $package.  Please start
1577 Configure with an explicit path -- i.e. /some/path/Configure.
1578
1579 EOM
1580         exit 1
1581         ;;
1582 ../.)   rsrc='..';;
1583 *)
1584         echo " "
1585         echo "Sources for $package found in \"$src\"." >&4
1586         ;;
1587 esac
1588
1589 : script used to extract .SH files with variable substitutions
1590 cat >extract <<'EOS'
1591 PERL_CONFIG_SH=true
1592 echo "Doing variable substitutions on .SH files..."
1593 if test -f MANIFEST; then
1594         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1595 else
1596         echo "(Looking for .SH files under the source directory.)"
1597         set x `(cd "$src"; find . -name "*.SH" -print)`
1598 fi
1599 shift
1600 case $# in
1601 0) set x `(cd "$src"; echo *.SH)`; shift;;
1602 esac
1603 if test ! -f "$src/$1"; then
1604         shift
1605 fi
1606 mkdir_p='
1607 name=$1;
1608 create="";
1609 while test $name; do
1610         if test ! -d "$name"; then
1611                 create="$name $create";
1612                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1613                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1614         else
1615                 name="";
1616         fi;
1617 done;
1618 for file in $create; do
1619         mkdir $file;
1620 done
1621 '
1622 for file in $*; do
1623         case "$src" in
1624         ".")
1625                 case "$file" in
1626                 */*)
1627                         dir=`expr X$file : 'X\(.*\)/'`
1628                         file=`expr X$file : 'X.*/\(.*\)'`
1629                         (cd "$dir" && . ./$file)
1630                         ;;
1631                 *)
1632                         . ./$file
1633                         ;;
1634                 esac
1635                 ;;
1636         *)
1637                 case "$file" in
1638                 */*)
1639                         dir=`expr X$file : 'X\(.*\)/'`
1640                         file=`expr X$file : 'X.*/\(.*\)'`
1641                         (set x $dir; shift; eval $mkdir_p)
1642                         sh <"$src/$dir/$file"
1643                         ;;
1644                 *)
1645                         sh <"$src/$file"
1646                         ;;
1647                 esac
1648                 ;;
1649         esac
1650 done
1651 if test -f "$src/config_h.SH"; then
1652         if test ! -f config.h; then
1653         : oops, they left it out of MANIFEST, probably, so do it anyway.
1654         . "$src/config_h.SH"
1655         fi
1656 fi
1657 EOS
1658
1659 : extract files and exit if asked to do so
1660 case "$extractsh" in
1661 true)
1662         case "$realsilent" in
1663         true) ;;
1664         *) exec 1>&4;;
1665         esac
1666         case "$config_sh" in
1667         '') config_sh='config.sh';;
1668         esac
1669         echo " "
1670         echo "Fetching answers from $config_sh..."
1671         cd ..
1672         . $config_sh
1673         test "$override" && . ./optdef.sh
1674         echo " "
1675         . UU/extract
1676         rm -rf UU
1677         echo "Extraction done."
1678         exit 0
1679         ;;
1680 esac
1681
1682 : Eunice requires " " instead of "", can you believe it
1683 echo " "
1684 : Here we go...
1685 echo "Beginning of configuration questions for $package."
1686
1687 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1688
1689 : first determine how to suppress newline on echo command
1690 echo " "
1691 echo "Checking echo to see how to suppress newlines..."
1692 (echo "hi there\c" ; echo " ") >.echotmp
1693 if $contains c .echotmp >/dev/null 2>&1 ; then
1694         echo "...using -n."
1695         n='-n'
1696         c=''
1697 else
1698         cat <<'EOM'
1699 ...using \c
1700 EOM
1701         n=''
1702         c='\c'
1703 fi
1704 echo $n "The star should be here-->$c"
1705 echo '*'
1706 rm -f .echotmp
1707
1708 : Now test for existence of everything in MANIFEST
1709 echo " "
1710 if test -f "$rsrc/MANIFEST"; then
1711         echo "First let's make sure your kit is complete.  Checking..." >&4
1712         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1713         rm -f missing
1714         tmppwd=`pwd`
1715         for filelist in x??; do
1716                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1717         done
1718         if test -s missing; then
1719                 cat missing >&4
1720                 cat >&4 <<'EOM'
1721
1722 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1723
1724 You have the option of continuing the configuration process, despite the
1725 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1726 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1727 and contact the author (perlbug@perl.org).
1728
1729 EOM
1730                 echo $n "Continue? [n] $c" >&4
1731                 read ans
1732                 case "$ans" in
1733                 y*)
1734                         echo "Continuing..." >&4
1735                         rm -f missing
1736                         ;;
1737                 *)
1738                         echo "ABORTING..." >&4
1739                         kill $$
1740                         ;;
1741                 esac
1742         else
1743                 echo "Looks good..."
1744         fi
1745 else
1746         echo "There is no MANIFEST file.  I hope your kit is complete !"
1747 fi
1748 rm -f missing x??
1749
1750 echo " "
1751 : Find the appropriate value for a newline for tr
1752 if test -n "$DJGPP"; then
1753        trnl='\012'
1754 fi
1755 if test X"$trnl" = X; then
1756         case "`echo foo|tr '\n' x 2>/dev/null`" in
1757         foox) trnl='\n' ;;
1758         esac
1759 fi
1760 if test X"$trnl" = X; then
1761         case "`echo foo|tr '\012' x 2>/dev/null`" in
1762         foox) trnl='\012' ;;
1763         esac
1764 fi
1765 if test X"$trnl" = X; then
1766         cat <<EOM >&2
1767
1768 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1769
1770 EOM
1771         exit 1
1772 fi
1773
1774 : compute the number of columns on the terminal for proper question formatting
1775 case "$COLUMNS" in
1776 '') COLUMNS='80';;
1777 esac
1778
1779 : set up the echo used in my read
1780 myecho="case \"\$xxxm\" in
1781 '') echo $n \"\$rp $c\" >&4;;
1782 *) case \"\$rp\" in
1783         '') echo $n \"[\$xxxm] $c\";;
1784         *)
1785                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1786                         echo \"\$rp\" >&4
1787                         echo $n \"[\$xxxm] $c\" >&4
1788                 else
1789                         echo $n \"\$rp [\$xxxm] $c\" >&4
1790                 fi
1791                 ;;
1792         esac;;
1793 esac"
1794
1795 : now set up to do reads with possible shell escape and default assignment
1796 cat <<EOSC >myread
1797 $startsh
1798 xxxm=\$dflt
1799 $myecho
1800 ans='!'
1801 case "\$fastread" in
1802 yes) case "\$dflt" in
1803         '') ;;
1804         *) ans='';
1805                 case "\$silent-\$rp" in
1806                 true-) ;;
1807                 *) echo " " >&4;;
1808                 esac;;
1809         esac;;
1810 *) case "\$silent" in
1811         true) case "\$rp" in
1812                 '') ans='';;
1813                 esac;;
1814         esac;;
1815 esac
1816 while expr "X\$ans" : "X!" >/dev/null; do
1817         read answ
1818         set x \$xxxm
1819         shift
1820         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1821         case  "\$answ" in
1822         "!")
1823                 sh 1>&4
1824                 echo " "
1825                 $myecho
1826                 ;;
1827         !*)
1828                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1829                 shift
1830                 sh 1>&4 -c "\$*"
1831                 echo " "
1832                 $myecho
1833                 ;;
1834         "\$ans")
1835                 case "\$ans" in
1836                 \\&*)
1837                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1838                         shift
1839                         case "\$1" in
1840                         -d)
1841                                 fastread=yes
1842                                 echo "(OK, I'll run with -d after this question.)" >&4
1843                                 ;;
1844                         -*)
1845                                 echo "*** Sorry, \$1 not supported yet." >&4
1846                                 ;;
1847                         esac
1848                         $myecho
1849                         ans=!
1850                         ;;
1851                 esac;;
1852         *)
1853                 case "\$aok" in
1854                 y)
1855                         echo "*** Substitution done -- please confirm."
1856                         xxxm="\$ans"
1857                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1858                         xxxm="\$ans"
1859                         ans=!
1860                         ;;
1861                 *)
1862                         echo "*** Error -- try again."
1863                         ans=!
1864                         ;;
1865                 esac
1866                 $myecho
1867                 ;;
1868         esac
1869         case "\$ans\$xxxm\$nostick" in
1870         '')
1871                 ans=!
1872                 $myecho
1873                 ;;
1874         esac
1875 done
1876 case "\$ans" in
1877 '') ans="\$xxxm";;
1878 esac
1879 EOSC
1880
1881 : create .config dir to save info across Configure sessions
1882 test -d ../.config || mkdir ../.config
1883 cat >../.config/README <<EOF
1884 This directory created by Configure to save information that should
1885 persist across sessions for $package.
1886
1887 You may safely delete it if you wish.
1888 EOF
1889
1890 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1891 case "$usedevel" in
1892 $define|true|[yY]*) ;;
1893 *) case "$xversion" in
1894    *[13579])
1895         cat >&4 <<EOH
1896 *** WHOA THERE!!! ***
1897
1898     This is an UNSTABLE DEVELOPMENT release.
1899     The version of this $package distribution is $xversion, that is, odd,
1900     (as opposed to even) and that signifies a development release.
1901     If you want a maintenance release, you want an even-numbered version.
1902
1903     Do ***NOT*** install this into production use.
1904     Data corruption and crashes are possible.
1905
1906     It is most seriously suggested that you do not continue any further
1907     unless you want to help in developing and debugging Perl.
1908
1909     If you *still* want to build perl, you can answer 'y' now,
1910     or pass -Dusedevel to Configure.
1911
1912 EOH
1913         rp='Do you really want to continue?'
1914         dflt='n'
1915         . ./myread
1916         case "$ans" in
1917         [yY]) echo >&4 "Okay, continuing."
1918               usedevel="$define" ;;
1919         *) echo >&4 "Okay, bye."
1920            exit 1
1921            ;;
1922         esac
1923         ;;
1924     esac
1925     ;;
1926 esac
1927 case "$usedevel" in
1928 $define|true|[yY]*)
1929         case "$versiononly" in
1930         '') versiononly="$define" ;;
1931         esac
1932         case "$installusrbinperl" in
1933         '') installusrbinperl="$undef" ;;
1934         esac
1935         ;;
1936 esac
1937
1938 : general instructions
1939 needman=true
1940 firsttime=true
1941 user=`(logname) 2>/dev/null`
1942 case "$user" in
1943 '') user=`whoami 2>&1`;;
1944 esac
1945 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1946         firsttime=false
1947         echo " "
1948         rp='Would you like to see the instructions?'
1949         dflt=n
1950         . ./myread
1951         case "$ans" in
1952         [yY]*) ;;
1953         *) needman=false;;
1954         esac
1955 fi
1956 if $needman; then
1957         cat <<EOH
1958
1959 This installation shell script will examine your system and ask you questions
1960 to determine how the perl5 package should be installed. If you get
1961 stuck on a question, you may use a ! shell escape to start a subshell or
1962 execute a command.  Many of the questions will have default answers in square
1963 brackets; typing carriage return will give you the default.
1964
1965 On some of the questions which ask for file or directory names you are allowed
1966 to use the ~name construct to specify the login directory belonging to "name",
1967 even if you don't have a shell which knows about that.  Questions where this is
1968 allowed will be marked "(~name ok)".
1969
1970 EOH
1971         rp=''
1972         dflt='Type carriage return to continue'
1973         . ./myread
1974         cat <<'EOH'
1975
1976 The prompter used in this script allows you to use shell variables and
1977 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1978 in the default answer, as if the default line was a set of arguments given to a
1979 script shell.  This means you may also use $* to repeat the whole default line,
1980 so you do not have to re-type everything to add something to the default.
1981
1982 Everytime there is a substitution, you will have to confirm.  If there is an
1983 error (e.g. an unmatched backtick), the default answer will remain unchanged
1984 and you will be prompted again.
1985
1986 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1987 the questions and use the computed defaults (or the previous answers if there
1988 was already a config.sh file). Type 'Configure -h' for a list of options.
1989 You may also start interactively and then answer '& -d' at any prompt to turn
1990 on the non-interactive behaviour for the remainder of the execution.
1991
1992 EOH
1993         . ./myread
1994         cat <<EOH
1995
1996 Much effort has been expended to ensure that this shell script will run on any
1997 Unix system.  If despite that it blows up on yours, your best bet is to edit
1998 Configure and run it again.  If you can't run Configure for some reason,
1999 you'll have to generate a config.sh file by hand.  Whatever problems you
2000 have, let me (perlbug@perl.org) know how I blew it.
2001
2002 This installation script affects things in two ways:
2003
2004 1) it may do direct variable substitutions on some of the files included
2005    in this kit.
2006 2) it builds a config.h file for inclusion in C programs.  You may edit
2007    any of these files as the need arises after running this script.
2008
2009 If you make a mistake on a question, there is no easy way to back up to it
2010 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2011 files.  Configure will offer to let you do this before it runs the SH files.
2012
2013 EOH
2014         dflt='Type carriage return to continue'
2015         . ./myread
2016         case "$firsttime" in
2017         true) echo $user >>../.config/instruct;;
2018         esac
2019 fi
2020
2021 : find out where common programs are
2022 echo " "
2023 echo "Locating common programs..." >&4
2024 cat <<EOSC >loc
2025 $startsh
2026 case \$# in
2027 0) exit 1;;
2028 esac
2029 thing=\$1
2030 shift
2031 dflt=\$1
2032 shift
2033 for dir in \$*; do
2034         case "\$thing" in
2035         .)
2036         if test -d \$dir/\$thing; then
2037                 echo \$dir
2038                 exit 0
2039         fi
2040         ;;
2041         *)
2042         for thisthing in \$dir/\$thing; do
2043                 : just loop through to pick last item
2044         done
2045         if test -f \$thisthing; then
2046                 echo \$thisthing
2047                 exit 0
2048         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2049                 echo \$thisthing
2050                 exit 0
2051         elif test -f \$dir/\$thing.exe; then
2052                 if test -n "$DJGPP"; then
2053                         echo \$dir/\$thing.exe
2054                 else
2055                         : on Eunice apparently
2056                         echo \$dir/\$thing
2057                 fi
2058                 exit 0
2059         fi
2060         ;;
2061         esac
2062 done
2063 echo \$dflt
2064 exit 1
2065 EOSC
2066 chmod +x loc
2067 $eunicefix loc
2068 loclist="
2069 awk
2070 cat
2071 chmod
2072 comm
2073 cp
2074 echo
2075 expr
2076 grep
2077 ls
2078 mkdir
2079 rm
2080 sed
2081 sort
2082 touch
2083 tr
2084 uniq
2085 "
2086 trylist="
2087 Mcc
2088 ar
2089 bison
2090 byacc
2091 cpp
2092 csh
2093 date
2094 egrep
2095 gmake
2096 gzip
2097 less
2098 ln
2099 make
2100 more
2101 nm
2102 nroff
2103 pg
2104 test
2105 uname
2106 zip
2107 "
2108 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2109 pth="$pth /lib /usr/lib"
2110 for file in $loclist; do
2111         eval xxx=\$$file
2112         case "$xxx" in
2113         /*|?:[\\/]*)
2114                 if test -f "$xxx"; then
2115                         : ok
2116                 else
2117                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2118                         xxx=`./loc $file $file $pth`
2119                 fi
2120                 ;;
2121         '') xxx=`./loc $file $file $pth`;;
2122         *) xxx=`./loc $xxx $xxx $pth`;;
2123         esac
2124         eval $file=$xxx$_exe
2125         eval _$file=$xxx
2126         case "$xxx" in
2127         /*)
2128                 echo $file is in $xxx.
2129                 ;;
2130         ?:[\\/]*)
2131                 echo $file is in $xxx.
2132                 ;;
2133         *)
2134                 echo "I don't know where '$file' is, and my life depends on it." >&4
2135                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2136                 exit 1
2137                 ;;
2138         esac
2139 done
2140 echo " "
2141 echo "Don't worry if any of the following aren't found..."
2142 say=offhand
2143 for file in $trylist; do
2144         eval xxx=\$$file
2145         case "$xxx" in
2146         /*|?:[\\/]*)
2147                 if test -f "$xxx"; then
2148                         : ok
2149                 else
2150                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2151                         xxx=`./loc $file $file $pth`
2152                 fi
2153                 ;;
2154         '') xxx=`./loc $file $file $pth`;;
2155         *) xxx=`./loc $xxx $xxx $pth`;;
2156         esac
2157         eval $file=$xxx$_exe
2158         eval _$file=$xxx
2159         case "$xxx" in
2160         /*)
2161                 echo $file is in $xxx.
2162                 ;;
2163         ?:[\\/]*)
2164                 echo $file is in $xxx.
2165                 ;;
2166         *)
2167                 echo "I don't see $file out there, $say."
2168                 say=either
2169                 ;;
2170         esac
2171 done
2172 case "$egrep" in
2173 egrep)
2174         echo "Substituting grep for egrep."
2175         egrep=$grep
2176         _egrep=$grep
2177         ;;
2178 esac
2179 case "$ln" in
2180 ln)
2181         echo "Substituting cp for ln."
2182         ln=$cp
2183         _ln=$cp
2184         ;;
2185 esac
2186 case "$make" in
2187 make)   
2188         case "$gmake" in
2189         gmake)
2190         echo "I can't find make or gmake, and my life depends on it." >&4
2191         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2192         exit 1
2193         ;;
2194         esac
2195         ;;
2196 esac    
2197 case "$gmake" in
2198 gmake)  ;;
2199 *)      # We can't have osname yet.
2200         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2201                 # Assume that gmake, if found, is definitely GNU make
2202                 # and prefer it over the system make.
2203                 echo "Substituting gmake for make."
2204                 make=$gmake
2205                 _make=$gmake
2206         fi
2207         ;;
2208 esac
2209 case "$test" in
2210 test)
2211         echo "Hopefully test is built into your sh."
2212         ;;
2213 *)
2214         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2215                 echo "Using the test built into your sh."
2216                 test=test
2217                 _test=test
2218         fi
2219         ;;
2220 esac
2221 case "$echo" in
2222 echo)
2223         echo "Hopefully echo is built into your sh."
2224         ;;
2225 '') ;;
2226 *)
2227         echo " "
2228 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2229         $echo $n "hi there$c" >foo1
2230         echo $n "hi there$c" >foo2
2231         if cmp foo1 foo2 >/dev/null 2>&1; then
2232                 echo "They are compatible.  In fact, they may be identical."
2233         else
2234                 case "$n" in
2235                 '-n') n='' c='\c';;
2236                 *) n='-n' c='';;
2237                 esac
2238                 cat <<FOO
2239 They are not compatible!  You are probably running ksh on a non-USG system.
2240 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2241 have echo built in and we may have to run some Bourne shell scripts.  That
2242 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2243
2244 FOO
2245                 $echo $n "The star should be here-->$c"
2246                 $echo "*"
2247         fi
2248         $rm -f foo1 foo2
2249         ;;
2250 esac
2251
2252 cat <<EOS >trygcc
2253 $startsh
2254 EOS
2255 cat <<'EOSC' >>trygcc
2256 case "$cc" in
2257 '') ;;
2258 *)  $rm -f try try.*
2259     $cat >try.c <<EOM
2260 int main(int argc, char *argv[]) {
2261   return 0;
2262 }
2263 EOM
2264     if $cc -o try $ccflags $ldflags try.c; then
2265        :
2266     else
2267         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2268         despair=yes
2269         trygcc=yes
2270         case "$cc" in
2271         *gcc*) trygcc=no ;;
2272         esac
2273         case "`$cc -v -c try.c 2>&1`" in
2274         *gcc*) trygcc=no ;;
2275         esac
2276         if $test X"$trygcc" = Xyes; then
2277             if gcc -o try -c try.c; then
2278                 echo " "
2279                 echo "You seem to have a working gcc, though." >&4
2280                 rp="Would you like to use it?"
2281                 dflt=y
2282                 if $test -f myread; then
2283                     . ./myread
2284                 else
2285                     if $test -f UU/myread; then
2286                         . ./UU/myread
2287                     else
2288                         echo "Cannot find myread, sorry.  Aborting." >&2
2289                         exit 1
2290                     fi
2291                 fi  
2292                 case "$ans" in
2293                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2294                 esac
2295             fi
2296         fi
2297     fi
2298     $rm -f try try.*
2299     ;;
2300 esac
2301 EOSC
2302
2303 cat <<EOS >checkcc
2304 $startsh
2305 EOS
2306 cat <<'EOSC' >>checkcc
2307 case "$cc" in        
2308 '') ;;
2309 *)  $rm -f try try.*              
2310     $cat >try.c <<EOM
2311 int main(int argc, char *argv[]) {
2312   return 0;
2313 }
2314 EOM
2315     if $cc -o try $ccflags $ldflags try.c; then
2316        :
2317     else
2318         if $test X"$despair" = Xyes; then
2319            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2320         fi
2321         $cat >&4 <<EOM         
2322 You need to find a working C compiler.
2323 Either (purchase and) install the C compiler supplied by your OS vendor,
2324 or for a free C compiler try http://gcc.gnu.org/
2325 I cannot continue any further, aborting.
2326 EOM
2327         exit 1
2328     fi
2329     $rm -f try try.*
2330     ;;
2331 esac
2332 EOSC
2333
2334 : determine whether symbolic links are supported
2335 echo " "
2336 $touch blurfl
2337 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2338         echo "Symbolic links are supported." >&4
2339         lns="$ln -s"
2340 else
2341         echo "Symbolic links are NOT supported." >&4
2342         lns="$ln"
2343 fi
2344 $rm -f blurfl sym
2345
2346 : determine whether symbolic links are supported
2347 echo " "
2348 case "$lns" in
2349 *"ln"*" -s")
2350         echo "Checking how to test for symbolic links..." >&4
2351         $lns blurfl sym
2352         if $test "X$issymlink" = X; then
2353                 case "$newsh" in
2354                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2355                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2356                 esac
2357                 if test $? = 0; then
2358                         issymlink="test -h"
2359                 else
2360                         echo "Your builtin 'test -h' may be broken." >&4
2361                         case "$test" in
2362                         /*)     ;;
2363                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2364                                 for p in $pth
2365                                 do
2366                                         if test -f "$p/$test"; then
2367                                                 test="$p/$test"
2368                                                 break
2369                                         fi
2370                                 done
2371                                 ;;
2372                         esac
2373                         case "$test" in
2374                         /*)
2375                                 echo "Trying external '$test -h'." >&4
2376                                 issymlink="$test -h"
2377                                 if $test ! -h sym >/dev/null 2>&1; then
2378                                         echo "External '$test -h' is broken, too." >&4
2379                                         issymlink=''
2380                                 fi
2381                                 ;;
2382                         *)      issymlink='' ;;
2383                         esac
2384                 fi              
2385         fi
2386         if $test "X$issymlink" = X; then
2387                 if $test -L sym 2>/dev/null; then
2388                         issymlink="$test -L"
2389                         echo "The builtin '$test -L' worked." >&4
2390                 fi
2391         fi
2392         if $test "X$issymlink" != X; then
2393                 echo "You can test for symbolic links with '$issymlink'." >&4
2394         else
2395                 echo "I do not know how you can test for symbolic links." >&4
2396         fi
2397         $rm -f blurfl sym
2398         ;;
2399 *)      echo "No symbolic links, so not testing for their testing..." >&4
2400         ;;
2401 esac
2402 echo " "
2403
2404
2405 case "$mksymlinks" in
2406 $define|true|[yY]*)
2407         case "$src" in
2408         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2409                 exit 1
2410                 ;;
2411         *)      case "$lns:$issymlink" in
2412                 *"ln"*" -s:"*"test -"?)
2413                         echo "Creating the symbolic links..." >&4
2414                         echo "(First creating the subdirectories...)" >&4
2415                         cd ..
2416                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2417                                 read directory
2418                                 test -z "$directory" && break
2419                                 mkdir -p $directory
2420                         done
2421                         # Sanity check 1.
2422                         if test ! -d t/base; then
2423                                 echo "Failed to create the subdirectories.  Aborting." >&4
2424                                 exit 1
2425                         fi
2426                         echo "(Then creating the symlinks...)" >&4
2427                         awk '{print $1}' $src/MANIFEST | while true; do
2428                                 read filename
2429                                 test -z "$filename" && break
2430                                 if test -f $filename; then
2431                                         if $issymlink $filename; then
2432                                                 rm -f $filename
2433                                         fi
2434                                 fi
2435                                 if test -f $filename; then
2436                                         echo "$filename already exists, not symlinking."
2437                                 else
2438                                         ln -s $src/$filename $filename
2439                                 fi
2440                         done
2441                         # Sanity check 2.
2442                         if test ! -f t/base/lex.t; then
2443                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2444                                 exit 1
2445                         fi
2446                         cd UU
2447                         ;;
2448                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2449                         ;;
2450                 esac
2451                 ;;
2452         esac
2453         ;;
2454 esac
2455
2456
2457 case "$usecrosscompile" in
2458 $define|true|[yY]*)
2459         $echo "Cross-compiling..."
2460         croak=''
2461         case "$cc" in
2462         *-*-gcc) # A cross-compiling gcc, probably.
2463             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2464             ar=$targetarch-ar
2465             # leave out ld, choosing it is more complex
2466             nm=$targetarch-nm
2467             ranlib=$targetarch-ranlib
2468             $echo 'extern int foo;' > try.c
2469             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2470             shift
2471             if $test $# -gt 0; then
2472                 incpth="$incpth $*"
2473                 incpth="`$echo $incpth|$sed 's/^ //'`"
2474                 echo "Guessing incpth '$incpth'." >&4
2475                 for i in $*; do
2476                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2477                     if $test -d $j; then
2478                         libpth="$libpth $j"
2479                     fi
2480                 done   
2481                 libpth="`$echo $libpth|$sed 's/^ //'`"
2482                 echo "Guessing libpth '$libpth'." >&4
2483             fi
2484             $rm -f try.c
2485             ;;
2486         esac
2487         case "$targetarch" in
2488         '') echo "Targetarch not defined." >&4; croak=y ;;
2489         *)  echo "Using targetarch $targetarch." >&4 ;;
2490         esac
2491         case "$incpth" in
2492         '') echo "Incpth not defined." >&4; croak=y ;;
2493         *)  echo "Using incpth '$incpth'." >&4 ;;
2494         esac
2495         case "$libpth" in
2496         '') echo "Libpth not defined." >&4; croak=y ;;
2497         *)  echo "Using libpth '$libpth'." >&4 ;;
2498         esac
2499         case "$usrinc" in
2500         '') for i in $incpth; do
2501                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2502                     usrinc=$i
2503                     echo "Guessing usrinc $usrinc." >&4
2504                     break
2505                 fi
2506             done
2507             case "$usrinc" in
2508             '') echo "Usrinc not defined." >&4; croak=y ;;
2509             esac
2510             ;;
2511         *)  echo "Using usrinc $usrinc." >&4 ;;
2512         esac
2513         case "$targethost" in
2514         '') echo "Targethost not defined." >&4; croak=y ;;
2515         *)  echo "Using targethost $targethost." >&4
2516         esac
2517         locincpth=' '
2518         loclibpth=' '
2519         case "$croak" in
2520         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2521         esac
2522         case "$src" in
2523         /*) run=$src/Cross/run
2524             targetmkdir=$src/Cross/mkdir
2525             to=$src/Cross/to
2526             from=$src/Cross/from
2527             ;;
2528         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2529             run=$pwd/Cross/run
2530             targetmkdir=$pwd/Cross/mkdir
2531             to=$pwd/Cross/to
2532             from=$pwd/Cross/from
2533             ;;
2534         esac
2535         case "$targetrun" in
2536         '') targetrun=ssh ;;
2537         esac
2538         case "$targetto" in
2539         '') targetto=scp ;;
2540         esac
2541         case "$targetfrom" in
2542         '') targetfrom=scp ;;
2543         esac
2544         run=$run-$targetrun
2545         to=$to-$targetto
2546         from=$from-$targetfrom
2547         case "$targetdir" in
2548         '')  targetdir=/tmp
2549              echo "Guessing targetdir $targetdir." >&4
2550              ;;
2551         esac
2552         case "$targetuser" in
2553         '')  targetuser=root
2554              echo "Guessing targetuser $targetuser." >&4
2555              ;;
2556         esac
2557         case "$targetfrom" in
2558         scp)    q=-q ;;
2559         *)      q='' ;;
2560         esac
2561         case "$targetrun" in
2562         ssh|rsh)
2563             cat >$run <<EOF
2564 #!/bin/sh
2565 case "\$1" in
2566 -cwd)
2567   shift
2568   cwd=\$1
2569   shift
2570   ;;
2571 esac
2572 case "\$cwd" in
2573 '') cwd=$targetdir ;;
2574 esac
2575 exe=\$1
2576 shift
2577 if $test ! -f \$exe.xok; then
2578   $to \$exe
2579   $touch \$exe.xok
2580 fi
2581 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2582 EOF
2583             ;;
2584         *)  echo "Unknown targetrun '$targetrun'" >&4
2585             exit 1
2586             ;;
2587         esac
2588         case "$targetmkdir" in
2589         */Cross/mkdir)
2590             cat >$targetmkdir <<EOF
2591 #!/bin/sh
2592 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2593 EOF
2594             $chmod a+rx $targetmkdir
2595             ;;
2596         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2597             exit 1
2598             ;;
2599         esac
2600         case "$targetto" in
2601         scp|rcp)
2602             cat >$to <<EOF
2603 #!/bin/sh
2604 for f in \$@
2605 do
2606   case "\$f" in
2607   /*)
2608     $targetmkdir \`dirname \$f\`
2609     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2610     ;;
2611   *)
2612     $targetmkdir $targetdir/\`dirname \$f\`
2613     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2614     ;;
2615   esac
2616 done
2617 exit 0
2618 EOF
2619             ;;
2620         cp) cat >$to <<EOF
2621 #!/bin/sh
2622 for f in \$@
2623 do
2624   case "\$f" in
2625   /*)
2626     $mkdir -p $targetdir/\`dirname \$f\`
2627     $cp \$f $targetdir/\$f || exit 1
2628     ;;
2629   *)
2630     $targetmkdir $targetdir/\`dirname \$f\`
2631     $cp \$f $targetdir/\$f || exit 1
2632     ;;
2633   esac
2634 done
2635 exit 0
2636 EOF
2637             ;;
2638         *)  echo "Unknown targetto '$targetto'" >&4
2639             exit 1
2640             ;;
2641         esac
2642         case "$targetfrom" in
2643         scp|rcp)
2644           cat >$from <<EOF
2645 #!/bin/sh
2646 for f in \$@
2647 do
2648   $rm -f \$f
2649   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2650 done
2651 exit 0
2652 EOF
2653             ;;
2654         cp) cat >$from <<EOF
2655 #!/bin/sh
2656 for f in \$@
2657 do
2658   $rm -f \$f
2659   cp $targetdir/\$f . || exit 1
2660 done
2661 exit 0
2662 EOF
2663             ;;
2664         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2665             exit 1
2666             ;;
2667         esac
2668         if $test ! -f $run; then
2669             echo "Target 'run' script '$run' not found." >&4
2670         else
2671             $chmod a+rx $run
2672         fi
2673         if $test ! -f $to; then
2674             echo "Target 'to' script '$to' not found." >&4
2675         else
2676             $chmod a+rx $to
2677         fi
2678         if $test ! -f $from; then
2679             echo "Target 'from' script '$from' not found." >&4
2680         else
2681             $chmod a+rx $from
2682         fi
2683         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2684             exit 1
2685         fi
2686         cat >&4 <<EOF
2687 Using '$run' for remote execution,
2688 and '$from' and '$to'
2689 for remote file transfer.
2690 EOF
2691         ;;
2692 *)      run=''
2693         to=:
2694         from=:
2695         usecrosscompile='undef'
2696         targetarch=''
2697         ;;
2698 esac
2699
2700 : see whether [:lower:] and [:upper:] are supported character classes
2701 echo " "
2702 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2703 ABYZ)
2704         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2705         up='[:upper:]'
2706         low='[:lower:]'
2707         ;;
2708 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2709         # (0xc9 and 0xd1), therefore that is a nice testing point.
2710         if test "X$up" = X -o "X$low" = X; then
2711             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2712             ij) up='[A-Z]'
2713                 low='[a-z]'
2714                 ;;
2715             esac
2716         fi
2717         if test "X$up" = X -o "X$low" = X; then
2718             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2719             ij) up='A-Z'
2720                 low='a-z'
2721                 ;;
2722             esac
2723         fi
2724         if test "X$up" = X -o "X$low" = X; then
2725             case "`echo IJ | od -x 2>/dev/null`" in
2726             *C9D1*|*c9d1*)
2727                 echo "Hey, this might be EBCDIC." >&4
2728                 if test "X$up" = X -o "X$low" = X; then
2729                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2730                     ij) up='[A-IJ-RS-Z]'
2731                         low='[a-ij-rs-z]'
2732                         ;;
2733                     esac
2734                 fi
2735                 if test "X$up" = X -o "X$low" = X; then
2736                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2737                     ij) up='A-IJ-RS-Z'
2738                         low='a-ij-rs-z'
2739                         ;;
2740                     esac
2741                 fi
2742                 ;;
2743             esac
2744         fi
2745 esac
2746 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2747 ij)
2748     echo "Using $up and $low to convert case." >&4
2749     ;;
2750 *)
2751     echo "I don't know how to translate letters from upper to lower case." >&4
2752     echo "Your tr is not acting any way I know of." >&4
2753     exit 1
2754     ;;
2755 esac
2756 : set up the translation script tr, must be called with ./tr of course
2757 cat >tr <<EOSC
2758 $startsh
2759 case "\$1\$2" in
2760 '[A-Z][a-z]') exec $tr '$up' '$low';;
2761 '[a-z][A-Z]') exec $tr '$low' '$up';;
2762 esac
2763 exec $tr "\$@"
2764 EOSC
2765 chmod +x tr
2766 $eunicefix tr
2767
2768 : Try to determine whether config.sh was made on this system
2769 case "$config_sh" in
2770 '')
2771 myuname=`$uname -a 2>/dev/null`
2772 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2773 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2774 # because the A-Z/a-z are not consecutive.
2775 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2776         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2777 newmyuname="$myuname"
2778 dflt=n
2779 case "$knowitall" in
2780 '')
2781         if test -f ../config.sh; then
2782                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2783                         eval "`grep myuname= ../config.sh`"
2784                 fi
2785                 if test "X$myuname" = "X$newmyuname"; then
2786                         dflt=y
2787                 fi
2788         fi
2789         ;;
2790 *) dflt=y;;
2791 esac
2792
2793 : Get old answers from old config file if Configure was run on the
2794 : same system, otherwise use the hints.
2795 hint=default
2796 cd ..
2797 if test -f config.sh; then
2798         echo " "
2799         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2800         . UU/myread
2801         case "$ans" in
2802         n*|N*) echo "OK, I'll ignore it."
2803                 mv config.sh config.sh.old
2804                 myuname="$newmyuname"
2805                 ;;
2806         *)  echo "Fetching default answers from your old config.sh file..." >&4
2807                 tmp_n="$n"
2808                 tmp_c="$c"
2809                 tmp_sh="$sh"
2810                 . ./config.sh
2811                 cp config.sh UU
2812                 n="$tmp_n"
2813                 c="$tmp_c"
2814                 : Older versions did not always set $sh.  Catch re-use of such
2815                 : an old config.sh.
2816                 case "$sh" in
2817                 '') sh="$tmp_sh" ;;
2818                 esac
2819                 hint=previous
2820                 ;;
2821         esac
2822 fi
2823 . ./UU/checkcc
2824 if test ! -f config.sh; then
2825         $cat <<EOM
2826
2827 First time through, eh?  I have some defaults handy for some systems
2828 that need some extra help getting the Configure answers right:
2829
2830 EOM
2831         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2832         dflt=''
2833         : Half the following guesses are probably wrong... If you have better
2834         : tests or hints, please send them to perlbug@perl.org
2835         : The metaconfig authors would also appreciate a copy...
2836         $test -f /irix && osname=irix
2837         $test -f /xenix && osname=sco_xenix
2838         $test -f /dynix && osname=dynix
2839         $test -f /dnix && osname=dnix
2840         $test -f /lynx.os && osname=lynxos
2841         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2842         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2843         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2844         $test -f /bin/mips && /bin/mips && osname=mips
2845         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2846                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2847         $test -d /usr/apollo/bin && osname=apollo
2848         $test -f /etc/saf/_sactab && osname=svr4
2849         $test -d /usr/include/minix && osname=minix
2850         $test -f /system/gnu_library/bin/ar.pm && osname=vos
2851         if $test -d /MachTen -o -d /MachTen_Folder; then
2852                 osname=machten
2853                 if $test -x /sbin/version; then
2854                         osvers=`/sbin/version | $awk '{print $2}' |
2855                         $sed -e 's/[A-Za-z]$//'`
2856                 elif $test -x /usr/etc/version; then
2857                         osvers=`/usr/etc/version | $awk '{print $2}' |
2858                         $sed -e 's/[A-Za-z]$//'`
2859                 else
2860                         osvers="$2.$3"
2861                 fi
2862         fi
2863
2864         $test -f /sys/posix.dll &&
2865                 $test -f /usr/bin/what &&
2866                 set X `/usr/bin/what /sys/posix.dll` &&
2867                 $test "$3" = UWIN &&
2868                 osname=uwin &&
2869                 osvers="$5"
2870
2871         if $test -f $uname; then
2872                 set X $myuname
2873                 shift
2874
2875                 case "$5" in
2876                 fps*) osname=fps ;;
2877                 mips*)
2878                         case "$4" in
2879                         umips) osname=umips ;;
2880                         *) osname=mips ;;
2881                         esac;;
2882                 [23]100) osname=mips ;;
2883                 next*) osname=next ;;
2884                 i386*)
2885                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2886                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2887                                 osname='sco'
2888                                 osvers=$tmp
2889                         elif $test -f /etc/kconfig; then
2890                                 osname=isc
2891                                 if test "$lns" = "$ln -s"; then
2892                                         osvers=4
2893                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2894                                         osvers=3
2895                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2896                                         osvers=2
2897                                 fi
2898                         fi
2899                         tmp=''
2900                         ;;
2901                 pc*)
2902                         if test -n "$DJGPP"; then
2903                                 osname=dos
2904                                 osvers=djgpp
2905                         fi
2906                         ;;
2907                 esac
2908
2909                 case "$1" in
2910                 aix) osname=aix
2911                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2912                         case "$tmp" in
2913                         'not found') osvers="$4"."$3" ;;
2914                         '<3240'|'<>3240') osvers=3.2.0 ;;
2915                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2916                         '=3250'|'>3250') osvers=3.2.5 ;;
2917                         *) osvers=$tmp;;
2918                         esac
2919                         ;;
2920                 bsd386) osname=bsd386
2921                         osvers=`$uname -r`
2922                         ;;
2923                 cygwin*) osname=cygwin
2924                         osvers="$3"
2925                         ;;
2926                 *dc.osx) osname=dcosx
2927                         osvers="$3"
2928                         ;;
2929                 dnix) osname=dnix
2930                         osvers="$3"
2931                         ;;
2932                 domainos) osname=apollo
2933                         osvers="$3"
2934                         ;;
2935                 dgux) osname=dgux 
2936                         osvers="$3"
2937                         ;;
2938                 dynixptx*) osname=dynixptx
2939                         osvers=`echo "$4"|sed 's/^v//'`
2940                         ;;
2941                 freebsd) osname=freebsd 
2942                         osvers="$3" ;;
2943                 genix) osname=genix ;;
2944                 hp*) osname=hpux 
2945                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2946                         ;;
2947                 irix*) osname=irix
2948                         case "$3" in
2949                         4*) osvers=4 ;;
2950                         5*) osvers=5 ;;
2951                         *)      osvers="$3" ;;
2952                         esac
2953                         ;;
2954                 linux) osname=linux
2955                         case "$3" in
2956                         *)      osvers="$3" ;;
2957                         esac
2958                         ;;
2959                 MiNT) osname=mint
2960                         ;;
2961                 netbsd*) osname=netbsd
2962                         osvers="$3"
2963                         ;;
2964                 news-os) osvers="$3"
2965                         case "$3" in
2966                         4*) osname=newsos4 ;;
2967                         *) osname=newsos ;;
2968                         esac
2969                         ;;
2970                 next*) osname=next ;;
2971                 nonstop-ux) osname=nonstopux ;;
2972                 POSIX-BC | posix-bc ) osname=posix-bc
2973                         osvers="$3"
2974                         ;;
2975                 powerux | power_ux | powermax_os | powermaxos | \
2976                 powerunix | power_unix) osname=powerux
2977                         osvers="$3"
2978                         ;;
2979                 qnx) osname=qnx
2980                         osvers="$4"
2981                         ;;
2982                 solaris) osname=solaris
2983                         case "$3" in
2984                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2985                         *)      osvers="$3" ;;
2986                         esac
2987                         ;;
2988                 sunos) osname=sunos
2989                         case "$3" in
2990                         5*) osname=solaris
2991                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2992                         *)      osvers="$3" ;;
2993                         esac
2994                         ;;
2995                 titanos) osname=titanos
2996                         case "$3" in
2997                         1*) osvers=1 ;;
2998                         2*) osvers=2 ;;
2999                         3*) osvers=3 ;;
3000                         4*) osvers=4 ;;
3001                         *)      osvers="$3" ;;
3002                         esac
3003                         ;;
3004                 ultrix) osname=ultrix
3005                         osvers="$3"
3006                         ;;
3007                 osf1|mls+)      case "$5" in
3008                                 alpha)
3009                                         osname=dec_osf
3010                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3011                                         case "$osvers" in
3012                                         [1-9].[0-9]*) ;;
3013                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3014                                         esac
3015                                         ;;
3016                         hp*)    osname=hp_osf1  ;;
3017                         mips)   osname=mips_osf1 ;;
3018                         esac
3019                         ;;
3020                 unixware) osname=svr5
3021                         osvers="$4"
3022                         ;;
3023                 uts)    osname=uts
3024                         osvers="$3"
3025                         ;;
3026                 vos) osvers="$3"
3027                         ;;
3028                 $2) case "$osname" in
3029                         *isc*) ;;
3030                         *freebsd*) ;;
3031                         svr*)
3032                                 : svr4.x or possibly later
3033                                 case "svr$3" in 
3034                                 ${osname}*)
3035                                         osname=svr$3
3036                                         osvers=$4
3037                                         ;;
3038                                 esac
3039                                 case "$osname" in
3040                                 svr4.0)
3041                                         : Check for ESIX
3042                                         if test -f /stand/boot ; then
3043                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3044                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3045                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3046                                                         if test -n "$isesix"; then
3047                                                                 osname=esix4
3048                                                         fi
3049                                                 fi
3050                                         fi
3051                                         ;;
3052                                 esac
3053                                 ;;
3054                         *)      if test -f /etc/systemid; then
3055                                         osname=sco
3056                                         set `echo $3 | $sed 's/\./ /g'` $4
3057                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3058                                                 osvers=$1.$2.$3
3059                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3060                                                 osvers=$1.$2
3061                                         elif $test -f $src/hints/sco_$1.sh; then
3062                                                 osvers=$1
3063                                         fi
3064                                 else
3065                                         case "$osname" in
3066                                         '') : Still unknown.  Probably a generic Sys V.
3067                                                 osname="sysv"
3068                                                 osvers="$3"
3069                                                 ;;
3070                                         esac
3071                                 fi
3072                                 ;;
3073                         esac
3074                         ;;
3075                 *)      case "$osname" in
3076                         '') : Still unknown.  Probably a generic BSD.
3077                                 osname="$1"
3078                                 osvers="$3"
3079                                 ;;
3080                         esac
3081                         ;;
3082                 esac
3083         else
3084                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3085                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3086                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3087                                 osname=news_os
3088                         fi
3089                         $rm -f UU/kernel.what
3090                 elif test -d c:/.; then
3091                         set X $myuname
3092                         osname=os2
3093                         osvers="$5"
3094                 fi
3095         fi
3096         
3097         case "$targetarch" in
3098         '') ;;
3099         *)  hostarch=$osname
3100             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3101             osvers=''
3102             ;;
3103         esac
3104
3105         : Now look for a hint file osname_osvers, unless one has been
3106         : specified already.
3107         case "$hintfile" in
3108         ''|' ')
3109                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3110                 : Also try without trailing minor version numbers.
3111                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3112                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3113                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3114                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3115                 case "$file" in
3116                 '') dflt=none ;;
3117                 *)  case "$osvers" in
3118                         '') dflt=$file
3119                                 ;;
3120                         *)  if $test -f $src/hints/$file.sh ; then
3121                                         dflt=$file
3122                                 elif $test -f $src/hints/$xfile.sh ; then
3123                                         dflt=$xfile
3124                                 elif $test -f $src/hints/$xxfile.sh ; then
3125                                         dflt=$xxfile
3126                                 elif $test -f $src/hints/$xxxfile.sh ; then
3127                                         dflt=$xxxfile
3128                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3129                                         dflt=$xxxxfile
3130                                 elif $test -f "$src/hints/${osname}.sh" ; then
3131                                         dflt="${osname}"
3132                                 else
3133                                         dflt=none
3134                                 fi
3135                                 ;;
3136                         esac
3137                         ;;
3138                 esac
3139                 if $test -f Policy.sh ; then
3140                         case "$dflt" in
3141                         *Policy*) ;;
3142                         none) dflt="Policy" ;;
3143                         *) dflt="Policy $dflt" ;;
3144                         esac
3145                 fi
3146                 ;;
3147         *)
3148                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3149                 ;;
3150         esac
3151
3152         if $test -f Policy.sh ; then
3153                 $cat <<EOM
3154
3155 There's also a Policy hint file available, which should make the
3156 site-specific (policy) questions easier to answer.
3157 EOM
3158
3159         fi
3160
3161         $cat <<EOM
3162
3163 You may give one or more space-separated answers, or "none" if appropriate.
3164 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3165 is a good thing.  DO NOT give a wrong version or a wrong OS.
3166
3167 EOM
3168
3169         rp="Which of these apply, if any?"
3170         . UU/myread
3171         tans=$ans
3172         for file in $tans; do
3173                 if $test X$file = XPolicy -a -f Policy.sh; then
3174                         . Policy.sh
3175                         $cat Policy.sh >> UU/config.sh
3176                 elif $test -f $src/hints/$file.sh; then
3177                         . $src/hints/$file.sh
3178                         $cat $src/hints/$file.sh >> UU/config.sh
3179                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3180                         : nothing
3181                 else
3182                         : Give one chance to correct a possible typo.
3183                         echo "$file.sh does not exist"
3184                         dflt=$file
3185                         rp="hint to use instead?"
3186                         . UU/myread
3187                         for file in $ans; do
3188                                 if $test -f "$src/hints/$file.sh"; then
3189                                         . $src/hints/$file.sh
3190                                         $cat $src/hints/$file.sh >> UU/config.sh
3191                                 elif $test X$ans = X -o X$ans = Xnone ; then
3192                                         : nothing
3193                                 else
3194                                         echo "$file.sh does not exist -- ignored."
3195                                 fi
3196                         done
3197                 fi
3198         done
3199
3200         hint=recommended
3201         : Remember our hint file for later.
3202         if $test -f "$src/hints/$file.sh" ; then
3203                 hintfile="$file"
3204         else
3205                 hintfile=''
3206         fi
3207 fi
3208 cd UU
3209 ;;
3210 *)
3211         echo " "
3212         echo "Fetching default answers from $config_sh..." >&4
3213         tmp_n="$n"
3214         tmp_c="$c"
3215         cd ..
3216         cp $config_sh config.sh 2>/dev/null
3217         chmod +w config.sh
3218         . ./config.sh
3219         cd UU
3220         cp ../config.sh .
3221         n="$tmp_n"
3222         c="$tmp_c"
3223         hint=previous
3224         ;;
3225 esac
3226 test "$override" && . ./optdef.sh
3227
3228 : Restore computed paths
3229 for file in $loclist $trylist; do
3230         eval $file="\$_$file"
3231 done
3232
3233 cat << EOM
3234
3235 Configure uses the operating system name and version to set some defaults.
3236 The default value is probably right if the name rings a bell. Otherwise,
3237 since spelling matters for me, either accept the default or answer "none"
3238 to leave it blank.
3239
3240 EOM
3241 case "$osname" in
3242         ''|' ')
3243                 case "$hintfile" in
3244                 ''|' '|none) dflt=none ;;
3245                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3246                 esac
3247                 ;;
3248         *) dflt="$osname" ;;
3249 esac
3250 rp="Operating system name?"
3251 . ./myread
3252 case "$ans" in
3253 none)  osname='' ;;
3254 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3255 esac
3256 echo " "
3257 case "$osvers" in
3258         ''|' ')
3259                 case "$hintfile" in
3260                 ''|' '|none) dflt=none ;;
3261                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3262                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3263                         case "$dflt" in
3264                         ''|' ') dflt=none ;;
3265                         esac
3266                         ;;
3267                 esac
3268                 ;;
3269         *) dflt="$osvers" ;;
3270 esac
3271 rp="Operating system version?"
3272 . ./myread
3273 case "$ans" in
3274 none)  osvers='' ;;
3275 *) osvers="$ans" ;;
3276 esac
3277
3278
3279 . ./posthint.sh
3280
3281 : who configured the system
3282 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3283 cf_by=`(logname) 2>/dev/null`
3284 case "$cf_by" in
3285 "")
3286         cf_by=`(whoami) 2>/dev/null`
3287         case "$cf_by" in
3288         "") cf_by=unknown ;;
3289         esac ;;
3290 esac
3291
3292 : set up the script used to warn in case of inconsistency
3293 cat <<EOS >whoa
3294 $startsh
3295 EOS
3296 cat <<'EOSC' >>whoa
3297 dflt=y
3298 echo " "
3299 echo "*** WHOA THERE!!! ***" >&4
3300 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3301 rp="    Keep the $hint value?"
3302 . ./myread
3303 case "$ans" in
3304 y) td=$was; tu=$was;;
3305 esac
3306 EOSC
3307
3308 : function used to set $1 to $val
3309 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3310 case "$val$was" in
3311 $define$undef) . ./whoa; eval "$var=\$td";;
3312 $undef$define) . ./whoa; eval "$var=\$tu";;
3313 *) eval "$var=$val";;
3314 esac'
3315
3316 case "$usethreads" in
3317 $define|true|[yY]*)     dflt='y';;
3318 *) dflt='n';;
3319 esac
3320 cat <<EOM
3321
3322 Perl can be built to take advantage of threads on some systems.
3323 To do so, Configure can be run with -Dusethreads.
3324
3325 Note that threading is a highly experimental feature, and
3326 some known race conditions still remain.  If you choose to try
3327 it, be very sure to not actually deploy it for production
3328 purposes.  README.threads has more details, and is required
3329 reading if you enable threads.
3330
3331 If this doesn't make any sense to you, just accept the default '$dflt'.
3332 EOM
3333 rp='Build a threading Perl?'
3334 . ./myread
3335 case "$ans" in
3336 y|Y)    val="$define" ;;
3337 *)      val="$undef" ;;
3338 esac
3339 set usethreads
3340 eval $setvar
3341
3342 case "$usethreads" in
3343 $define)
3344         $cat <<EOM
3345
3346 As of 5.5.640, Perl has two different internal threading implementations,
3347 the 5.005 version (5005threads) and an interpreter-based version
3348 (ithreads) that has one interpreter per thread.  Both are very 
3349 experimental.  This arrangement exists to help developers work out
3350 which one is better.
3351
3352 If you're a casual user, you probably don't want interpreter-threads
3353 at this time.  But if you do, the 'threads' module allows their use,
3354 and the 'Thread' module offers an interface to both 5005threads and
3355 ithreads (whichever has been configured).
3356 EOM
3357         : Default to ithreads unless overridden on command line or with
3358         : old config.sh
3359         dflt='y'
3360         case "$use5005threads" in
3361                 $define|true|[yY]*) dflt='n';;
3362         esac
3363         case "$useithreads" in
3364                 $undef|false|[nN]*) dflt='n';;
3365         esac
3366         rp='Use interpreter-based ithreads?'
3367         . ./myread
3368         case "$ans" in
3369         y|Y)    val="$define" ;;
3370         *)      val="$undef" ;;
3371         esac
3372         set useithreads
3373         eval $setvar
3374         : Now set use5005threads to the opposite value.
3375         case "$useithreads" in
3376         $define) val="$undef" ;;
3377         *) val="$define" ;;
3378         esac
3379         set use5005threads
3380         eval $setvar
3381         ;;
3382 *)
3383         useithreads="$undef"
3384         use5005threads="$undef"
3385         ;;
3386 esac
3387
3388 case "$useithreads$use5005threads" in
3389 "$define$define")
3390         $cat >&4 <<EOM
3391
3392 You cannot have both the ithreads and the 5.005 threads enabled
3393 at the same time.  Disabling the 5.005 threads since they are
3394 much less stable than the ithreads.
3395
3396 EOM
3397         use5005threads="$undef"
3398         ;;
3399 esac
3400
3401 case "$d_oldpthreads" in
3402 '')     : Configure tests would be welcome here.  For now, assume undef.
3403         val="$undef" ;;
3404 *)      val="$d_oldpthreads" ;;
3405 esac
3406 set d_oldpthreads
3407 eval $setvar
3408
3409
3410 case "$usethreads" in
3411 "$define"|true|[yY]*)
3412 : Look for a hint-file generated 'call-back-unit'.  If the
3413 : user has specified that a threading perl is to be built,
3414 : we may need to set or change some other defaults.
3415         if $test -f usethreads.cbu; then
3416                 echo "Your platform has some specific hints for threaded builds, using them..."
3417                 . ./usethreads.cbu
3418         else
3419                 $cat <<EOM
3420 (Your platform doesn't have any specific hints for threaded builds.
3421  Assuming POSIX threads, then.)
3422 EOM
3423         fi
3424         ;;
3425 esac
3426
3427 cat <<EOM
3428
3429 Perl can be built so that multiple Perl interpreters can coexist
3430 within the same Perl executable.
3431 EOM
3432
3433 case "$useithreads" in
3434 $define)
3435         cat <<EOM
3436 This multiple interpreter support is required for interpreter-based threads.
3437 EOM
3438         val="$define"
3439         ;;
3440 *)      case "$usemultiplicity" in
3441         $define|true|[yY]*)     dflt='y';;
3442         *) dflt='n';;
3443         esac
3444         echo " "
3445         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3446         rp='Build Perl for multiplicity?'
3447         . ./myread
3448         case "$ans" in
3449         y|Y)    val="$define" ;;
3450         *)      val="$undef" ;;
3451         esac
3452         ;;
3453 esac
3454 set usemultiplicity
3455 eval $setvar
3456
3457
3458 case "$usemorebits" in
3459 "$define"|true|[yY]*)
3460         use64bitint="$define"
3461         uselongdouble="$define"
3462         usemorebits="$define"
3463         ;;
3464 *)      usemorebits="$undef"
3465         ;;
3466 esac
3467
3468 : make some quick guesses about what we are up against
3469 echo " "
3470 $echo $n "Hmm...  $c"
3471 echo exit 1 >bsd
3472 echo exit 1 >usg
3473 echo exit 1 >v7
3474 echo exit 1 >osf1
3475 echo exit 1 >eunice
3476 echo exit 1 >xenix
3477 echo exit 1 >venix
3478 echo exit 1 >os2
3479 d_bsd="$undef"
3480 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3481 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3482 then
3483         echo "Looks kind of like an OSF/1 system, but we'll see..."
3484         echo exit 0 >osf1
3485 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3486         xxx=`./loc addbib blurfl $pth`
3487         if $test -f $xxx; then
3488         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3489                 echo exit 0 >bsd
3490                 echo exit 0 >usg
3491         else
3492                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3493                         echo "Looks kind of like an extended USG system, but we'll see..."
3494                 else
3495                         echo "Looks kind of like a USG system, but we'll see..."
3496                 fi
3497                 echo exit 0 >usg
3498         fi
3499 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3500         echo "Looks kind of like a BSD system, but we'll see..."
3501         d_bsd="$define"
3502         echo exit 0 >bsd
3503 else
3504         echo "Looks kind of like a Version 7 system, but we'll see..."
3505         echo exit 0 >v7
3506 fi
3507 case "$eunicefix" in
3508 *unixtovms*)
3509         $cat <<'EOI'
3510 There is, however, a strange, musty smell in the air that reminds me of
3511 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3512 EOI
3513         echo exit 0 >eunice
3514         d_eunice="$define"
3515 : it so happens the Eunice I know will not run shell scripts in Unix format
3516         ;;
3517 *)
3518         echo " "
3519         echo "Congratulations.  You aren't running Eunice."
3520         d_eunice="$undef"
3521         ;;
3522 esac
3523 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3524 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3525 : semicolon as a patch separator
3526 case "$p_" in
3527 :) ;;
3528 *)
3529         $cat <<'EOI'
3530 I have the feeling something is not exactly right, however...don't tell me...
3531 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3532 (Or you may be running DOS with DJGPP.)
3533 EOI
3534         echo exit 0 >os2
3535         ;;
3536 esac
3537 if test -f /xenix; then
3538         echo "Actually, this looks more like a XENIX system..."
3539         echo exit 0 >xenix
3540         d_xenix="$define"
3541 else
3542         echo " "
3543         echo "It's not Xenix..."
3544         d_xenix="$undef"
3545 fi
3546 chmod +x xenix
3547 $eunicefix xenix
3548 if test -f /venix; then
3549         echo "Actually, this looks more like a VENIX system..."
3550         echo exit 0 >venix
3551 else
3552         echo " "
3553         if ./xenix; then
3554                 : null
3555         else
3556                 echo "Nor is it Venix..."
3557         fi
3558 fi
3559 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3560 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3561 $rm -f foo
3562
3563 case "$cc" in
3564 '') dflt=cc;;
3565 *) dflt="$cc";;
3566 esac
3567 rp="Use which C compiler?"
3568 . ./myread
3569 cc="$ans"
3570
3571 : See if they have not cc but they do have gcc
3572 . ./trygcc
3573 : Look for a hint-file generated 'call-back-unit'.  Now that the
3574 : user has specified the compiler, we may need to set or change some
3575 : other defaults.
3576 if $test -f cc.cbu; then
3577     . ./cc.cbu
3578 fi
3579 . ./checkcc
3580
3581 echo " "
3582 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3583 $cat >try.c <<EOM
3584 #include <stdio.h>
3585 int main() {
3586 #ifdef __GNUC__
3587 #ifdef __VERSION__
3588         printf("%s\n", __VERSION__);
3589 #else
3590         printf("%s\n", "1");
3591 #endif
3592 #endif
3593         exit(0);
3594 }
3595 EOM
3596 if $cc -o try $ccflags $ldflags try.c; then
3597         gccversion=`$run ./try`
3598         case "$gccversion" in
3599         '') echo "You are not using GNU cc." ;;
3600         *)  echo "You are using GNU cc $gccversion."
3601             ccname=gcc  
3602             ;;
3603         esac
3604 else
3605         echo " "
3606         echo "*** WHOA THERE!!! ***" >&4
3607         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3608         case "$knowitall" in
3609         '')
3610         echo "    You'd better start hunting for one and let me know about it." >&4
3611                 exit 1
3612                 ;;
3613         esac
3614 fi
3615 $rm -f try try.*
3616 case "$gccversion" in
3617 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3618 esac
3619 case "$gccversion" in
3620 '') gccosandvers='' ;;
3621 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3622    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3623    gccshortvers=''
3624    case "$gccosandvers" in
3625    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3626    $osname$osvers) ;; # looking good
3627    $osname*) cat <<EOM >&4
3628
3629 *** WHOA THERE!!! ***
3630
3631     Your gcc has not been compiled for the exact release of
3632     your operating system ($gccosandvers versus $osname$osvers).
3633
3634     In general it is a good idea to keep gcc synchronized with
3635     the operating system because otherwise serious problems
3636     may ensue when trying to compile software, like Perl.
3637
3638     I'm trying to be optimistic here, though, and will continue.
3639     If later during the configuration and build icky compilation
3640     problems appear (headerfile conflicts being the most common
3641     manifestation), I suggest reinstalling the gcc to match
3642     your operating system release.
3643
3644 EOM
3645       ;;
3646    *) gccosandvers='' ;; # failed to parse, better be silent
3647    esac
3648    ;;
3649 esac
3650 case "$ccname" in
3651 '') ccname="$cc" ;;
3652 esac
3653
3654
3655 : decide how portable to be.  Allow command line overrides.
3656 case "$d_portable" in
3657 "$undef") ;;
3658 *)      d_portable="$define" ;;
3659 esac
3660
3661 : set up shell script to do ~ expansion
3662 cat >filexp <<EOSS
3663 $startsh
3664 : expand filename
3665 case "\$1" in
3666  ~/*|~)
3667         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3668         ;;
3669  ~*)
3670         if $test -f /bin/csh; then
3671                 /bin/csh -f -c "glob \$1"
3672                 failed=\$?
3673                 echo ""
3674                 exit \$failed
3675         else
3676                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3677                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3678                 if $test ! -d "\$dir"; then
3679                         me=\`basename \$0\`
3680                         echo "\$me: can't locate home directory for: \$name" >&2
3681                         exit 1
3682                 fi
3683                 case "\$1" in
3684                 */*)
3685                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3686                         ;;
3687                 *)
3688                         echo \$dir
3689                         ;;
3690                 esac
3691         fi
3692         ;;
3693 *)
3694         echo \$1
3695         ;;
3696 esac
3697 EOSS
3698 chmod +x filexp
3699 $eunicefix filexp
3700
3701 : now set up to get a file name
3702 cat <<EOS >getfile
3703 $startsh
3704 EOS
3705 cat <<'EOSC' >>getfile
3706 tilde=''
3707 fullpath=''
3708 already=''
3709 skip=''
3710 none_ok=''
3711 exp_file=''
3712 nopath_ok=''
3713 orig_rp="$rp"
3714 orig_dflt="$dflt"
3715 case "$gfpth" in
3716 '') gfpth='.' ;;
3717 esac
3718
3719 case "$fn" in
3720 *\(*)
3721         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3722         fn=`echo $fn | sed 's/(.*)//'`
3723         ;;
3724 esac
3725
3726 case "$fn" in
3727 *:*)
3728         loc_file=`expr $fn : '.*:\(.*\)'`
3729         fn=`expr $fn : '\(.*\):.*'`
3730         ;;
3731 esac
3732
3733 case "$fn" in
3734 *~*) tilde=true;;
3735 esac
3736 case "$fn" in
3737 */*) fullpath=true;;
3738 esac
3739 case "$fn" in
3740 *+*) skip=true;;
3741 esac
3742 case "$fn" in
3743 *n*) none_ok=true;;
3744 esac
3745 case "$fn" in
3746 *e*) exp_file=true;;
3747 esac
3748 case "$fn" in
3749 *p*) nopath_ok=true;;
3750 esac
3751
3752 case "$fn" in
3753 *f*) type='File';;
3754 *d*) type='Directory';;
3755 *l*) type='Locate';;
3756 esac
3757
3758 what="$type"
3759 case "$what" in
3760 Locate) what='File';;
3761 esac
3762
3763 case "$exp_file" in
3764 '')
3765         case "$d_portable" in
3766         "$define") ;;
3767         *) exp_file=true;;
3768         esac
3769         ;;
3770 esac
3771
3772 cd ..
3773 while test "$type"; do
3774         redo=''
3775         rp="$orig_rp"
3776         dflt="$orig_dflt"
3777         case "$tilde" in
3778         true) rp="$rp (~name ok)";;
3779         esac
3780         . UU/myread
3781         if test -f UU/getfile.ok && \
3782                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3783         then
3784                 value="$ans"
3785                 ansexp="$ans"
3786                 break
3787         fi
3788         case "$ans" in
3789         none)
3790                 value=''
3791                 ansexp=''
3792                 case "$none_ok" in
3793                 true) type='';;
3794                 esac
3795                 ;;
3796         *)
3797                 case "$tilde" in
3798                 '') value="$ans"
3799                         ansexp="$ans";;
3800                 *)
3801                         value=`UU/filexp $ans`
3802                         case $? in
3803                         0)
3804                                 if test "$ans" != "$value"; then
3805                                         echo "(That expands to $value on this system.)"
3806                                 fi
3807                                 ;;
3808                         *) value="$ans";;
3809                         esac
3810                         ansexp="$value"
3811                         case "$exp_file" in
3812                         '') value="$ans";;
3813                         esac
3814                         ;;
3815                 esac
3816                 case "$fullpath" in
3817                 true)
3818                         case "$ansexp" in
3819                         /*) value="$ansexp" ;;
3820                         [a-zA-Z]:/*) value="$ansexp" ;;
3821                         *)
3822                                 redo=true
3823                                 case "$already" in
3824                                 true)
3825                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3826                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3827                                         ;;
3828                                 *)
3829                                 echo "Please give a full path name, starting with slash." >&4
3830                                         case "$tilde" in
3831                                         true)
3832                                 echo "Note that using ~name is ok provided it expands well." >&4
3833                                                 already=true
3834                                                 ;;
3835                                         esac
3836                                 esac
3837                                 ;;
3838                         esac
3839                         ;;
3840                 esac
3841                 case "$redo" in
3842                 '')
3843                         case "$type" in
3844                         File)
3845                                 for fp in $gfpth; do
3846                                         if test "X$fp" = X.; then
3847                                             pf="$ansexp"
3848                                         else    
3849                                             pf="$fp/$ansexp"
3850                                         fi
3851                                         if test -f "$pf"; then
3852                                                 type=''
3853                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3854                                         then
3855                                                 echo "($value is not a plain file, but that's ok.)"
3856                                                 type=''
3857                                         fi
3858                                         if test X"$type" = X; then
3859                                             value="$pf"
3860                                             break
3861                                         fi
3862                                 done
3863                                 ;;
3864                         Directory)
3865                                 for fp in $gfpth; do
3866                                         if test "X$fp" = X.; then
3867                                             dir="$ans"
3868                                             direxp="$ansexp"
3869                                         else    
3870                                             dir="$fp/$ansexp"
3871                                             direxp="$fp/$ansexp"
3872                                         fi
3873                                         if test -d "$direxp"; then
3874                                                 type=''
3875                                                 value="$dir"
3876                                                 break
3877                                         fi
3878                                 done
3879                                 ;;
3880                         Locate)
3881                                 if test -d "$ansexp"; then
3882                                         echo "(Looking for $loc_file in directory $value.)"
3883                                         value="$value/$loc_file"
3884                                         ansexp="$ansexp/$loc_file"
3885                                 fi
3886                                 if test -f "$ansexp"; then
3887                                         type=''
3888                                 fi
3889                                 case "$nopath_ok" in
3890                                 true)   case "$value" in
3891                                         */*) ;;
3892                                         *)      echo "Assuming $value will be in people's path."
3893                                                 type=''
3894                                                 ;;
3895                                         esac
3896                                         ;;
3897                                 esac
3898                                 ;;
3899                         esac
3900
3901                         case "$skip" in
3902                         true) type='';
3903                         esac
3904
3905                         case "$type" in
3906                         '') ;;
3907                         *)
3908                                 if test "$fastread" = yes; then
3909                                         dflt=y
3910                                 else
3911                                         dflt=n
3912                                 fi
3913                                 rp="$what $value doesn't exist.  Use that name anyway?"
3914                                 . UU/myread
3915                                 dflt=''
3916                                 case "$ans" in
3917                                 y*) type='';;
3918                                 *) echo " ";;
3919                                 esac
3920                                 ;;
3921                         esac
3922                         ;;
3923                 esac
3924                 ;;
3925         esac
3926 done
3927 cd UU
3928 ans="$value"
3929 rp="$orig_rp"
3930 dflt="$orig_dflt"
3931 rm -f getfile.ok
3932 test "X$gfpthkeep" != Xy && gfpth=""
3933 EOSC
3934
3935 : What should the include directory be ?
3936 echo " "
3937 $echo $n "Hmm...  $c"
3938 dflt='/usr/include'
3939 incpath=''
3940 mips_type=''
3941 if $test -f /bin/mips && /bin/mips; then
3942         echo "Looks like a MIPS system..."
3943         $cat >usr.c <<'EOCP'
3944 #ifdef SYSTYPE_BSD43
3945 /bsd43
3946 #endif
3947 EOCP
3948         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3949                 dflt='/bsd43/usr/include'
3950                 incpath='/bsd43'
3951                 mips_type='BSD 4.3'
3952         else
3953                 mips_type='System V'
3954         fi
3955         $rm -f usr.c usr.out
3956         echo "and you're compiling with the $mips_type compiler and libraries."
3957         xxx_prompt=y
3958         echo "exit 0" >mips
3959 else
3960         echo "Doesn't look like a MIPS system."
3961         xxx_prompt=n
3962         echo "exit 1" >mips
3963 fi
3964 chmod +x mips
3965 $eunicefix mips
3966 case "$usrinc" in
3967 '') ;;
3968 *) dflt="$usrinc";;
3969 esac
3970 case "$xxx_prompt" in
3971 y)      fn=d/
3972         echo " "
3973         rp='Where are the include files you want to use?'
3974         . ./getfile
3975         usrinc="$ans"
3976         ;;
3977 *)      usrinc="$dflt"
3978         ;;
3979 esac
3980
3981 : see how we invoke the C preprocessor
3982 echo " "
3983 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3984 cat <<'EOT' >testcpp.c
3985 #define ABC abc
3986 #define XYZ xyz
3987 ABC.XYZ
3988 EOT
3989 cd ..
3990 if test ! -f cppstdin; then
3991         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3992                 # AIX cc -E doesn't show the absolute headerfile
3993                 # locations but we'll cheat by using the -M flag.
3994                 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
3995         else
3996                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3997         fi
3998 else
3999         echo "Keeping your $hint cppstdin wrapper."
4000 fi
4001 chmod 755 cppstdin
4002 wrapper=`pwd`/cppstdin
4003 ok='false'
4004 cd UU
4005
4006 if $test "X$cppstdin" != "X" && \
4007         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4008         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4009 then
4010         echo "You used to use $cppstdin $cppminus so we'll use that again."
4011         case "$cpprun" in
4012         '') echo "But let's see if we can live without a wrapper..." ;;
4013         *)
4014                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4015                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4016                 then
4017                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4018                         ok='true'
4019                 else
4020                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4021                 fi
4022                 ;;
4023         esac
4024 else
4025         case "$cppstdin" in
4026         '') ;;
4027         *)
4028                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4029                 ;;
4030         esac
4031 fi
4032
4033 if $ok; then
4034         : nothing
4035 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4036         $cc -E <testcpp.c >testcpp.out 2>&1; \
4037         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4038         echo "Yup, it does."
4039         x_cpp="$cc -E"
4040         x_minus='';
4041 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4042         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4043         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4044         echo "Yup, it does."
4045         x_cpp="$cc -E"
4046         x_minus='-';
4047 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4048         $cc -P <testcpp.c >testcpp.out 2>&1; \
4049         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4050         echo "Yipee, that works!"
4051         x_cpp="$cc -P"
4052         x_minus='';
4053 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4054         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4055         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4056         echo "At long last!"
4057         x_cpp="$cc -P"
4058         x_minus='-';
4059 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4060         $cpp <testcpp.c >testcpp.out 2>&1; \
4061         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4062         echo "It works!"
4063         x_cpp="$cpp"
4064         x_minus='';
4065 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4066         $cpp - <testcpp.c >testcpp.out 2>&1; \
4067         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4068         echo "Hooray, it works!  I was beginning to wonder."
4069         x_cpp="$cpp"
4070         x_minus='-';
4071 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4072         $wrapper <testcpp.c >testcpp.out 2>&1; \
4073         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4074         x_cpp="$wrapper"
4075         x_minus=''
4076         echo "Eureka!"
4077 else
4078         dflt=''
4079         rp="No dice.  I can't find a C preprocessor.  Name one:"
4080         . ./myread
4081         x_cpp="$ans"
4082         x_minus=''
4083         $x_cpp <testcpp.c >testcpp.out 2>&1
4084         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4085                 echo "OK, that will do." >&4
4086         else
4087 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4088                 exit 1
4089         fi
4090 fi
4091
4092 case "$ok" in
4093 false)
4094         cppstdin="$x_cpp"
4095         cppminus="$x_minus"
4096         cpprun="$x_cpp"
4097         cpplast="$x_minus"
4098         set X $x_cpp
4099         shift
4100         case "$1" in
4101         "$cpp")
4102                 echo "Perhaps can we force $cc -E using a wrapper..."
4103                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4104                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4105                 then
4106                         echo "Yup, we can."
4107                         cppstdin="$wrapper"
4108                         cppminus='';
4109                 else
4110                         echo "Nope, we'll have to live without it..."
4111                 fi
4112                 ;;
4113         esac
4114         case "$cpprun" in
4115         "$wrapper")
4116                 cpprun=''
4117                 cpplast=''
4118                 ;;
4119         esac
4120         ;;
4121 esac
4122
4123 case "$cppstdin" in
4124 "$wrapper"|'cppstdin') ;;
4125 *) $rm -f $wrapper;;
4126 esac
4127 $rm -f testcpp.c testcpp.out
4128
4129 : Set private lib path
4130 case "$plibpth" in
4131 '') if ./mips; then
4132                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4133         fi;;
4134 esac
4135 case "$libpth" in
4136 ' ') dlist='';;
4137 '') dlist="$loclibpth $plibpth $glibpth";;
4138 *) dlist="$libpth";;
4139 esac
4140
4141 : Now check and see which directories actually exist, avoiding duplicates
4142 libpth=''
4143 for xxx in $dlist
4144 do
4145     if $test -d $xxx; then
4146                 case " $libpth " in
4147                 *" $xxx "*) ;;
4148                 *) libpth="$libpth $xxx";;
4149                 esac
4150     fi
4151 done
4152 $cat <<'EOM'
4153
4154 Some systems have incompatible or broken versions of libraries.  Among
4155 the directories listed in the question below, please remove any you
4156 know not to be holding relevant libraries, and add any that are needed.
4157 Say "none" for none.
4158
4159 EOM
4160 case "$libpth" in
4161 '') dflt='none';;
4162 *)
4163         set X $libpth
4164         shift
4165         dflt=${1+"$@"}
4166         ;;
4167 esac
4168 rp="Directories to use for library searches?"
4169 . ./myread
4170 case "$ans" in
4171 none) libpth=' ';;
4172 *) libpth="$ans";;
4173 esac
4174
4175 : compute shared library extension
4176 case "$so" in
4177 '')
4178         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4179                 dflt='sl'
4180         else
4181                 dflt='so'
4182         fi
4183         ;;
4184 *) dflt="$so";;
4185 esac
4186 $cat <<EOM
4187
4188 On some systems, shared libraries may be available.  Answer 'none' if
4189 you want to suppress searching of shared libraries for the remainder
4190 of this configuration.
4191
4192 EOM
4193 rp='What is the file extension used for shared libraries?'
4194 . ./myread
4195 so="$ans"
4196
4197 : Define several unixisms.
4198 : Hints files or command line option can be used to override them.
4199 : The convoluted testing is in case hints files set either the old
4200 : or the new name.
4201 case "$_exe" in
4202 '')     case "$exe_ext" in
4203         '')     ;;
4204         *)      _exe="$exe_ext" ;;
4205         esac
4206         ;;
4207 esac
4208 case "$_a" in
4209 '')     case "$lib_ext" in
4210     '') _a='.a';;
4211         *)      _a="$lib_ext" ;;
4212         esac
4213         ;;
4214 esac
4215 case "$_o" in
4216 '') case "$obj_ext" in
4217         '')     _o='.o';;
4218         *)      _o="$obj_ext";;
4219         esac
4220         ;;
4221 esac
4222 case "$p_" in
4223 '') case "$path_sep" in
4224         '')     p_=':';;
4225         *)      p_="$path_sep";;
4226         esac
4227         ;;
4228 esac
4229 exe_ext=$_exe
4230 lib_ext=$_a
4231 obj_ext=$_o
4232 path_sep=$p_
4233
4234 : Which makefile gets called first.  This is used by make depend.
4235 case "$firstmakefile" in
4236 '') firstmakefile='makefile';;
4237 esac
4238
4239 case "$usesocks" in
4240 $define|true|[yY]*)     dflt='y';;
4241 *) dflt='n';;
4242 esac
4243 cat <<EOM
4244
4245 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4246 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4247 to use the PerlIO abstraction layer, this will be implicitly selected.
4248
4249 If this doesn't make any sense to you, just accept the default '$dflt'.
4250 EOM
4251 rp='Build Perl for SOCKS?'
4252 . ./myread
4253 case "$ans" in
4254 y|Y)    val="$define" ;;     
4255 *)      val="$undef" ;;
4256 esac
4257 set usesocks
4258 eval $setvar
4259
4260 case "$usesocks" in
4261 $define|true|[yY]*) useperlio="$define";;
4262 esac
4263
4264 : Looking for optional libraries
4265 echo " "
4266 echo "Checking for optional libraries..." >&4
4267 case "$libs" in
4268 ' '|'') dflt='';;
4269 *) dflt="$libs";;
4270 esac
4271 case "$libswanted" in
4272 '') libswanted='c_s';;
4273 esac
4274 case "$usesocks" in
4275 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4276 esac
4277 libsfound=''
4278 libsfiles=''
4279 libsdirs=''
4280 libspath=''
4281 for thisdir in $libpth $xlibpth; do
4282   test -d $thisdir && libspath="$libspath $thisdir"
4283 done
4284 for thislib in $libswanted; do
4285         for thisdir in $libspath; do
4286             xxx=''
4287             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4288                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4289                 $test -f "$xxx" && eval $libscheck
4290                 $test -f "$xxx" && libstyle=shared
4291             fi
4292             if test ! -f "$xxx"; then
4293                 xxx=$thisdir/lib$thislib.$so
4294                 $test -f "$xxx" && eval $libscheck
4295                 $test -f "$xxx" && libstyle=shared
4296             fi  
4297             if test ! -f "$xxx"; then
4298                 xxx=$thisdir/lib$thislib$_a
4299                 $test -f "$xxx" && eval $libscheck
4300                 $test -f "$xxx" && libstyle=static
4301             fi
4302             if test ! -f "$xxx"; then
4303                 xxx=$thisdir/$thislib$_a
4304                 $test -f "$xxx" && eval $libscheck
4305                 $test -f "$xxx" && libstyle=static
4306             fi
4307             if test ! -f "$xxx"; then
4308                 xxx=$thisdir/lib${thislib}_s$_a
4309                 $test -f "$xxx" && eval $libscheck
4310                 $test -f "$xxx" && libstyle=static
4311                 $test -f "$xxx" && thislib=${thislib}_s
4312             fi
4313             if test ! -f "$xxx"; then
4314                 xxx=$thisdir/Slib$thislib$_a
4315                 $test -f "$xxx" && eval $libscheck
4316                 $test -f "$xxx" && libstyle=static
4317             fi
4318             if $test -f "$xxx"; then
4319                 case "$libstyle" in
4320                 shared) echo "Found -l$thislib (shared)." ;;
4321                 static) echo "Found -l$thislib." ;;
4322                 *)      echo "Found -l$thislib ($libstyle)." ;;
4323                 esac
4324                 case " $dflt " in
4325                 *"-l$thislib "*);;
4326                 *) dflt="$dflt -l$thislib"
4327                    libsfound="$libsfound $xxx"
4328                    yyy=`basename $xxx`
4329                    libsfiles="$libsfiles $yyy"
4330                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4331                    case " $libsdirs " in
4332                    *" $yyy "*) ;;
4333                    *) libsdirs="$libsdirs $yyy" ;;
4334                    esac
4335                    ;;
4336                 esac
4337                 break
4338             fi  
4339         done
4340         if $test ! -f "$xxx"; then
4341             echo "No -l$thislib."
4342         fi
4343 done
4344 set X $dflt
4345 shift
4346 dflt="$*"
4347 case "$libs" in
4348 '') dflt="$dflt";;
4349 *) dflt="$libs";;
4350 esac
4351 case "$dflt" in
4352 ' '|'') dflt='none';;
4353 esac
4354
4355 $cat <<EOM
4356
4357 In order to compile $package on your machine, a number of libraries
4358 are usually needed.  Include any other special libraries here as well.
4359 Say "none" for none.  The default list is almost always right.
4360 EOM
4361
4362 echo " "
4363 rp="What libraries to use?"
4364 . ./myread
4365 case "$ans" in
4366 none) libs=' ';;
4367 *) libs="$ans";;
4368 esac
4369
4370 : determine optimization, if desired, or use for debug flag also
4371 case "$optimize" in
4372 ' '|$undef) dflt='none';;
4373 '') dflt='-O';;
4374 *) dflt="$optimize";;
4375 esac
4376 $cat <<EOH
4377
4378 By default, $package compiles with the -O flag to use the optimizer.
4379 Alternately, you might want to use the symbolic debugger, which uses
4380 the -g flag (on traditional Unix systems).  Either flag can be
4381 specified here.  To use neither flag, specify the word "none".
4382
4383 EOH
4384 rp="What optimizer/debugger flag should be used?"
4385 . ./myread
4386 optimize="$ans"
4387 case "$optimize" in
4388 'none') optimize=" ";;
4389 esac
4390
4391 dflt=''
4392 : We will not override a previous value, but we might want to
4393 : augment a hint file
4394 case "$hint" in
4395 default|recommended)
4396         case "$gccversion" in
4397         1*) dflt='-fpcc-struct-return' ;;
4398         esac
4399         case "$optimize" in
4400         *-g*) dflt="$dflt -DDEBUGGING";;
4401         esac
4402         case "$gccversion" in
4403         2*) if test -d /etc/conf/kconfig.d &&
4404                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4405                 then
4406                         dflt="$dflt -posix"
4407                 fi
4408                 ;;
4409         esac
4410         case "$gccversion" in
4411         1*) ;;
4412         2.[0-8]*) ;;
4413         ?*)     echo " "
4414                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4415                 echo 'int main(void) { return 0; }' > gcctest.c
4416                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4417                         echo "Yes, it does." 2>&1
4418                         case "$ccflags" in
4419                         *strict-aliasing*) 
4420                                 echo "Leaving current flags $ccflags alone." 2>&1
4421                                 ;;
4422                         *) dflt="$dflt -fno-strict-aliasing" ;;
4423                         esac
4424                 else
4425                         echo "Nope, it doesn't, but that's ok." 2>&1
4426                 fi
4427                 ;;
4428         esac
4429         ;;
4430 esac
4431
4432 case "$mips_type" in
4433 *BSD*|'') inclwanted="$locincpth $usrinc";;
4434 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4435 esac
4436 for thisincl in $inclwanted; do
4437         if $test -d $thisincl; then
4438                 if $test x$thisincl != x$usrinc; then
4439                         case "$dflt" in
4440                         *" -I$thisincl "*);;
4441                         *) dflt="$dflt -I$thisincl ";;
4442                         esac
4443                 fi
4444         fi
4445 done
4446
4447 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4448         xxx=true;
4449 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4450         xxx=true;
4451 else
4452         xxx=false;
4453 fi;
4454 if $xxx; then
4455         case "$dflt" in
4456         *$2*);;
4457         *) dflt="$dflt -D$2";;
4458         esac;
4459 fi'
4460
4461 set signal.h LANGUAGE_C; eval $inctest
4462
4463 case "$usesocks" in
4464 $define)
4465         ccflags="$ccflags -DSOCKS"
4466         ;;
4467 esac
4468
4469 case "$hint" in
4470 default|recommended) dflt="$ccflags $dflt" ;;
4471 *) dflt="$ccflags";;
4472 esac
4473
4474 case "$dflt" in
4475 ''|' ') dflt=none;;
4476 esac
4477
4478 $cat <<EOH
4479
4480 Your C compiler may want other flags.  For this question you should include
4481 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4482 but you should NOT include libraries or ld flags like -lwhatever.  If you
4483 want $package to honor its debug switch, you should include -DDEBUGGING here.
4484 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4485
4486 To use no flags, specify the word "none".
4487
4488 EOH
4489 set X $dflt
4490 shift
4491 dflt=${1+"$@"}
4492 rp="Any additional cc flags?"
4493 . ./myread
4494 case "$ans" in
4495 none) ccflags='';;
4496 *) ccflags="$ans";;
4497 esac
4498
4499 : the following weeds options from ccflags that are of no interest to cpp
4500 case "$cppflags" in
4501 '') cppflags="$ccflags" ;;
4502 *)  cppflags="$cppflags $ccflags" ;;
4503 esac
4504 case "$gccversion" in
4505 1*) cppflags="$cppflags -D__GNUC__"
4506 esac
4507 case "$mips_type" in
4508 '');;
4509 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4510 esac
4511 case "$cppflags" in
4512 '');;
4513 *)
4514         echo " "
4515         echo "Let me guess what the preprocessor flags are..." >&4
4516         set X $cppflags
4517         shift
4518         cppflags=''
4519         $cat >cpp.c <<'EOM'
4520 #define BLURFL foo
4521
4522 BLURFL xx LFRULB
4523 EOM
4524         previous=''
4525         for flag in $*
4526         do
4527                 case "$flag" in
4528                 -*) ftry="$flag";;
4529                 *) ftry="$previous $flag";;
4530                 esac
4531                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4532                         >cpp1.out 2>/dev/null && \
4533                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4534                         >cpp2.out 2>/dev/null && \
4535                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4536                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4537                 then
4538                         cppflags="$cppflags $ftry"
4539                         previous=''
4540                 else
4541                         previous="$flag"
4542                 fi
4543         done
4544         set X $cppflags
4545         shift
4546         cppflags=${1+"$@"}
4547         case "$cppflags" in
4548         *-*)  echo "They appear to be: $cppflags";;
4549         esac
4550         $rm -f cpp.c cpp?.out
4551         ;;
4552 esac
4553
4554 : flags used in final linking phase
4555 case "$ldflags" in
4556 '') if ./venix; then
4557                 dflt='-i -z'
4558         else
4559                 dflt=''
4560         fi
4561         case "$ccflags" in
4562         *-posix*) dflt="$dflt -posix" ;;
4563         esac
4564         ;;
4565 *) dflt="$ldflags";;
4566 esac
4567
4568 : Try to guess additional flags to pick up local libraries.
4569 for thislibdir in $libpth; do
4570         case " $loclibpth " in
4571         *" $thislibdir "*)
4572                 case "$dflt " in 
4573                 *"-L$thislibdir "*) ;;
4574                 *)  dflt="$dflt -L$thislibdir" ;;
4575                 esac
4576                 ;;
4577         esac
4578 done
4579
4580 case "$dflt" in
4581 '') dflt='none' ;;
4582 esac
4583
4584 $cat <<EOH
4585
4586 Your C linker may need flags.  For this question you should
4587 include -L/whatever and any other flags used by the C linker, but you
4588 should NOT include libraries like -lwhatever.
4589
4590 Make sure you include the appropriate -L/path flags if your C linker
4591 does not normally search all of the directories you specified above,
4592 namely
4593         $libpth
4594 To use no flags, specify the word "none".
4595
4596 EOH
4597
4598 rp="Any additional ld flags (NOT including libraries)?"
4599 . ./myread
4600 case "$ans" in
4601 none) ldflags='';;
4602 *) ldflags="$ans";;
4603 esac
4604 rmlist="$rmlist pdp11"
4605
4606 : coherency check
4607 echo " "
4608 echo "Checking your choice of C compiler and flags for coherency..." >&4
4609 $cat > try.c <<'EOF'
4610 #include <stdio.h>
4611 int main() { printf("Ok\n"); exit(0); }
4612 EOF
4613 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4614 shift
4615 $cat >try.msg <<'EOM'
4616 I've tried to compile and run the following simple program:
4617
4618 EOM
4619 $cat try.c >> try.msg
4620
4621 $cat >> try.msg <<EOM
4622
4623 I used the command:
4624
4625         $*
4626         $run ./try
4627
4628 and I got the following output:
4629
4630 EOM
4631 dflt=y
4632 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4633         if $sh -c "$run ./try" >>try.msg 2>&1; then
4634                 xxx=`$run ./try`
4635                 case "$xxx" in
4636                 "Ok") dflt=n ;;
4637                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4638                         case " $libs " in
4639                         *" -lsfio "*)
4640                                 cat >> try.msg <<'EOQS'
4641 If $libs contains -lsfio, and sfio is mis-configured, then it
4642 sometimes (apparently) runs and exits with a 0 status, but with no
4643 output!  It may have to do with sfio's use of _exit vs. exit.
4644
4645 EOQS
4646                                 rp="You have a big problem.  Shall I abort Configure"
4647                                 dflt=y
4648                                 ;;
4649                         esac
4650                         ;;
4651                 esac
4652         else
4653                 echo "The program compiled OK, but exited with status $?." >>try.msg
4654                 rp="You have a problem.  Shall I abort Configure"
4655                 dflt=y
4656         fi
4657 else
4658         echo "I can't compile the test program." >>try.msg
4659         rp="You have a BIG problem.  Shall I abort Configure"
4660         dflt=y
4661 fi
4662 case "$dflt" in
4663 y)
4664         $cat try.msg >&4
4665         case "$knowitall" in
4666         '')
4667                 echo "(The supplied flags or libraries might be incorrect.)"
4668                 ;;
4669         *) dflt=n;;
4670         esac
4671         echo " "
4672         . ./myread
4673         case "$ans" in
4674         n*|N*) ;;
4675         *)      echo "Ok.  Stopping Configure." >&4
4676                 exit 1
4677                 ;;
4678         esac
4679         ;;
4680 n) echo "OK, that should do.";;
4681 esac
4682 $rm -f try try.* core
4683
4684 : define a shorthand compile call
4685 compile='
4686 mc_file=$1;
4687 shift;
4688 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4689 : define a shorthand compile call for compilations that should be ok.
4690 compile_ok='
4691 mc_file=$1;
4692 shift;
4693 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4694
4695 : check for lengths of integral types
4696 echo " "
4697 case "$intsize" in
4698 '')
4699         echo "Checking to see how big your integers are..." >&4
4700         $cat >try.c <<'EOCP'
4701 #include <stdio.h>
4702 int main()
4703 {
4704         printf("intsize=%d;\n", (int)sizeof(int));
4705         printf("longsize=%d;\n", (int)sizeof(long));
4706         printf("shortsize=%d;\n", (int)sizeof(short));
4707         exit(0);
4708 }
4709 EOCP
4710         set try
4711         if eval $compile_ok && $run ./try > /dev/null; then
4712                 eval `$run ./try`
4713                 echo "Your integers are $intsize bytes long."
4714                 echo "Your long integers are $longsize bytes long."
4715                 echo "Your short integers are $shortsize bytes long."
4716         else
4717                 $cat >&4 <<EOM
4718 !
4719 Help! I can't compile and run the intsize test program: please enlighten me!
4720 (This is probably a misconfiguration in your system or libraries, and
4721 you really ought to fix it.  Still, I'll try anyway.)
4722 !
4723 EOM
4724                 dflt=4
4725                 rp="What is the size of an integer (in bytes)?"
4726                 . ./myread
4727                 intsize="$ans"
4728                 dflt=$intsize
4729                 rp="What is the size of a long integer (in bytes)?"
4730                 . ./myread
4731                 longsize="$ans"
4732                 dflt=2
4733                 rp="What is the size of a short integer (in bytes)?"
4734                 . ./myread
4735                 shortsize="$ans"
4736         fi
4737         ;;
4738 esac
4739 $rm -f try try.*
4740
4741 : check for void type
4742 echo " "
4743 echo "Checking to see how well your C compiler groks the void type..." >&4
4744 case "$voidflags" in
4745 '')
4746         $cat >try.c <<'EOCP'
4747 #if TRY & 1
4748 void sub() {
4749 #else
4750 sub() {
4751 #endif
4752         extern void moo();      /* function returning void */
4753         void (*goo)();          /* ptr to func returning void */
4754 #if TRY & 8
4755         void *hue;              /* generic ptr */
4756 #endif
4757 #if TRY & 2
4758         void (*foo[10])();
4759 #endif
4760
4761 #if TRY & 4
4762         if(goo == moo) {
4763                 exit(0);
4764         }
4765 #endif
4766         exit(0);
4767 }
4768 int main() { sub(); }
4769 EOCP
4770         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4771                 voidflags=$defvoidused
4772         echo "Good.  It appears to support void to the level $package wants.">&4
4773                 if $contains warning .out >/dev/null 2>&1; then
4774                         echo "However, you might get some warnings that look like this:"
4775                         $cat .out
4776                 fi
4777         else
4778 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4779                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4780                         echo "It supports 1..."
4781                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4782                                 echo "It also supports 2..."
4783                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4784                                         voidflags=7
4785                                         echo "And it supports 4 but not 8 definitely."
4786                                 else
4787                                         echo "It doesn't support 4..."
4788                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4789                                                 voidflags=11
4790                                                 echo "But it supports 8."
4791                                         else
4792                                                 voidflags=3
4793                                                 echo "Neither does it support 8."
4794                                         fi
4795                                 fi
4796                         else
4797                                 echo "It does not support 2..."
4798                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4799                                         voidflags=13
4800                                         echo "But it supports 4 and 8."
4801                                 else
4802                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4803                                                 voidflags=5
4804                                                 echo "And it supports 4 but has not heard about 8."
4805                                         else
4806                                                 echo "However it supports 8 but not 4."
4807                                         fi
4808                                 fi
4809                         fi
4810                 else
4811                         echo "There is no support at all for void."
4812                         voidflags=0
4813                 fi
4814         fi
4815 esac
4816 case "$voidflags" in
4817 "$defvoidused") ;;
4818 *)      $cat >&4 <<'EOM'
4819   Support flag bits are:
4820     1: basic void declarations.
4821     2: arrays of pointers to functions returning void.
4822     4: operations between pointers to and addresses of void functions.
4823     8: generic void pointers.
4824 EOM
4825         dflt="$voidflags";
4826         rp="Your void support flags add up to what?"
4827         . ./myread
4828         voidflags="$ans"
4829         ;;
4830 esac
4831 $rm -f try.* .out
4832
4833 : check for length of pointer
4834 echo " "
4835 case "$ptrsize" in
4836 '')
4837         echo "Checking to see how big your pointers are..." >&4
4838         if test "$voidflags" -gt 7; then
4839                 echo '#define VOID_PTR char *' > try.c
4840         else
4841                 echo '#define VOID_PTR void *' > try.c
4842         fi
4843         $cat >>try.c <<'EOCP'
4844 #include <stdio.h>
4845 int main()
4846 {
4847     printf("%d\n", (int)sizeof(VOID_PTR));
4848     exit(0);
4849 }
4850 EOCP
4851         set try
4852         if eval $compile_ok; then
4853                 ptrsize=`$run ./try`
4854                 echo "Your pointers are $ptrsize bytes long."
4855         else
4856                 dflt='4'
4857                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4858                 rp="What is the size of a pointer (in bytes)?"
4859                 . ./myread
4860                 ptrsize="$ans"
4861         fi
4862         ;;
4863 esac
4864 $rm -f try.c try
4865
4866 : check for long long
4867 echo " "
4868 echo "Checking to see if you have long long..." >&4
4869 echo 'int main() { long long x = 7; return 0; }' > try.c
4870 set try
4871 if eval $compile; then
4872         val="$define"
4873         echo "You have long long."
4874 else
4875         val="$undef"
4876         echo "You do not have long long."
4877 fi
4878 $rm try.*
4879 set d_longlong
4880 eval $setvar
4881
4882 : check for length of long long
4883 case "${d_longlong}${longlongsize}" in
4884 $define)
4885         echo " "
4886         echo "Checking to see how big your long longs are..." >&4
4887         $cat >try.c <<'EOCP'
4888 #include <stdio.h>
4889 int main()
4890 {
4891     printf("%d\n", (int)sizeof(long long));
4892     return(0);
4893 }
4894 EOCP
4895         set try
4896         if eval $compile_ok; then
4897                 longlongsize=`$run ./try`
4898                 echo "Your long longs are $longlongsize bytes long."
4899         else
4900                 dflt='8'
4901                 echo " "
4902                 echo "(I can't seem to compile the test program.  Guessing...)"
4903                 rp="What is the size of a long long (in bytes)?"
4904                 . ./myread
4905                 longlongsize="$ans"
4906         fi
4907         if $test "X$longsize" = "X$longlongsize"; then
4908                 echo "(That isn't any different from an ordinary long.)"
4909         fi      
4910         ;;
4911 esac
4912 $rm -f try.* try
4913
4914 : determine filename position in cpp output
4915 echo " "
4916 echo "Computing filename position in cpp output for #include directives..." >&4
4917 case "$osname" in
4918 vos) testaccess=-e ;;
4919 *)   testaccess=-r ;;
4920 esac
4921 echo '#include <stdio.h>' > foo.c
4922 $cat >fieldn <<EOF
4923 $startsh
4924 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4925 $grep '^[       ]*#.*stdio\.h' | \
4926 while read cline; do
4927         pos=1
4928         set \$cline
4929         while $test \$# -gt 0; do
4930                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
4931                         echo "\$pos"
4932                         exit 0
4933                 fi
4934                 shift
4935                 pos=\`expr \$pos + 1\`
4936         done
4937 done
4938 EOF
4939 chmod +x fieldn
4940 fieldn=`./fieldn`
4941 $rm -f foo.c fieldn
4942 case $fieldn in
4943 '') pos='???';;
4944 1) pos=first;;
4945 2) pos=second;;
4946 3) pos=third;;
4947 *) pos="${fieldn}th";;
4948 esac
4949 echo "Your cpp writes the filename in the $pos field of the line."
4950
4951 case "$osname" in
4952 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4953 *)   cppfilter='' ;;
4954 esac
4955 : locate header file
4956 $cat >findhdr <<EOF
4957 $startsh
4958 wanted=\$1
4959 name=''
4960 for usrincdir in $usrinc
4961 do
4962         if test -f \$usrincdir/\$wanted; then
4963                 echo "\$usrincdir/\$wanted"
4964                 exit 0
4965         fi
4966 done
4967 awkprg='{ print \$$fieldn }'
4968 echo "#include <\$wanted>" > foo\$\$.c
4969 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4970 $cppfilter $grep "^[    ]*#.*\$wanted" | \
4971 while read cline; do
4972         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4973         case "\$name" in
4974         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4975         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4976         *) exit 2;;
4977         esac;
4978 done;
4979 #
4980 # status = 0: grep returned 0 lines, case statement not executed
4981 # status = 1: headerfile found
4982 # status = 2: while loop executed, no headerfile found
4983 #
4984 status=\$?
4985 $rm -f foo\$\$.c;
4986 if test \$status -eq 1; then
4987         exit 0;
4988 fi
4989 exit 1
4990 EOF
4991 chmod +x findhdr
4992
4993 : define an alternate in-header-list? function
4994 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4995 cont=true; xxf="echo \"<\$1> found.\" >&4";
4996 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4997 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4998 esac;
4999 case $# in 4) instead=instead;; *) instead="at last";; esac;
5000 while $test "$cont"; do
5001         xxx=`./findhdr $1`
5002         var=$2; eval "was=\$$2";
5003         if $test "$xxx" && $test -r "$xxx";
5004         then eval $xxf;
5005         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5006                 cont="";
5007         else eval $xxnf;
5008         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5009         set $yyy; shift; shift; yyy=$@;
5010         case $# in 0) cont="";;
5011         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5012                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5013         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5014                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5015         esac;
5016 done;
5017 while $test "$yyy";
5018 do set $yyy; var=$2; eval "was=\$$2";
5019         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5020         set $yyy; shift; shift; yyy=$@;
5021 done'
5022
5023 : see if inttypes.h is available
5024 : we want a real compile instead of Inhdr because some systems
5025 : have an inttypes.h which includes non-existent headers
5026 echo " "
5027 $cat >try.c <<EOCP
5028 #include <inttypes.h>
5029 int main() {
5030         static int32_t foo32 = 0x12345678;
5031 }
5032 EOCP
5033 set try
5034 if eval $compile; then
5035         echo "<inttypes.h> found." >&4
5036         val="$define"
5037 else
5038         echo "<inttypes.h> NOT found." >&4
5039         val="$undef"
5040 fi
5041 $rm -f try.c try
5042 set i_inttypes
5043 eval $setvar
5044
5045 : check for int64_t
5046 echo " "
5047 echo "Checking to see if you have int64_t..." >&4
5048 $cat >try.c <<EOCP
5049 #include <sys/types.h>
5050 #$i_inttypes I_INTTYPES
5051 #ifdef I_INTTYPES
5052 #include <inttypes.h>
5053 #endif
5054 int main() { int64_t x = 7; }
5055 EOCP
5056 set try
5057 if eval $compile; then
5058         val="$define"
5059         echo "You have int64_t."
5060 else
5061         val="$undef"
5062         echo "You do not have int64_t."
5063 fi
5064 $rm -f try try.*
5065 set d_int64_t
5066 eval $setvar
5067
5068
5069 echo " "
5070 echo "Checking which 64-bit integer type we could use..." >&4
5071
5072 case "$intsize" in
5073 8) val=int
5074    set quadtype
5075    eval $setvar
5076    val='"unsigned int"'
5077    set uquadtype
5078    eval $setvar
5079    quadkind=1
5080    ;;
5081 *) case "$longsize" in
5082    8) val=long
5083       set quadtype
5084       eval $setvar
5085       val='"unsigned long"'
5086       set uquadtype
5087       eval $setvar
5088       quadkind=2
5089       ;;
5090    *) case "$d_longlong:$longlongsize" in
5091       define:8)
5092         val='"long long"'
5093         set quadtype
5094         eval $setvar
5095         val='"unsigned long long"'
5096         set uquadtype
5097         eval $setvar
5098         quadkind=3
5099         ;;
5100       *) case "$d_int64_t" in
5101          define)
5102            val=int64_t
5103            set quadtype
5104            eval $setvar
5105            val=uint64_t
5106            set uquadtype
5107            eval $setvar
5108            quadkind=4
5109            ;;
5110          esac
5111          ;;
5112       esac
5113       ;;
5114    esac
5115    ;;
5116 esac
5117
5118 case "$quadtype" in
5119 '')     echo "Alas, no 64-bit integer types in sight." >&4
5120         d_quad="$undef"
5121         ;;
5122 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5123         d_quad="$define"
5124         ;;
5125 esac
5126
5127
5128 case "$uselonglong" in
5129 "$define"|true|[yY]*)
5130         cat <<EOM >&4
5131
5132 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5133 EOM
5134         use64bitint="$define"
5135         ;;
5136 esac                          
5137 case "$use64bits" in
5138 "$define"|true|[yY]*)
5139         cat <<EOM >&4
5140
5141 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5142 EOM
5143         use64bitint="$define"
5144         ;;
5145 esac                          
5146 case "$use64bitints" in
5147 "$define"|true|[yY]*)
5148         cat <<EOM >&4
5149
5150 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5151 EOM
5152         use64bitint="$define"
5153         ;;
5154 esac                          
5155 case "$use64bitsint" in
5156 "$define"|true|[yY]*)
5157         cat <<EOM >&4
5158
5159 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5160 EOM
5161         use64bitint="$define"
5162         ;;
5163 esac                          
5164 case "$uselonglongs" in
5165 "$define"|true|[yY]*)
5166         cat <<EOM >&4
5167
5168 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5169 EOM
5170         use64bitint="$define"
5171         ;;
5172 esac                          
5173 case "$use64bitsall" in
5174 "$define"|true|[yY]*)
5175         cat <<EOM >&4
5176
5177 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5178 EOM
5179         use64bitall="$define"
5180         ;;
5181 esac                          
5182
5183 case "$ccflags" in
5184 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5185 esac
5186 case "$use64bitall" in
5187 "$define"|true|[yY]*) use64bitint="$define" ;;
5188 esac
5189
5190 case "$longsize" in
5191 8) cat <<EOM
5192
5193 You have natively 64-bit long integers.
5194 EOM
5195    val="$define"
5196    ;;
5197 *) case "$use64bitint" in
5198    "$define"|true|[yY]*) dflt='y';;
5199    *) dflt='n';;
5200    esac
5201    case "$d_quad" in
5202    "$define") ;;
5203    *) dflt='n' ;;
5204    esac
5205    cat <<EOM
5206
5207 Perl can be built to take advantage of 64-bit integer types
5208 on some systems.  To do so, Configure can be run with -Duse64bitint.
5209 Choosing this option will most probably introduce binary incompatibilities.
5210
5211 If this doesn't make any sense to you, just accept the default '$dflt'.
5212 (The default has been chosen based on your configuration.)
5213 EOM
5214    rp='Try to use 64-bit integers, if available?'
5215    . ./myread
5216    case "$ans" in
5217    [yY]*) val="$define" ;;
5218    *)     val="$undef"  ;;
5219    esac
5220    ;;
5221 esac
5222 set use64bitint
5223 eval $setvar
5224
5225 case "$use64bitall" in
5226 "$define"|true|[yY]*) dflt='y' ;;
5227 *) case "$longsize" in
5228    8) dflt='y' ;;
5229    *) dflt='n' ;;
5230    esac
5231    ;;
5232 esac    
5233 cat <<EOM
5234
5235 You may also choose to try maximal 64-bitness.  It means using as much
5236 64-bitness as possible on the platform.  This in turn means even more
5237 binary incompatibilities.  On the other hand, your platform may not
5238 have any more 64-bitness available than what you already have chosen.
5239
5240 If this doesn't make any sense to you, just accept the default '$dflt'.
5241 (The default has been chosen based on your configuration.)
5242 EOM
5243 rp='Try to use maximal 64-bit support, if available?'
5244 . ./myread
5245 case "$ans" in
5246 [yY]*) val="$define" ;;
5247 *)     val="$undef"  ;;
5248 esac
5249 set use64bitall
5250 eval $setvar
5251 case "$use64bitall" in
5252 "$define")
5253         case "$use64bitint" in
5254         "$undef")
5255                 cat <<EOM
5256
5257 Since you have chosen a maximally 64-bit build, I'm also turning on
5258 the use of 64-bit integers.
5259 EOM
5260                 use64bitint="$define" ;;
5261         esac
5262         ;;
5263 esac
5264
5265 case "$use64bitall" in
5266 "$define"|true|[yY]*)
5267         case "$ptrsize" in
5268         4)      cat <<EOM >&4
5269
5270 *** You have chosen a maximally 64-bit build, but your pointers
5271 *** are only 4 bytes wide, disabling maximal 64-bitness.
5272
5273 EOM
5274                 use64bitall="$undef"
5275                 case "$use64bitint" in
5276                 "$define"|true|[yY]*) ;;
5277                 *)      cat <<EOM >&4
5278
5279 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5280
5281 EOM
5282                         use64bitint="$define"
5283                         ;;
5284                 esac
5285                 ;;
5286         esac
5287         ;;
5288 esac
5289
5290 case "$use64bitint" in
5291 "$define"|true|[yY]*)
5292 : Look for a hint-file generated 'call-back-unit'.  If the
5293 : user has specified that a 64-bit perl is to be built,
5294 : we may need to set or change some other defaults.
5295         if $test -f use64bitint.cbu; then
5296                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5297                 . ./use64bitint.cbu
5298         fi
5299         case "$longsize" in
5300         4) case "$archname64" in
5301            '') archname64=64int ;;
5302            esac
5303            ;;
5304         esac
5305         ;;
5306 esac
5307
5308 case "$use64bitall" in
5309 "$define"|true|[yY]*)
5310 : Look for a hint-file generated 'call-back-unit'.  If the
5311 : user has specified that a maximally 64-bit perl is to be built,
5312 : we may need to set or change some other defaults.
5313         if $test -f use64bitall.cbu; then
5314                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5315                 . ./use64bitall.cbu
5316         fi
5317         case "$longsize" in
5318         4) case "$archname64" in
5319            ''|64int) archname64=64all ;;
5320            esac
5321            ;;
5322         esac
5323         ;;
5324 esac
5325
5326 echo " "
5327 echo "Checking for GNU C Library..." >&4
5328 cat >try.c <<EOM
5329 #include <stdio.h>
5330 int main()
5331 {
5332 #ifdef __GLIBC__
5333     exit(0);
5334 #else
5335     exit(1);
5336 #endif
5337 }
5338 EOM
5339 set try
5340 if eval $compile_ok && $run ./try; then
5341         val="$define"
5342         echo "You are using the GNU C Library"
5343 else
5344         val="$undef"
5345         echo "You are not using the GNU C Library"
5346 fi
5347 $rm -f try try.*
5348 set d_gnulibc
5349 eval $setvar
5350
5351 : see if nm is to be used to determine whether a symbol is defined or not
5352 case "$usenm" in
5353 '')
5354         dflt=''
5355         case "$d_gnulibc" in
5356         "$define")
5357                 echo " "
5358                 echo "nm probably won't work on the GNU C Library." >&4
5359                 dflt=n
5360                 ;;
5361         esac
5362         case "$dflt" in
5363         '') 
5364                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5365                         echo " "
5366                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5367                         echo "'nm' won't be sufficient on this sytem." >&4
5368                         dflt=n
5369                 fi
5370                 ;;
5371         esac
5372         case "$dflt" in
5373         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5374                 if $test $dflt -gt 20; then
5375                         dflt=y
5376                 else
5377                         dflt=n
5378                 fi
5379                 ;;
5380         esac
5381         ;;
5382 *)
5383         case "$usenm" in
5384         true|$define) dflt=y;;
5385         *) dflt=n;;
5386         esac
5387         ;;
5388 esac
5389 $cat <<EOM
5390
5391 I can use $nm to extract the symbols from your C libraries. This
5392 is a time consuming task which may generate huge output on the disk (up
5393 to 3 megabytes) but that should make the symbols extraction faster. The
5394 alternative is to skip the 'nm' extraction part and to compile a small
5395 test program instead to determine whether each symbol is present. If
5396 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5397 this may be the best solution.
5398
5399 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5400
5401 EOM
5402 rp="Shall I use $nm to extract C symbols from the libraries?"
5403 . ./myread
5404 case "$ans" in
5405 [Nn]*) usenm=false;;
5406 *) usenm=true;;
5407 esac
5408
5409 runnm=$usenm
5410 case "$reuseval" in
5411 true) runnm=false;;
5412 esac
5413
5414 : nm options which may be necessary
5415 case "$nm_opt" in
5416 '') if $test -f /mach_boot; then
5417                 nm_opt=''       # Mach
5418         elif $test -d /usr/ccs/lib; then
5419                 nm_opt='-p'     # Solaris (and SunOS?)
5420         elif $test -f /dgux; then
5421                 nm_opt='-p'     # DG-UX
5422         elif $test -f /lib64/rld; then
5423                 nm_opt='-p'     # 64-bit Irix
5424         else
5425                 nm_opt=''
5426         fi;;
5427 esac
5428
5429 : nm options which may be necessary for shared libraries but illegal
5430 : for archive libraries.  Thank you, Linux.
5431 case "$nm_so_opt" in
5432 '')     case "$myuname" in
5433         *linux*)
5434                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5435                         nm_so_opt='--dynamic'
5436                 fi
5437                 ;;
5438         esac
5439         ;;
5440 esac
5441
5442 case "$runnm" in
5443 true)
5444 : get list of predefined functions in a handy place
5445 echo " "
5446 case "$libc" in
5447 '') libc=unknown
5448         case "$libs" in
5449         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5450         esac
5451         ;;
5452 esac
5453 case "$libs" in
5454 '') ;;
5455 *)  for thislib in $libs; do
5456         case "$thislib" in
5457         -lc|-lc_s)
5458                 : Handle C library specially below.
5459                 ;;
5460         -l*)
5461                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5462                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5463                         :
5464                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5465                         :
5466                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5467                         :
5468                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5469                         :
5470                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5471                         :
5472                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5473                         :
5474                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5475                         :
5476                 else
5477                         try=''
5478                 fi
5479                 libnames="$libnames $try"
5480                 ;;
5481         *) libnames="$libnames $thislib" ;;
5482         esac
5483         done
5484         ;;
5485 esac
5486 xxx=normal
5487 case "$libc" in
5488 unknown)
5489         set /lib/libc.$so
5490         for xxx in $libpth; do
5491                 $test -r $1 || set $xxx/libc.$so
5492                 : The messy sed command sorts on library version numbers.
5493                 $test -r $1 || \
5494                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5495                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5496                                 h
5497                                 s/[0-9][0-9]*/0000&/g
5498                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5499                                 G
5500                                 s/\n/ /' | \
5501                          $sort | $sed -e 's/^.* //'`
5502                 eval set \$$#
5503         done
5504         $test -r $1 || set /usr/ccs/lib/libc.$so
5505         $test -r $1 || set /lib/libsys_s$_a
5506         ;;
5507 *)
5508         set blurfl
5509         ;;
5510 esac
5511 if $test -r "$1"; then
5512         echo "Your (shared) C library seems to be in $1."
5513         libc="$1"
5514 elif $test -r /lib/libc && $test -r /lib/clib; then
5515         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5516         xxx=apollo
5517         libc='/lib/clib /lib/libc'
5518         if $test -r /lib/syslib; then
5519                 echo "(Your math library is in /lib/syslib.)"
5520                 libc="$libc /lib/syslib"
5521         fi
5522 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5523         echo "Your C library seems to be in $libc, as you said before."
5524 elif $test -r $incpath/usr/lib/libc$_a; then
5525         libc=$incpath/usr/lib/libc$_a;
5526         echo "Your C library seems to be in $libc.  That's fine."
5527 elif $test -r /lib/libc$_a; then
5528         libc=/lib/libc$_a;
5529         echo "Your C library seems to be in $libc.  You're normal."
5530 else
5531         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5532                 :
5533         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5534                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5535         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5536                 :
5537         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5538                 :
5539         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5540                 :
5541         else
5542                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5543         fi
5544         if $test -r "$tans"; then
5545                 echo "Your C library seems to be in $tans, of all places."
5546                 libc=$tans
5547         else
5548                 libc='blurfl'
5549         fi
5550 fi
5551 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5552         dflt="$libc"
5553         cat <<EOM
5554
5555 If the guess above is wrong (which it might be if you're using a strange
5556 compiler, or your machine supports multiple models), you can override it here.
5557
5558 EOM
5559 else
5560         dflt=''
5561         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5562         cat >&4 <<EOM
5563 I can't seem to find your C library.  I've looked in the following places:
5564
5565 EOM
5566         $sed 's/^/      /' libpath
5567         cat <<EOM
5568
5569 None of these seems to contain your C library. I need to get its name...
5570
5571 EOM
5572 fi
5573 fn=f
5574 rp='Where is your C library?'
5575 . ./getfile
5576 libc="$ans"
5577
5578 echo " "
5579 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5580 set X `cat libnames`
5581 shift
5582 xxx=files
5583 case $# in 1) xxx=file; esac
5584 echo "Extracting names from the following $xxx for later perusal:" >&4
5585 echo " "
5586 $sed 's/^/      /' libnames >&4
5587 echo " "
5588 $echo $n "This may take a while...$c" >&4
5589
5590 for file in $*; do
5591         case $file in
5592         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5593         *) $nm $nm_opt $file 2>/dev/null;;
5594         esac
5595 done >libc.tmp
5596
5597 $echo $n ".$c"
5598 $grep fprintf libc.tmp > libc.ptf
5599 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5600 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5601 xxx='[ADTSIW]'
5602 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5603         eval $xscan;\
5604         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5605                 eval $xrun
5606 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5607         eval $xscan;\
5608         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5609                 eval $xrun
5610 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5611         eval $xscan;\
5612         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5613                 eval $xrun
5614 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5615         eval $xscan;\
5616         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5617                 eval $xrun
5618 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5619         eval $xscan;\
5620         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5621                 eval $xrun
5622 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5623         eval $xscan;\
5624         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5625                 eval $xrun
5626 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5627                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5628         eval $xscan;\
5629         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5630                 eval $xrun
5631 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5632         eval $xscan;\
5633         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5634                 eval $xrun
5635 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5636         eval $xscan;\
5637         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5638                 eval $xrun
5639 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5640         eval $xscan;\
5641         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5642                 eval $xrun
5643 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5644         eval $xscan;\
5645         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5646                 eval $xrun
5647 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5648         eval $xscan;\
5649         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5650                 eval $xrun
5651 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5652         eval $xscan;\
5653         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5654                 eval $xrun
5655 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5656         eval $xscan;\
5657         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5658                 eval $xrun
5659 else
5660         $nm -p $* 2>/dev/null >libc.tmp
5661         $grep fprintf libc.tmp > libc.ptf
5662         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5663                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5664         then
5665                 nm_opt='-p'
5666                 eval $xrun
5667         else
5668                 echo " "
5669                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5670                 com=''
5671                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5672                         for thisname in $libnames $libc; do
5673                                 $ar t $thisname >>libc.tmp
5674                         done
5675                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5676                         echo "Ok." >&4
5677                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5678                         # Repeat libc to extract forwarders to DLL entries too
5679                         for thisname in $libnames $libc; do
5680                                 $ar tv $thisname >>libc.tmp
5681                                 # Revision 50 of EMX has bug in $ar.
5682                                 # it will not extract forwarders to DLL entries
5683                                 # Use emximp which will extract exactly them.
5684                                 emximp -o tmp.imp $thisname \
5685                                     2>/dev/null && \
5686                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5687                                     < tmp.imp >>libc.tmp
5688                                 $rm tmp.imp
5689                         done
5690                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5691                         echo "Ok." >&4
5692                 else
5693                         echo "$ar didn't seem to work right." >&4
5694                         echo "Maybe this is a Cray...trying bld instead..." >&4
5695                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5696                         then
5697                                 for thisname in $libnames; do
5698                                         bld t $libnames | \
5699                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5700                                         $ar t $thisname >>libc.tmp
5701                                 done
5702                                 echo "Ok." >&4
5703                         else
5704                                 echo "That didn't work either.  Giving up." >&4
5705                                 exit 1
5706                         fi
5707                 fi
5708         fi
5709 fi
5710 nm_extract="$com"
5711 if $test -f /lib/syscalls.exp; then
5712         echo " "
5713         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5714         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5715 fi
5716 ;;
5717 esac
5718 $rm -f libnames libpath
5719
5720 : is a C symbol defined?
5721 csym='tlook=$1;
5722 case "$3" in
5723 -v) tf=libc.tmp; tc=""; tdc="";;
5724 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5725 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5726 esac;
5727 tx=yes;
5728 case "$reuseval-$4" in
5729 true-) ;;
5730 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5731 esac;
5732 case "$tx" in
5733 yes)
5734         case "$runnm" in
5735         true)
5736                 if $contains $tlook $tf >/dev/null 2>&1;
5737                 then tval=true;
5738                 else tval=false;
5739                 fi;;
5740         *)
5741                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5742                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5743                 then tval=true;
5744                 else tval=false;
5745                 fi;
5746                 $rm -f t t.c;;
5747         esac;;
5748 *)
5749         case "$tval" in
5750         $define) tval=true;;
5751         *) tval=false;;
5752         esac;;
5753 esac;
5754 eval "$2=$tval"'
5755
5756 : define an is-in-libc? function
5757 inlibc='echo " "; td=$define; tu=$undef;
5758 sym=$1; var=$2; eval "was=\$$2";
5759 tx=yes;
5760 case "$reuseval$was" in
5761 true) ;;
5762 true*) tx=no;;
5763 esac;
5764 case "$tx" in
5765 yes)
5766         set $sym tres -f;
5767         eval $csym;
5768         case "$tres" in
5769         true)
5770                 echo "$sym() found." >&4;
5771                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5772         *)
5773                 echo "$sym() NOT found." >&4;
5774                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5775         esac;;
5776 *)
5777         case "$was" in
5778         $define) echo "$sym() found." >&4;;
5779         *) echo "$sym() NOT found." >&4;;
5780         esac;;
5781 esac'
5782
5783 : see if sqrtl exists
5784 set sqrtl d_sqrtl
5785 eval $inlibc
5786
5787 : check for length of double
5788 echo " "
5789 case "$doublesize" in
5790 '')
5791         echo "Checking to see how big your double precision numbers are..." >&4
5792         $cat >try.c <<'EOCP'
5793 #include <stdio.h>
5794 int main()
5795 {
5796     printf("%d\n", (int)sizeof(double));
5797     exit(0);
5798 }
5799 EOCP
5800         set try
5801         if eval $compile_ok; then
5802                 doublesize=`$run ./try`
5803                 echo "Your double is $doublesize bytes long."
5804         else
5805                 dflt='8'
5806                 echo "(I can't seem to compile the test program.  Guessing...)"
5807                 rp="What is the size of a double precision number (in bytes)?"
5808                 . ./myread
5809                 doublesize="$ans"
5810         fi
5811         ;;
5812 esac
5813 $rm -f try.c try
5814
5815 : check for long doubles
5816 echo " "
5817 echo "Checking to see if you have long double..." >&4
5818 echo 'int main() { long double x = 7.0; }' > try.c
5819 set try
5820 if eval $compile; then
5821         val="$define"
5822         echo "You have long double."
5823 else
5824         val="$undef"
5825         echo "You do not have long double."
5826 fi
5827 $rm try.*
5828 set d_longdbl
5829 eval $setvar
5830
5831 : check for length of long double
5832 case "${d_longdbl}${longdblsize}" in
5833 $define)
5834         echo " "
5835         echo "Checking to see how big your long doubles are..." >&4
5836         $cat >try.c <<'EOCP'
5837 #include <stdio.h>
5838 int main()
5839 {
5840         printf("%d\n", sizeof(long double));
5841 }
5842 EOCP
5843         set try
5844         set try
5845         if eval $compile; then
5846                 longdblsize=`$run ./try`
5847                 echo "Your long doubles are $longdblsize bytes long."
5848         else
5849                 dflt='8'
5850                 echo " "
5851                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5852                 rp="What is the size of a long double (in bytes)?"
5853                 . ./myread
5854                 longdblsize="$ans"
5855         fi
5856         if $test "X$doublesize" = "X$longdblsize"; then
5857                 echo "(That isn't any different from an ordinary double.)"
5858         fi      
5859         ;;
5860 esac
5861 $rm -f try.* try
5862
5863 echo " "
5864
5865 if $test X"$d_longdbl" = X"$define"; then
5866
5867 echo "Checking how to print long doubles..." >&4
5868
5869 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5870         $cat >try.c <<'EOCP'
5871 #include <sys/types.h>
5872 #include <stdio.h>
5873 int main() {
5874   double d = 123.456;
5875   printf("%.3f\n", d);
5876 }
5877 EOCP
5878         set try
5879         if eval $compile; then
5880                 yyy=`$run ./try`
5881                 case "$yyy" in
5882                 123.456)
5883                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5884                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5885                         echo "We will use %f."
5886                         ;;
5887                 esac
5888         fi
5889 fi
5890
5891 if $test X"$sPRIfldbl" = X; then
5892         $cat >try.c <<'EOCP'
5893 #include <sys/types.h>
5894 #include <stdio.h>
5895 int main() {
5896   long double d = 123.456;
5897   printf("%.3Lf\n", d);
5898 }
5899 EOCP
5900         set try
5901         if eval $compile; then
5902                 yyy=`$run ./try`
5903                 case "$yyy" in
5904                 123.456)
5905                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
5906                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
5907                         echo "We will use %Lf."
5908                         ;;
5909                 esac
5910         fi
5911 fi
5912
5913 if $test X"$sPRIfldbl" = X; then
5914         $cat >try.c <<'EOCP'
5915 #include <sys/types.h>
5916 #include <stdio.h>
5917 int main() {
5918   long double d = 123.456;
5919   printf("%.3llf\n", d);
5920 }
5921 EOCP
5922         set try
5923         if eval $compile; then
5924                 yyy=`$run ./try`
5925                 case "$yyy" in
5926                 123.456)
5927                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
5928                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
5929                         echo "We will use %llf."
5930                         ;;
5931                 esac
5932         fi
5933 fi
5934
5935 if $test X"$sPRIfldbl" = X; then
5936         $cat >try.c <<'EOCP'
5937 #include <sys/types.h>
5938 #include <stdio.h>
5939 int main() {
5940   long double d = 123.456;
5941   printf("%.3lf\n", d);
5942 }
5943 EOCP
5944         set try
5945         if eval $compile; then
5946                 yyy=`$run ./try`
5947                 case "$yyy" in
5948                 123.456)
5949                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
5950                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
5951                         echo "We will use %lf."
5952                         ;;
5953                 esac
5954         fi
5955 fi
5956
5957 if $test X"$sPRIfldbl" = X; then
5958         echo "Cannot figure out how to print long doubles." >&4
5959 else
5960         sSCNfldbl=$sPRIfldbl    # expect consistency
5961 fi
5962
5963 $rm -f try try.*
5964
5965 fi # d_longdbl
5966
5967 case "$sPRIfldbl" in
5968 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
5969         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
5970         d_SCNfldbl="$undef";
5971         ;;
5972 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
5973         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
5974         d_SCNfldbl="$define";
5975         ;;
5976 esac
5977
5978 : see if modfl exists
5979 set modfl d_modfl
5980 eval $inlibc
5981
5982 d_modfl_pow32_bug="$undef"
5983
5984 case "$d_longdbl$d_modfl" in
5985 $define$define)
5986         $cat <<EOM
5987 Checking to see whether your modfl() is okay for large values...
5988 EOM
5989 $cat >try.c <<EOCP
5990 #include <math.h> 
5991 #include <stdio.h>
5992 int main() {
5993     long double nv = 4294967303.15;
5994     long double v, w;
5995     v = modfl(nv, &w);         
5996 #ifdef __GLIBC__
5997     printf("glibc");
5998 #endif
5999     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6000     return 0;
6001 }
6002 EOCP
6003         case "$osname:$gccversion" in
6004         aix:)   saveccflags="$ccflags"
6005                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6006         esac
6007         set try
6008         if eval $compile; then
6009                 foo=`$run ./try`
6010                 case "$foo" in
6011                 *" 4294967303.150000 1.150000 4294967302.000000")
6012                         echo >&4 "Your modfl() is broken for large values."
6013                         d_modfl_pow32_bug="$define"
6014                         case "$foo" in
6015                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6016                         ;;
6017                         esac
6018                         ;;
6019                 *" 4294967303.150000 0.150000 4294967303.000000")
6020                         echo >&4 "Your modfl() seems okay for large values."
6021                         ;;
6022                 *)      echo >&4 "I don't understand your modfl() at all."
6023                         d_modfl="$undef"
6024                         ;;
6025                 esac
6026                 $rm -f try.* try core core.try.*
6027         else
6028                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6029                 d_modfl="$undef"
6030         fi
6031         case "$osname:$gccversion" in
6032         aix:)   ccflags="$saveccflags" ;; # restore
6033         esac
6034         ;;
6035 esac
6036
6037 case "$ccflags" in
6038 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6039 esac
6040
6041 case "$uselongdouble" in
6042 $define|true|[yY]*)     dflt='y';;
6043 *) dflt='n';;
6044 esac
6045 cat <<EOM
6046
6047 Perl can be built to take advantage of long doubles which
6048 (if available) may give more accuracy and range for floating point numbers.
6049
6050 If this doesn't make any sense to you, just accept the default '$dflt'.
6051 EOM
6052 rp='Try to use long doubles if available?'
6053 . ./myread
6054 case "$ans" in
6055 y|Y)    val="$define"   ;;
6056 *)      val="$undef"    ;;
6057 esac
6058 set uselongdouble
6059 eval $setvar
6060
6061 case "$uselongdouble" in
6062 true|[yY]*) uselongdouble="$define" ;;
6063 esac
6064
6065 case "$uselongdouble" in
6066 $define)
6067 : Look for a hint-file generated 'call-back-unit'.  If the
6068 : user has specified that long doubles should be used,
6069 : we may need to set or change some other defaults.
6070         if $test -f uselongdouble.cbu; then
6071                 echo "Your platform has some specific hints for long doubles, using them..."
6072                 . ./uselongdouble.cbu
6073         else
6074                 $cat <<EOM
6075 (Your platform doesn't have any specific hints for long doubles.)
6076 EOM
6077         fi
6078         ;;
6079 esac
6080
6081 message=X
6082 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6083 $define:$define:$define)
6084         : You have both
6085         ;;
6086 $define:$define:$undef)
6087         message="I could not find modfl"
6088         ;;
6089 $define:$undef:$define)
6090         message="I could not find sqrtl"
6091         ;;
6092 $define:$undef:$undef)
6093         message="I found neither sqrtl nor modfl"
6094         ;;
6095 esac
6096
6097 if $test "$message" != X; then
6098         $cat <<EOM >&4
6099
6100 *** You requested the use of long doubles but you do not seem to have
6101 *** the mathematic functions for long doubles.
6102 *** ($message)
6103 *** I'm disabling the use of long doubles.
6104
6105 EOM
6106
6107         uselongdouble=$undef
6108 fi
6109
6110 case "$useperlio" in
6111 $define|true|[yY]*|'')  dflt='y';;
6112 *) dflt='n';;
6113 esac
6114 cat <<EOM
6115
6116 Previous version of $package used the standard IO mechanisms as
6117 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
6118 alternate IO mechanisms via the PerlIO abstraction layer, but the
6119 stdio mechanism is still available if needed.  The abstraction layer
6120 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6121 Using PerlIO with sfio may cause problems with some extension modules.
6122
6123 If this doesn't make any sense to you, just accept the default '$dflt'.
6124 EOM
6125 rp='Use the PerlIO abstraction layer?'
6126 . ./myread
6127 case "$ans" in
6128 y|Y) 
6129         val="$define"
6130         ;;
6131 *)      
6132         echo "Ok, doing things the stdio way."
6133         val="$undef"
6134         ;;
6135 esac
6136 set useperlio
6137 eval $setvar 
6138
6139 case "$usesocks" in
6140 $define|true|[yY]*)
6141         case "$useperlio" in
6142         $define|true|[yY]*) ;;
6143         *)      cat >&4 <<EOM
6144
6145 You are using the SOCKS proxy protocol library which means that you
6146 should also use the PerlIO layer.  You may be headed for trouble.
6147
6148 EOM
6149                 ;;
6150         esac
6151         ;;
6152 esac
6153
6154         
6155 : determine the architecture name
6156 echo " "
6157 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6158         tarch=`arch`"-$osname"
6159 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6160         if uname -m > tmparch 2>&1 ; then
6161                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6162                         -e 's/$/'"-$osname/" tmparch`
6163         else
6164                 tarch="$osname"
6165         fi
6166         $rm -f tmparch
6167 else
6168         tarch="$osname"
6169 fi
6170 case "$myarchname" in
6171 ''|"$tarch") ;;
6172 *)
6173         echo "(Your architecture name used to be $myarchname.)"
6174         archname=''
6175         ;;
6176 esac
6177 case "$targetarch" in
6178 '') ;;
6179 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6180 esac
6181 myarchname="$tarch"
6182 case "$archname" in
6183 '') dflt="$tarch";;
6184 *) dflt="$archname";;
6185 esac
6186 rp='What is your architecture name'
6187 . ./myread
6188 archname="$ans"
6189 case "$usethreads" in
6190 $define)
6191         echo "Threads selected." >&4
6192         case "$archname" in
6193         *-thread*) echo "...and architecture name already has -thread." >&4
6194                 ;;
6195         *)      archname="$archname-thread"
6196                 echo "...setting architecture name to $archname." >&4
6197                 ;;
6198         esac
6199         ;;
6200 esac
6201 case "$usemultiplicity" in
6202 $define)
6203         echo "Multiplicity selected." >&4
6204         case "$archname" in
6205         *-multi*) echo "...and architecture name already has -multi." >&4
6206                 ;;
6207         *)      archname="$archname-multi"
6208                 echo "...setting architecture name to $archname." >&4
6209                 ;;
6210         esac
6211         ;;
6212 esac
6213 case "$use64bitint$use64bitall" in
6214 *"$define"*)
6215         case "$archname64" in
6216         '')
6217                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6218                 ;;
6219         *)
6220                 case "$use64bitint" in
6221                 "$define") echo "64 bit integers selected." >&4 ;;
6222                 esac
6223                 case "$use64bitall" in
6224                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6225                 esac
6226                 case "$archname" in
6227                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6228                         ;;
6229                 *)      archname="$archname-$archname64"
6230                         echo "...setting architecture name to $archname." >&4
6231                         ;;
6232                 esac
6233                 ;;
6234         esac
6235 esac
6236 case "$uselongdouble" in
6237 $define)
6238         echo "Long doubles selected." >&4
6239         case "$longdblsize" in
6240         $doublesize)
6241                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6242                 ;;
6243         *)
6244                 case "$archname" in
6245                 *-ld*) echo "...and architecture name already has -ld." >&4
6246                         ;;
6247                 *)      archname="$archname-ld"
6248                         echo "...setting architecture name to $archname." >&4
6249                         ;;
6250                 esac
6251                 ;;
6252         esac
6253         ;;
6254 esac
6255 case "$useperlio" in
6256 $define)
6257         echo "Perlio selected." >&4
6258         ;;
6259 *)
6260         echo "Perlio not selected, using stdio." >&4
6261         case "$archname" in
6262         *-stdio*) echo "...and architecture name already has -stdio." >&4
6263                 ;;
6264         *)      archname="$archname-stdio"
6265                 echo "...setting architecture name to $archname." >&4
6266                 ;;
6267         esac
6268         ;;
6269 esac
6270
6271 : determine root of directory hierarchy where package will be installed.
6272 case "$prefix" in
6273 '')
6274         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6275         ;;
6276 *)
6277         dflt="$prefix"
6278         ;;
6279 esac
6280 $cat <<EOM
6281
6282 By default, $package will be installed in $dflt/bin, manual pages
6283 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6284 installation directories. Typically this is something like /usr/local.
6285 If you wish to have binaries under /usr/bin but other parts of the
6286 installation under /usr/local, that's ok: you will be prompted
6287 separately for each of the installation directories, the prefix being
6288 only used to set the defaults.
6289
6290 EOM
6291 fn=d~
6292 rp='Installation prefix to use?'
6293 . ./getfile
6294 oldprefix=''
6295 case "$prefix" in
6296 '') ;;
6297 *)
6298         case "$ans" in
6299         "$prefix") ;;
6300         *) oldprefix="$prefix";;
6301         esac
6302         ;;
6303 esac
6304 prefix="$ans"
6305 prefixexp="$ansexp"
6306
6307 case "$afsroot" in
6308 '')     afsroot=/afs ;;
6309 *)      afsroot=$afsroot ;;
6310 esac
6311
6312 : is AFS running?
6313 echo " "
6314 case "$afs" in
6315 $define|true)   afs=true ;;
6316 $undef|false)   afs=false ;;
6317 *)      if test -d $afsroot; then
6318                 afs=true
6319         else
6320                 afs=false
6321         fi
6322         ;;
6323 esac
6324 if $afs; then
6325         echo "AFS may be running... I'll be extra cautious then..." >&4
6326 else
6327         echo "AFS does not seem to be running..." >&4
6328 fi
6329
6330 : determine installation prefix for where package is to be installed.
6331 if $afs; then 
6332 $cat <<EOM
6333
6334 Since you are running AFS, I need to distinguish the directory in which
6335 files will reside from the directory in which they are installed (and from
6336 which they are presumably copied to the former directory by occult means).
6337
6338 EOM
6339         case "$installprefix" in
6340         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6341         *) dflt="$installprefix";;
6342         esac
6343 else
6344 $cat <<EOM
6345
6346 In some special cases, particularly when building $package for distribution,
6347 it is convenient to distinguish between the directory in which files should 
6348 be installed from the directory ($prefix) in which they 
6349 will eventually reside.  For most users, these two directories are the same.
6350
6351 EOM
6352         case "$installprefix" in
6353         '') dflt=$prefix ;;
6354         *) dflt=$installprefix;;
6355         esac
6356 fi
6357 fn=d~
6358 rp='What installation prefix should I use for installing files?'
6359 . ./getfile
6360 installprefix="$ans"
6361 installprefixexp="$ansexp"
6362
6363 : set the prefixit variable, to compute a suitable default value
6364 prefixit='case "$3" in
6365 ""|none)
6366         case "$oldprefix" in
6367         "") eval "$1=\"\$$2\"";;
6368         *)
6369                 case "$3" in
6370                 "") eval "$1=";;
6371                 none)
6372                         eval "tp=\"\$$2\"";
6373                         case "$tp" in
6374                         ""|" ") eval "$1=\"\$$2\"";;
6375                         *) eval "$1=";;
6376                         esac;;
6377                 esac;;
6378         esac;;
6379 *)
6380         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6381         case "$tp" in
6382         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6383         /*-$oldprefix/*|\~*-$oldprefix/*)
6384                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6385         *) eval "$1=\"\$$2\"";;
6386         esac;;
6387 esac'
6388
6389 : get the patchlevel
6390 echo " "
6391 echo "Getting the current patchlevel..." >&4
6392 if $test -r $rsrc/patchlevel.h;then
6393         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6394         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6395         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6396         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6397         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6398         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6399        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6400 else
6401         revision=0
6402         patchlevel=0
6403         subversion=0
6404         api_revision=0
6405         api_version=0
6406         api_subversion=0
6407         perl_patchlevel=0
6408         $echo "(You do not have patchlevel.h.  Eek.)"
6409 fi
6410 if $test -r $rsrc/.patch ; then  
6411         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6412                 perl_patchlevel=`cat $rsrc/.patch`
6413         fi
6414 fi
6415 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6416 version_patchlevel_string="version $patchlevel subversion $subversion"
6417 case "$perl_patchlevel" in
6418 0|'') ;;
6419 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6420 esac
6421
6422 $echo "(You have $package $version_patchlevel_string.)"
6423
6424 case "$osname" in
6425 dos|vms)
6426         : XXX Should be a Configure test for double-dots in filenames.
6427         version=`echo $revision $patchlevel $subversion | \
6428                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6429         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6430                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6431         ;;
6432 *)
6433         version=`echo $revision $patchlevel $subversion | \
6434                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6435         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6436                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6437         ;;
6438 esac
6439 : Special case the 5.005_xx maintenance series, which used 5.005
6440 : without any subversion label as a subdirectory in $sitelib
6441 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6442         api_versionstring='5.005'
6443 fi
6444
6445 : determine installation style
6446 : For now, try to deduce it from prefix unless it is already set.
6447 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6448 case "$installstyle" in
6449 '')     case "$prefix" in
6450                 *perl*) dflt='lib';;
6451                 *) dflt='lib/perl5' ;;
6452         esac
6453         ;;
6454 *)      dflt="$installstyle" ;;
6455 esac
6456 : Probably not worth prompting for this since we prompt for all
6457 : the directories individually, and the prompt would be too long and
6458 : confusing anyway.
6459 installstyle=$dflt
6460
6461 : determine where private library files go
6462 : Usual default is /usr/local/lib/perl5/$version.
6463 : Also allow things like /opt/perl/lib/$version, since 
6464 : /opt/perl/lib/perl5... would be redundant.
6465 : The default "style" setting is made in installstyle.U
6466 case "$installstyle" in
6467 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6468 *)       set dflt privlib lib/$version ;;
6469 esac
6470 eval $prefixit
6471 $cat <<EOM
6472
6473 There are some auxiliary files for $package that need to be put into a
6474 private library directory that is accessible by everyone.
6475
6476 EOM
6477 fn=d~+
6478 rp='Pathname where the private library files will reside?'
6479 . ./getfile
6480 privlib="$ans"
6481 privlibexp="$ansexp"
6482 : Change installation prefix, if necessary.
6483 if $test X"$prefix" != X"$installprefix"; then
6484         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6485 else
6486         installprivlib="$privlibexp"
6487 fi
6488
6489 : set the prefixup variable, to restore leading tilda escape
6490 prefixup='case "$prefixexp" in
6491 "$prefix") ;;
6492 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6493 esac'
6494
6495 : determine where public architecture dependent libraries go
6496 set archlib archlib
6497 eval $prefixit
6498 : privlib default is /usr/local/lib/$package/$version
6499 : archlib default is /usr/local/lib/$package/$version/$archname
6500 : privlib may have an optional trailing /share.
6501 tdflt=`echo $privlib | $sed 's,/share$,,'`
6502 tdflt=$tdflt/$archname
6503 case "$archlib" in
6504 '')     dflt=$tdflt
6505         ;;
6506 *)      dflt="$archlib"
6507     ;;
6508 esac
6509 $cat <<EOM
6510
6511 $spackage contains architecture-dependent library files.  If you are
6512 sharing libraries in a heterogeneous environment, you might store
6513 these files in a separate location.  Otherwise, you can just include
6514 them with the rest of the public library files.
6515
6516 EOM
6517 fn=d+~
6518 rp='Where do you want to put the public architecture-dependent libraries?'
6519 . ./getfile
6520 archlib="$ans"
6521 archlibexp="$ansexp"
6522 if $test X"$archlib" = X"$privlib"; then
6523         d_archlib="$undef"
6524 else
6525         d_archlib="$define"
6526 fi
6527 : Change installation prefix, if necessary.
6528 if $test X"$prefix" != X"$installprefix"; then
6529         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6530 else
6531         installarchlib="$archlibexp"
6532 fi
6533
6534
6535 : Binary compatibility with 5.005 is not possible for builds
6536 : with advanced features
6537 case "$usethreads$usemultiplicity" in
6538 *define*)
6539         bincompat5005="$undef"
6540         d_bincompat5005="$undef"
6541         ;;
6542 *)      $cat <<EOM
6543
6544 This version of Perl can be compiled for binary compatibility with 5.005.
6545 If you decide to do so, you will be able to continue using most of the
6546 extensions that were compiled for Perl 5.005.
6547
6548 EOM
6549         case "$bincompat5005$d_bincompat5005" in
6550         *"$undef"*) dflt=n ;;
6551         *) dflt=y ;;
6552         esac
6553         rp='Binary compatibility with Perl 5.005?'
6554         . ./myread
6555         case "$ans" in
6556         y*) val="$define" ;;
6557         *)  val="$undef" ;;
6558         esac
6559         set d_bincompat5005
6560         eval $setvar
6561         case "$d_bincompat5005" in
6562         "$define")
6563                 bincompat5005="$define"
6564                 ;;
6565         *)      bincompat5005="$undef"
6566                 d_bincompat5005="$undef"
6567                 ;;
6568         esac
6569         ;;
6570 esac
6571
6572
6573 : see if setuid scripts can be secure
6574 $cat <<EOM
6575
6576 Some kernels have a bug that prevents setuid #! scripts from being
6577 secure.  Some sites have disabled setuid #! scripts because of this.
6578
6579 First let's decide if your kernel supports secure setuid #! scripts.
6580 (If setuid #! scripts would be secure but have been disabled anyway,
6581 don't say that they are secure if asked.)
6582
6583 EOM
6584
6585 val="$undef"
6586 if $test -d /dev/fd; then
6587         echo "#!$ls" >reflect
6588         chmod +x,u+s reflect
6589         ./reflect >flect 2>&1
6590         if $contains "/dev/fd" flect >/dev/null; then
6591                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6592                 val="$define"
6593         else
6594                 $cat <<EOM
6595 If you are not sure if they are secure, I can check but I'll need a
6596 username and password different from the one you are using right now.
6597 If you don't have such a username or don't want me to test, simply
6598 enter 'none'.
6599
6600 EOM
6601                 rp='Other username to test security of setuid scripts with?'
6602                 dflt='none'
6603                 . ./myread
6604                 case "$ans" in
6605                 n|none)
6606                         case "$d_suidsafe" in
6607                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6608                                 dflt=n;;
6609                         "$undef")
6610                                 echo "Well, the $hint value is *not* secure." >&4
6611                                 dflt=n;;
6612                         *)      echo "Well, the $hint value *is* secure." >&4
6613                                 dflt=y;;
6614                         esac
6615                         ;;
6616                 *)
6617                         $rm -f reflect flect
6618                         echo "#!$ls" >reflect
6619                         chmod +x,u+s reflect
6620                         echo >flect
6621                         chmod a+w flect
6622                         echo '"su" will (probably) prompt you for '"$ans's password."
6623                         su $ans -c './reflect >flect'
6624                         if $contains "/dev/fd" flect >/dev/null; then
6625                                 echo "Okay, it looks like setuid scripts are secure." >&4
6626                                 dflt=y
6627                         else
6628                                 echo "I don't think setuid scripts are secure." >&4
6629                                 dflt=n
6630                         fi
6631                         ;;
6632                 esac
6633                 rp='Does your kernel have *secure* setuid scripts?'
6634                 . ./myread
6635                 case "$ans" in
6636                 [yY]*)  val="$define";;
6637                 *)      val="$undef";;
6638                 esac
6639         fi
6640 else
6641         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6642         echo "(That's for file descriptors, not floppy disks.)"
6643         val="$undef"
6644 fi
6645 set d_suidsafe
6646 eval $setvar
6647
6648 $rm -f reflect flect
6649
6650 : now see if they want to do setuid emulation
6651 echo " "
6652 val="$undef"
6653 case "$d_suidsafe" in
6654 "$define")
6655         val="$undef"
6656         echo "No need to emulate SUID scripts since they are secure here." >&4
6657         ;;
6658 *)
6659         $cat <<EOM
6660 Some systems have disabled setuid scripts, especially systems where
6661 setuid scripts cannot be secure.  On systems where setuid scripts have
6662 been disabled, the setuid/setgid bits on scripts are currently
6663 useless.  It is possible for $package to detect those bits and emulate
6664 setuid/setgid in a secure fashion.  This emulation will only work if
6665 setuid scripts have been disabled in your kernel.
6666
6667 EOM
6668         case "$d_dosuid" in
6669         "$define") dflt=y ;;
6670         *) dflt=n ;;
6671         esac
6672         rp="Do you want to do setuid/setgid emulation?"
6673         . ./myread
6674         case "$ans" in
6675         [yY]*)  val="$define";;
6676         *)      val="$undef";;
6677         esac
6678         ;;
6679 esac
6680 set d_dosuid
6681 eval $setvar
6682
6683 : see if this is a malloc.h system
6684 set malloc.h i_malloc
6685 eval $inhdr
6686
6687 : see if stdlib is available
6688 set stdlib.h i_stdlib
6689 eval $inhdr
6690
6691 : determine which malloc to compile in
6692 echo " "
6693 case "$usemymalloc" in
6694 [yY]*|true|$define)     dflt='y' ;;
6695 [nN]*|false|$undef)     dflt='n' ;;
6696 *)      case "$ptrsize" in
6697         4) dflt='y' ;;
6698         *) dflt='n' ;;
6699         esac
6700         ;;
6701 esac
6702 rp="Do you wish to attempt to use the malloc that comes with $package?"
6703 . ./myread
6704 usemymalloc="$ans"
6705 case "$ans" in
6706 y*|true)
6707         usemymalloc='y'
6708         mallocsrc='malloc.c'
6709         mallocobj="malloc$_o"
6710         d_mymalloc="$define"
6711         case "$libs" in
6712         *-lmalloc*)
6713                 : Remove malloc from list of libraries to use
6714                 echo "Removing unneeded -lmalloc from library list" >&4
6715                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6716                 shift
6717                 libs="$*"
6718                 echo "libs = $libs" >&4
6719                 ;;
6720         esac
6721         ;;
6722 *)
6723         usemymalloc='n'
6724         mallocsrc=''
6725         mallocobj=''
6726         d_mymalloc="$undef"
6727         ;;
6728 esac
6729
6730 : compute the return types of malloc and free
6731 echo " "
6732 $cat >malloc.c <<END
6733 #$i_malloc I_MALLOC
6734 #$i_stdlib I_STDLIB
6735 #include <stdio.h>
6736 #include <sys/types.h>
6737 #ifdef I_MALLOC
6738 #include <malloc.h>
6739 #endif
6740 #ifdef I_STDLIB
6741 #include <stdlib.h>
6742 #endif
6743 #ifdef TRY_MALLOC
6744 void *malloc();
6745 #endif
6746 #ifdef TRY_FREE
6747 void free();
6748 #endif
6749 END
6750 case "$malloctype" in
6751 '')
6752         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6753                 malloctype='void *'
6754         else
6755                 malloctype='char *'
6756         fi
6757         ;;
6758 esac
6759 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6760
6761 case "$freetype" in
6762 '')
6763         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6764                 freetype='void'
6765         else
6766                 freetype='int'
6767         fi
6768         ;;
6769 esac
6770 echo "Your system uses $freetype free(), it would seem." >&4
6771 $rm -f malloc.[co]
6772 $cat <<EOM
6773
6774 After $package is installed, you may wish to install various
6775 add-on modules and utilities.  Typically, these add-ons will
6776 be installed under $prefix with the rest
6777 of this package.  However, you may wish to install such add-ons
6778 elsewhere under a different prefix.
6779
6780 If you do not wish to put everything under a single prefix, that's
6781 ok.  You will be prompted for the individual locations; this siteprefix
6782 is only used to suggest the defaults.
6783
6784 The default should be fine for most people.
6785
6786 EOM
6787 fn=d~+
6788 rp='Installation prefix to use for add-on modules and utilities?'
6789 : XXX Here might be another good place for an installstyle setting.
6790 case "$siteprefix" in
6791 '') dflt=$prefix ;;
6792 *)  dflt=$siteprefix ;;
6793 esac
6794 . ./getfile
6795 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6796 oldsiteprefix=''
6797 case "$siteprefix" in
6798 '') ;;
6799 *)      case "$ans" in
6800         "$prefix") ;;
6801         *) oldsiteprefix="$prefix";;
6802         esac
6803         ;;
6804 esac
6805 siteprefix="$ans"
6806 siteprefixexp="$ansexp"
6807
6808 : determine where site specific libraries go.
6809 : Usual default is /usr/local/lib/perl5/site_perl/$version
6810 : The default "style" setting is made in installstyle.U
6811 : XXX No longer works with Prefixit stuff.
6812 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6813 case "$sitelib" in
6814 '') case "$installstyle" in
6815         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6816         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6817         esac
6818         ;;
6819 *)      dflt="$sitelib"
6820         ;;
6821 esac
6822 $cat <<EOM
6823
6824 The installation process will create a directory for
6825 site-specific extensions and modules.  Most users find it convenient
6826 to place all site-specific files in this directory rather than in the
6827 main distribution directory.
6828
6829 EOM
6830 fn=d~+
6831 rp='Pathname for the site-specific library files?'
6832 . ./getfile
6833 sitelib="$ans"
6834 sitelibexp="$ansexp"
6835 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6836 : Change installation prefix, if necessary.
6837 if $test X"$prefix" != X"$installprefix"; then
6838         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6839 else
6840         installsitelib="$sitelibexp"
6841 fi
6842
6843 : determine where site specific architecture-dependent libraries go.
6844 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6845 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6846 : sitelib may have an optional trailing /share.
6847 case "$sitearch" in
6848 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6849         dflt="$dflt/$archname"
6850         ;;
6851 *)      dflt="$sitearch"
6852         ;;
6853 esac
6854 set sitearch sitearch none
6855 eval $prefixit
6856 $cat <<EOM
6857
6858 The installation process will also create a directory for
6859 architecture-dependent site-specific extensions and modules.
6860
6861 EOM
6862 fn=d~+
6863 rp='Pathname for the site-specific architecture-dependent library files?'
6864 . ./getfile
6865 sitearch="$ans"
6866 sitearchexp="$ansexp"
6867 : Change installation prefix, if necessary.
6868 if $test X"$prefix" != X"$installprefix"; then
6869         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6870 else
6871         installsitearch="$sitearchexp"
6872 fi
6873
6874 $cat <<EOM
6875
6876 The installation process will also create a directory for
6877 vendor-supplied add-ons.  Vendors who supply perl with their system
6878 may find it convenient to place all vendor-supplied files in this
6879 directory rather than in the main distribution directory.  This will
6880 ease upgrades between binary-compatible maintenance versions of perl.
6881
6882 Of course you may also use these directories in whatever way you see
6883 fit.  For example, you might use them to access modules shared over a
6884 company-wide network.
6885
6886 The default answer should be fine for most people.
6887 This causes further questions about vendor add-ons to be skipped
6888 and no vendor-specific directories will be configured for perl.
6889
6890 EOM
6891 rp='Do you want to configure vendor-specific add-on directories?'
6892 case "$usevendorprefix" in
6893 define|true|[yY]*) dflt=y ;;
6894 *)      : User may have set vendorprefix directly on Configure command line.
6895         case "$vendorprefix" in
6896         ''|' ') dflt=n ;;
6897         *)      dflt=y ;;
6898         esac
6899         ;;
6900 esac
6901 . ./myread
6902 case "$ans" in
6903 [yY]*)  fn=d~+
6904         rp='Installation prefix to use for vendor-supplied add-ons?'
6905         case "$vendorprefix" in
6906         '') dflt='' ;;
6907         *)  dflt=$vendorprefix ;;
6908         esac
6909         . ./getfile
6910         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6911         oldvendorprefix=''
6912         case "$vendorprefix" in
6913         '') ;;
6914         *)      case "$ans" in
6915                 "$prefix") ;;
6916                 *) oldvendorprefix="$prefix";;
6917                 esac
6918                 ;;
6919         esac
6920         usevendorprefix="$define"
6921         vendorprefix="$ans"
6922         vendorprefixexp="$ansexp"
6923         ;;
6924 *)      usevendorprefix="$undef"
6925         vendorprefix=''
6926         vendorprefixexp=''
6927         ;;
6928 esac
6929
6930 case "$vendorprefix" in
6931 '')     d_vendorlib="$undef"
6932         vendorlib=''
6933         vendorlibexp=''
6934         ;;
6935 *)      d_vendorlib="$define"
6936         : determine where vendor-supplied modules go.
6937         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6938         case "$vendorlib" in
6939         '')
6940                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6941                 case "$installstyle" in
6942                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6943                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6944                 esac
6945                 ;;
6946         *)      dflt="$vendorlib"
6947                 ;;
6948         esac
6949         fn=d~+
6950         rp='Pathname for the vendor-supplied library files?'
6951         . ./getfile
6952         vendorlib="$ans"
6953         vendorlibexp="$ansexp"
6954         ;;
6955 esac
6956 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6957 : Change installation prefix, if necessary.
6958 if $test X"$prefix" != X"$installprefix"; then
6959         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6960 else
6961         installvendorlib="$vendorlibexp"
6962 fi
6963
6964 case "$vendorprefix" in
6965 '')     d_vendorarch="$undef"
6966         vendorarch=''
6967         vendorarchexp=''
6968         ;;
6969 *)      d_vendorarch="$define"
6970         : determine where vendor-supplied architecture-dependent libraries go.
6971         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6972         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6973         : vendorlib may have an optional trailing /share.
6974         case "$vendorarch" in
6975         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6976                 dflt="$dflt/$archname"
6977                 ;;
6978         *)      dflt="$vendorarch" ;;
6979         esac
6980         fn=d~+
6981         rp='Pathname for vendor-supplied architecture-dependent files?'
6982         . ./getfile
6983         vendorarch="$ans"
6984         vendorarchexp="$ansexp"
6985         ;;
6986 esac
6987 : Change installation prefix, if necessary.
6988 if $test X"$prefix" != X"$installprefix"; then
6989         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6990 else
6991         installvendorarch="$vendorarchexp"
6992 fi
6993
6994 : Final catch-all directories to search
6995 $cat <<EOM
6996
6997 Lastly, you can have perl look in other directories for extensions and
6998 modules in addition to those already specified.
6999 These directories will be searched after 
7000         $sitearch 
7001         $sitelib 
7002 EOM
7003 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7004 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7005 echo ' '
7006 case "$otherlibdirs" in
7007 ''|' ') dflt='none' ;;
7008 *)      dflt="$otherlibdirs" ;;
7009 esac
7010 $cat <<EOM
7011 Enter a colon-separated set of extra paths to include in perl's @INC
7012 search path, or enter 'none' for no extra paths.
7013
7014 EOM
7015
7016 rp='Colon-separated list of additional directories for perl to search?'
7017 . ./myread
7018 case "$ans" in
7019 ' '|''|none)    otherlibdirs=' ' ;;     
7020 *)      otherlibdirs="$ans" ;;
7021 esac
7022 case "$otherlibdirs" in
7023 ' ') val=$undef ;;
7024 *)      val=$define ;;
7025 esac
7026 set d_perl_otherlibdirs
7027 eval $setvar
7028
7029 : Cruising for prototypes
7030 echo " "
7031 echo "Checking out function prototypes..." >&4
7032 $cat >prototype.c <<'EOCP'
7033 int main(int argc, char *argv[]) {
7034         exit(0);}
7035 EOCP
7036 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7037         echo "Your C compiler appears to support function prototypes."
7038         val="$define"
7039 else
7040         echo "Your C compiler doesn't seem to understand function prototypes."
7041         val="$undef"
7042 fi
7043 set prototype
7044 eval $setvar
7045 $rm -f prototype*
7046
7047 case "$prototype" in
7048 "$define") ;;
7049 *)      ansi2knr='ansi2knr'
7050         echo " "
7051         cat <<EOM >&4
7052
7053 $me:  FATAL ERROR:
7054 This version of $package can only be compiled by a compiler that 
7055 understands function prototypes.  Unfortunately, your C compiler 
7056         $cc $ccflags
7057 doesn't seem to understand them.  Sorry about that.
7058
7059 If GNU cc is available for your system, perhaps you could try that instead.  
7060
7061 Eventually, we hope to support building Perl with pre-ANSI compilers.
7062 If you would like to help in that effort, please contact <perlbug@perl.org>.
7063
7064 Aborting Configure now.
7065 EOM
7066         exit 2
7067         ;;
7068 esac
7069
7070 : determine where public executables go
7071 echo " "
7072 set dflt bin bin
7073 eval $prefixit
7074 fn=d~
7075 rp='Pathname where the public executables will reside?'
7076 . ./getfile
7077 if $test "X$ansexp" != "X$binexp"; then
7078         installbin=''
7079 fi
7080 bin="$ans"
7081 binexp="$ansexp"
7082 : Change installation prefix, if necessary.
7083 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7084 if $test X"$prefix" != X"$installprefix"; then
7085         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7086 else
7087         installbin="$binexp"
7088 fi
7089
7090 echo " "
7091 case "$extras" in
7092 '') dflt='n';;
7093 *) dflt='y';;
7094 esac
7095 cat <<EOM
7096 Perl can be built with extra modules or bundles of modules which
7097 will be fetched from the CPAN and installed alongside Perl.
7098
7099 Notice that you will need access to the CPAN; either via the Internet,
7100 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7101 be asked later to configure the CPAN.pm module which will in turn do
7102 the installation of the rest of the extra modules or bundles.)
7103
7104 Notice also that if the modules require any external software such as
7105 libraries and headers (the libz library and the zlib.h header for the
7106 Compress::Zlib module, for example) you MUST have any such software
7107 already installed, this configuration process will NOT install such
7108 things for you.
7109
7110 If this doesn't make any sense to you, just accept the default '$dflt'.
7111 EOM
7112 rp='Install any extra modules (y or n)?'
7113 . ./myread
7114 case "$ans" in
7115 y|Y)
7116         cat <<EOM
7117
7118 Please list any extra modules or bundles to be installed from CPAN,
7119 with spaces between the names.  The names can be in any format the
7120 'install' command of CPAN.pm will understand.  (Answer 'none',
7121 without the quotes, to install no extra modules or bundles.)
7122 EOM
7123         rp='Extras?'
7124         dflt="$extras"
7125         . ./myread
7126         extras="$ans"
7127 esac
7128 case "$extras" in
7129 ''|'none')
7130         val=''
7131         $rm -f ../extras.lst
7132         ;;
7133 *)      echo "(Saving the list of extras for later...)"
7134         echo "$extras" > ../extras.lst
7135         val="'$extras'"
7136         ;;
7137 esac
7138 set extras
7139 eval $setvar
7140 echo " "
7141
7142 : Find perl5.005 or later.
7143 echo "Looking for a previously installed perl5.005 or later... "
7144 case "$perl5" in
7145 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7146                 : Check if this perl is recent and can load a simple module
7147                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7148                         perl5=$tdir/perl
7149                         break;
7150                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7151                         perl5=$tdir/perl5
7152                         break;
7153                 fi
7154         done
7155         ;;
7156 *)      perl5="$perl5"
7157         ;;
7158 esac
7159 case "$perl5" in
7160 '')     echo "None found.  That's ok.";;
7161 *)      echo "Using $perl5." ;;
7162 esac
7163
7164 : Determine list of previous versions to include in @INC
7165 $cat > getverlist <<EOPL
7166 #!$perl5 -w
7167 use File::Basename;
7168 \$api_versionstring = "$api_versionstring";
7169 \$version = "$version";
7170 \$stem = "$sitelib_stem";
7171 \$archname = "$archname";
7172 EOPL
7173         $cat >> getverlist <<'EOPL'
7174 # Can't have leading @ because metaconfig interprets it as a command!
7175 ;@inc_version_list=();
7176 # XXX Redo to do opendir/readdir? 
7177 if (-d $stem) {
7178     chdir($stem);
7179     ;@candidates = glob("5.*");
7180 }
7181 else {
7182     ;@candidates = ();
7183 }
7184
7185 # XXX ToDo:  These comparisons must be reworked when two-digit
7186 # subversions come along, so that 5.7.10 compares as greater than
7187 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7188 # widespread that we can use the built-in version vectors rather
7189 # than reinventing them here.  For 5.6.0, however, we must
7190 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7191 foreach $d (@candidates) {
7192     if ($d lt $version) {
7193         if ($d ge $api_versionstring) {
7194             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7195         }
7196         elsif ($d ge "5.005") {
7197             unshift(@inc_version_list, grep { -d } $d);
7198         }
7199     }
7200     else {
7201         # Skip newer version.  I.e. don't look in
7202         # 5.7.0 if we're installing 5.6.1.
7203     }
7204 }
7205
7206 if (@inc_version_list) {
7207     print join(' ', @inc_version_list);
7208 }
7209 else {
7210     # Blank space to preserve value for next Configure run.
7211     print " ";
7212 }
7213 EOPL
7214 chmod +x getverlist
7215 case "$inc_version_list" in
7216 '')     if test -x "$perl5$exe_ext"; then
7217                 dflt=`$perl5 getverlist`
7218         else
7219                 dflt='none'
7220         fi
7221         ;;
7222 $undef) dflt='none' ;;
7223 *)  eval dflt=\"$inc_version_list\" ;;
7224 esac
7225 case "$dflt" in
7226 ''|' ') dflt=none ;;
7227 esac
7228 case "$dflt" in
7229 5.005) case "$bincompat5005" in
7230        $define|true|[yY]*) ;;
7231        *) dflt=none ;;
7232        esac
7233        ;;
7234 esac
7235 $cat <<'EOM'
7236
7237 In order to ease the process of upgrading, this version of perl 
7238 can be configured to use modules built and installed with earlier 
7239 versions of perl that were installed under $prefix.  Specify here
7240 the list of earlier versions that this version of perl should check.
7241 If Configure detected no earlier versions of perl installed under
7242 $prefix, then the list will be empty.  Answer 'none' to tell perl
7243 to not search earlier versions.
7244
7245 The default should almost always be sensible, so if you're not sure,
7246 just accept the default.
7247 EOM
7248
7249 rp='List of earlier versions to include in @INC?'
7250 . ./myread
7251 case "$ans" in
7252 [Nn]one|''|' ') inc_version_list=' ' ;;
7253 *) inc_version_list="$ans" ;;
7254 esac
7255 case "$inc_version_list" in
7256 ''|' ') 
7257         inc_version_list_init='0';;
7258 *)      inc_version_list_init=`echo $inc_version_list |
7259                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7260         ;;
7261 esac
7262 $rm -f getverlist
7263
7264 : determine whether to install perl also as /usr/bin/perl
7265
7266 echo " "
7267 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7268         $cat <<EOM
7269 Many scripts expect perl to be installed as /usr/bin/perl.
7270 I can install the perl you are about to compile also as /usr/bin/perl
7271 (in addition to $installbin/perl).
7272 EOM
7273         case "$installusrbinperl" in
7274         "$undef"|[nN]*) dflt='n';;
7275         *)              dflt='y';;
7276         esac
7277         rp="Do you want to install perl as /usr/bin/perl?"
7278         . ./myread
7279         case "$ans" in
7280         [yY]*)  val="$define";;
7281         *)      val="$undef" ;;
7282         esac
7283 else
7284         val="$undef"
7285 fi
7286 set installusrbinperl
7287 eval $setvar
7288
7289 : see if dld is available
7290 set dld.h i_dld
7291 eval $inhdr
7292
7293 : see if dlopen exists
7294 xxx_runnm="$runnm"
7295 runnm=false
7296 set dlopen d_dlopen
7297 eval $inlibc
7298 runnm="$xxx_runnm"
7299
7300 : determine which dynamic loading, if any, to compile in
7301 echo " "
7302 dldir="ext/DynaLoader"
7303 case "$usedl" in
7304 $define|y|true)
7305         dflt='y'
7306         usedl="$define"
7307         ;;
7308 $undef|n|false)
7309         dflt='n'
7310         usedl="$undef"
7311         ;;
7312 *) 
7313         dflt='n'
7314         case "$d_dlopen" in
7315             $define) dflt='y' ;;
7316         esac
7317         case "$i_dld" in
7318             $define) dflt='y' ;;
7319         esac
7320         : Does a dl_xxx.xs file exist for this operating system
7321         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7322         ;;
7323 esac
7324 rp="Do you wish to use dynamic loading?"
7325 . ./myread
7326 usedl="$ans"
7327 case "$ans" in
7328 y*) usedl="$define"
7329         case "$dlsrc" in
7330         '')
7331                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7332                         dflt="$dldir/dl_${osname}.xs"
7333                 elif $test "$d_dlopen" = "$define" ; then
7334                         dflt="$dldir/dl_dlopen.xs"
7335                 elif $test "$i_dld" = "$define" ; then
7336                         dflt="$dldir/dl_dld.xs"
7337                 else
7338                         dflt=''
7339                 fi
7340                 ;;
7341         *)      dflt="$dldir/$dlsrc"
7342                 ;;
7343         esac
7344     echo "The following dynamic loading files are available:"
7345         : Can not go over to $dldir because getfile has path hard-coded in.
7346         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7347         rp="Source file to use for dynamic loading"
7348         fn="fne"
7349         gfpth="$src"
7350         . ./getfile
7351         usedl="$define"
7352         : emulate basename
7353         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7354
7355         $cat << EOM
7356
7357 Some systems may require passing special flags to $cc -c to
7358 compile modules that will be used to create a shared library.
7359 To use no flags, say "none".
7360
7361 EOM
7362     case "$cccdlflags" in
7363     '') case "$gccversion" in
7364                 '') case "$osname" in
7365                         hpux)   dflt='+z' ;;
7366                         next)   dflt='none' ;;
7367                         irix*)  dflt='-KPIC' ;;
7368                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7369                         sunos)  dflt='-pic' ;;
7370                         *)      dflt='none' ;;
7371                     esac
7372                         ;;
7373                 *)  case "$osname" in
7374                         darwin) dflt='none' ;;
7375                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7376                         *)      dflt='-fpic' ;;
7377                     esac ;;
7378             esac ;;
7379         ' ') dflt='none' ;;
7380     *)  dflt="$cccdlflags" ;;
7381     esac
7382     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7383     . ./myread
7384     case "$ans" in
7385     none) cccdlflags=' ' ;;
7386     *) cccdlflags="$ans" ;;
7387     esac
7388
7389     cat << EOM
7390
7391 Some systems use ld to create libraries that can be dynamically loaded,
7392 while other systems (such as those using ELF) use $cc.
7393
7394 EOM
7395         case "$ld" in
7396         '')     $cat >try.c <<'EOM'
7397 /* Test for whether ELF binaries are produced */
7398 #include <fcntl.h>
7399 #include <stdlib.h>
7400 int main() {
7401         char b[4];
7402         int i = open("a.out",O_RDONLY);
7403         if(i == -1) 
7404                 exit(1); /* fail */
7405         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7406                 exit(0); /* succeed (yes, it's ELF) */
7407         else
7408                 exit(1); /* fail */
7409 }
7410 EOM
7411                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7412                         cat <<EOM
7413 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7414 EOM
7415                         dflt="$cc"
7416                 else
7417                         echo "I'll use ld to build dynamic libraries."
7418                         dflt='ld'
7419                 fi
7420                 rm -f try.c a.out
7421                 ;;
7422         *)      dflt="$ld"
7423                 ;;
7424         esac
7425
7426     rp="What command should be used to create dynamic libraries?"
7427     . ./myread
7428         ld="$ans"
7429
7430     cat << EOM
7431
7432 Some systems may require passing special flags to $ld to create a
7433 library that can be dynamically loaded.  If your ld flags include
7434 -L/other/path options to locate libraries outside your loader's normal
7435 search path, you may need to specify those -L options here as well.  To
7436 use no flags, say "none".
7437
7438 EOM
7439     case "$lddlflags" in
7440     '') case "$osname" in
7441                         beos) dflt='-nostart' ;;
7442                         hpux) dflt='-b';
7443                               case "$gccversion" in
7444                               '') dflt="$dflt +vnocompatwarnings" ;;
7445                               esac
7446                               ;;        
7447                         linux|irix*)    dflt='-shared' ;;
7448                         next)  dflt='none' ;;
7449                         solaris) dflt='-G' ;;
7450                         sunos) dflt='-assert nodefinitions' ;;
7451                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7452                 *)     dflt='none' ;;
7453                         esac
7454                         ;;
7455     *) dflt="$lddlflags" ;;
7456     esac
7457
7458         : Try to guess additional flags to pick up local libraries.
7459         : Be careful not to append to a plain 'none'
7460         case "$dflt" in
7461         none) dflt='' ;;
7462         esac
7463         for thisflag in $ldflags; do
7464                 case "$thisflag" in
7465                 -L*|-R*|-Wl,-R*)
7466                         case " $dflt " in
7467                         *" $thisflag "*) ;;
7468                         *) dflt="$dflt $thisflag" ;;
7469                         esac
7470                         ;;
7471                 esac
7472         done
7473
7474         case "$dflt" in
7475         ''|' ') dflt='none' ;;
7476         esac
7477
7478     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7479     . ./myread
7480     case "$ans" in
7481     none) lddlflags=' ' ;;
7482     *) lddlflags="$ans" ;;
7483     esac
7484
7485         cat <<EOM
7486
7487 Some systems may require passing special flags to $cc to indicate that
7488 the resulting executable will use dynamic linking.  To use no flags,
7489 say "none".
7490
7491 EOM
7492     case "$ccdlflags" in
7493     '') case "$osname" in
7494                 hpux)   dflt='-Wl,-E' ;;
7495                 linux)  dflt='-rdynamic' ;;
7496                 next)   dflt='none' ;;
7497                 sunos)  dflt='none' ;;
7498                 *)      dflt='none' ;;
7499             esac ;;
7500     ' ')  dflt='none' ;;
7501     *)  dflt="$ccdlflags" ;;
7502     esac
7503     rp="Any special flags to pass to $cc to use dynamic linking?"
7504     . ./myread
7505     case "$ans" in
7506     none) ccdlflags=' ' ;;
7507     *) ccdlflags="$ans" ;;
7508     esac
7509     ;;
7510 *)  usedl="$undef"
7511         ld='ld'
7512     dlsrc='dl_none.xs'
7513     lddlflags=''
7514     ccdlflags=''
7515     ;;
7516 esac
7517
7518 also=''
7519 case "$usedl" in
7520 $undef)
7521         # No dynamic loading being used, so don't bother even to prompt.
7522         useshrplib='false'
7523         ;;
7524 *)      case "$useshrplib" in
7525         '')     case "$osname" in
7526                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7527                         dflt=y
7528                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7529                         ;;
7530                 next*)
7531                         case "$osvers" in
7532                         4*)     dflt=y
7533                                 also='Building a shared libperl is needed for MAB support.'
7534                                 ;;
7535                         *)      dflt=n
7536                                 ;;
7537                         esac
7538                         ;;
7539                 *)      dflt=n
7540                         ;;
7541                 esac
7542                 ;;
7543         $define|true|[Yy]*)
7544                 dflt=y
7545                 ;;
7546         *)      dflt=n
7547                 ;;
7548         esac
7549         $cat << EOM
7550
7551 The perl executable is normally obtained by linking perlmain.c with
7552 libperl${_a}, any static extensions (usually just DynaLoader), and
7553 any other libraries needed on this system (such as -lm, etc.).  Since
7554 your system supports dynamic loading, it is probably possible to build
7555 a shared libperl.$so.  If you will have more than one executable linked
7556 to libperl.$so, this will significantly reduce the size of each
7557 executable, but it may have a noticeable affect on performance.  The
7558 default is probably sensible for your system.
7559 $also
7560
7561 EOM
7562         rp="Build a shared libperl.$so (y/n)"
7563         . ./myread
7564         case "$ans" in
7565         true|$define|[Yy]*)
7566                 useshrplib='true'  ;;
7567         *)      useshrplib='false' ;;
7568         esac
7569         ;;
7570 esac
7571
7572 case "$useshrplib" in
7573 true)
7574         case "$libperl" in
7575         '')
7576                 # Figure out a good name for libperl.so.  Since it gets stored in
7577                 # a version-specific architecture-dependent library, the version
7578                 # number isn't really that important, except for making cc/ld happy.
7579                 #
7580                 # A name such as libperl.so.3.1
7581                 majmin="libperl.$so.$patchlevel.$subversion"
7582                 # A name such as libperl.so.301
7583                 majonly=`echo $patchlevel $subversion |
7584                         $awk '{printf "%d%02d", $1, $2}'`
7585                 majonly=libperl.$so.$majonly
7586                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7587                 # rely on figuring it out from the naming of libc.
7588                 case "${osname}${osvers}" in
7589                 next4*)
7590                         dflt=libperl.5.$so
7591                         # XXX How handle the --version stuff for MAB?
7592                         ;;
7593                 linux*)  # ld won't link with a bare -lperl otherwise.
7594                         dflt=libperl.$so
7595                         ;;
7596                 cygwin*) # ld links against an importlib
7597                         dflt=libperl$lib_ext
7598                         ;;
7599                 *)      # Try to guess based on whether libc has major.minor.
7600                         case "$libc" in
7601                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7602                         *libc.$so.[0-9]*) dflt=$majonly ;;
7603                         *)      dflt=libperl.$so ;;
7604                         esac
7605                         ;;
7606                 esac
7607                 ;;
7608         *)      dflt=$libperl
7609                 ;;
7610         esac
7611         cat << EOM
7612
7613 I need to select a good name for the shared libperl.  If your system uses
7614 library names with major and minor numbers, then you might want something
7615 like $majmin.  Alternatively, if your system uses a single version
7616 number for shared libraries, then you might want to use $majonly.
7617 Or, your system might be quite happy with a simple libperl.$so.
7618
7619 Since the shared libperl will get installed into a version-specific
7620 architecture-dependent directory, the version number of the shared perl
7621 library probably isn't important, so the default should be o.k.
7622
7623 EOM
7624         rp='What name do you want to give to the shared libperl?'
7625         . ./myread
7626         libperl=$ans
7627         echo "Ok, I'll use $libperl"
7628         ;;
7629 *)
7630         libperl="libperl${_a}"
7631         ;;
7632 esac
7633
7634 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7635 case "$shrpdir" in
7636 '') ;;
7637 *)      $cat >&4 <<EOM
7638 WARNING:  Use of the shrpdir variable for the installation location of
7639 the shared $libperl is not supported.  It was never documented and
7640 will not work in this version.  Let me (perlbug@perl.org)
7641 know of any problems this may cause.
7642
7643 EOM
7644         case "$shrpdir" in
7645         "$archlibexp/CORE")
7646                 $cat >&4 <<EOM
7647 But your current setting of $shrpdir is
7648 the default anyway, so it's harmless.
7649 EOM
7650                 ;;
7651         *)
7652                 $cat >&4 <<EOM
7653 Further, your current attempted setting of $shrpdir
7654 conflicts with the value of $archlibexp/CORE
7655 that installperl will use.
7656 EOM
7657                 ;;
7658         esac
7659         ;;
7660 esac
7661
7662 # How will the perl executable find the installed shared $libperl?
7663 # Add $xxx to ccdlflags.
7664 # If we can't figure out a command-line option, use $shrpenv to
7665 # set env LD_RUN_PATH.  The main perl makefile uses this.
7666 shrpdir=$archlibexp/CORE
7667 xxx=''
7668 tmp_shrpenv=''
7669 if "$useshrplib"; then
7670     case "$osname" in 
7671         aix)
7672                 # We'll set it in Makefile.SH...
7673                 ;;
7674         solaris)
7675                 xxx="-R $shrpdir"
7676                 ;;
7677         freebsd|netbsd)
7678                 xxx="-Wl,-R$shrpdir"
7679                 ;;
7680         bsdos|linux|irix*|dec_osf)
7681                 xxx="-Wl,-rpath,$shrpdir"
7682                 ;;
7683         next)
7684                 # next doesn't like the default...
7685                 ;;
7686         beos)
7687                 # beos doesn't like the default, either.
7688                 ;;
7689         hpux*)
7690                 # hpux doesn't like the default, either.
7691                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7692                 ;;
7693         *)
7694                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7695                 ;;
7696         esac
7697         case "$xxx" in
7698         '') ;;
7699         *)      
7700                 # Only add $xxx if it isn't already in ccdlflags.
7701                 case " $ccdlflags " in
7702                 *" $xxx "*)     ;;
7703                 *)      ccdlflags="$ccdlflags $xxx"
7704                         cat <<EOM >&4
7705
7706 Adding $xxx to the flags
7707 passed to $ld so that the perl executable will find the 
7708 installed shared $libperl.
7709
7710 EOM
7711                         ;;
7712                 esac
7713                 ;;
7714         esac
7715 fi
7716 # Fix ccdlflags in AIX for building external extensions.
7717 # (For building Perl itself bare -bE:perl.exp is needed,
7718 #  Makefile.SH takes care of this.)
7719 case "$osname" in
7720 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7721 esac
7722 # Respect a hint or command-line value.
7723 case "$shrpenv" in
7724 '') shrpenv="$tmp_shrpenv" ;;
7725 esac
7726 case "$ldlibpthname" in
7727 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7728 none)   ldlibpthname='' ;;
7729 esac
7730
7731 : determine where manual pages are on this system
7732 echo " "
7733 case "$sysman" in
7734 '') 
7735         syspath='/usr/share/man/man1 /usr/man/man1'
7736         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7737         syspath="$syspath /usr/man/u_man/man1"
7738         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7739         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7740         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7741         sysman=`./loc . /usr/man/man1 $syspath`
7742         ;;
7743 esac
7744 if $test -d "$sysman"; then
7745         echo "System manual is in $sysman." >&4
7746 else
7747         echo "Could not find manual pages in source form." >&4
7748 fi
7749
7750 : determine where manual pages go
7751 set man1dir man1dir none
7752 eval $prefixit
7753 $cat <<EOM
7754
7755 $spackage has manual pages available in source form.
7756 EOM
7757 case "$nroff" in
7758 nroff)
7759         echo "However, you don't have nroff, so they're probably useless to you."
7760         case "$man1dir" in
7761         '') man1dir="none";;
7762         esac;;
7763 esac
7764 echo "If you don't want the manual sources installed, answer 'none'."
7765 case "$man1dir" in
7766 ' ') dflt=none
7767         ;;
7768 '')
7769         lookpath="$prefixexp/share/man/man1"
7770         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7771         lookpath="$lookpath $prefixexp/man/p_man/man1"
7772         lookpath="$lookpath $prefixexp/man/u_man/man1"
7773         lookpath="$lookpath $prefixexp/man/man.1"
7774         case "$sysman" in
7775         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7776         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7777         esac
7778         set dflt
7779         eval $prefixup
7780         ;;
7781 *)  dflt="$man1dir"
7782         ;;
7783 esac
7784 echo " "
7785 fn=dn+~
7786 rp="Where do the main $spackage manual pages (source) go?"
7787 . ./getfile
7788 if $test "X$man1direxp" != "X$ansexp"; then
7789         installman1dir=''
7790 fi
7791 man1dir="$ans"
7792 man1direxp="$ansexp"
7793 case "$man1dir" in
7794 '')     man1dir=' '
7795         installman1dir='';;
7796 esac
7797
7798 : Change installation prefix, if necessary.
7799 if $test X"$prefix" != X"$installprefix"; then
7800         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7801 else
7802         installman1dir="$man1direxp"
7803 fi
7804
7805 : What suffix to use on installed man pages
7806
7807 case "$man1dir" in
7808 ' ')
7809         man1ext='0'
7810         ;;
7811 *)
7812         rp="What suffix should be used for the main $spackage man pages?"
7813         case "$man1ext" in
7814         '')     case "$man1dir" in
7815                 *1)  dflt=1 ;;
7816                 *1p) dflt=1p ;;
7817                 *1pm) dflt=1pm ;;
7818                 *l) dflt=l;;
7819                 *n) dflt=n;;
7820                 *o) dflt=o;;
7821                 *p) dflt=p;;
7822                 *C) dflt=C;;
7823                 *L) dflt=L;;
7824                 *L1) dflt=L1;;
7825                 *) dflt=1;;
7826                 esac
7827                 ;;
7828         *)      dflt="$man1ext";;
7829         esac
7830         . ./myread
7831         man1ext="$ans"
7832         ;;
7833 esac
7834
7835 : see if we can have long filenames
7836 echo " "
7837 first=123456789abcdef
7838 $rm -f $first
7839 if (echo hi >$first) 2>/dev/null; then
7840         if $test -f 123456789abcde; then
7841                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7842                 val="$undef"
7843         else
7844                 echo 'You can have filenames longer than 14 characters.'>&4
7845                 val="$define"
7846         fi
7847 else
7848         $cat <<'EOM'
7849 You can't have filenames longer than 14 chars.
7850 You can't even think about them!
7851 EOM
7852         val="$undef"
7853 fi 
7854 set d_flexfnam
7855 eval $setvar
7856 $rm -rf 123456789abcde*
7857
7858 : determine where library module manual pages go
7859 set man3dir man3dir none
7860 eval $prefixit
7861 $cat <<EOM
7862
7863 $spackage has manual pages for many of the library modules.
7864 EOM
7865
7866 case "$nroff" in
7867 nroff)
7868         $cat <<'EOM'
7869 However, you don't have nroff, so they're probably useless to you.
7870 EOM
7871         case "$man3dir" in
7872         '') man3dir="none";;
7873         esac;;
7874 esac
7875
7876 case "$d_flexfnam" in
7877 undef)
7878         $cat <<'EOM'
7879 However, your system can't handle the long file names like File::Basename.3. 
7880 EOM
7881         case "$man3dir" in
7882         '') man3dir="none";;
7883         esac;;
7884 esac
7885
7886 echo "If you don't want the manual sources installed, answer 'none'."
7887 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7888 case "$man3dir" in
7889 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7890         if $test -d "$privlib/man/man3"; then
7891                 cat <<EOM >&4
7892
7893 WARNING:  Previous versions of perl installed man3 pages into
7894 $privlib/man/man3.  This version will suggest a 
7895 new default of $dflt.  
7896 EOM
7897                 tdflt=$dflt
7898                 dflt='n'
7899                 rp='Do you wish to preserve the old behavior?(y/n)'
7900                 . ./myread
7901                 case "$ans" in
7902                 y*) dflt="$privlib/man/man3" ;;
7903                 *)  dflt=$tdflt ;;
7904                 esac
7905     fi
7906         ;;
7907 *)      dflt="$man3dir" ;;
7908 esac
7909 case "$dflt" in
7910 ' ') dflt=none ;;
7911 esac
7912 echo " "
7913 fn=dn+~
7914 rp="Where do the $package library man pages (source) go?"
7915 . ./getfile
7916 man3dir="$ans"
7917 man3direxp="$ansexp"
7918 case "$man3dir" in
7919 '')     man3dir=' '
7920         installman3dir='';;
7921 esac
7922
7923 : Change installation prefix, if necessary.
7924 if $test X"$prefix" != X"$installprefix"; then
7925         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7926 else
7927         installman3dir="$man3direxp"
7928 fi
7929
7930 : What suffix to use on installed man pages
7931 case "$man3dir" in
7932 ' ')
7933         man3ext='0'
7934         ;;
7935 *)
7936         rp="What suffix should be used for the $package library man pages?"
7937         case "$man3ext" in
7938         '')     case "$man3dir" in
7939                 *3)  dflt=3 ;;
7940                 *3p) dflt=3p ;;
7941                 *3pm) dflt=3pm ;;
7942                 *l) dflt=l;;
7943                 *n) dflt=n;;
7944                 *o) dflt=o;;
7945                 *p) dflt=p;;
7946                 *C) dflt=C;;
7947                 *L) dflt=L;;
7948                 *L3) dflt=L3;;
7949                 *) dflt=3;;
7950                 esac
7951                 ;;
7952         *)      dflt="$man3ext";;
7953         esac
7954         . ./myread
7955         man3ext="$ans"
7956         ;;
7957 esac
7958
7959 : see if we have to deal with yellow pages, now NIS.
7960 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
7961         if $test -f /usr/etc/nibindd; then
7962                 echo " "
7963                 echo "I'm fairly confident you're on a NeXT."
7964                 echo " "
7965                 rp='Do you get the hosts file via NetInfo?'
7966                 dflt=y
7967                 case "$hostcat" in
7968                 nidump*) ;;
7969                 '') ;;
7970                 *) dflt=n;;
7971                 esac
7972                 . ./myread
7973                 case "$ans" in
7974                 y*) hostcat='nidump hosts .';;
7975                 *)      case "$hostcat" in
7976                         nidump*) hostcat='';;
7977                         esac
7978                         ;;
7979                 esac
7980         fi
7981         case "$hostcat" in
7982         nidump*) ;;
7983         *)
7984                 case "$hostcat" in
7985                 *ypcat*) dflt=y;;
7986                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7987                                 dflt=y
7988                         else
7989                                 dflt=n
7990                         fi;;
7991                 *) dflt=n;;
7992                 esac
7993                 echo " "
7994                 rp='Are you getting the hosts file via yellow pages?'
7995                 . ./myread
7996                 case "$ans" in
7997                 y*) hostcat='ypcat hosts';;
7998                 *) hostcat='cat /etc/hosts';;
7999                 esac
8000                 ;;
8001         esac
8002 fi
8003 case "$hostcat" in
8004 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8005 esac
8006 case "$groupcat" in
8007 '') test -f /etc/group && groupcat='cat /etc/group';;
8008 esac
8009 case "$passcat" in
8010 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8011 esac
8012
8013 : now get the host name
8014 echo " "
8015 echo "Figuring out host name..." >&4
8016 case "$myhostname" in
8017 '') cont=true
8018         echo 'Maybe "hostname" will work...'
8019         if tans=`sh -c hostname 2>&1` ; then
8020                 myhostname=$tans
8021                 phostname=hostname
8022                 cont=''
8023         fi
8024         ;;
8025 *) cont='';;
8026 esac
8027 if $test "$cont"; then
8028         if ./xenix; then
8029                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8030                 if tans=`cat /etc/systemid 2>&1` ; then
8031                         myhostname=$tans
8032                         phostname='cat /etc/systemid'
8033                         echo "Whadyaknow.  Xenix always was a bit strange..."
8034                         cont=''
8035                 fi
8036         elif $test -r /etc/systemid; then
8037                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8038         fi
8039 fi
8040 if $test "$cont"; then
8041         echo 'No, maybe "uuname -l" will work...'
8042         if tans=`sh -c 'uuname -l' 2>&1` ; then
8043                 myhostname=$tans
8044                 phostname='uuname -l'
8045         else
8046                 echo 'Strange.  Maybe "uname -n" will work...'
8047                 if tans=`sh -c 'uname -n' 2>&1` ; then
8048                         myhostname=$tans
8049                         phostname='uname -n'
8050                 else
8051                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8052                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8053                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8054                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8055                         else
8056                                 case "$myhostname" in
8057                                 '') echo "Does this machine have an identity crisis or something?"
8058                                         phostname='';;
8059                                 *)
8060                                         echo "Well, you said $myhostname before..."
8061                                         phostname='echo $myhostname';;
8062                                 esac
8063                         fi
8064                 fi
8065         fi
8066 fi
8067 case "$myhostname" in
8068 '') myhostname=noname ;;
8069 esac
8070 : you do not want to know about this
8071 set $myhostname
8072 myhostname=$1
8073
8074 : verify guess
8075 if $test "$myhostname" ; then
8076         dflt=y
8077         rp='Your host name appears to be "'$myhostname'".'" Right?"
8078         . ./myread
8079         case "$ans" in
8080         y*) ;;
8081         *) myhostname='';;
8082         esac
8083 fi
8084
8085 : bad guess or no guess
8086 while $test "X$myhostname" = X ; do
8087         dflt=''
8088         rp="Please type the (one word) name of your host:"
8089         . ./myread
8090         myhostname="$ans"
8091 done
8092
8093 : translate upper to lower if necessary
8094 case "$myhostname" in
8095 *[A-Z]*)
8096         echo "(Normalizing case in your host name)"
8097         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8098         ;;
8099 esac
8100
8101 case "$myhostname" in
8102 *.*)
8103         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8104         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8105         echo "(Trimming domain name from host name--host name is now $myhostname)"
8106         ;;
8107 *) case "$mydomain" in
8108         '')
8109                 {
8110                         test "X$hostcat" = "Xypcat hosts" &&
8111                         ypmatch "$myhostname" hosts 2>/dev/null |\
8112                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8113                         $test -s hosts
8114                 } || {
8115                         test "X$hostcat" != "X" &&
8116                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8117                                         /[       ]$myhostname[  . ]/p" > hosts
8118                 }
8119                 tmp_re="[       . ]"
8120                 if $test -f hosts; then
8121                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8122                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8123                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8124                                 hosts | $sort | $uniq | \
8125                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8126                         case `$echo X$dflt` in
8127                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8128                                 dflt=.
8129                                 ;;
8130                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8131                                 ;;
8132                         esac
8133                 else
8134                         echo "(I cannot locate a hosts database anywhere)"
8135                         dflt=.
8136                 fi
8137                 case "$dflt" in
8138                 .)
8139                         tans=`./loc resolv.conf X /etc /usr/etc`
8140                         if $test -f "$tans"; then
8141                                 echo "(Attempting domain name extraction from $tans)"
8142                                 dflt=.`$sed -n -e 's/   / /g' \
8143                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8144                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8145                                 case "$dflt" in
8146                                 .) dflt=.`$sed -n -e 's/        / /g' \
8147                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8148                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8149                                         ;;
8150                                 esac
8151                         fi
8152                         ;;
8153                 esac
8154                 case "$dflt" in
8155                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8156                         dflt=.`sh -c domainname 2>/dev/null`
8157                         case "$dflt" in
8158                         '') dflt='.';;
8159                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8160                         esac
8161                         ;;
8162                 esac
8163                 case "$dflt$osname" in
8164                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8165                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8166                         ;;
8167                 esac
8168                 case "$dflt" in
8169                 .) echo "(Lost all hope -- silly guess then)"
8170                         dflt='.nonet'
8171                         ;;
8172                 esac
8173                 $rm -f hosts
8174                 ;;
8175         *) dflt="$mydomain";;
8176         esac;;
8177 esac
8178 echo " "
8179 rp="What is your domain name?"
8180 . ./myread
8181 tans="$ans"
8182 case "$ans" in
8183 '') ;;
8184 .*) ;;
8185 *) tans=".$tans";;
8186 esac
8187 mydomain="$tans"
8188
8189 : translate upper to lower if necessary
8190 case "$mydomain" in
8191 *[A-Z]*)
8192         echo "(Normalizing case in your domain name)"
8193         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8194         ;;
8195 esac
8196
8197 : a little sanity check here
8198 case "$phostname" in
8199 '') ;;
8200 *)
8201         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8202         $myhostname$mydomain|$myhostname) ;;
8203         *)
8204                 case "$phostname" in
8205                 sed*)
8206                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8207                         ;;
8208                 *)
8209                         echo "(That doesn't agree with your $phostname command, by the way.)"
8210                         ;;
8211                 esac
8212         ;;
8213         esac
8214         ;;
8215 esac
8216
8217 $cat <<EOM
8218
8219 I need to get your e-mail address in Internet format if possible, i.e.
8220 something like user@host.domain. Please answer accurately since I have
8221 no easy means to double check it. The default value provided below
8222 is most probably close to reality but may not be valid from outside
8223 your organization...
8224
8225 EOM
8226 cont=x
8227 while test "$cont"; do
8228         case "$cf_email" in
8229         '') dflt="$cf_by@$myhostname$mydomain";;
8230         *) dflt="$cf_email";;
8231         esac
8232         rp='What is your e-mail address?'
8233         . ./myread
8234         cf_email="$ans"
8235         case "$cf_email" in
8236         *@*.*) cont='' ;;
8237         *)
8238                 rp='Address does not look like an Internet one.  Use it anyway?'
8239                 case "$fastread" in
8240                 yes) dflt=y ;;
8241                 *) dflt=n ;;
8242                 esac
8243                 . ./myread
8244                 case "$ans" in
8245                 y*) cont='' ;;
8246                 *) echo " " ;;
8247                 esac
8248                 ;;
8249         esac
8250 done
8251
8252 $cat <<EOM
8253
8254 If you or somebody else will be maintaining perl at your site, please
8255 fill in the correct e-mail address here so that they may be contacted
8256 if necessary. Currently, the "perlbug" program included with perl
8257 will send mail to this address in addition to perlbug@perl.org. You may
8258 enter "none" for no administrator.
8259
8260 EOM
8261 case "$perladmin" in
8262 '') dflt="$cf_email";;
8263 *) dflt="$perladmin";;
8264 esac
8265 rp='Perl administrator e-mail address'
8266 . ./myread
8267 perladmin="$ans"
8268
8269 : determine whether to only install version-specific parts.
8270 echo " "
8271 $cat <<EOM
8272 Do you want to install only the version-specific parts of the perl
8273 distribution?  Usually you do *not* want to do this.
8274 EOM
8275 case "$versiononly" in
8276 "$define"|[Yy]*|true) dflt='y' ;;
8277 *) dflt='n';
8278 esac
8279 rp="Do you want to install only the version-specific parts of perl?"
8280 . ./myread
8281 case "$ans" in
8282 [yY]*)  val="$define";;
8283 *)      val="$undef" ;;
8284 esac
8285 set versiononly
8286 eval $setvar
8287
8288 : figure out how to guarantee perl startup
8289 case "$startperl" in
8290 '')
8291         case "$sharpbang" in
8292         *!)
8293                 $cat <<EOH
8294
8295 I can use the #! construct to start perl on your system. This will
8296 make startup of perl scripts faster, but may cause problems if you
8297 want to share those scripts and perl is not in a standard place
8298 ($binexp/perl) on all your platforms. The alternative is to force
8299 a shell by starting the script with a single ':' character.
8300
8301 EOH
8302                 case "$versiononly" in
8303                 "$define")      dflt="$binexp/perl$version";;  
8304                 *)              dflt="$binexp/perl";;
8305                 esac
8306                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8307                 . ./myread
8308                 case "$ans" in
8309                 none)   startperl=": # use perl";;
8310                 *)      startperl="#!$ans"
8311                         if $test 30 -lt `echo "$ans" | wc -c`; then
8312                                 $cat >&4 <<EOM
8313
8314 WARNING:  Some systems limit the #! command to 32 characters.
8315 If you experience difficulty running Perl scripts with #!, try
8316 installing Perl in a directory with a shorter pathname.
8317
8318 EOM
8319                         fi ;;
8320                 esac
8321                 ;;
8322         *) startperl=": # use perl"
8323                 ;;
8324         esac
8325         ;;
8326 esac
8327 echo "I'll use $startperl to start perl scripts."
8328
8329 : figure best path for perl in scripts
8330 case "$perlpath" in
8331 '')
8332         case "$versiononly" in
8333         "$define")      perlpath="$binexp/perl$version";;
8334         *)              perlpath="$binexp/perl";;
8335         esac
8336         case "$startperl" in
8337         *!*) ;;
8338         *)
8339                 $cat <<EOH
8340
8341 I will use the "eval 'exec'" idiom to start Perl on your system.
8342 I can use the full path of your Perl binary for this purpose, but
8343 doing so may cause problems if you want to share those scripts and
8344 Perl is not always in a standard place ($binexp/perl).
8345
8346 EOH
8347                 dflt="$binexp/perl"
8348                 rp="What path shall I use in \"eval 'exec'\"?"
8349                 . ./myread
8350                 perlpath="$ans"
8351                 ;;
8352         esac
8353         ;;
8354 esac
8355 case "$startperl" in
8356 *!*)    ;;
8357 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8358 esac
8359
8360 : determine where public executable scripts go
8361 set scriptdir scriptdir
8362 eval $prefixit
8363 case "$scriptdir" in
8364 '')
8365         dflt="$bin"
8366         : guess some guesses
8367         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8368         $test -d /usr/share/bin     && dflt=/usr/share/bin
8369         $test -d /usr/local/script  && dflt=/usr/local/script
8370         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8371         $test -d $prefixexp/script  && dflt=$prefixexp/script
8372         set dflt
8373         eval $prefixup
8374         ;;
8375 *)  dflt="$scriptdir"
8376         ;;
8377 esac
8378 $cat <<EOM
8379  
8380 Some installations have a separate directory just for executable scripts so
8381 that they can mount it across multiple architectures but keep the scripts in
8382 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8383 Or you might just lump your scripts in with all your other executables.
8384  
8385 EOM
8386 fn=d~
8387 rp='Where do you keep publicly executable scripts?'
8388 . ./getfile
8389 if $test "X$ansexp" != "X$scriptdirexp"; then
8390         installscript=''
8391 fi
8392 scriptdir="$ans"
8393 scriptdirexp="$ansexp"
8394 : Change installation prefix, if necessary.
8395 if $test X"$prefix" != X"$installprefix"; then
8396         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8397 else
8398         installscript="$scriptdirexp"
8399 fi
8400
8401 : determine where add-on public executables go
8402 case "$sitebin" in
8403 '')     dflt=$siteprefix/bin ;;
8404 *)      dflt=$sitebin ;;
8405 esac
8406 fn=d~
8407 rp='Pathname where the add-on public executables should be installed?'
8408 . ./getfile
8409 sitebin="$ans"
8410 sitebinexp="$ansexp"
8411 : Change installation prefix, if necessary.
8412 if $test X"$prefix" != X"$installprefix"; then
8413         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8414 else
8415         installsitebin="$sitebinexp"
8416 fi
8417
8418 : define an is-a-typedef? function
8419 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8420 case "$inclist" in
8421 "") inclist="sys/types.h";;
8422 esac;
8423 eval "varval=\$$var";
8424 case "$varval" in
8425 "")
8426         $rm -f temp.c;
8427         for inc in $inclist; do
8428                 echo "#include <$inc>" >>temp.c;
8429         done;
8430         echo "#ifdef $type" >> temp.c;
8431         echo "printf(\"We have $type\");" >> temp.c;
8432         echo "#endif" >> temp.c;
8433         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8434         if $contains $type temp.E >/dev/null 2>&1; then
8435                 eval "$var=\$type";
8436         else
8437                 eval "$var=\$def";
8438         fi;
8439         $rm -f temp.?;;
8440 *) eval "$var=\$varval";;
8441 esac'
8442
8443 : define an is-a-typedef? function that prompts if the type is not available.
8444 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8445 case "$inclist" in
8446 "") inclist="sys/types.h";;
8447 esac;
8448 eval "varval=\$$var";
8449 case "$varval" in
8450 "")
8451         $rm -f temp.c;
8452         for inc in $inclist; do
8453                 echo "#include <$inc>" >>temp.c;
8454         done;
8455         echo "#ifdef $type" >> temp.c;
8456         echo "printf(\"We have $type\");" >> temp.c;
8457         echo "#endif" >> temp.c;
8458         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8459         echo " " ;
8460         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8461         if $contains $type temp.E >/dev/null 2>&1; then
8462                 echo "$type found." >&4;
8463                 eval "$var=\$type";
8464         else
8465                 echo "$type NOT found." >&4;
8466                 dflt="$def";
8467                 . ./myread ;
8468                 eval "$var=\$ans";
8469         fi;
8470         $rm -f temp.?;;
8471 *) eval "$var=\$varval";;
8472 esac'
8473
8474 : see what type lseek is declared as in the kernel
8475 rp="What is the type used for lseek's offset on this system?"
8476 set off_t lseektype long stdio.h sys/types.h
8477 eval $typedef_ask
8478
8479 echo " "
8480 echo "Checking to see how big your file offsets are..." >&4
8481 $cat >try.c <<EOCP
8482 #include <sys/types.h>
8483 #include <stdio.h>
8484 int main()
8485 {
8486     printf("%d\n", (int)sizeof($lseektype));
8487     return(0); 
8488 }
8489 EOCP
8490 set try
8491 if eval $compile_ok; then
8492         lseeksize=`$run ./try`
8493         echo "Your file offsets are $lseeksize bytes long."
8494 else
8495         dflt=$longsize
8496         echo " "
8497         echo "(I can't seem to compile the test program.  Guessing...)"
8498         rp="What is the size of your file offsets (in bytes)?"
8499         . ./myread
8500         lseeksize="$ans"
8501 fi
8502 $rm -f try.c try
8503
8504 : see what type file positions are declared as in the library
8505 rp="What is the type for file position used by fsetpos()?"
8506 set fpos_t fpostype long stdio.h sys/types.h
8507 eval $typedef_ask
8508
8509 echo " "
8510 case "$fpostype" in
8511 *_t) zzz="$fpostype"    ;;
8512 *)   zzz="fpos_t"       ;;
8513 esac
8514 echo "Checking the size of $zzz..." >&4 
8515 cat > try.c <<EOCP
8516 #include <sys/types.h>
8517 #include <stdio.h>
8518 int main() {
8519     printf("%d\n", (int)sizeof($fpostype));
8520     exit(0);
8521 }
8522 EOCP
8523 set try
8524 if eval $compile_ok; then
8525         yyy=`$run ./try`
8526         case "$yyy" in
8527         '')     fpossize=4
8528                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8529                 ;;
8530         *)      fpossize=$yyy
8531                 echo "Your $zzz is $fpossize bytes long."
8532                 ;;
8533         esac
8534 else
8535         dflt="$longsize"
8536         echo " " >&4
8537         echo "(I can't compile the test program.  Guessing...)" >&4
8538         rp="What is the size of your file positions (in bytes)?"
8539         . ./myread
8540         fpossize="$ans"
8541 fi
8542
8543
8544
8545 # Backward compatibility (uselfs is deprecated).
8546 case "$uselfs" in
8547 "$define"|true|[yY]*)
8548         cat <<EOM >&4
8549
8550 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8551 EOM
8552         uselargefiles="$define"
8553         ;;
8554 esac                          
8555
8556 case "$lseeksize:$fpossize" in
8557 8:8) cat <<EOM
8558
8559 You can have files larger than 2 gigabytes.
8560 EOM
8561    val="$define" ;;
8562 *)    case "$uselargefiles" in
8563    "$undef"|false|[nN]*) dflt='n' ;;
8564    *)   dflt='y' ;;
8565    esac
8566    cat <<EOM
8567
8568 Perl can be built to understand large files (files larger than 2 gigabytes)
8569 on some systems.  To do so, Configure can be run with -Duselargefiles.
8570
8571 If this doesn't make any sense to you, just accept the default '$dflt'.
8572 EOM
8573    rp='Try to understand large files, if available?'
8574    . ./myread
8575    case "$ans" in
8576    y|Y)         val="$define" ;;
8577    *)           val="$undef"  ;;
8578    esac
8579    ;;
8580 esac
8581 set uselargefiles
8582 eval $setvar
8583 case "$uselargefiles" in
8584 "$define")
8585 : Look for a hint-file generated 'call-back-unit'.  If the
8586 : user has specified that a large files perl is to be built,
8587 : we may need to set or change some other defaults.
8588         if $test -f uselargefiles.cbu; then
8589                 echo "Your platform has some specific hints for large file builds, using them..."
8590                 . ./uselargefiles.cbu
8591                 echo " "
8592                 echo "Rechecking to see how big your file offsets are..." >&4
8593                 $cat >try.c <<EOCP
8594 #include <sys/types.h>
8595 #include <stdio.h>
8596 int main()
8597 {
8598     printf("%d\n", (int)sizeof($lseektype));
8599     return(0); 
8600 }
8601 EOCP
8602                 set try
8603                 if eval $compile_ok; then
8604                         lseeksize=`$run ./try`
8605                         $echo "Your file offsets are now $lseeksize bytes long."
8606                 else
8607                         dflt="$lseeksize"
8608                         echo " "
8609                         echo "(I can't seem to compile the test program.  Guessing...)"
8610                         rp="What is the size of your file offsets (in bytes)?"
8611                         . ./myread
8612                         lseeksize="$ans"
8613                 fi
8614                 case "$fpostype" in
8615                 *_t) zzz="$fpostype"    ;;
8616                 *)   zzz="fpos_t"       ;;
8617                 esac
8618                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8619                 $cat > try.c <<EOCP
8620 #include <sys/types.h>
8621 #include <stdio.h>
8622 int main() {
8623     printf("%d\n", (int)sizeof($fpostype));
8624     exit(0);
8625 }
8626 EOCP
8627                 set try
8628                 if eval $compile_ok; then
8629                         yyy=`$run ./try`
8630                         dflt="$lseeksize"
8631                         case "$yyy" in
8632                         '')     echo " "
8633                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8634                                 ;;
8635                         *)      fpossize=$yyy
8636                                 echo " $fpossize bytes." >&4
8637                                 ;;
8638                         esac
8639                 else
8640                         dflt="$fpossize"
8641                         echo " "
8642                         echo "(I can't compile the test program.  Guessing...)" >&4
8643                         rp="What is the size of your file positions (in bytes)?"
8644                         . ./myread
8645                         fpossize="$ans"
8646                 fi
8647                 $rm -f try.c try
8648         fi
8649         ;;
8650 esac
8651
8652 case "$vendorprefix" in
8653 '')     d_vendorbin="$undef"
8654         vendorbin=''
8655         vendorbinexp=''
8656         ;;
8657 *)      d_vendorbin="$define"
8658         : determine where vendor-supplied executables go.
8659         case "$vendorbin" in
8660         '') dflt=$vendorprefix/bin ;;
8661         *)      dflt="$vendorbin" ;;
8662         esac
8663         fn=d~+
8664         rp='Pathname for the vendor-supplied executables directory?'
8665         . ./getfile
8666         vendorbin="$ans"
8667         vendorbinexp="$ansexp"
8668         ;;
8669 esac
8670 : Change installation prefix, if necessary.
8671 if $test X"$prefix" != X"$installprefix"; then
8672         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8673 else
8674         installvendorbin="$vendorbinexp"
8675 fi
8676
8677 : see if qgcvt exists
8678 set qgcvt d_qgcvt
8679 eval $inlibc
8680
8681 : Check how to convert floats to strings.
8682
8683 if test "X$d_Gconvert" = X; then
8684
8685 echo " "
8686 echo "Checking for an efficient way to convert floats to strings."
8687 echo " " > try.c
8688 case "$uselongdouble" in
8689 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8690 esac
8691 case "$d_longdbl" in
8692 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8693 esac
8694 case "$d_PRIgldbl" in
8695 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8696 esac
8697 $cat >>try.c <<EOP
8698 #ifdef TRY_gconvert
8699 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8700 char *myname = "gconvert";
8701 #endif
8702 #ifdef TRY_gcvt
8703 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8704 char *myname = "gcvt";
8705 #endif
8706 #ifdef TRY_qgcvt
8707 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8708 char *myname = "qgcvt";
8709 #define DOUBLETYPE long double
8710 #endif
8711 #ifdef TRY_sprintf
8712 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8713 #ifdef HAS_PRIgldbl
8714 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8715 #else
8716 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8717 #endif
8718 #else
8719 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8720 #endif
8721 char *myname = "sprintf";
8722 #endif
8723
8724 #ifndef DOUBLETYPE
8725 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8726 #define DOUBLETYPE long double
8727 #else
8728 #define DOUBLETYPE double
8729 #endif
8730 #endif
8731
8732 #include <stdio.h>
8733
8734 #define I_STDLIB $i_stdlib
8735 #ifdef I_STDLIB
8736 #include <stdlib.h>
8737 #endif
8738
8739 int
8740 checkit(expect, got)
8741 char *expect;
8742 char *got;
8743 {
8744     if (strcmp(expect, got)) {
8745                 printf("%s oddity:  Expected %s, got %s\n",
8746                         myname, expect, got);
8747                 exit(1);
8748         }
8749 }
8750
8751 int main()
8752
8753         char buf[64]; 
8754         buf[63] = '\0';
8755
8756         /* This must be 1st test on (which?) platform */
8757         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8758         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8759         checkit("0.1", buf);
8760
8761         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
8762         checkit("0.01", buf);
8763
8764         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
8765         checkit("0.001", buf);
8766
8767         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
8768         checkit("0.0001", buf);
8769
8770         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8771         if (strlen(buf) > 5)
8772             checkit("9e-005", buf); /* for Microsoft ?? */
8773         else
8774             checkit("9e-05", buf);
8775
8776         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8777         checkit("1", buf);
8778
8779         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8780         checkit("1.1", buf);
8781
8782         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8783         checkit("1.01", buf);
8784
8785         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8786         checkit("1.001", buf);
8787
8788         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8789         checkit("1.0001", buf);
8790
8791         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8792         checkit("1.00001", buf);
8793
8794         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8795         checkit("1.000001", buf);
8796
8797         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8798         checkit("0", buf);
8799
8800         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8801         checkit("-1", buf);
8802
8803         /* Some Linux gcvt's give 1.e+5 here. */
8804         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8805         checkit("100000", buf);
8806         
8807         /* Some Linux gcvt's give -1.e+5 here. */
8808         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8809         checkit("-100000", buf);
8810
8811         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8812         checkit("123.456", buf);
8813
8814         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8815         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8816         if (strlen(buf) > 5)
8817             checkit("1e+030", buf); /* for Microsoft */
8818         else
8819             checkit("1e+30", buf);
8820
8821         /* For Perl, if you add additional tests here, also add them to
8822          * t/base/num.t for benefit of platforms not using Configure or
8823          * overriding d_Gconvert */
8824
8825         exit(0);
8826 }
8827 EOP
8828 : first add preferred functions to our list
8829 xxx_list=""
8830 for xxx_convert in $gconvert_preference; do
8831     case $xxx_convert in
8832     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8833     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8834     esac 
8835 done
8836 : then add any others
8837 for xxx_convert in gconvert gcvt sprintf; do
8838     case "$xxx_list" in
8839     *$xxx_convert*) ;;
8840     *) xxx_list="$xxx_list $xxx_convert" ;;
8841     esac 
8842 done
8843
8844 case "$d_longdbl$uselongdouble" in
8845 "$define$define")
8846     : again, add prefered functions to our list first
8847     xxx_ld_list=""
8848     for xxx_convert in $gconvert_ld_preference; do
8849         case $xxx_convert in
8850         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8851         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8852         esac
8853     done
8854     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8855     for xxx_convert in qgcvt sprintf $xxx_list; do
8856         case "$xxx_ld_list" in
8857         $xxx_convert*|*" $xxx_convert"*) ;;
8858         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8859         esac
8860     done
8861     : if sprintf cannot do long doubles, move it to the end
8862     if test "$d_PRIgldbl" != "$define"; then
8863         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8864     fi
8865     : if no qgcvt, remove it
8866     if test "$d_qgcvt" != "$define"; then
8867         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8868     fi
8869     : use the ld_list
8870     xxx_list="$xxx_ld_list"
8871     ;;
8872 esac
8873
8874 for xxx_convert in $xxx_list; do
8875         echo "Trying $xxx_convert..."
8876         $rm -f try try$_o
8877         set try -DTRY_$xxx_convert
8878         if eval $compile; then
8879                 echo "$xxx_convert() found." >&4
8880                 if $run ./try; then
8881                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8882                         break;
8883                 else
8884                         echo "...But $xxx_convert didn't work as I expected."
8885                         xxx_convert=''
8886                 fi
8887         else
8888                 echo "$xxx_convert NOT found." >&4
8889         fi
8890 done
8891
8892 if test X$xxx_convert = X; then
8893     echo "*** WHOA THERE!!! ***" >&4
8894     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
8895     xxx_convert=sprintf
8896 fi
8897
8898 case "$xxx_convert" in
8899 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8900 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8901 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8902 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8903    "$define$define$define")
8904       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8905    "$define$define$undef")
8906       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
8907    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8908    esac
8909    ;;  
8910 esac
8911
8912 fi
8913
8914 : see if _fwalk exists
8915 set fwalk d__fwalk
8916 eval $inlibc
8917
8918 : Initialize h_fcntl
8919 h_fcntl=false
8920
8921 : Initialize h_sysfile
8922 h_sysfile=false
8923
8924 : access call always available on UNIX
8925 set access d_access
8926 eval $inlibc
8927
8928 : locate the flags for 'access()'
8929 case "$d_access" in
8930 "$define")
8931         echo " "
8932         $cat >access.c <<'EOCP'
8933 #include <sys/types.h>
8934 #ifdef I_FCNTL
8935 #include <fcntl.h>
8936 #endif
8937 #ifdef I_SYS_FILE
8938 #include <sys/file.h>
8939 #endif
8940 #ifdef I_UNISTD
8941 #include <unistd.h>
8942 #endif
8943 int main() {
8944         exit(R_OK);
8945 }
8946 EOCP
8947         : check sys/file.h first, no particular reason here
8948         if $test `./findhdr sys/file.h` && \
8949                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8950                 h_sysfile=true;
8951                 echo "<sys/file.h> defines the *_OK access constants." >&4
8952         elif $test `./findhdr fcntl.h` && \
8953                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8954                 h_fcntl=true;
8955                 echo "<fcntl.h> defines the *_OK access constants." >&4
8956         elif $test `./findhdr unistd.h` && \
8957                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8958                 echo "<unistd.h> defines the *_OK access constants." >&4
8959         else
8960                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8961         fi
8962         ;;
8963 esac
8964 $rm -f access*
8965
8966 : see if accessx exists
8967 set accessx d_accessx
8968 eval $inlibc
8969
8970 : see if alarm exists
8971 set alarm d_alarm
8972 eval $inlibc
8973
8974 : see if atolf exists
8975 set atolf d_atolf
8976 eval $inlibc
8977
8978 : see if atoll exists
8979 set atoll d_atoll
8980 eval $inlibc
8981
8982 : Look for GNU-cc style attribute checking
8983 echo " "
8984 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8985 $cat >attrib.c <<'EOCP'
8986 #include <stdio.h>
8987 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8988 EOCP
8989 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8990         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8991                 echo "Your C compiler doesn't fully support __attribute__."
8992                 val="$undef"
8993         else
8994                 echo "Your C compiler supports __attribute__."
8995                 val="$define"
8996         fi
8997 else
8998         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8999         val="$undef"
9000 fi
9001 set d_attribut
9002 eval $setvar
9003 $rm -f attrib*
9004
9005 : see if bcmp exists
9006 set bcmp d_bcmp
9007 eval $inlibc
9008
9009 : see if bcopy exists
9010 set bcopy d_bcopy
9011 eval $inlibc
9012
9013 : see if this is a unistd.h system
9014 set unistd.h i_unistd
9015 eval $inhdr
9016
9017 : see if getpgrp exists
9018 set getpgrp d_getpgrp
9019 eval $inlibc
9020
9021 case "$d_getpgrp" in
9022 "$define")
9023         echo " "
9024         echo "Checking to see which flavor of getpgrp is in use..."
9025         $cat >try.c <<EOP
9026 #$i_unistd I_UNISTD
9027 #include <sys/types.h>
9028 #ifdef I_UNISTD
9029 #  include <unistd.h>
9030 #endif
9031 int main()
9032 {
9033         if (getuid() == 0) {
9034                 printf("(I see you are running Configure as super-user...)\n");
9035                 setuid(1);
9036         }
9037 #ifdef TRY_BSD_PGRP
9038         if (getpgrp(1) == 0)
9039                 exit(0);
9040 #else
9041         if (getpgrp() > 0)
9042                 exit(0);
9043 #endif
9044         exit(1);
9045 }
9046 EOP
9047         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9048                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9049                 val="$define"
9050         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9051                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9052                 val="$undef"
9053         else
9054                 echo "I can't seem to compile and run the test program."
9055                 if ./usg; then
9056                         xxx="a USG one, i.e. you use getpgrp()."
9057                 else
9058                         # SVR4 systems can appear rather BSD-ish.
9059                         case "$i_unistd" in
9060                         $undef)
9061                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9062                                 val="$define"
9063                                 ;;
9064                         $define)
9065                                 xxx="probably a USG one, i.e. you use getpgrp()."
9066                                 val="$undef"
9067                                 ;;
9068                         esac
9069                 fi
9070                 echo "Assuming your getpgrp is $xxx" >&4
9071         fi
9072         ;;
9073 *) val="$undef";;
9074 esac
9075 set d_bsdgetpgrp
9076 eval $setvar
9077 $rm -f try try.*
9078
9079 : see if setpgrp exists
9080 set setpgrp d_setpgrp
9081 eval $inlibc
9082
9083 case "$d_setpgrp" in
9084 "$define")
9085         echo " "
9086         echo "Checking to see which flavor of setpgrp is in use..."
9087         $cat >try.c <<EOP
9088 #$i_unistd I_UNISTD
9089 #include <sys/types.h>
9090 #ifdef I_UNISTD
9091 #  include <unistd.h>
9092 #endif
9093 int main()
9094 {
9095         if (getuid() == 0) {
9096                 printf("(I see you are running Configure as super-user...)\n");
9097                 setuid(1);
9098         }
9099 #ifdef TRY_BSD_PGRP
9100         if (-1 == setpgrp(1, 1))
9101                 exit(0);
9102 #else
9103         if (setpgrp() != -1)
9104                 exit(0);
9105 #endif
9106         exit(1);
9107 }
9108 EOP
9109         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9110                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9111                 val="$define"
9112         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9113                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9114                 val="$undef"
9115         else
9116                 echo "(I can't seem to compile and run the test program.)"
9117                 if ./usg; then
9118                         xxx="a USG one, i.e. you use setpgrp()."
9119                 else
9120                         # SVR4 systems can appear rather BSD-ish.
9121                         case "$i_unistd" in
9122                         $undef)
9123                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9124                                 val="$define"
9125                                 ;;
9126                         $define)
9127                                 xxx="probably a USG one, i.e. you use setpgrp()."
9128                                 val="$undef"
9129                                 ;;
9130                         esac
9131                 fi
9132                 echo "Assuming your setpgrp is $xxx" >&4
9133         fi
9134         ;;
9135 *) val="$undef";;
9136 esac
9137 set d_bsdsetpgrp
9138 eval $setvar
9139 $rm -f try try.*
9140 : see if bzero exists
9141 set bzero d_bzero
9142 eval $inlibc
9143
9144 : see if signal is declared as pointer to function returning int or void
9145 echo " "
9146 xxx=`./findhdr signal.h`
9147 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9148 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9149         echo "You have int (*signal())() instead of void." >&4
9150         val="$undef"
9151 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9152         echo "You have void (*signal())()." >&4
9153         val="$define"
9154 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9155         echo "You have int (*signal())() instead of void." >&4
9156         val="$undef"
9157 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9158         echo "You have void (*signal())()." >&4
9159         val="$define"
9160 else
9161         case "$d_voidsig" in
9162         '')
9163         echo "I can't determine whether signal handler returns void or int..." >&4
9164                 dflt=void
9165                 rp="What type does your signal handler return?"
9166                 . ./myread
9167                 case "$ans" in
9168                 v*) val="$define";;
9169                 *) val="$undef";;
9170                 esac;;
9171         "$define")
9172                 echo "As you already told me, signal handler returns void." >&4
9173                 val="$define"
9174                 ;;
9175         *)      echo "As you already told me, signal handler returns int." >&4
9176                 val="$undef"
9177                 ;;
9178         esac
9179 fi
9180 set d_voidsig
9181 eval $setvar
9182 case "$d_voidsig" in
9183 "$define") signal_t="void";;
9184 *) signal_t="int";;
9185 esac
9186 $rm -f $$.tmp
9187
9188 : check for ability to cast large floats to 32-bit ints.
9189 echo " "
9190 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9191 if $test "$intsize" -ge 4; then
9192         xxx=int
9193 else
9194         xxx=long
9195 fi
9196 $cat >try.c <<EOCP
9197 #include <stdio.h>
9198 #include <sys/types.h>
9199 #include <signal.h>
9200 $signal_t blech(s) int s; { exit(3); }
9201 int main()
9202 {
9203         $xxx i32;
9204         double f, g;
9205         int result = 0;
9206         char str[16];
9207         signal(SIGFPE, blech);
9208
9209         /* Don't let compiler optimize the test away.  Store the number 
9210            in a writable string for gcc to pass to sscanf under HP/UX.
9211         */
9212         sprintf(str, "2147483647");
9213         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9214         g = 10 * f;
9215         i32  = ($xxx) g;
9216
9217         /* x86 processors will probably give 0x8000 0000, which is a
9218        sign change.  We don't want that.  We want to mimic SPARC
9219            behavior here, which is to preserve the sign and give
9220            back 0x7fff ffff.
9221         */
9222         if (i32 != ($xxx) f)
9223                 result |= 1;
9224         exit(result);
9225 }
9226 EOCP
9227 set try
9228 if eval $compile_ok; then
9229         $run ./try
9230         yyy=$?
9231 else
9232         echo "(I can't seem to compile the test program--assuming it can't)"
9233         yyy=1
9234 fi
9235 case "$yyy" in
9236 0)      val="$define"
9237         echo "Yup, it can."
9238         ;;
9239 *)      val="$undef"
9240         echo "Nope, it can't."
9241         ;;
9242 esac
9243 set d_casti32
9244 eval $setvar
9245 $rm -f try try.*
9246
9247 : check for ability to cast negative floats to unsigned
9248 echo " "
9249 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9250 $cat >try.c <<EOCP
9251 #include <stdio.h>
9252 #include <sys/types.h>
9253 #include <signal.h>
9254 $signal_t blech(s) int s; { exit(7); }
9255 $signal_t blech_in_list(s) int s; { exit(4); }
9256 unsigned long dummy_long(p) unsigned long p; { return p; }
9257 unsigned int dummy_int(p) unsigned int p; { return p; }
9258 unsigned short dummy_short(p) unsigned short p; { return p; }
9259 int main()
9260 {
9261         double f;
9262         unsigned long along;
9263         unsigned int aint;
9264         unsigned short ashort;
9265         int result = 0;
9266         char str[16];
9267         
9268         /* Frustrate gcc-2.7.2's optimizer which failed this test with
9269            a direct f = -123. assignment.  gcc-2.8.0 reportedly
9270            optimized the whole file away
9271         */
9272         /* Store the number in a writable string for gcc to pass to 
9273            sscanf under HP/UX.
9274         */
9275         sprintf(str, "-123");
9276         sscanf(str, "%lf", &f);  /* f = -123.; */
9277
9278         signal(SIGFPE, blech);
9279         along = (unsigned long)f;
9280         aint = (unsigned int)f;
9281         ashort = (unsigned short)f;
9282         if (along != (unsigned long)-123)
9283                 result |= 1;
9284         if (aint != (unsigned int)-123)
9285                 result |= 1;
9286         if (ashort != (unsigned short)-123)
9287                 result |= 1;
9288         sprintf(str, "1073741824.");
9289         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9290         f = f + f;
9291         along = 0;
9292         along = (unsigned long)f;
9293         if (along != 0x80000000)
9294                 result |= 2;
9295         f -= 1.;
9296         along = 0;
9297         along = (unsigned long)f;
9298         if (along != 0x7fffffff)
9299                 result |= 1;
9300         f += 2.;
9301         along = 0;
9302         along = (unsigned long)f;
9303         if (along != 0x80000001)
9304                 result |= 2;
9305         if (result)
9306                 exit(result);
9307         signal(SIGFPE, blech_in_list);
9308         sprintf(str, "123.");
9309         sscanf(str, "%lf", &f);  /* f = 123.; */
9310         along = dummy_long((unsigned long)f);
9311         aint = dummy_int((unsigned int)f);
9312         ashort = dummy_short((unsigned short)f);
9313         if (along != (unsigned long)123)
9314                 result |= 4;
9315         if (aint != (unsigned int)123)
9316                 result |= 4;
9317         if (ashort != (unsigned short)123)
9318                 result |= 4;
9319         exit(result);
9320
9321 }
9322 EOCP
9323 set try
9324 if eval $compile_ok; then
9325         $run ./try
9326         castflags=$?
9327 else
9328         echo "(I can't seem to compile the test program--assuming it can't)"
9329         castflags=7
9330 fi
9331 case "$castflags" in
9332 0)      val="$define"
9333         echo "Yup, it can."
9334         ;;
9335 *)      val="$undef"
9336         echo "Nope, it can't."
9337         ;;
9338 esac
9339 set d_castneg
9340 eval $setvar
9341 $rm -f try.*
9342
9343 : see if vprintf exists
9344 echo " "
9345 if set vprintf val -f d_vprintf; eval $csym; $val; then
9346         echo 'vprintf() found.' >&4
9347         val="$define"
9348         $cat >try.c <<'EOF'
9349 #include <varargs.h>
9350
9351 int main() { xxx("foo"); }
9352
9353 xxx(va_alist)
9354 va_dcl
9355 {
9356         va_list args;
9357         char buf[10];
9358
9359         va_start(args);
9360         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9361 }
9362 EOF
9363         set try
9364         if eval $compile && $run ./try; then
9365                 echo "Your vsprintf() returns (int)." >&4
9366                 val2="$undef"
9367         else
9368                 echo "Your vsprintf() returns (char*)." >&4
9369                 val2="$define"
9370         fi
9371 else
9372         echo 'vprintf() NOT found.' >&4
9373                 val="$undef"
9374                 val2="$undef"
9375 fi
9376 $rm -f try try.*
9377 set d_vprintf
9378 eval $setvar
9379 val=$val2
9380 set d_charvspr
9381 eval $setvar
9382
9383 : see if chown exists
9384 set chown d_chown
9385 eval $inlibc
9386
9387 : see if chroot exists
9388 set chroot d_chroot
9389 eval $inlibc
9390
9391 : see if chsize exists
9392 set chsize d_chsize
9393 eval $inlibc
9394
9395 : see if class exists
9396 set class d_class
9397 eval $inlibc
9398
9399 hasstruct='varname=$1; struct=$2; shift; shift;
9400 while $test $# -ge 2; do
9401         case "$1" in
9402         $define) echo "#include <$2>";;
9403         esac ;
9404     shift 2;
9405 done > try.c;
9406 echo "int main () { struct $struct foo; }" >> try.c;
9407 set try;
9408 if eval $compile; then
9409         val="$define";
9410 else
9411         val="$undef";
9412 fi;
9413 set $varname;
9414 eval $setvar;
9415 $rm -f try.c try.o'
9416
9417 : see if sys/types.h has to be included
9418 set sys/types.h i_systypes
9419 eval $inhdr
9420
9421 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9422 while $test $# -ge 2; do
9423         case "$1" in
9424         $define) echo "#include <$2>";;
9425         esac ;
9426     shift 2;
9427 done > try.c;
9428 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9429 set try;
9430 if eval $compile; then
9431         val="$define";
9432 else
9433         val="$undef";
9434 fi;
9435 set $varname;
9436 eval $setvar;
9437 $rm -f try.c try.o'
9438
9439 socketlib=''
9440 sockethdr=''
9441 : see whether socket exists
9442 echo " "
9443 $echo $n "Hmm... $c" >&4
9444 if set socket val -f d_socket; eval $csym; $val; then
9445         echo "Looks like you have Berkeley networking support." >&4
9446         d_socket="$define"
9447         if set setsockopt val -f; eval $csym; $val; then
9448                 d_oldsock="$undef"
9449         else
9450                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9451                 d_oldsock="$define"
9452         fi
9453 else
9454         if $contains socklib libc.list >/dev/null 2>&1; then
9455                 echo "Looks like you have Berkeley networking support." >&4
9456                 d_socket="$define"
9457                 : we will have to assume that it supports the 4.2 BSD interface
9458                 d_oldsock="$undef"
9459         else
9460                 echo "You don't have Berkeley networking in libc$_a..." >&4
9461                 if test "X$d_socket" = "X$define"; then
9462                    echo "...but you seem to believe that you have sockets." >&4
9463                 else
9464                         for net in net socket
9465                         do
9466                                 if test -f /usr/lib/lib$net$_a; then
9467                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9468                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9469                                         if $contains socket libc.list >/dev/null 2>&1; then
9470                                                 d_socket="$define"
9471                                                 socketlib="-l$net"
9472                                                 case "$net" in
9473                                                 net)
9474                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9475                                                         sockethdr="-I/usr/netinclude"
9476                                                         ;;
9477                                                 esac
9478                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
9479                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9480                                                         d_oldsock="$undef"
9481                                                 else
9482                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9483                                                         d_oldsock="$define"
9484                                                 fi
9485                                                 break
9486                                         fi
9487                                 fi
9488                         done
9489                         if test "X$d_socket" != "X$define"; then
9490                            echo "or anywhere else I see." >&4
9491                            d_socket="$undef"
9492                            d_oldsock="$undef"
9493                         fi
9494                 fi
9495         fi
9496 fi
9497
9498 : see if socketpair exists
9499 set socketpair d_sockpair
9500 eval $inlibc
9501
9502
9503 echo " "
9504 echo "Checking the availability of certain socket constants..." >&4
9505 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9506         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9507         $cat >try.c <<EOF
9508 #include <sys/types.h>
9509 #include <sys/socket.h>
9510 int main() {
9511     int i = $ENUM;
9512 }
9513 EOF
9514         val="$undef"
9515         set try; if eval $compile; then
9516                 val="$define"
9517         fi
9518         set d_${enum}; eval $setvar
9519         $rm -f try.c try
9520 done
9521
9522 : see if this is a sys/uio.h system
9523 set sys/uio.h i_sysuio
9524 eval $inhdr
9525
9526
9527 echo " "
9528 echo "Checking to see if your system supports struct cmsghdr..." >&4
9529 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9530 eval $hasstruct
9531 case "$d_cmsghdr_s" in
9532 "$define")      echo "Yes, it does."   ;;
9533 *)              echo "No, it doesn't." ;;
9534 esac
9535
9536
9537 : check for const keyword
9538 echo " "
9539 echo 'Checking to see if your C compiler knows about "const"...' >&4
9540 $cat >const.c <<'EOCP'
9541 typedef struct spug { int drokk; } spug;
9542 int main()
9543 {
9544         const char *foo;
9545         const spug y;
9546 }
9547 EOCP
9548 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9549         val="$define"
9550         echo "Yup, it does."
9551 else
9552         val="$undef"
9553         echo "Nope, it doesn't."
9554 fi
9555 set d_const
9556 eval $setvar
9557
9558 : see if crypt exists
9559 echo " "
9560 set crypt d_crypt
9561 eval $inlibc
9562 case "$d_crypt" in
9563 $define) cryptlib='' ;;
9564 *)      if set crypt val -f d_crypt; eval $csym; $val; then
9565                 echo 'crypt() found.' >&4
9566                 val="$define"
9567                 cryptlib=''
9568         else
9569                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9570                 if $test -z "$cryptlib"; then
9571                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9572                 else
9573                         cryptlib=-lcrypt
9574                 fi
9575                 if $test -z "$cryptlib"; then
9576                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9577                 else
9578                         cryptlib=-lcrypt
9579                 fi
9580                 if $test -z "$cryptlib"; then
9581                         cryptlib=`./loc libcrypt$_a "" $libpth`
9582                 else
9583                         cryptlib=-lcrypt
9584                 fi
9585                 if $test -z "$cryptlib"; then
9586                         echo 'crypt() NOT found.' >&4
9587                         val="$undef"
9588                 else
9589                         val="$define"
9590                 fi
9591         fi
9592         set d_crypt
9593         eval $setvar
9594         ;;
9595 esac
9596
9597 : get csh whereabouts
9598 case "$csh" in
9599 'csh') val="$undef" ;;
9600 *) val="$define" ;;
9601 esac
9602 set d_csh
9603 eval $setvar
9604 : Respect a hint or command line value for full_csh.
9605 case "$full_csh" in
9606 '') full_csh=$csh ;;
9607 esac
9608
9609 : see if cuserid exists
9610 set cuserid d_cuserid
9611 eval $inlibc
9612
9613 : see if this is a limits.h system
9614 set limits.h i_limits
9615 eval $inhdr
9616
9617 : see if this is a float.h system
9618 set float.h i_float
9619 eval $inhdr
9620
9621 : See if number of significant digits in a double precision number is known
9622 echo " "
9623 $cat >dbl_dig.c <<EOM
9624 #$i_limits I_LIMITS
9625 #$i_float I_FLOAT
9626 #ifdef I_LIMITS
9627 #include <limits.h>
9628 #endif
9629 #ifdef I_FLOAT
9630 #include <float.h>
9631 #endif
9632 #ifdef DBL_DIG
9633 printf("Contains DBL_DIG");
9634 #endif
9635 EOM
9636 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9637 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9638         echo "DBL_DIG found." >&4
9639         val="$define"
9640 else
9641         echo "DBL_DIG NOT found." >&4
9642         val="$undef"
9643 fi
9644 $rm -f dbl_dig.?
9645 set d_dbl_dig
9646 eval $setvar
9647
9648 hasproto='varname=$1; func=$2; shift; shift;
9649 while $test $# -ge 2; do
9650         case "$1" in
9651         $define) echo "#include <$2>";;
9652         esac ;
9653     shift 2;
9654 done > try.c;
9655 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9656 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9657         echo "$func() prototype found.";
9658         val="$define";
9659 else
9660         echo "$func() prototype NOT found.";
9661         val="$undef";
9662 fi;
9663 set $varname;
9664 eval $setvar;
9665 $rm -f try.c tryout.c'
9666
9667 : see if dbm.h is available
9668 : see if dbmclose exists
9669 set dbmclose d_dbmclose
9670 eval $inlibc
9671
9672 case "$d_dbmclose" in
9673 $define)
9674         set dbm.h i_dbm
9675         eval $inhdr
9676         case "$i_dbm" in
9677         $define)
9678                 val="$undef"
9679                 set i_rpcsvcdbm
9680                 eval $setvar
9681                 ;;
9682         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9683                 eval $inhdr
9684                 ;;
9685         esac
9686         ;;
9687 *)      echo "We won't be including <dbm.h>"
9688         val="$undef"
9689         set i_dbm
9690         eval $setvar
9691         val="$undef"
9692         set i_rpcsvcdbm
9693         eval $setvar
9694         ;;
9695 esac
9696
9697 : see if prototype for dbminit is available
9698 echo " "
9699 set d_dbminitproto dbminit $i_dbm dbm.h
9700 eval $hasproto
9701
9702 : see if difftime exists
9703 set difftime d_difftime
9704 eval $inlibc
9705
9706 : see if this is a dirent system
9707 echo " "
9708 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9709         val="$define"
9710         echo "<dirent.h> found." >&4
9711 else
9712         val="$undef"
9713         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9714                 echo "<sys/dir.h> found." >&4
9715                 echo " "
9716         else
9717                 xinc=`./findhdr sys/ndir.h`
9718         fi
9719         echo "<dirent.h> NOT found." >&4
9720 fi
9721 set i_dirent
9722 eval $setvar
9723
9724 : Look for type of directory structure.
9725 echo " "
9726 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9727
9728 case "$direntrytype" in
9729 ''|' ')
9730         case "$i_dirent" in
9731         $define) guess1='struct dirent' ;;
9732         *) guess1='struct direct'  ;;
9733         esac
9734         ;;
9735 *)      guess1="$direntrytype"
9736         ;;
9737 esac
9738
9739 case "$guess1" in
9740 'struct dirent') guess2='struct direct' ;;
9741 *) guess2='struct dirent' ;;
9742 esac
9743                 
9744 if $contains "$guess1" try.c >/dev/null 2>&1; then
9745         direntrytype="$guess1"
9746         echo "Your directory entries are $direntrytype." >&4
9747 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9748         direntrytype="$guess2"
9749         echo "Your directory entries seem to be $direntrytype." >&4
9750 else
9751         echo "I don't recognize your system's directory entries." >&4
9752         rp="What type is used for directory entries on this system?"
9753         dflt="$guess1"
9754         . ./myread
9755         direntrytype="$ans"
9756 fi
9757 $rm -f try.c
9758
9759
9760 : see if the directory entry stores field length
9761 echo " "
9762 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9763 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9764         echo "Good, your directory entry keeps length information in d_namlen." >&4
9765         val="$define"
9766 else
9767         echo "Your directory entry does not know about the d_namlen field." >&4
9768         val="$undef"
9769 fi
9770 set d_dirnamlen
9771 eval $setvar
9772 $rm -f try.c
9773
9774 : see if this is an sysdir system
9775 set sys/dir.h i_sysdir
9776 eval $inhdr
9777
9778 : see if this is an sysndir system
9779 set sys/ndir.h i_sysndir
9780 eval $inhdr
9781
9782 : Look for dirfd
9783 echo " "
9784 $cat >dirfd.c <<EOM
9785 #include <stdio.h>
9786 #$i_dirent I_DIRENT             /**/
9787 #$i_sysdir I_SYS_DIR            /**/
9788 #$i_sysndir I_SYS_NDIR          /**/
9789 #$i_systypes I_SYS_TYPES        /**/
9790 #if defined(I_SYS_TYPES)
9791 #include <sys/types.h>
9792 #endif
9793 #if defined(I_DIRENT)
9794 #include <dirent.h>
9795 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
9796 #include <sys/dir.h>
9797 #endif
9798 #else
9799 #ifdef I_SYS_NDIR
9800 #include <sys/ndir.h>
9801 #else
9802 #ifdef I_SYS_DIR
9803 #ifdef hp9000s500
9804 #include <ndir.h>       /* may be wrong in the future */
9805 #else
9806 #include <sys/dir.h>
9807 #endif
9808 #endif
9809 #endif
9810 #endif 
9811 int main() {
9812         DIR *dirp = opendir(".");
9813         if (dirfd(dirp) >= 0)
9814                 exit(0);
9815         else
9816                 exit(1);
9817 }
9818 EOM
9819 set dirfd
9820 if eval $compile; then
9821         val="$define"
9822 fi
9823 case "$val" in
9824 $define)        echo "dirfd() found." >&4       ;;
9825 *)              echo "dirfd() NOT found." >&4   ;;
9826 esac
9827 set d_dirfd
9828 eval $setvar
9829 $rm -f dirfd*
9830
9831 : see if dlerror exists
9832 xxx_runnm="$runnm"
9833 runnm=false
9834 set dlerror d_dlerror
9835 eval $inlibc
9836 runnm="$xxx_runnm"
9837
9838 : see if dlfcn is available
9839 set dlfcn.h i_dlfcn
9840 eval $inhdr
9841
9842 case "$usedl" in
9843 $define|y|true)
9844         $cat << EOM
9845
9846 On a few systems, the dynamically loaded modules that perl generates and uses
9847 will need a different extension than shared libs. The default will probably
9848 be appropriate.
9849
9850 EOM
9851         case "$dlext" in
9852         '')     dflt="$so" ;;
9853         *)      dflt="$dlext" ;;
9854         esac
9855         rp='What is the extension of dynamically loaded modules'
9856         . ./myread
9857         dlext="$ans"
9858         ;;
9859 *)
9860         dlext="none"
9861         ;;
9862 esac
9863
9864 : Check if dlsym need a leading underscore
9865 echo " "
9866 val="$undef"
9867
9868 case "$dlsrc" in
9869 dl_dlopen.xs)
9870         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9871         $cat >dyna.c <<'EOM'
9872 fred () { }
9873 EOM
9874
9875 $cat >fred.c<<EOM
9876
9877 #include <stdio.h>
9878 #$i_dlfcn I_DLFCN
9879 #ifdef I_DLFCN
9880 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9881 #else
9882 #include <sys/types.h>
9883 #include <nlist.h>
9884 #include <link.h>
9885 #endif
9886
9887 extern int fred() ;
9888
9889 int main()
9890 {
9891     void * handle ;
9892     void * symbol ;
9893 #ifndef RTLD_LAZY
9894     int mode = 1 ;
9895 #else
9896     int mode = RTLD_LAZY ;
9897 #endif
9898     handle = dlopen("./dyna.$dlext", mode) ;
9899     if (handle == NULL) {
9900         printf ("1\n") ;
9901         fflush (stdout) ;
9902         exit(0);
9903     }
9904     symbol = dlsym(handle, "fred") ;
9905     if (symbol == NULL) {
9906         /* try putting a leading underscore */
9907         symbol = dlsym(handle, "_fred") ;
9908         if (symbol == NULL) {
9909             printf ("2\n") ;
9910             fflush (stdout) ;
9911             exit(0);
9912         }
9913         printf ("3\n") ;
9914     }
9915     else
9916         printf ("4\n") ;
9917     fflush (stdout) ;
9918     exit(0);
9919 }
9920 EOM
9921         : Call the object file tmp-dyna.o in case dlext=o.
9922         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9923                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9924                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9925                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9926                 xxx=`$run ./fred`
9927                 case $xxx in
9928                 1)      echo "Test program failed using dlopen." >&4
9929                         echo "Perhaps you should not use dynamic loading." >&4;;
9930                 2)      echo "Test program failed using dlsym." >&4
9931                         echo "Perhaps you should not use dynamic loading." >&4;;
9932                 3)      echo "dlsym needs a leading underscore" >&4
9933                         val="$define" ;;
9934                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9935                 esac
9936         else
9937                 echo "I can't compile and run the test program." >&4
9938                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9939         fi
9940         ;;
9941 esac
9942                 
9943 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
9944
9945 set d_dlsymun
9946 eval $setvar
9947
9948 : see if prototype for drand48 is available
9949 echo " "
9950 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9951 eval $hasproto
9952
9953 : see if dup2 exists
9954 set dup2 d_dup2
9955 eval $inlibc
9956
9957 : see if eaccess exists
9958 set eaccess d_eaccess
9959 eval $inlibc
9960
9961 : see if endgrent exists
9962 set endgrent d_endgrent
9963 eval $inlibc
9964
9965 : see if endhostent exists
9966 set endhostent d_endhent
9967 eval $inlibc
9968
9969 : see if endnetent exists
9970 set endnetent d_endnent
9971 eval $inlibc
9972
9973 : see if endprotoent exists
9974 set endprotoent d_endpent
9975 eval $inlibc
9976
9977 : see if endpwent exists
9978 set endpwent d_endpwent
9979 eval $inlibc
9980
9981 : see if endservent exists
9982 set endservent d_endsent
9983 eval $inlibc
9984
9985 : Locate the flags for 'open()'
9986 echo " "
9987 $cat >try.c <<'EOCP'
9988 #include <sys/types.h>
9989 #ifdef I_FCNTL
9990 #include <fcntl.h>
9991 #endif
9992 #ifdef I_SYS_FILE
9993 #include <sys/file.h>
9994 #endif
9995 int main() {
9996         if(O_RDONLY);
9997 #ifdef O_TRUNC
9998         exit(0);
9999 #else
10000         exit(1);
10001 #endif
10002 }
10003 EOCP
10004 : check sys/file.h first to get FREAD on Sun
10005 if $test `./findhdr sys/file.h` && \
10006                 set try -DI_SYS_FILE && eval $compile; then
10007         h_sysfile=true;
10008         echo "<sys/file.h> defines the O_* constants..." >&4
10009         if $run ./try; then
10010                 echo "and you have the 3 argument form of open()." >&4
10011                 val="$define"
10012         else
10013                 echo "but not the 3 argument form of open().  Oh, well." >&4
10014                 val="$undef"
10015         fi
10016 elif $test `./findhdr fcntl.h` && \
10017                 set try -DI_FCNTL && eval $compile; then
10018         h_fcntl=true;
10019         echo "<fcntl.h> defines the O_* constants..." >&4
10020         if $run ./try; then
10021                 echo "and you have the 3 argument form of open()." >&4
10022                 val="$define"
10023         else
10024                 echo "but not the 3 argument form of open().  Oh, well." >&4
10025                 val="$undef"
10026         fi
10027 else
10028         val="$undef"
10029         echo "I can't find the O_* constant definitions!  You got problems." >&4
10030 fi
10031 set d_open3
10032 eval $setvar
10033 $rm -f try try.*
10034
10035 : see which of string.h or strings.h is needed
10036 echo " "
10037 strings=`./findhdr string.h`
10038 if $test "$strings" && $test -r "$strings"; then
10039         echo "Using <string.h> instead of <strings.h>." >&4
10040         val="$define"
10041 else
10042         val="$undef"
10043         strings=`./findhdr strings.h`
10044         if $test "$strings" && $test -r "$strings"; then
10045                 echo "Using <strings.h> instead of <string.h>." >&4
10046         else
10047                 echo "No string header found -- You'll surely have problems." >&4
10048         fi
10049 fi
10050 set i_string
10051 eval $setvar
10052 case "$i_string" in
10053 "$undef") strings=`./findhdr strings.h`;;
10054 *)        strings=`./findhdr string.h`;;
10055 esac
10056
10057 : see if this is a sys/file.h system
10058 val=''
10059 set sys/file.h val
10060 eval $inhdr
10061
10062 : do we need to include sys/file.h ?
10063 case "$val" in
10064 "$define")
10065         echo " "
10066         if $h_sysfile; then
10067                 val="$define"
10068                 echo "We'll be including <sys/file.h>." >&4
10069         else
10070                 val="$undef"
10071                 echo "We won't be including <sys/file.h>." >&4
10072         fi
10073         ;;
10074 *)
10075         h_sysfile=false
10076         ;;
10077 esac
10078 set i_sysfile
10079 eval $setvar
10080
10081 : see if fcntl.h is there
10082 val=''
10083 set fcntl.h val
10084 eval $inhdr
10085
10086 : see if we can include fcntl.h
10087 case "$val" in
10088 "$define")
10089         echo " "
10090         if $h_fcntl; then
10091                 val="$define"
10092                 echo "We'll be including <fcntl.h>." >&4
10093         else
10094                 val="$undef"
10095                 if $h_sysfile; then
10096         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10097                 else
10098                         echo "We won't be including <fcntl.h>." >&4
10099                 fi
10100         fi
10101         ;;
10102 *)
10103         h_fcntl=false
10104         val="$undef"
10105         ;;
10106 esac
10107 set i_fcntl
10108 eval $setvar
10109
10110 : check for non-blocking I/O stuff
10111 case "$h_sysfile" in
10112 true) echo "#include <sys/file.h>" > head.c;;
10113 *)
10114        case "$h_fcntl" in
10115        true) echo "#include <fcntl.h>" > head.c;;
10116        *) echo "#include <sys/fcntl.h>" > head.c;;
10117        esac
10118        ;;
10119 esac
10120 echo " "
10121 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10122 case "$o_nonblock" in
10123 '')
10124         $cat head.c > try.c
10125         $cat >>try.c <<EOCP
10126 #include <stdio.h>
10127 #include <stdlib.h>
10128 #$i_fcntl I_FCNTL
10129 #ifdef I_FCNTL
10130 #include <fcntl.h>
10131 #endif
10132 int main() {
10133 #ifdef O_NONBLOCK
10134         printf("O_NONBLOCK\n");
10135         exit(0);
10136 #endif
10137 #ifdef O_NDELAY
10138         printf("O_NDELAY\n");
10139         exit(0);
10140 #endif
10141 #ifdef FNDELAY
10142         printf("FNDELAY\n");
10143         exit(0);
10144 #endif
10145         exit(0);
10146 }
10147 EOCP
10148         set try
10149         if eval $compile_ok; then
10150                 o_nonblock=`$run ./try`
10151                 case "$o_nonblock" in
10152                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10153                 *) echo "Seems like we can use $o_nonblock.";;
10154                 esac
10155         else
10156                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10157         fi
10158         ;;
10159 *) echo "Using $hint value $o_nonblock.";;
10160 esac
10161 $rm -f try try.* .out core
10162
10163 echo " "
10164 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10165 case "$eagain" in
10166 '')
10167         $cat head.c > try.c
10168         $cat >>try.c <<EOCP
10169 #include <errno.h>
10170 #include <sys/types.h>
10171 #include <signal.h>
10172 #include <stdio.h> 
10173 #include <stdlib.h> 
10174 #$i_fcntl I_FCNTL
10175 #ifdef I_FCNTL
10176 #include <fcntl.h>
10177 #endif
10178 #define MY_O_NONBLOCK $o_nonblock
10179 #ifndef errno  /* XXX need better Configure test */
10180 extern int errno;
10181 #endif
10182 #$i_unistd I_UNISTD
10183 #ifdef I_UNISTD
10184 #include <unistd.h>
10185 #endif
10186 #$i_string I_STRING
10187 #ifdef I_STRING
10188 #include <string.h>
10189 #else
10190 #include <strings.h>
10191 #endif
10192 $signal_t blech(x) int x; { exit(3); }
10193 EOCP
10194         $cat >> try.c <<'EOCP'
10195 int main()
10196 {
10197         int pd[2];
10198         int pu[2];
10199         char buf[1];
10200         char string[100];
10201
10202         pipe(pd);       /* Down: child -> parent */
10203         pipe(pu);       /* Up: parent -> child */
10204         if (0 != fork()) {
10205                 int ret;
10206                 close(pd[1]);   /* Parent reads from pd[0] */
10207                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
10208 #ifdef F_SETFL
10209                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10210                         exit(1);
10211 #else
10212                 exit(4);
10213 #endif
10214                 signal(SIGALRM, blech);
10215                 alarm(5);
10216                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
10217                         exit(2);
10218                 sprintf(string, "%d\n", ret);
10219                 write(2, string, strlen(string));
10220                 alarm(0);
10221 #ifdef EAGAIN
10222                 if (errno == EAGAIN) {
10223                         printf("EAGAIN\n");
10224                         goto ok;
10225                 }
10226 #endif
10227 #ifdef EWOULDBLOCK
10228                 if (errno == EWOULDBLOCK)
10229                         printf("EWOULDBLOCK\n");
10230 #endif
10231         ok:
10232                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
10233                 sleep(2);                               /* Give it time to close our pipe */
10234                 alarm(5);
10235                 ret = read(pd[0], buf, 1);      /* Should read EOF */
10236                 alarm(0);
10237                 sprintf(string, "%d\n", ret);
10238                 write(4, string, strlen(string));
10239                 exit(0);
10240         }
10241
10242         close(pd[0]);                   /* We write to pd[1] */
10243         close(pu[1]);                   /* We read from pu[0] */
10244         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
10245         close(pd[1]);                   /* Pipe pd is now fully closed! */
10246         exit(0);                                /* Bye bye, thank you for playing! */
10247 }
10248 EOCP
10249         set try
10250         if eval $compile_ok; then
10251                 echo "$startsh" >mtry
10252                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
10253                 chmod +x mtry
10254                 ./mtry >/dev/null 2>&1
10255                 case $? in
10256                 0) eagain=`$cat try.out`;;
10257                 1) echo "Could not perform non-blocking setting!";;
10258                 2) echo "I did a successful read() for something that was not there!";;
10259                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10260                 4) echo "Could not find F_SETFL!";;
10261                 *) echo "Something terribly wrong happened during testing.";;
10262                 esac
10263                 rd_nodata=`$cat try.ret`
10264                 echo "A read() system call with no data present returns $rd_nodata."
10265                 case "$rd_nodata" in
10266                 0|-1) ;;
10267                 *)
10268                         echo "(That's peculiar, fixing that to be -1.)"
10269                         rd_nodata=-1
10270                         ;;
10271                 esac
10272                 case "$eagain" in
10273                 '')
10274                         echo "Forcing errno EAGAIN on read() with no data available."
10275                         eagain=EAGAIN
10276                         ;;
10277                 *)
10278                         echo "Your read() sets errno to $eagain when no data is available."
10279                         ;;
10280                 esac
10281                 status=`$cat try.err`
10282                 case "$status" in
10283                 0) echo "And it correctly returns 0 to signal EOF.";;
10284                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10285                 *) echo "However, your read() returns '$status' on EOF??";;
10286                 esac
10287                 val="$define"
10288                 if test "$status" = "$rd_nodata"; then
10289                         echo "WARNING: you can't distinguish between EOF and no data!"
10290                         val="$undef"
10291                 fi
10292         else
10293                 echo "I can't compile the test program--assuming errno EAGAIN will do."
10294                 eagain=EAGAIN
10295         fi
10296         set d_eofnblk
10297         eval $setvar
10298         ;;
10299 *)
10300         echo "Using $hint value $eagain."
10301         echo "Your read() returns $rd_nodata when no data is present."
10302         case "$d_eofnblk" in
10303         "$define") echo "And you can see EOF because read() returns 0.";;
10304         "$undef") echo "But you can't see EOF status from read() returned value.";;
10305         *)
10306                 echo "(Assuming you can't see EOF status from read anyway.)"
10307                 d_eofnblk=$undef
10308                 ;;
10309         esac
10310         ;;
10311 esac
10312 $rm -f try try.* .out core head.c mtry
10313
10314 : see if fchdir exists
10315 set fchdir d_fchdir
10316 eval $inlibc
10317
10318 : see if fchmod exists
10319 set fchmod d_fchmod
10320 eval $inlibc
10321
10322 : see if fchown exists
10323 set fchown d_fchown
10324 eval $inlibc
10325
10326 : see if this is an fcntl system
10327 set fcntl d_fcntl
10328 eval $inlibc
10329
10330 echo " "
10331 : See if fcntl-based locking works.
10332 $cat >try.c <<EOCP
10333 #include <stdlib.h>
10334 #include <unistd.h>
10335 #include <fcntl.h>
10336 #include <signal.h>
10337 $signal_t blech(x) int x; { exit(3); }
10338 int main() {
10339 #if defined(F_SETLK) && defined(F_SETLKW)
10340      struct flock flock;
10341      int retval, fd;
10342      fd = open("try.c", O_RDONLY);
10343      flock.l_type = F_RDLCK;
10344      flock.l_whence = SEEK_SET;
10345      flock.l_start = flock.l_len = 0;
10346      signal(SIGALRM, blech);
10347      alarm(10);
10348      retval = fcntl(fd, F_SETLK, &flock);
10349      close(fd);
10350      (retval < 0 ? exit(2) : exit(0));
10351 #else
10352      exit(2);
10353 #endif
10354 }
10355 EOCP
10356 echo "Checking if fcntl-based file locking works... "
10357 case "$d_fcntl" in
10358 "$define")
10359         set try
10360         if eval $compile_ok; then
10361                 if $run ./try; then
10362                         echo "Yes, it seems to work."
10363                         val="$define"
10364                 else
10365                         echo "Nope, it didn't work."
10366                         val="$undef"
10367                         case "$?" in
10368                         3) $cat >&4 <<EOM
10369 ***
10370 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
10371 *** This is (almost) impossible.
10372 *** If your NFS lock daemons are not feeling well, something like
10373 *** this may happen, please investigate.  Cannot continue, aborting.
10374 ***
10375 EOM
10376                                 exit 1
10377                                 ;;
10378                         esac
10379                 fi
10380         else
10381                 echo "I'm unable to compile the test program, so I'll assume not."
10382                 val="$undef"
10383         fi
10384         ;;
10385 *) val="$undef";
10386         echo "Nope, since you don't even have fcntl()."
10387         ;;
10388 esac
10389 set d_fcntl_can_lock
10390 eval $setvar
10391 $rm -f try*
10392
10393
10394 : see if sys/select.h has to be included
10395 set sys/select.h i_sysselct
10396 eval $inhdr
10397
10398 : see if we should include time.h, sys/time.h, or both
10399 echo " "
10400 if test "X$timeincl" = X; then
10401         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10402         $echo $n "I'm now running the test program...$c"
10403         $cat >try.c <<'EOCP'
10404 #include <sys/types.h>
10405 #ifdef I_TIME
10406 #include <time.h>
10407 #endif
10408 #ifdef I_SYSTIME
10409 #ifdef SYSTIMEKERNEL
10410 #define KERNEL
10411 #endif
10412 #include <sys/time.h>
10413 #endif
10414 #ifdef I_SYSSELECT
10415 #include <sys/select.h>
10416 #endif
10417 int main()
10418 {
10419         struct tm foo;
10420 #ifdef S_TIMEVAL
10421         struct timeval bar;
10422 #endif
10423 #ifdef S_TIMEZONE
10424         struct timezone tzp;
10425 #endif
10426         if (foo.tm_sec == foo.tm_sec)
10427                 exit(0);
10428 #ifdef S_TIMEVAL
10429         if (bar.tv_sec == bar.tv_sec)
10430                 exit(0);
10431 #endif
10432         exit(1);
10433 }
10434 EOCP
10435         flags=''
10436         for s_timezone in '-DS_TIMEZONE' ''; do
10437         sysselect=''
10438         for s_timeval in '-DS_TIMEVAL' ''; do
10439         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10440         for i_time in '' '-DI_TIME'; do
10441         for i_systime in '-DI_SYSTIME' ''; do
10442                 case "$flags" in
10443                 '') $echo $n ".$c"
10444                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10445                         if eval $compile; then
10446                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10447                                 shift
10448                                 flags="$*"
10449                                 echo " "
10450                                 $echo $n "Succeeded with $flags$c"
10451                         fi
10452                         ;;
10453                 esac
10454         done
10455         done
10456         done
10457         done
10458         done
10459         timeincl=''
10460         echo " "
10461         case "$flags" in
10462         *SYSTIMEKERNEL*) i_systimek="$define"
10463                 timeincl=`./findhdr sys/time.h`
10464                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10465         *) i_systimek="$undef";;
10466         esac
10467         case "$flags" in
10468         *I_TIME*) i_time="$define"
10469                 timeincl=`./findhdr time.h`" $timeincl"
10470                 echo "We'll include <time.h>." >&4;;
10471         *) i_time="$undef";;
10472         esac
10473         case "$flags" in
10474         *I_SYSTIME*) i_systime="$define"
10475                 timeincl=`./findhdr sys/time.h`" $timeincl"
10476                 echo "We'll include <sys/time.h>." >&4;;
10477         *) i_systime="$undef";;
10478         esac
10479         $rm -f try.c try
10480 fi
10481 : see if struct tm knows about tm_zone
10482 case "$i_systime$i_time" in
10483 *$define*) 
10484         echo " "
10485         echo "Checking to see if your struct tm has tm_zone field..." >&4
10486         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10487         eval $hasfield
10488         ;;
10489 *)      val="$undef"
10490         set d_tm_tm_zone
10491         eval $setvar
10492         ;;
10493 esac
10494 case "$d_tm_tm_zone" in
10495 "$define")      echo "Yes, it does."   ;;
10496 *)              echo "No, it doesn't." ;;
10497 esac
10498 : see if struct tm knows about tm_gmtoff
10499 case "$i_systime$i_time" in
10500 *$define*) 
10501         echo " "
10502         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10503         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10504         eval $hasfield
10505         ;;
10506 *)      val="$undef"
10507         set d_tm_tm_gmtoff
10508         eval $setvar
10509         ;;
10510 esac
10511 case "$d_tm_tm_gmtoff" in
10512 "$define")      echo "Yes, it does."   ;;
10513 *)              echo "No, it doesn't." ;;
10514 esac
10515
10516 : check for fd_set items
10517 $cat <<EOM
10518
10519 Checking to see how well your C compiler handles fd_set and friends ...
10520 EOM
10521 $cat >try.c <<EOCP
10522 #$i_systime I_SYS_TIME
10523 #$i_sysselct I_SYS_SELECT
10524 #$d_socket HAS_SOCKET
10525 #include <sys/types.h>
10526 #ifdef HAS_SOCKET
10527 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10528 #endif
10529 #ifdef I_SYS_TIME
10530 #include <sys/time.h>
10531 #endif
10532 #ifdef I_SYS_SELECT
10533 #include <sys/select.h>
10534 #endif
10535 int main() {
10536         fd_set fds;
10537
10538 #ifdef TRYBITS
10539         if(fds.fds_bits);
10540 #endif
10541
10542 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10543         exit(0);
10544 #else
10545         exit(1);
10546 #endif
10547 }
10548 EOCP
10549 set try -DTRYBITS
10550 if eval $compile; then
10551         d_fds_bits="$define"
10552         d_fd_set="$define"
10553         echo "Well, your system knows about the normal fd_set typedef..." >&4
10554         if $run ./try; then
10555                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10556                 d_fd_macros="$define"
10557         else
10558                 $cat >&4 <<'EOM'
10559 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10560 EOM
10561                 d_fd_macros="$undef"
10562         fi
10563 else
10564         $cat <<'EOM'
10565 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10566 EOM
10567         set try
10568         if eval $compile; then
10569                 d_fds_bits="$undef"
10570                 d_fd_set="$define"
10571                 echo "Well, your system has some sort of fd_set available..." >&4
10572                 if $run ./try; then
10573                         echo "and you have the normal fd_set macros." >&4
10574                         d_fd_macros="$define"
10575                 else
10576                         $cat <<'EOM'
10577 but not the normal fd_set macros!  Gross!  More work for me...
10578 EOM
10579                         d_fd_macros="$undef"
10580                 fi
10581         else
10582         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10583                 d_fd_set="$undef"
10584                 d_fds_bits="$undef"
10585                 d_fd_macros="$undef"
10586         fi
10587 fi
10588 $rm -f try try.*
10589
10590 : see if fgetpos exists
10591 set fgetpos d_fgetpos
10592 eval $inlibc
10593
10594 : see if finite exists
10595 set finite d_finite
10596 eval $inlibc
10597
10598 : see if finitel exists
10599 set finitel d_finitel
10600 eval $inlibc
10601
10602 : see if flock exists
10603 set flock d_flock
10604 eval $inlibc
10605
10606 : see if prototype for flock is available
10607 echo " "
10608 set d_flockproto flock $i_sysfile sys/file.h
10609 eval $hasproto
10610
10611 : see if fork exists
10612 set fork d_fork
10613 eval $inlibc
10614
10615 : see if fp_class exists
10616 set fp_class d_fp_class
10617 eval $inlibc
10618
10619 : see if pathconf exists
10620 set pathconf d_pathconf
10621 eval $inlibc
10622
10623 : see if fpathconf exists
10624 set fpathconf d_fpathconf
10625 eval $inlibc
10626
10627 : see if fpclass exists
10628 set fpclass d_fpclass
10629 eval $inlibc
10630
10631 : see if fpclassify exists
10632 set fpclassify d_fpclassify
10633 eval $inlibc
10634
10635 : see if fpclassl exists
10636 set fpclassl d_fpclassl
10637 eval $inlibc
10638
10639
10640 : check for fpos64_t
10641 echo " "
10642 echo "Checking to see if you have fpos64_t..." >&4
10643 $cat >try.c <<EOCP
10644 #include <stdio.h>
10645 int main() { fpos64_t x = 7; }
10646 EOCP
10647 set try
10648 if eval $compile; then
10649         val="$define"
10650         echo "You have fpos64_t."
10651 else
10652         val="$undef"
10653         echo "You do not have fpos64_t."
10654         case "$fpossize" in
10655         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10656         esac
10657 fi
10658 $rm -f try.* try
10659 set d_fpos64_t
10660 eval $setvar
10661
10662 : see if frexpl exists
10663 set frexpl d_frexpl
10664 eval $inlibc
10665
10666 : see if this is a sys/param system
10667 set sys/param.h i_sysparam
10668 eval $inhdr
10669
10670 : see if this is a sys/mount.h system
10671 set sys/mount.h i_sysmount
10672 eval $inhdr
10673
10674
10675 echo " "
10676 echo "Checking to see if your system supports struct fs_data..." >&4
10677 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10678 eval $hasstruct
10679 case "$d_fs_data_s" in
10680 "$define")      echo "Yes, it does."   ;;
10681 *)              echo "No, it doesn't." ;;
10682 esac
10683
10684 : see if fseeko exists
10685 set fseeko d_fseeko
10686 eval $inlibc
10687 case "$longsize" in
10688 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10689 esac
10690
10691 : see if fsetpos exists
10692 set fsetpos d_fsetpos
10693 eval $inlibc
10694
10695
10696 : see if fstatfs exists
10697 set fstatfs d_fstatfs
10698 eval $inlibc
10699
10700
10701 : see if statvfs exists
10702 set statvfs d_statvfs
10703 eval $inlibc
10704
10705 : see if fstatvfs exists
10706 set fstatvfs d_fstatvfs
10707 eval $inlibc
10708
10709
10710 : see if fsync exists
10711 set fsync d_fsync
10712 eval $inlibc
10713
10714 : see if ftello exists
10715 set ftello d_ftello
10716 eval $inlibc
10717 case "$longsize" in
10718 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10719 esac
10720
10721 : see if getcwd exists
10722 set getcwd d_getcwd
10723 eval $inlibc
10724
10725 : see if getespwnam exists
10726 set getespwnam d_getespwnam
10727 eval $inlibc
10728
10729
10730 : see if getfsstat exists
10731 set getfsstat d_getfsstat
10732 eval $inlibc
10733
10734 : see if getgrent exists
10735 set getgrent d_getgrent
10736 eval $inlibc
10737
10738 : see if gethostbyaddr exists
10739 set gethostbyaddr d_gethbyaddr
10740 eval $inlibc
10741
10742 : see if gethostbyname exists
10743 set gethostbyname d_gethbyname
10744 eval $inlibc
10745
10746 : see if gethostent exists
10747 set gethostent d_gethent
10748 eval $inlibc
10749
10750 : see how we will look up host name
10751 echo " "
10752 call=''
10753 if set gethostname val -f d_gethname; eval $csym; $val; then
10754         echo 'gethostname() found.' >&4
10755         d_gethname="$define"
10756         call=gethostname
10757 fi
10758 if set uname val -f d_uname; eval $csym; $val; then
10759         if ./xenix; then
10760                 $cat <<'EOM'
10761 uname() was found, but you're running xenix, and older versions of xenix
10762 have a broken uname(). If you don't really know whether your xenix is old
10763 enough to have a broken system call, use the default answer.
10764
10765 EOM
10766                 dflt=y
10767                 case "$d_uname" in
10768                 "$define") dflt=n;;
10769                 esac
10770                 rp='Is your uname() broken?'
10771                 . ./myread
10772                 case "$ans" in
10773                 n*) d_uname="$define"; call=uname;;
10774                 esac
10775         else
10776                 echo 'uname() found.' >&4
10777                 d_uname="$define"
10778                 case "$call" in
10779                 '') call=uname ;;
10780                 esac
10781         fi
10782 fi
10783 case "$d_gethname" in
10784 '') d_gethname="$undef";;
10785 esac
10786 case "$d_uname" in
10787 '') d_uname="$undef";;
10788 esac
10789 case "$d_uname$d_gethname" in
10790 *define*)
10791         dflt=n
10792         cat <<EOM
10793  
10794 Every now and then someone has a $call() that lies about the hostname
10795 but can't be fixed for political or economic reasons.  If you wish, I can
10796 pretend $call() isn't there and maybe compute hostname at run-time
10797 thanks to the '$phostname' command.
10798
10799 EOM
10800         rp="Shall I ignore $call() from now on?"
10801         . ./myread
10802         case "$ans" in
10803         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10804         esac;;
10805 esac
10806 case "$phostname" in
10807 '') aphostname='';;
10808 *) case "$aphostname" in
10809         /*) ;;
10810         *) set X $phostname
10811                 shift
10812                 file=$1
10813                 shift
10814                 file=`./loc $file $file $pth`
10815                 aphostname=`echo $file $*`
10816                 ;;
10817         esac
10818         ;;
10819 esac
10820 case "$d_uname$d_gethname" in
10821 *define*) ;;
10822 *)
10823         case "$phostname" in
10824         '')
10825                 echo "There will be no way for $package to get your hostname." >&4;;
10826         *)
10827         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10828                 ;;
10829         esac;;
10830 esac
10831 case "$d_phostname" in
10832 '') d_phostname="$undef";;
10833 esac
10834
10835 : see if this is a netdb.h system
10836 set netdb.h i_netdb
10837 eval $inhdr
10838
10839 : see if prototypes for various gethostxxx netdb.h functions are available
10840 echo " "
10841 set d_gethostprotos gethostent $i_netdb netdb.h
10842 eval $hasproto
10843
10844 : see if getitimer exists
10845 set getitimer d_getitimer
10846 eval $inlibc
10847
10848 : see if getlogin exists
10849 set getlogin d_getlogin
10850 eval $inlibc
10851
10852 : see if getmnt exists
10853 set getmnt d_getmnt
10854 eval $inlibc
10855
10856 : see if getmntent exists
10857 set getmntent d_getmntent
10858 eval $inlibc
10859
10860 : see if getnetbyaddr exists
10861 set getnetbyaddr d_getnbyaddr
10862 eval $inlibc
10863
10864 : see if getnetbyname exists
10865 set getnetbyname d_getnbyname
10866 eval $inlibc
10867
10868 : see if getnetent exists
10869 set getnetent d_getnent
10870 eval $inlibc
10871
10872 : see if prototypes for various getnetxxx netdb.h functions are available
10873 echo " "
10874 set d_getnetprotos getnetent $i_netdb netdb.h
10875 eval $hasproto
10876
10877 : see if getpagesize exists
10878 set getpagesize d_getpagsz
10879 eval $inlibc
10880
10881
10882 : see if getprotobyname exists
10883 set getprotobyname d_getpbyname
10884 eval $inlibc
10885
10886 : see if getprotobynumber exists
10887 set getprotobynumber d_getpbynumber
10888 eval $inlibc
10889
10890 : see if getprotoent exists
10891 set getprotoent d_getpent
10892 eval $inlibc
10893
10894 : see if getpgid exists
10895 set getpgid d_getpgid
10896 eval $inlibc
10897
10898 : see if getpgrp2 exists
10899 set getpgrp2 d_getpgrp2
10900 eval $inlibc
10901
10902 : see if getppid exists
10903 set getppid d_getppid
10904 eval $inlibc
10905
10906 : see if getpriority exists
10907 set getpriority d_getprior
10908 eval $inlibc
10909
10910 : see if prototypes for various getprotoxxx netdb.h functions are available
10911 echo " "
10912 set d_getprotoprotos getprotoent $i_netdb netdb.h
10913 eval $hasproto
10914
10915 : see if getprpwnam exists
10916 set getprpwnam d_getprpwnam
10917 eval $inlibc
10918
10919 : see if getpwent exists
10920 set getpwent d_getpwent
10921 eval $inlibc
10922
10923
10924 : see if getservbyname exists
10925 set getservbyname d_getsbyname
10926 eval $inlibc
10927
10928 : see if getservbyport exists
10929 set getservbyport d_getsbyport
10930 eval $inlibc
10931
10932 : see if getservent exists
10933 set getservent d_getsent
10934 eval $inlibc
10935
10936 : see if prototypes for various getservxxx netdb.h functions are available
10937 echo " "
10938 set d_getservprotos getservent $i_netdb netdb.h
10939 eval $hasproto
10940
10941 : see if getspnam exists
10942 set getspnam d_getspnam
10943 eval $inlibc
10944
10945 : see if gettimeofday or ftime exists
10946 set gettimeofday d_gettimeod
10947 eval $inlibc
10948 case "$d_gettimeod" in
10949 "$undef")
10950         set ftime d_ftime 
10951         eval $inlibc
10952         ;;
10953 *)
10954         val="$undef"; set d_ftime; eval $setvar
10955         ;;
10956 esac
10957 case "$d_gettimeod$d_ftime" in
10958 "$undef$undef")
10959         echo " "
10960         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10961         ;;
10962 esac
10963
10964 : see if this is an grp system
10965 set grp.h i_grp
10966 eval $inhdr
10967
10968 case "$i_grp" in
10969 $define)
10970         xxx=`./findhdr grp.h`
10971         $cppstdin $cppflags $cppminus < $xxx >$$.h
10972
10973         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10974                 val="$define"
10975         else
10976                 val="$undef"
10977         fi
10978         set d_grpasswd
10979         eval $setvar
10980
10981         $rm -f $$.h
10982         ;;
10983 *)
10984         val="$undef";
10985         set d_grpasswd; eval $setvar
10986         ;;
10987 esac
10988
10989 : see if hasmntopt exists
10990 set hasmntopt d_hasmntopt
10991 eval $inlibc
10992
10993 : see if this is a netinet/in.h or sys/in.h system
10994 set netinet/in.h i_niin sys/in.h i_sysin
10995 eval $inhdr
10996
10997 : see if arpa/inet.h has to be included
10998 set arpa/inet.h i_arpainet
10999 eval $inhdr
11000
11001 : see if htonl --and friends-- exists
11002 val=''
11003 set htonl val
11004 eval $inlibc
11005
11006 : Maybe they are macros.
11007 case "$val" in
11008 $undef)
11009         $cat >htonl.c <<EOM
11010 #include <stdio.h>
11011 #include <sys/types.h>
11012 #$i_niin I_NETINET_IN
11013 #$i_sysin I_SYS_IN
11014 #$i_arpainet I_ARPA_INET
11015 #ifdef I_NETINET_IN
11016 #include <netinet/in.h>
11017 #endif
11018 #ifdef I_SYS_IN
11019 #include <sys/in.h>
11020 #endif
11021 #ifdef I_ARPA_INET
11022 #include <arpa/inet.h>
11023 #endif
11024 #ifdef htonl
11025 printf("Defined as a macro.");
11026 #endif
11027 EOM
11028         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
11029         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
11030                 val="$define"
11031                 echo "But it seems to be defined as a macro." >&4
11032         fi
11033         $rm -f htonl.?
11034         ;;
11035 esac
11036 set d_htonl
11037 eval $setvar
11038
11039 : index or strchr
11040 echo " "
11041 if set index val -f; eval $csym; $val; then
11042         if set strchr val -f d_strchr; eval $csym; $val; then
11043                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
11044                         val="$define"
11045                         vali="$undef"
11046                         echo "strchr() found." >&4
11047                 else
11048                         val="$undef"
11049                         vali="$define"
11050                         echo "index() found." >&4
11051                 fi
11052         else
11053                 val="$undef"
11054                 vali="$define"
11055                 echo "index() found." >&4
11056         fi
11057 else
11058         if set strchr val -f d_strchr; eval $csym; $val; then
11059                 val="$define"
11060                 vali="$undef"
11061                 echo "strchr() found." >&4
11062         else
11063                 echo "No index() or strchr() found!" >&4
11064                 val="$undef"
11065                 vali="$undef"
11066         fi
11067 fi
11068 set d_strchr; eval $setvar
11069 val="$vali"
11070 set d_index; eval $setvar
11071
11072 : check whether inet_aton exists
11073 set inet_aton d_inetaton
11074 eval $inlibc
11075
11076 : Look for isascii
11077 echo " "
11078 $cat >isascii.c <<'EOCP'
11079 #include <stdio.h>
11080 #include <ctype.h>
11081 int main() {
11082         int c = 'A';
11083         if (isascii(c))
11084                 exit(0);
11085         else
11086                 exit(1);
11087 }
11088 EOCP
11089 set isascii
11090 if eval $compile; then
11091         echo "isascii() found." >&4
11092         val="$define"
11093 else
11094         echo "isascii() NOT found." >&4
11095         val="$undef"
11096 fi
11097 set d_isascii
11098 eval $setvar
11099 $rm -f isascii*
11100
11101 : see if isfinite exists
11102 set isfinite d_isfinite
11103 eval $inlibc
11104
11105 : see if isinf exists
11106 set isinf d_isinf
11107 eval $inlibc
11108
11109 : see if isnan exists
11110 set isnan d_isnan
11111 eval $inlibc
11112
11113 : see if isnanl exists
11114 set isnanl d_isnanl
11115 eval $inlibc
11116
11117 : see if killpg exists
11118 set killpg d_killpg
11119 eval $inlibc
11120
11121 : see if lchown exists
11122 echo " "
11123 $cat > try.c <<'EOCP'
11124 /* System header to define __stub macros and hopefully few prototypes,
11125     which can conflict with char lchown(); below.  */
11126 #include <assert.h>
11127 /* Override any gcc2 internal prototype to avoid an error.  */
11128 /* We use char because int might match the return type of a gcc2
11129    builtin and then its argument prototype would still apply.  */
11130 char lchown();
11131 int main() {
11132     /*  The GNU C library defines this for functions which it implements
11133         to always fail with ENOSYS.  Some functions are actually named
11134         something starting with __ and the normal name is an alias.  */
11135 #if defined (__stub_lchown) || defined (__stub___lchown)
11136 choke me
11137 #else
11138 lchown();
11139 #endif
11140 ; return 0; }
11141 EOCP
11142 set try
11143 if eval $compile; then
11144     $echo "lchown() found." >&4
11145     val="$define"
11146 else
11147     $echo "lchown() NOT found." >&4
11148     val="$undef"
11149 fi
11150 set d_lchown
11151 eval $setvar
11152
11153 : See if number of significant digits in a double precision number is known
11154 echo " "
11155 $cat >ldbl_dig.c <<EOM
11156 #$i_limits I_LIMITS
11157 #$i_float I_FLOAT
11158 #ifdef I_LIMITS
11159 #include <limits.h>
11160 #endif
11161 #ifdef I_FLOAT
11162 #include <float.h>
11163 #endif
11164 #ifdef LDBL_DIG
11165 printf("Contains LDBL_DIG");
11166 #endif
11167 EOM
11168 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
11169 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
11170         echo "LDBL_DIG found." >&4
11171         val="$define"
11172 else
11173         echo "LDBL_DIG NOT found." >&4
11174         val="$undef"
11175 fi
11176 $rm -f ldbl_dig.?
11177 set d_ldbl_dig
11178 eval $setvar
11179
11180 : see if link exists
11181 set link d_link
11182 eval $inlibc
11183
11184 : see if localeconv exists
11185 set localeconv d_locconv
11186 eval $inlibc
11187
11188 : see if lockf exists
11189 set lockf d_lockf
11190 eval $inlibc
11191
11192 : see if prototype for lseek is available
11193 echo " "
11194 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
11195 eval $hasproto
11196
11197 : see if lstat exists
11198 set lstat d_lstat
11199 eval $inlibc
11200
11201 : see if madvise exists
11202 set madvise d_madvise
11203 eval $inlibc
11204
11205 : see if mblen exists
11206 set mblen d_mblen
11207 eval $inlibc
11208
11209 : see if mbstowcs exists
11210 set mbstowcs d_mbstowcs
11211 eval $inlibc
11212
11213 : see if mbtowc exists
11214 set mbtowc d_mbtowc
11215 eval $inlibc
11216
11217 : see if memchr exists
11218 set memchr d_memchr
11219 eval $inlibc
11220
11221 : see if memcmp exists
11222 set memcmp d_memcmp
11223 eval $inlibc
11224
11225 : see if memcpy exists
11226 set memcpy d_memcpy
11227 eval $inlibc
11228
11229 : see if memmove exists
11230 set memmove d_memmove
11231 eval $inlibc
11232
11233 : see if memset exists
11234 set memset d_memset
11235 eval $inlibc
11236
11237 : see if mkdir exists
11238 set mkdir d_mkdir
11239 eval $inlibc
11240
11241 : see if mkdtemp exists
11242 set mkdtemp d_mkdtemp
11243 eval $inlibc
11244
11245 : see if mkfifo exists
11246 set mkfifo d_mkfifo
11247 eval $inlibc
11248
11249 : see if mkstemp exists
11250 set mkstemp d_mkstemp
11251 eval $inlibc
11252
11253 : see if mkstemps exists
11254 set mkstemps d_mkstemps
11255 eval $inlibc
11256
11257 : see if mktime exists
11258 set mktime d_mktime
11259 eval $inlibc
11260
11261 : see if this is a sys/mman.h system
11262 set sys/mman.h i_sysmman
11263 eval $inhdr
11264
11265 : see if mmap exists
11266 set mmap d_mmap
11267 eval $inlibc
11268 : see what shmat returns
11269 : default to something harmless
11270 mmaptype='void *'
11271 case "$i_sysmman$d_mmap" in
11272 "$define$define")
11273         $cat >mmap.c <<'END'
11274 #include <sys/mman.h>
11275 void *mmap();
11276 END
11277         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
11278                 mmaptype='void *'
11279         else
11280                 mmaptype='caddr_t'
11281         fi
11282         echo "and it returns ($mmaptype)." >&4
11283         ;;
11284 esac
11285
11286
11287
11288 : see if mprotect exists
11289 set mprotect d_mprotect
11290 eval $inlibc
11291
11292 : see if msgctl exists
11293 set msgctl d_msgctl
11294 eval $inlibc
11295
11296 : see if msgget exists
11297 set msgget d_msgget
11298 eval $inlibc
11299
11300 : see if msgsnd exists
11301 set msgsnd d_msgsnd
11302 eval $inlibc
11303
11304 : see if msgrcv exists
11305 set msgrcv d_msgrcv
11306 eval $inlibc
11307
11308 : see how much of the 'msg*(2)' library is present.
11309 h_msg=true
11310 echo " "
11311 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
11312 *"$undef"*) h_msg=false;;
11313 esac
11314 case "$osname" in
11315 freebsd)
11316     case "`ipcs 2>&1`" in
11317     "SVID messages"*"not configured"*)
11318         echo "Your $osname does not have the msg*(2) configured." >&4
11319         h_msg=false
11320         val="$undef"
11321         set msgctl d_msgctl
11322         eval $setvar
11323         set msgget d_msgget
11324         eval $setvar
11325         set msgsnd d_msgsnd
11326         eval $setvar
11327         set msgrcv d_msgrcv
11328         eval $setvar
11329         ;;
11330     esac
11331     ;;
11332 esac
11333 : we could also check for sys/ipc.h ...
11334 if $h_msg && $test `./findhdr sys/msg.h`; then
11335         echo "You have the full msg*(2) library." >&4
11336         val="$define"
11337 else
11338         echo "You don't have the full msg*(2) library." >&4
11339         val="$undef"
11340 fi
11341 set d_msg
11342 eval $setvar
11343
11344
11345 echo " "
11346 echo "Checking to see if your system supports struct msghdr..." >&4
11347 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11348 eval $hasstruct
11349 case "$d_msghdr_s" in
11350 "$define")      echo "Yes, it does."   ;;
11351 *)              echo "No, it doesn't." ;;
11352 esac
11353
11354
11355 : see if msync exists
11356 set msync d_msync
11357 eval $inlibc
11358
11359 : see if munmap exists
11360 set munmap d_munmap
11361 eval $inlibc
11362
11363 : see if nice exists
11364 set nice d_nice
11365 eval $inlibc
11366
11367 : see if this is a langinfo.h system
11368 set langinfo.h i_langinfo
11369 eval $inhdr
11370
11371 : see if nl_langinfo exists
11372 set nl_langinfo d_nl_langinfo
11373 eval $inlibc
11374
11375 : check for length of character
11376 echo " "
11377 case "$charsize" in
11378 '')
11379         echo "Checking to see how big your characters are (hey, you never know)..." >&4
11380         $cat >try.c <<'EOCP'
11381 #include <stdio.h>
11382 int main()
11383 {
11384     printf("%d\n", (int)sizeof(char));
11385     exit(0);
11386 }
11387 EOCP
11388         set try
11389         if eval $compile_ok; then
11390                 dflt=`$run ./try`
11391         else
11392                 dflt='1'
11393                 echo "(I can't seem to compile the test program.  Guessing...)"
11394         fi
11395         ;;
11396 *)
11397         dflt="$charsize"
11398         ;;
11399 esac
11400 rp="What is the size of a character (in bytes)?"
11401 . ./myread
11402 charsize="$ans"
11403 $rm -f try.c try
11404
11405 : check for volatile keyword
11406 echo " "
11407 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11408 $cat >try.c <<'EOCP'
11409 int main()
11410 {
11411         typedef struct _goo_struct goo_struct;
11412         goo_struct * volatile goo = ((goo_struct *)0);
11413         struct _goo_struct {
11414                 long long_int;
11415                 int reg_int;
11416                 char char_var;
11417         };
11418         typedef unsigned short foo_t;
11419         char *volatile foo;
11420         volatile int bar;
11421         volatile foo_t blech;
11422         foo = foo;
11423 }
11424 EOCP
11425 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11426         val="$define"
11427         echo "Yup, it does."
11428 else
11429         val="$undef"
11430         echo "Nope, it doesn't."
11431 fi
11432 set d_volatile
11433 eval $setvar
11434 $rm -f try.*
11435
11436
11437 echo " "
11438 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11439
11440 case "$use64bitint:$d_quad:$quadtype" in
11441 define:define:?*)
11442         ivtype="$quadtype"
11443         uvtype="$uquadtype"
11444         ivsize=8
11445         uvsize=8
11446         ;;
11447 *)      ivtype="long"
11448         uvtype="unsigned long"
11449         ivsize=$longsize
11450         uvsize=$longsize
11451         ;;
11452 esac
11453
11454 case "$uselongdouble:$d_longdbl" in
11455 define:define)
11456         nvtype="long double"
11457         nvsize=$longdblsize
11458         ;;
11459 *)      nvtype=double
11460         nvsize=$doublesize
11461         ;;
11462 esac
11463
11464 $echo "(IV will be "$ivtype", $ivsize bytes)"
11465 $echo "(UV will be "$uvtype", $uvsize bytes)"
11466 $echo "(NV will be "$nvtype", $nvsize bytes)"
11467
11468 $cat >try.c <<EOCP
11469 #$i_inttypes I_INTTYPES
11470 #ifdef I_INTTYPES
11471 #include <inttypes.h>
11472 #endif
11473 #include <stdio.h>
11474 int main() {
11475 #ifdef INT8
11476    int8_t i =  INT8_MAX;
11477   uint8_t u = UINT8_MAX;
11478   printf("int8_t\n");
11479 #endif
11480 #ifdef INT16
11481    int16_t i =  INT16_MAX;
11482   uint16_t i = UINT16_MAX;
11483   printf("int16_t\n");
11484 #endif
11485 #ifdef INT32
11486    int32_t i =  INT32_MAX;
11487   uint32_t u = UINT32_MAX;
11488   printf("int32_t\n");
11489 #endif
11490 }
11491 EOCP
11492
11493 case "$i8type" in
11494 '')     case "$charsize" in
11495         1)      i8type=char
11496                 u8type="unsigned char"
11497                 i8size=$charsize
11498                 u8size=$charsize
11499                 ;;
11500         esac
11501         ;;
11502 esac
11503 case "$i8type" in
11504 '')     set try -DINT8
11505         if eval $compile; then
11506                 case "`$run ./try`" in
11507                 int8_t) i8type=int8_t
11508                         u8type=uint8_t
11509                         i8size=1
11510                         u8size=1
11511                         ;;
11512                 esac
11513         fi
11514         ;;
11515 esac
11516 case "$i8type" in
11517 '')     if $test $charsize -ge 1; then
11518                 i8type=char
11519                 u8type="unsigned char"
11520                 i8size=$charsize
11521                 u8size=$charsize
11522         fi
11523         ;;
11524 esac
11525
11526 case "$i16type" in
11527 '')     case "$shortsize" in
11528         2)      i16type=short
11529                 u16type="unsigned short"
11530                 i16size=$shortsize
11531                 u16size=$shortsize
11532                 ;;
11533         esac
11534         ;;
11535 esac
11536 case "$i16type" in
11537 '')     set try -DINT16
11538         if eval $compile; then
11539                 case "`$run ./try`" in
11540                 int16_t)
11541                         i16type=int16_t
11542                         u16type=uint16_t
11543                         i16size=2
11544                         u16size=2
11545                         ;;
11546                 esac
11547         fi
11548         ;;
11549 esac
11550 case "$i16type" in
11551 '')     if $test $shortsize -ge 2; then
11552                 i16type=short
11553                 u16type="unsigned short"
11554                 i16size=$shortsize
11555                 u16size=$shortsize
11556         fi
11557         ;;
11558 esac
11559
11560 case "$i32type" in
11561 '')     case "$longsize" in
11562         4)      i32type=long
11563                 u32type="unsigned long"
11564                 i32size=$longsize
11565                 u32size=$longsize
11566                 ;;
11567         *)      case "$intsize" in
11568                 4)      i32type=int
11569                         u32type="unsigned int"
11570                         i32size=$intsize
11571                         u32size=$intsize
11572                         ;;
11573                 esac
11574                 ;;
11575         esac
11576         ;;
11577 esac
11578 case "$i32type" in
11579 '')     set try -DINT32
11580         if eval $compile; then
11581                 case "`$run ./try`" in
11582                 int32_t)
11583                         i32type=int32_t
11584                         u32type=uint32_t
11585                         i32size=4
11586                         u32size=4
11587                         ;;
11588                 esac
11589         fi
11590         ;;
11591 esac
11592 case "$i32type" in
11593 '')     if $test $intsize -ge 4; then
11594                 i32type=int
11595                 u32type="unsigned int"
11596                 i32size=$intsize
11597                 u32size=$intsize
11598         fi
11599         ;;
11600 esac
11601
11602 case "$i64type" in
11603 '')     case "$d_quad:$quadtype" in
11604         define:?*)
11605                 i64type="$quadtype"
11606                 u64type="$uquadtype"
11607                 i64size=8
11608                 u64size=8
11609                 ;;
11610         esac
11611         ;;
11612 esac
11613
11614 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11615 : volatile so that the compiler has to store it out to memory.
11616 if test X"$d_volatile" = X"$define"; then
11617         volatile=volatile
11618 fi
11619 $cat <<EOP >try.c
11620 #include <stdio.h>
11621 #include <sys/types.h>
11622 #include <signal.h>
11623 #ifdef SIGFPE
11624 $volatile int bletched = 0;
11625 $signal_t blech(s) int s; { bletched = 1; }
11626 #endif
11627 int main() {
11628     $uvtype u = 0;
11629     $nvtype d;
11630     int     n = 8 * $uvsize;
11631     int     i;
11632 #ifdef SIGFPE
11633     signal(SIGFPE, blech);
11634 #endif
11635
11636     for (i = 0; i < n; i++) {
11637       u = u << 1 | ($uvtype)1;
11638       d = ($nvtype)u;
11639       if (($uvtype)d != u)
11640         break;
11641       if (d <= 0)
11642         break;
11643       d = ($nvtype)(u - 1);
11644       if (($uvtype)d != (u - 1))
11645         break;
11646 #ifdef SIGFPE
11647       if (bletched) {
11648         break;
11649 #endif
11650       } 
11651     }
11652     printf("%d\n", ((i == n) ? -n : i));
11653     exit(0);
11654 }
11655 EOP
11656 set try
11657
11658 d_nv_preserves_uv="$undef"
11659 if eval $compile; then
11660         d_nv_preserves_uv_bits="`$run ./try`"
11661 fi
11662 case "$d_nv_preserves_uv_bits" in
11663 \-[1-9]*)       
11664         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11665         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11666         d_nv_preserves_uv="$define"
11667         ;;
11668 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11669         d_nv_preserves_uv="$undef" ;;
11670 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11671         d_nv_preserves_uv_bits="$undef" ;;
11672 esac
11673
11674 $rm -f try.* try
11675
11676
11677 : check for off64_t
11678 echo " "
11679 echo "Checking to see if you have off64_t..." >&4
11680 $cat >try.c <<EOCP
11681 #include <sys/types.h>
11682 #include <unistd.h>
11683 int main() { off64_t x = 7; }
11684 EOCP
11685 set try
11686 if eval $compile; then
11687         val="$define"
11688         echo "You have off64_t."
11689 else
11690         val="$undef"
11691         echo "You do not have off64_t."
11692         case "$lseeksize" in
11693         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11694         esac
11695 fi
11696 $rm -f try.* try
11697 set d_off64_t
11698 eval $setvar
11699
11700 : see if POSIX threads are available
11701 set pthread.h i_pthread
11702 eval $inhdr
11703
11704
11705
11706
11707 : how to create joinable pthreads
11708 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11709         echo " "
11710         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11711         $cat >try.c <<'EOCP'
11712 #include <pthread.h>
11713 int main() {
11714     int detachstate = JOINABLE;
11715 }
11716 EOCP
11717         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11718         if eval $compile; then
11719                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11720                 val="$undef" # Yes, undef.
11721                 set d_old_pthread_create_joinable
11722                 eval $setvar
11723                 val=""
11724                 set old_pthread_create_joinable
11725                 eval $setvar
11726         else
11727                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11728                 if eval $compile; then
11729                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11730                         val="$define"
11731                         set d_old_pthread_create_joinable
11732                         eval $setvar
11733                         val=PTHREAD_CREATE_UNDETACHED
11734                         set old_pthread_create_joinable
11735                         eval $setvar
11736                 else            
11737                         set try -DJOINABLE=__UNDETACHED
11738                         if eval $compile; then
11739                                 echo "You seem to use __UNDETACHED." >&4
11740                                 val="$define"
11741                                 set d_old_pthread_create_joinable
11742                                 eval $setvar
11743                                 val=__UNDETACHED
11744                                 set old_pthread_create_joinable
11745                                 eval $setvar
11746                         else
11747                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11748                                 val="$define"
11749                                 set d_old_pthread_create_joinable
11750                                 eval $setvar
11751                                 val=0
11752                                 set old_pthread_create_joinable
11753                                 eval $setvar
11754                         fi
11755                 fi
11756         fi
11757         $rm -f try try.*
11758 else
11759     d_old_pthread_create_joinable="$undef"
11760     old_pthread_create_joinable=""
11761 fi
11762
11763 : see if pause exists
11764 set pause d_pause
11765 eval $inlibc
11766
11767 : see if pipe exists
11768 set pipe d_pipe
11769 eval $inlibc
11770
11771 : see if poll exists
11772 set poll d_poll
11773 eval $inlibc
11774
11775 : see if readlink exists
11776 set readlink d_readlink
11777 eval $inlibc
11778
11779 echo " "
11780 procselfexe=''
11781 val="$undef"
11782 case "$d_readlink" in
11783 "$define")
11784         if $issymlink /proc/self/exe ; then
11785                 $ls -l /proc/self/exe > reflect
11786                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11787                         echo "You have Linux-like /proc/self/exe."
11788                         procselfexe='"/proc/self/exe"'
11789                         val="$define"
11790                 fi
11791         fi
11792         if $issymlink /proc/curproc/file ; then
11793                 $ls -l /proc/curproc/file > reflect
11794                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
11795                         echo "You have BSD-like /proc/curproc/file."
11796                         procselfexe='"/proc/curproc/file"'
11797                         val="$define"
11798                 fi
11799         fi
11800         ;;
11801 esac
11802 $rm -f reflect
11803 set d_procselfexe
11804 eval $setvar
11805
11806 : see if pthread_atfork exists
11807 set pthread_atfork d_pthread_atfork
11808 eval $inlibc
11809
11810
11811 : see whether the various POSIXish _yields exist
11812 $cat >try.c <<EOP
11813 #include <pthread.h>
11814 #include <stdio.h>
11815 int main() {
11816 #ifdef SCHED_YIELD
11817         sched_yield();
11818 #else
11819 #ifdef PTHREAD_YIELD
11820         pthread_yield();
11821 #else
11822 #ifdef PTHREAD_YIELD_NULL
11823         pthread_yield(NULL);
11824 #endif
11825 #endif
11826 #endif
11827 }
11828 EOP
11829 : see if sched_yield exists
11830 set try -DSCHED_YIELD
11831 if eval $compile; then
11832     val="$define"
11833     sched_yield='sched_yield()'
11834 else
11835     val="$undef"
11836 fi
11837 case "$usethreads" in
11838 $define)
11839         case "$val" in
11840         $define) echo 'sched_yield() found.' >&4        ;;
11841         *)       echo 'sched_yield() NOT found.' >&4    ;;
11842         esac
11843 esac
11844 set d_sched_yield
11845 eval $setvar
11846
11847 : see if pthread_yield exists
11848 set try -DPTHREAD_YIELD
11849 if eval $compile; then
11850     val="$define"
11851     case "$sched_yield" in
11852     '') sched_yield='pthread_yield()' ;;
11853     esac
11854 else
11855     set try -DPTHREAD_YIELD_NULL
11856     if eval $compile; then
11857         val="$define"
11858         case "$sched_yield" in
11859         '') sched_yield='pthread_yield(NULL)' ;;
11860         esac
11861     else
11862         val="$undef"
11863     fi
11864 fi
11865 case "$usethreads" in
11866 $define)
11867         case "$val" in
11868         $define) echo 'pthread_yield() found.' >&4      ;;
11869         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11870         esac
11871         ;;
11872 esac
11873 set d_pthread_yield
11874 eval $setvar
11875
11876 case "$sched_yield" in
11877 '') sched_yield=undef ;;
11878 esac
11879
11880 $rm -f try try.*
11881
11882 : see if this is a pwd.h system
11883 set pwd.h i_pwd
11884 eval $inhdr
11885
11886 case "$i_pwd" in
11887 $define)
11888         xxx=`./findhdr pwd.h`
11889         $cppstdin $cppflags $cppminus < $xxx >$$.h
11890
11891         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11892                 val="$define"
11893         else
11894                 val="$undef"
11895         fi
11896         set d_pwquota
11897         eval $setvar
11898
11899         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11900                 val="$define"
11901         else
11902                 val="$undef"
11903         fi
11904         set d_pwage
11905         eval $setvar
11906
11907         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11908                 val="$define"
11909         else
11910                 val="$undef"
11911         fi
11912         set d_pwchange
11913         eval $setvar
11914
11915         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11916                 val="$define"
11917         else
11918                 val="$undef"
11919         fi
11920         set d_pwclass
11921         eval $setvar
11922
11923         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11924                 val="$define"
11925         else
11926                 val="$undef"
11927         fi
11928         set d_pwexpire
11929         eval $setvar
11930
11931         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11932                 val="$define"
11933         else
11934                 val="$undef"
11935         fi
11936         set d_pwcomment
11937         eval $setvar
11938
11939         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11940                 val="$define"
11941         else
11942                 val="$undef"
11943         fi
11944         set d_pwgecos
11945         eval $setvar
11946
11947         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11948                 val="$define"
11949         else
11950                 val="$undef"
11951         fi
11952         set d_pwpasswd
11953         eval $setvar
11954
11955         $rm -f $$.h
11956         ;;
11957 *)
11958         val="$undef"; 
11959         set d_pwquota; eval $setvar
11960         set d_pwage; eval $setvar
11961         set d_pwchange; eval $setvar
11962         set d_pwclass; eval $setvar
11963         set d_pwexpire; eval $setvar
11964         set d_pwcomment; eval $setvar
11965         set d_pwgecos; eval $setvar
11966         set d_pwpasswd; eval $setvar
11967         ;;
11968 esac
11969
11970 : see if readdir and friends exist
11971 set readdir d_readdir
11972 eval $inlibc
11973 set seekdir d_seekdir
11974 eval $inlibc
11975 set telldir d_telldir
11976 eval $inlibc
11977 set rewinddir d_rewinddir
11978 eval $inlibc
11979
11980 : see if readv exists
11981 set readv d_readv
11982 eval $inlibc
11983
11984 : see if recvmsg exists
11985 set recvmsg d_recvmsg
11986 eval $inlibc
11987
11988 : see if rename exists
11989 set rename d_rename
11990 eval $inlibc
11991
11992 : see if rmdir exists
11993 set rmdir d_rmdir
11994 eval $inlibc
11995
11996 : see if memory.h is available.
11997 val=''
11998 set memory.h val
11999 eval $inhdr
12000
12001 : See if it conflicts with string.h
12002 case "$val" in
12003 $define)
12004         case "$strings" in
12005         '') ;;
12006         *)
12007                 $cppstdin $cppflags $cppminus < $strings > mem.h
12008                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
12009                         echo " "
12010                         echo "We won't be including <memory.h>."
12011                         val="$undef"
12012                 fi
12013                 $rm -f mem.h
12014                 ;;
12015         esac
12016 esac
12017 set i_memory
12018 eval $setvar
12019
12020 : can bcopy handle overlapping blocks?
12021 echo " "
12022 val="$undef"
12023 case "$d_memmove" in
12024 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
12025 *)      case "$d_bcopy" in
12026         "$define")
12027                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
12028                 $cat >try.c <<EOCP
12029 #$i_memory I_MEMORY
12030 #$i_stdlib I_STDLIB
12031 #$i_string I_STRING
12032 #$i_unistd I_UNISTD
12033 EOCP
12034         $cat >>try.c <<'EOCP'
12035 #include <stdio.h>
12036 #ifdef I_MEMORY
12037 #  include <memory.h>
12038 #endif
12039 #ifdef I_STDLIB
12040 #  include <stdlib.h>
12041 #endif
12042 #ifdef I_STRING
12043 #  include <string.h>
12044 #else
12045 #  include <strings.h>
12046 #endif
12047 #ifdef I_UNISTD
12048 #  include <unistd.h>  /* Needed for NetBSD */
12049 #endif
12050 int main()
12051 {
12052 char buf[128], abc[128];
12053 char *b;
12054 int len;
12055 int off;
12056 int align;
12057
12058 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12059    try to store the string in read-only memory. */
12060 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
12061
12062 for (align = 7; align >= 0; align--) {
12063         for (len = 36; len; len--) {
12064                 b = buf+align;
12065                 bcopy(abc, b, len);
12066                 for (off = 1; off <= len; off++) {
12067                         bcopy(b, b+off, len);
12068                         bcopy(b+off, b, len);
12069                         if (bcmp(b, abc, len))
12070                                 exit(1);
12071                 }
12072         }
12073 }
12074 exit(0);
12075 }
12076 EOCP
12077                 set try
12078                 if eval $compile_ok; then
12079                         if ./try 2>/dev/null; then
12080                                 echo "Yes, it can."
12081                                 val="$define"
12082                         else
12083                                 echo "It can't, sorry."
12084                         fi
12085                 else
12086                         echo "(I can't compile the test program, so we'll assume not...)"
12087                 fi
12088                 ;;
12089         esac
12090         $rm -f try.* try core
12091         ;;
12092 esac
12093 set d_safebcpy
12094 eval $setvar
12095
12096 : can memcpy handle overlapping blocks?
12097 echo " "
12098 val="$undef"
12099 case "$d_memmove" in
12100 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
12101 *)      case "$d_memcpy" in
12102         "$define")
12103                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
12104                 $cat >try.c <<EOCP
12105 #$i_memory I_MEMORY
12106 #$i_stdlib I_STDLIB
12107 #$i_string I_STRING
12108 #$i_unistd I_UNISTD
12109 EOCP
12110         $cat >>try.c <<'EOCP'
12111 #include <stdio.h>
12112 #ifdef I_MEMORY
12113 #  include <memory.h>
12114 #endif
12115 #ifdef I_STDLIB
12116 #  include <stdlib.h>
12117 #endif
12118 #ifdef I_STRING
12119 #  include <string.h>
12120 #else
12121 #  include <strings.h>
12122 #endif
12123 #ifdef I_UNISTD
12124 #  include <unistd.h>  /* Needed for NetBSD */
12125 #endif
12126 int main()
12127 {
12128 char buf[128], abc[128];
12129 char *b;
12130 int len;
12131 int off;
12132 int align;
12133
12134 /* Copy "abcde..." string to char abc[] so that gcc doesn't
12135    try to store the string in read-only memory. */
12136 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
12137
12138 for (align = 7; align >= 0; align--) {
12139         for (len = 36; len; len--) {
12140                 b = buf+align;
12141                 memcpy(b, abc, len);
12142                 for (off = 1; off <= len; off++) {
12143                         memcpy(b+off, b, len);
12144                         memcpy(b, b+off, len);
12145                         if (memcmp(b, abc, len))
12146                                 exit(1);
12147                 }
12148         }
12149 }
12150 exit(0);
12151 }
12152 EOCP
12153                 set try
12154                 if eval $compile_ok; then
12155                         if ./try 2>/dev/null; then
12156                                 echo "Yes, it can."
12157                                 val="$define"
12158                         else
12159                                 echo "It can't, sorry."
12160                         fi
12161                 else
12162                         echo "(I can't compile the test program, so we'll assume not...)"
12163                 fi
12164                 ;;
12165         esac
12166         $rm -f try.* try core
12167         ;;
12168 esac
12169 set d_safemcpy
12170 eval $setvar
12171
12172 : can memcmp be trusted to compare relative magnitude?
12173 val="$undef"
12174 case "$d_memcmp" in
12175 "$define")
12176         echo " "
12177         echo "Checking if your memcmp() can compare relative magnitude..." >&4
12178         $cat >try.c <<EOCP
12179 #$i_memory I_MEMORY
12180 #$i_stdlib I_STDLIB
12181 #$i_string I_STRING
12182 #$i_unistd I_UNISTD
12183 EOCP
12184         $cat >>try.c <<'EOCP'
12185 #include <stdio.h>
12186 #ifdef I_MEMORY
12187 #  include <memory.h>
12188 #endif
12189 #ifdef I_STDLIB
12190 #  include <stdlib.h>
12191 #endif
12192 #ifdef I_STRING
12193 #  include <string.h>
12194 #else
12195 #  include <strings.h>
12196 #endif
12197 #ifdef I_UNISTD
12198 #  include <unistd.h>  /* Needed for NetBSD */
12199 #endif
12200 int main()
12201 {
12202 char a = -1;
12203 char b = 0;
12204 if ((a < b) && memcmp(&a, &b, 1) < 0)
12205         exit(1);
12206 exit(0);
12207 }
12208 EOCP
12209         set try
12210         if eval $compile_ok; then
12211                 if $run ./try 2>/dev/null; then
12212                         echo "Yes, it can."
12213                         val="$define"
12214                 else
12215                         echo "No, it can't (it uses signed chars)."
12216                 fi
12217         else
12218                 echo "(I can't compile the test program, so we'll assume not...)"
12219         fi
12220         ;;
12221 esac
12222 $rm -f try.* try core
12223 set d_sanemcmp
12224 eval $setvar
12225
12226 : see if prototype for sbrk is available
12227 echo " "
12228 set d_sbrkproto sbrk $i_unistd unistd.h
12229 eval $hasproto
12230
12231 : see if select exists
12232 set select d_select
12233 eval $inlibc
12234
12235 : see if semctl exists
12236 set semctl d_semctl
12237 eval $inlibc
12238
12239 : see if semget exists
12240 set semget d_semget
12241 eval $inlibc
12242
12243 : see if semop exists
12244 set semop d_semop
12245 eval $inlibc
12246
12247 : see how much of the 'sem*(2)' library is present.
12248 h_sem=true
12249 echo " "
12250 case "$d_semctl$d_semget$d_semop" in
12251 *"$undef"*) h_sem=false;;
12252 esac
12253 case "$osname" in
12254 freebsd)
12255     case "`ipcs 2>&1`" in
12256     "SVID messages"*"not configured"*)
12257         echo "Your $osname does not have the sem*(2) configured." >&4
12258         h_sem=false
12259         val="$undef"
12260         set semctl d_semctl
12261         eval $setvar
12262         set semget d_semget
12263         eval $setvar
12264         set semop d_semop
12265         eval $setvar
12266         ;;
12267     esac
12268     ;;
12269 esac
12270 : we could also check for sys/ipc.h ...
12271 if $h_sem && $test `./findhdr sys/sem.h`; then
12272         echo "You have the full sem*(2) library." >&4
12273         val="$define"
12274 else
12275         echo "You don't have the full sem*(2) library." >&4
12276         val="$undef"
12277 fi
12278 set d_sem
12279 eval $setvar
12280
12281 : see whether sys/sem.h defines union semun
12282 echo " "
12283 $cat > try.c <<'END'
12284 #include <sys/types.h>
12285 #include <sys/ipc.h>
12286 #include <sys/sem.h>
12287 int main () { union semun semun; semun.buf = 0; }
12288 END
12289 set try
12290 if eval $compile; then
12291     echo "You have union semun in <sys/sem.h>." >&4
12292     val="$define"
12293 else
12294     echo "You do not have union semun in <sys/sem.h>." >&4
12295     val="$undef"
12296 fi
12297 $rm -f try try.c try.h
12298 set d_union_semun
12299 eval $setvar
12300
12301 : see how to do semctl IPC_STAT
12302 case "$d_sem" in
12303 $define)
12304     : see whether semctl IPC_STAT can use union semun
12305     echo " "
12306     $cat > try.h <<END
12307 #ifndef S_IRUSR
12308 #   ifdef S_IREAD
12309 #       define S_IRUSR S_IREAD
12310 #       define S_IWUSR S_IWRITE
12311 #       define S_IXUSR S_IEXEC
12312 #   else
12313 #       define S_IRUSR 0400
12314 #       define S_IWUSR 0200
12315 #       define S_IXUSR 0100
12316 #   endif
12317 #   define S_IRGRP (S_IRUSR>>3)
12318 #   define S_IWGRP (S_IWUSR>>3)
12319 #   define S_IXGRP (S_IXUSR>>3)
12320 #   define S_IROTH (S_IRUSR>>6)
12321 #   define S_IWOTH (S_IWUSR>>6)
12322 #   define S_IXOTH (S_IXUSR>>6)
12323 #endif
12324 #ifndef S_IRWXU
12325 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
12326 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
12327 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
12328 #endif
12329 END
12330
12331     $cat > try.c <<END
12332 #include <sys/types.h>
12333 #include <sys/ipc.h>
12334 #include <sys/sem.h>
12335 #include <sys/stat.h>
12336 #include <stdio.h>
12337 #include <errno.h>
12338 #include "try.h"
12339 #ifndef errno
12340 extern int errno;
12341 #endif
12342 #$d_union_semun HAS_UNION_SEMUN
12343 int main() {
12344     union semun
12345 #ifndef HAS_UNION_SEMUN
12346     {
12347         int val;
12348         struct semid_ds *buf;
12349         unsigned short *array;
12350     }
12351 #endif
12352     arg;
12353     int sem, st;
12354
12355 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
12356     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12357     if (sem > -1) {
12358         struct semid_ds argbuf;
12359         arg.buf = &argbuf;
12360 #       ifdef IPC_STAT
12361         st = semctl(sem, 0, IPC_STAT, arg);
12362         if (st == 0)
12363             printf("semun\n");
12364         else
12365 #       endif /* IPC_STAT */
12366             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12367 #       ifdef IPC_RMID
12368         if (semctl(sem, 0, IPC_RMID, arg) != 0)
12369 #       endif /* IPC_RMID */
12370             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12371     } else
12372 #endif /* IPC_PRIVATE && ... */
12373         printf("semget failed: errno = %d\n", errno);
12374   return 0;
12375 }
12376 END
12377     val="$undef"
12378     set try
12379     if eval $compile; then
12380         xxx=`$run ./try`
12381         case "$xxx" in
12382         semun) val="$define" ;;
12383         esac
12384     fi
12385     $rm -f try try.c
12386     set d_semctl_semun
12387     eval $setvar
12388     case "$d_semctl_semun" in
12389     $define)
12390         echo "You can use union semun for semctl IPC_STAT." >&4
12391         also='also'
12392         ;;
12393     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
12394         also=''
12395         ;;
12396     esac
12397
12398     : see whether semctl IPC_STAT can use struct semid_ds pointer
12399     $cat > try.c <<'END'
12400 #include <sys/types.h>
12401 #include <sys/ipc.h>
12402 #include <sys/sem.h>
12403 #include <sys/stat.h>
12404 #include "try.h"
12405 #include <stdio.h>
12406 #include <errno.h>
12407 #ifndef errno
12408 extern int errno;
12409 #endif
12410 int main() {
12411     struct semid_ds arg;
12412     int sem, st;
12413
12414 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12415     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12416     if (sem > -1) {
12417 #       ifdef IPC_STAT
12418         st = semctl(sem, 0, IPC_STAT, &arg);
12419         if (st == 0)
12420             printf("semid_ds\n");
12421         else
12422 #       endif /* IPC_STAT */
12423             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12424 #       ifdef IPC_RMID
12425         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12426 #       endif /* IPC_RMID */
12427             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12428     } else
12429 #endif /* IPC_PRIVATE && ... */
12430         printf("semget failed: errno = %d\n", errno);
12431
12432     return 0;
12433 }
12434 END
12435     val="$undef"
12436     set try
12437     if eval $compile; then
12438         xxx=`$run ./try`
12439         case "$xxx" in
12440         semid_ds) val="$define" ;;
12441         esac
12442     fi
12443     $rm -f try try.c
12444     set d_semctl_semid_ds
12445     eval $setvar
12446     case "$d_semctl_semid_ds" in
12447     $define)
12448         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12449         ;;
12450     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12451         ;;
12452     esac
12453     $rm -f try.h
12454     ;;
12455 *)  val="$undef"
12456
12457     # We do not have the full sem*(2) library, so assume we can not
12458     # use either.
12459
12460     set d_semctl_semun
12461     eval $setvar
12462
12463     set d_semctl_semid_ds
12464     eval $setvar
12465     ;;
12466 esac
12467
12468 : see if sendmsg exists
12469 set sendmsg d_sendmsg
12470 eval $inlibc
12471
12472 : see if setegid exists
12473 set setegid d_setegid
12474 eval $inlibc
12475
12476 : see if seteuid exists
12477 set seteuid d_seteuid
12478 eval $inlibc
12479
12480 : see if setgrent exists
12481 set setgrent d_setgrent
12482 eval $inlibc
12483
12484 : see if sethostent exists
12485 set sethostent d_sethent
12486 eval $inlibc
12487
12488 : see if setitimer exists
12489 set setitimer d_setitimer
12490 eval $inlibc
12491
12492 : see if setlinebuf exists
12493 set setlinebuf d_setlinebuf
12494 eval $inlibc
12495
12496 : see if setlocale exists
12497 set setlocale d_setlocale
12498 eval $inlibc
12499
12500 : see if setnetent exists
12501 set setnetent d_setnent
12502 eval $inlibc
12503
12504 : see if setprotoent exists
12505 set setprotoent d_setpent
12506 eval $inlibc
12507
12508 : see if setpgid exists
12509 set setpgid d_setpgid
12510 eval $inlibc
12511
12512 : see if setpgrp2 exists
12513 set setpgrp2 d_setpgrp2
12514 eval $inlibc
12515
12516 : see if setpriority exists
12517 set setpriority d_setprior
12518 eval $inlibc
12519
12520 : see if setproctitle exists
12521 set setproctitle d_setproctitle
12522 eval $inlibc
12523
12524 : see if setpwent exists
12525 set setpwent d_setpwent
12526 eval $inlibc
12527
12528 : see if setregid exists
12529 set setregid d_setregid
12530 eval $inlibc
12531 set setresgid d_setresgid
12532 eval $inlibc
12533
12534 : see if setreuid exists
12535 set setreuid d_setreuid
12536 eval $inlibc
12537 set setresuid d_setresuid
12538 eval $inlibc
12539
12540 : see if setrgid exists
12541 set setrgid d_setrgid
12542 eval $inlibc
12543
12544 : see if setruid exists
12545 set setruid d_setruid
12546 eval $inlibc
12547
12548 : see if setservent exists
12549 set setservent d_setsent
12550 eval $inlibc
12551
12552 : see if setsid exists
12553 set setsid d_setsid
12554 eval $inlibc
12555
12556 : see if setvbuf exists
12557 set setvbuf d_setvbuf
12558 eval $inlibc
12559
12560 : see if sfio.h is available
12561 set sfio.h i_sfio
12562 eval $inhdr
12563
12564
12565 : see if sfio library is available
12566 case "$i_sfio" in
12567 $define)
12568         val=''
12569         set sfreserve val
12570         eval $inlibc
12571         ;;
12572 *)
12573         val="$undef"
12574         ;;
12575 esac
12576 : Ok, but do we want to use it.
12577 case "$val" in
12578 $define)
12579         case "$usesfio" in
12580         true|$define|[yY]*) dflt='y';;
12581         *) dflt='n';;
12582         esac
12583         echo "$package can use the sfio library, but it is experimental."
12584         case "$useperlio" in
12585         "$undef")
12586             echo "For sfio also the PerlIO abstraction layer is needed."
12587             echo "Earlier you said you wouldn't want that."
12588             ;;
12589         esac
12590         rp="You seem to have sfio available, do you want to try using it?"
12591         . ./myread
12592         case "$ans" in
12593         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12594                 useperlio="$define"
12595                 val="$define"
12596                 ;;
12597         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12598                 val="$undef"
12599                 ;;
12600         esac
12601         ;;
12602 *)      case "$usesfio" in
12603         true|$define|[yY]*)
12604                 echo "Sorry, cannot find sfio on this machine." >&4
12605                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12606                 val="$undef"
12607                 ;;
12608         esac
12609         ;;
12610 esac
12611 set d_sfio
12612 eval $setvar
12613 case "$d_sfio" in
12614 $define) usesfio='true';;
12615 *) usesfio='false';;
12616 esac
12617 case "$d_sfio" in
12618 $define) ;;
12619 *)      : Remove sfio from list of libraries to use
12620         case "$libs" in
12621         *-lsfio*)
12622                 echo "Removing unneeded -lsfio from library list" >&4
12623                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12624                 shift
12625                 libs="$*"
12626                 echo "libs = $libs" >&4
12627                 ;;
12628         esac
12629 ;;
12630 esac
12631
12632
12633 : see if shmctl exists
12634 set shmctl d_shmctl
12635 eval $inlibc
12636
12637 : see if shmget exists
12638 set shmget d_shmget
12639 eval $inlibc
12640
12641 : see if shmat exists
12642 set shmat d_shmat
12643 eval $inlibc
12644 : see what shmat returns
12645 case "$d_shmat" in
12646 "$define")
12647         $cat >shmat.c <<'END'
12648 #include <sys/shm.h>
12649 void *shmat();
12650 END
12651         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12652                 shmattype='void *'
12653         else
12654                 shmattype='char *'
12655         fi
12656         echo "and it returns ($shmattype)." >&4
12657         : see if a prototype for shmat is available
12658         xxx=`./findhdr sys/shm.h`
12659         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12660         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12661                 val="$define"
12662         else
12663                 val="$undef"
12664         fi
12665         $rm -f shmat.[co]
12666         ;;
12667 *)
12668         val="$undef"
12669         ;;
12670 esac
12671 set d_shmatprototype
12672 eval $setvar
12673
12674 : see if shmdt exists
12675 set shmdt d_shmdt
12676 eval $inlibc
12677
12678 : see how much of the 'shm*(2)' library is present.
12679 h_shm=true
12680 echo " "
12681 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12682 *"$undef"*) h_shm=false;;
12683 esac
12684 case "$osname" in
12685 freebsd)
12686     case "`ipcs 2>&1`" in
12687     "SVID shared memory"*"not configured"*)
12688         echo "Your $osname does not have the shm*(2) configured." >&4
12689         h_shm=false
12690         val="$undef"
12691         set shmctl d_shmctl
12692         evat $setvar
12693         set shmget d_shmget
12694         evat $setvar
12695         set shmat d_shmat
12696         evat $setvar
12697         set shmdt d_shmdt
12698         evat $setvar
12699         ;;
12700     esac
12701     ;;
12702 esac
12703 : we could also check for sys/ipc.h ...
12704 if $h_shm && $test `./findhdr sys/shm.h`; then
12705         echo "You have the full shm*(2) library." >&4
12706         val="$define"
12707 else
12708         echo "You don't have the full shm*(2) library." >&4
12709         val="$undef"
12710 fi
12711 set d_shm
12712 eval $setvar
12713
12714 echo " "
12715 : see if we have sigaction
12716 if set sigaction val -f d_sigaction; eval $csym; $val; then
12717         echo 'sigaction() found.' >&4
12718         $cat > try.c <<'EOP'
12719 #include <stdio.h>
12720 #include <sys/types.h>
12721 #include <signal.h>
12722 int main()
12723 {
12724     struct sigaction act, oact;
12725     act.sa_flags = 0;
12726     oact.sa_handler = 0;
12727     /* so that act and oact are used */
12728     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12729 }
12730 EOP
12731         set try
12732         if eval $compile_ok; then
12733                 val="$define"
12734         else
12735                 echo "But you don't seem to have a useable struct sigaction." >&4
12736                 val="$undef"
12737         fi
12738 else
12739         echo 'sigaction NOT found.' >&4
12740         val="$undef"
12741 fi
12742 set d_sigaction; eval $setvar
12743 $rm -f try try$_o try.c
12744
12745 : see if sigprocmask exists
12746 set sigprocmask d_sigprocmask
12747 eval $inlibc
12748
12749 : see if sigsetjmp exists
12750 echo " "
12751 case "$d_sigsetjmp" in
12752 '')
12753         $cat >try.c <<'EOP'
12754 #include <setjmp.h>
12755 sigjmp_buf env;
12756 int set = 1;
12757 int main()
12758 {
12759         if (sigsetjmp(env,1))
12760                 exit(set);
12761         set = 0;
12762         siglongjmp(env, 1);
12763         exit(1);
12764 }
12765 EOP
12766         set try
12767         if eval $compile; then
12768                 if $run ./try >/dev/null 2>&1; then
12769                         echo "POSIX sigsetjmp found." >&4
12770                         val="$define"
12771                 else
12772                         $cat >&4 <<EOM
12773 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12774 I'll ignore them.
12775 EOM
12776                         val="$undef"
12777                 fi
12778         else
12779                 echo "sigsetjmp not found." >&4
12780                 val="$undef"
12781         fi
12782         ;;
12783 *) val="$d_sigsetjmp"
12784         case "$d_sigsetjmp" in
12785         $define) echo "POSIX sigsetjmp found." >&4;;
12786         $undef) echo "sigsetjmp not found." >&4;;
12787         esac
12788         ;;
12789 esac
12790 set d_sigsetjmp
12791 eval $setvar
12792 $rm -f try.c try
12793
12794 : see if sockatmark exists
12795 set sockatmark d_sockatmark
12796 eval $inlibc
12797
12798 : see if prototype for sockatmark is available
12799 echo " "
12800 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12801 eval $hasproto
12802
12803 : see if socks5_init exists
12804 set socks5_init d_socks5_init
12805 eval $inlibc
12806
12807 : see if prototype for setresgid is available
12808 echo " "
12809 set d_sresgproto setresgid $i_unistd unistd.h
12810 eval $hasproto
12811
12812 : see if prototype for setresuid is available
12813 echo " "
12814 set d_sresuproto setresuid $i_unistd unistd.h
12815 eval $hasproto
12816
12817 : see if sys/stat.h is available
12818 set sys/stat.h i_sysstat
12819 eval $inhdr
12820
12821
12822 : see if stat knows about block sizes
12823 echo " "
12824 echo "Checking to see if your struct stat has st_blocks field..." >&4
12825 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12826 eval $hasfield
12827
12828
12829 : see if this is a sys/vfs.h system
12830 set sys/vfs.h i_sysvfs
12831 eval $inhdr
12832
12833
12834 : see if this is a sys/statfs.h system
12835 set sys/statfs.h i_sysstatfs
12836 eval $inhdr
12837
12838
12839 echo " "
12840 echo "Checking to see if your system supports struct statfs..." >&4
12841 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
12842 eval $hasstruct
12843 case "$d_statfs_s" in
12844 "$define")      echo "Yes, it does."   ;;
12845 *)              echo "No, it doesn't." ;;
12846 esac
12847
12848
12849
12850 : see if struct statfs knows about f_flags
12851 case "$d_statfs_s" in
12852 define) 
12853         echo " "
12854         echo "Checking to see if your struct statfs has f_flags field..." >&4
12855         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
12856         eval $hasfield
12857         ;;
12858 *)      val="$undef"
12859         set d_statfs_f_flags
12860         eval $setvar
12861         ;;
12862 esac
12863 case "$d_statfs_f_flags" in
12864 "$define")      echo "Yes, it does."   ;;
12865 *)              echo "No, it doesn't." ;;
12866 esac
12867
12868 : see if _ptr and _cnt from stdio act std
12869 echo " "
12870
12871 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12872         echo "(Looks like you have stdio.h from BSD.)"
12873         case "$stdio_ptr" in
12874         '') stdio_ptr='((fp)->_p)'
12875                 ptr_lval=$define
12876                 ;;
12877         *)      ptr_lval=$d_stdio_ptr_lval;;
12878         esac
12879         case "$stdio_cnt" in
12880         '') stdio_cnt='((fp)->_r)'
12881                 cnt_lval=$define
12882                 ;;
12883         *)      cnt_lval=$d_stdio_cnt_lval;;
12884         esac
12885         case "$stdio_base" in
12886         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12887         esac
12888         case "$stdio_bufsiz" in
12889         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12890         esac
12891 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12892         echo "(Looks like you have stdio.h from Linux.)"
12893         case "$stdio_ptr" in
12894         '') stdio_ptr='((fp)->_IO_read_ptr)'
12895                 ptr_lval=$define
12896                 ;;
12897         *)      ptr_lval=$d_stdio_ptr_lval;;
12898         esac
12899         case "$stdio_cnt" in
12900         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12901                 cnt_lval=$undef
12902                 ;;
12903         *)      cnt_lval=$d_stdio_cnt_lval;;
12904         esac
12905         case "$stdio_base" in
12906         '') stdio_base='((fp)->_IO_read_base)';;
12907         esac
12908         case "$stdio_bufsiz" in
12909         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12910         esac
12911 else
12912         case "$stdio_ptr" in
12913         '') stdio_ptr='((fp)->_ptr)'
12914                 ptr_lval=$define
12915                 ;;
12916         *)      ptr_lval=$d_stdio_ptr_lval;;
12917         esac
12918         case "$stdio_cnt" in
12919         '') stdio_cnt='((fp)->_cnt)'
12920                 cnt_lval=$define
12921                 ;;
12922         *)      cnt_lval=$d_stdio_cnt_lval;;
12923         esac
12924         case "$stdio_base" in
12925         '') stdio_base='((fp)->_base)';;
12926         esac
12927         case "$stdio_bufsiz" in
12928         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12929         esac
12930 fi
12931
12932 : test whether _ptr and _cnt really work
12933 echo "Checking how std your stdio is..." >&4
12934 $cat >try.c <<EOP
12935 #include <stdio.h>
12936 #define FILE_ptr(fp)    $stdio_ptr
12937 #define FILE_cnt(fp)    $stdio_cnt
12938 int main() {
12939         FILE *fp = fopen("try.c", "r");
12940         char c = getc(fp);
12941         if (
12942                 18 <= FILE_cnt(fp) &&
12943                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12944         )
12945                 exit(0);
12946         exit(1);
12947 }
12948 EOP
12949 val="$undef"
12950 set try
12951 if eval $compile && $to try.c; then
12952         if $run ./try; then
12953                 echo "Your stdio acts pretty std."
12954                 val="$define"
12955         else
12956                 echo "Your stdio isn't very std."
12957         fi
12958 else
12959         echo "Your stdio doesn't appear very std."
12960 fi
12961 $rm -f try.c try
12962 set d_stdstdio
12963 eval $setvar
12964
12965 : Can _ptr be used as an lvalue?
12966 case "$d_stdstdio$ptr_lval" in
12967 $define$define) val=$define ;;
12968 *) val=$undef ;;
12969 esac
12970 set d_stdio_ptr_lval
12971 eval $setvar
12972
12973 : Can _cnt be used as an lvalue?
12974 case "$d_stdstdio$cnt_lval" in
12975 $define$define) val=$define ;;
12976 *) val=$undef ;;
12977 esac
12978 set d_stdio_cnt_lval
12979 eval $setvar
12980
12981
12982 : test whether setting _ptr sets _cnt as a side effect
12983 d_stdio_ptr_lval_sets_cnt="$undef"
12984 d_stdio_ptr_lval_nochange_cnt="$undef"
12985 case "$d_stdio_ptr_lval$d_stdstdio" in
12986 $define$define)
12987         echo "Checking to see what happens if we set the stdio ptr..." >&4
12988 $cat >try.c <<EOP
12989 #include <stdio.h>
12990 /* Can we scream? */
12991 /* Eat dust sed :-) */
12992 /* In the buffer space, no one can hear you scream. */
12993 #define FILE_ptr(fp)    $stdio_ptr
12994 #define FILE_cnt(fp)    $stdio_cnt
12995 #include <sys/types.h>
12996 int main() {
12997         FILE *fp = fopen("try.c", "r");
12998         int c;
12999         char *ptr;
13000         size_t cnt;
13001         if (!fp) {
13002             puts("Fail even to read");
13003             exit(1);
13004         }
13005         c = getc(fp); /* Read away the first # */
13006         if (c == EOF) {
13007             puts("Fail even to read");
13008             exit(1);
13009         }
13010         if (!(
13011                 18 <= FILE_cnt(fp) &&
13012                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
13013         )) {
13014                 puts("Fail even to read");
13015                 exit (1);
13016         }
13017         ptr = (char*) FILE_ptr(fp);
13018         cnt = (size_t)FILE_cnt(fp);
13019
13020         FILE_ptr(fp) += 42;
13021
13022         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
13023                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
13024                 exit (1);
13025         }
13026         if (FILE_cnt(fp) <= 20) {
13027                 printf ("Fail (<20 chars to test)");
13028                 exit (1);
13029         }
13030         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
13031                 puts("Fail compare");
13032                 exit (1);
13033         }
13034         if (cnt == FILE_cnt(fp)) {
13035                 puts("Pass_unchanged");
13036                 exit (0);
13037         }       
13038         if (FILE_cnt(fp) == (cnt - 42)) {
13039                 puts("Pass_changed");
13040                 exit (0);
13041         }
13042         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
13043         return 1;
13044
13045 }
13046 EOP
13047         set try
13048         if eval $compile && $to try.c; then
13049                 case `$run ./try` in
13050                 Pass_changed)
13051                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
13052                         d_stdio_ptr_lval_sets_cnt="$define" ;;
13053                 Pass_unchanged)
13054                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
13055                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
13056                 Fail*)
13057                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
13058                 *)
13059                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
13060         esac
13061         else
13062                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
13063         fi
13064         $rm -f try.c try
13065         ;;
13066 esac
13067
13068 : see if _base is also standard
13069 val="$undef"
13070 case "$d_stdstdio" in
13071 $define)
13072         $cat >try.c <<EOP
13073 #include <stdio.h>
13074 #define FILE_base(fp)   $stdio_base
13075 #define FILE_bufsiz(fp) $stdio_bufsiz
13076 int main() {
13077         FILE *fp = fopen("try.c", "r");
13078         char c = getc(fp);
13079         if (
13080                 19 <= FILE_bufsiz(fp) &&
13081                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
13082         )
13083                 exit(0);
13084         exit(1);
13085 }
13086 EOP
13087         set try
13088         if eval $compile && $to try.c; then
13089                 if $run ./try; then
13090                         echo "And its _base field acts std."
13091                         val="$define"
13092                 else
13093                         echo "But its _base field isn't std."
13094                 fi
13095         else
13096                 echo "However, it seems to be lacking the _base field."
13097         fi
13098         $rm -f try.c try
13099         ;;
13100 esac
13101 set d_stdiobase
13102 eval $setvar
13103
13104 $cat >&4 <<EOM
13105 Checking how to access stdio streams by file descriptor number...
13106 EOM
13107 case "$stdio_stream_array" in
13108 '')     $cat >try.c <<EOCP
13109 #include <stdio.h>
13110 int main() {
13111   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
13112     printf("yes\n");
13113 }
13114 EOCP
13115         for s in _iob __iob __sF
13116         do
13117                 set try -DSTDIO_STREAM_ARRAY=$s
13118                 if eval $compile; then
13119                         case "`$run ./try`" in
13120                         yes)    stdio_stream_array=$s; break ;;
13121                         esac
13122                 fi
13123         done
13124         $rm -f try.* try$exe_ext
13125 esac
13126 case "$stdio_stream_array" in
13127 '')     $cat >&4 <<EOM
13128 I can't figure out how to access stdio streams by file descriptor number.
13129 EOM
13130         d_stdio_stream_array="$undef"
13131         ;;
13132 *)      $cat >&4 <<EOM
13133 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
13134 EOM
13135         d_stdio_stream_array="$define"
13136         ;;
13137 esac
13138
13139 : see if strcoll exists
13140 set strcoll d_strcoll
13141 eval $inlibc
13142
13143 : check for structure copying
13144 echo " "
13145 echo "Checking to see if your C compiler can copy structs..." >&4
13146 $cat >try.c <<'EOCP'
13147 int main()
13148 {
13149         struct blurfl {
13150                 int dyick;
13151         } foo, bar;
13152
13153         foo = bar;
13154 }
13155 EOCP
13156 if $cc -c try.c >/dev/null 2>&1 ; then
13157         val="$define"
13158         echo "Yup, it can."
13159 else
13160         val="$undef"
13161         echo "Nope, it can't."
13162 fi
13163 set d_strctcpy
13164 eval $setvar
13165 $rm -f try.*
13166
13167 : see if strerror and/or sys_errlist[] exist
13168 echo " "
13169 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
13170     if set strerror val -f d_strerror; eval $csym; $val; then
13171                 echo 'strerror() found.' >&4
13172                 d_strerror="$define"
13173                 d_strerrm='strerror(e)'
13174                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13175                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
13176                         d_syserrlst="$define"
13177                 else
13178                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
13179                         d_syserrlst="$undef"
13180                 fi
13181     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
13182                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
13183                 echo 'strerror() found in string header.' >&4
13184                 d_strerror="$define"
13185                 d_strerrm='strerror(e)'
13186                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
13187                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
13188                                 d_syserrlst="$define"
13189                 else
13190                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
13191                         d_syserrlst="$undef"
13192                 fi
13193     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
13194                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
13195                 d_strerror="$undef"
13196                 d_syserrlst="$define"
13197                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
13198     else
13199                 echo 'strerror() and sys_errlist[] NOT found.' >&4
13200                 d_strerror="$undef"
13201                 d_syserrlst="$undef"
13202                 d_strerrm='"unknown"'
13203     fi
13204 fi
13205
13206 : see if strftime exists
13207 set strftime d_strftime
13208 eval $inlibc
13209
13210 : see if strtod exists
13211 set strtod d_strtod
13212 eval $inlibc
13213
13214 : see if strtol exists
13215 set strtol d_strtol
13216 eval $inlibc
13217
13218 : see if strtold exists
13219 set strtold d_strtold
13220 eval $inlibc
13221
13222 : see if strtoll exists
13223 set strtoll d_strtoll
13224 eval $inlibc
13225
13226 case "$d_longlong-$d_strtoll" in
13227 "$define-$define")
13228         $cat <<EOM
13229 Checking whether your strtoll() works okay...
13230 EOM
13231         $cat >try.c <<'EOCP'
13232 #include <errno.h>
13233 #ifdef __hpux
13234 #define strtoll __strtoll
13235 #endif
13236 #ifdef __EMX__
13237 #define strtoll _strtoll
13238 #endif
13239 #include <stdio.h>
13240 extern long long int strtoll(char *s, char **, int); 
13241 static int bad = 0;
13242 int check(char *s, long long ell, int een) {
13243         long long gll;
13244         errno = 0;
13245         gll = strtoll(s, 0, 10);
13246         if (!((gll == ell) && (errno == een)))
13247                 bad++;
13248 }
13249 int main() {
13250         check(" 1",                                      1LL, 0);
13251         check(" 0",                                      0LL, 0);
13252         check("-1",                                     -1LL, 0);
13253         check("-9223372036854775808", -9223372036854775808LL, 0);
13254         check("-9223372036854775808", -9223372036854775808LL, 0);
13255         check(" 9223372036854775807",  9223372036854775807LL, 0);
13256         check("-9223372036854775808", -9223372036854775808LL, 0);
13257         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
13258         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
13259         if (!bad)
13260                 printf("ok\n");
13261 }
13262 EOCP
13263         set try
13264         if eval $compile; then
13265                 yyy=`$run ./try`
13266                 case "$yyy" in
13267                 ok) echo "Your strtoll() seems to be working okay." ;;
13268                 *) cat <<EOM >&4
13269 Your strtoll() doesn't seem to be working okay.
13270 EOM
13271                    d_strtoll="$undef"
13272                    ;;
13273                 esac
13274         else
13275                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13276                 d_strtoll="$undef"
13277         fi
13278         ;;
13279 esac
13280
13281 : see if strtoq exists
13282 set strtoq d_strtoq
13283 eval $inlibc
13284
13285 : see if strtoul exists
13286 set strtoul d_strtoul
13287 eval $inlibc
13288
13289 case "$d_strtoul" in
13290 "$define")
13291         $cat <<EOM
13292 Checking whether your strtoul() works okay...
13293 EOM
13294         $cat >try.c <<'EOCP'
13295 #include <errno.h>
13296 #include <stdio.h>
13297 extern unsigned long int strtoul(char *s, char **, int); 
13298 static int bad = 0;
13299 void check(char *s, unsigned long eul, int een) {
13300         unsigned long gul;
13301         errno = 0;
13302         gul = strtoul(s, 0, 10);
13303         if (!((gul == eul) && (errno == een)))
13304                 bad++;
13305 }
13306 int main() {
13307         check(" 1", 1L, 0);
13308         check(" 0", 0L, 0);
13309 EOCP
13310         case "$longsize" in
13311         8)
13312             $cat >>try.c <<'EOCP'
13313         check("18446744073709551615", 18446744073709551615UL, 0);
13314         check("18446744073709551616", 18446744073709551615UL, ERANGE);
13315 #if 0 /* strtoul() for /^-/ strings is undefined. */
13316         check("-1", 18446744073709551615UL, 0);
13317         check("-18446744073709551614", 2, 0);
13318         check("-18446744073709551615", 1, 0);
13319         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
13320         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
13321 #endif
13322 EOCP
13323                 ;;
13324         4)
13325                     $cat >>try.c <<'EOCP'
13326         check("4294967295", 4294967295UL, 0);
13327         check("4294967296", 4294967295UL, ERANGE);
13328 #if 0 /* strtoul() for /^-/ strings is undefined. */
13329         check("-1", 4294967295UL, 0);
13330         check("-4294967294", 2, 0);
13331         check("-4294967295", 1, 0);
13332         check("-4294967296", 4294967295UL, ERANGE);
13333         check("-4294967297", 4294967295UL, ERANGE);
13334 #endif
13335 EOCP
13336                 ;;
13337         *)
13338 : Should we write these tests to be more portable by sprintf-ing
13339 : ~0 and then manipulating that char string as input for strtol?
13340                 ;;
13341         esac
13342         $cat >>try.c <<'EOCP'
13343         if (!bad)
13344                 printf("ok\n");
13345         return 0;
13346 }
13347 EOCP
13348         set try
13349         if eval $compile; then
13350                 case "`$run ./try`" in
13351                 ok) echo "Your strtoul() seems to be working okay." ;;
13352                 *) cat <<EOM >&4
13353 Your strtoul() doesn't seem to be working okay.
13354 EOM
13355                    d_strtoul="$undef"
13356                    ;;
13357                 esac
13358         fi
13359         ;;
13360 esac
13361
13362 : see if strtoull exists
13363 set strtoull d_strtoull
13364 eval $inlibc
13365
13366 case "$d_longlong-$d_strtoull" in
13367 "$define-$define")
13368         $cat <<EOM
13369 Checking whether your strtoull() works okay...
13370 EOM
13371         $cat >try.c <<'EOCP'
13372 #include <errno.h>
13373 #ifdef __hpux
13374 #define strtoull __strtoull
13375 #endif
13376 #include <stdio.h>
13377 extern unsigned long long int strtoull(char *s, char **, int); 
13378 static int bad = 0;
13379 int check(char *s, long long eull, int een) {
13380         long long gull;
13381         errno = 0;
13382         gull = strtoull(s, 0, 10);
13383         if (!((gull == eull) && (errno == een)))
13384                 bad++;
13385 }
13386 int main() {
13387         check(" 1",                                        1LL, 0);
13388         check(" 0",                                        0LL, 0);
13389         check("18446744073709551615",  18446744073709551615ULL, 0);
13390         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13391 #if 0 /* strtoull() for /^-/ strings is undefined. */
13392         check("-1",                    18446744073709551615ULL, 0);
13393         check("-18446744073709551614",                     2LL, 0);
13394         check("-18446744073709551615",                     1LL, 0);
13395         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13396         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13397 #endif
13398         if (!bad)
13399                 printf("ok\n");
13400 }
13401 EOCP
13402         set try
13403         if eval $compile; then
13404                 case "`$run ./try`" in
13405                 ok) echo "Your strtoull() seems to be working okay." ;;
13406                 *) cat <<EOM >&4
13407 Your strtoull() doesn't seem to be working okay.
13408 EOM
13409                    d_strtoull="$undef"
13410                    ;;
13411                 esac
13412         fi
13413         ;;
13414 esac
13415
13416 : see if strtouq exists
13417 set strtouq d_strtouq
13418 eval $inlibc
13419
13420 case "$d_strtouq" in
13421 "$define")
13422         $cat <<EOM
13423 Checking whether your strtouq() works okay...
13424 EOM
13425         $cat >try.c <<'EOCP'
13426 #include <errno.h>
13427 #include <stdio.h>
13428 extern unsigned long long int strtouq(char *s, char **, int); 
13429 static int bad = 0;
13430 void check(char *s, unsigned long long eull, int een) {
13431         unsigned long long gull;
13432         errno = 0;
13433         gull = strtouq(s, 0, 10);
13434         if (!((gull == eull) && (errno == een)))
13435                 bad++;
13436 }
13437 int main() {
13438         check(" 1",                                        1LL, 0);
13439         check(" 0",                                        0LL, 0);
13440         check("18446744073709551615",  18446744073709551615ULL, 0);
13441         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13442 #if 0 /* strtouq() for /^-/ strings is undefined. */
13443         check("-1",                    18446744073709551615ULL, 0);
13444         check("-18446744073709551614",                     2LL, 0);
13445         check("-18446744073709551615",                     1LL, 0);
13446         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13447         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13448 #endif
13449         if (!bad)
13450                 printf("ok\n");
13451         return 0;
13452 }
13453 EOCP
13454         set try
13455         if eval $compile; then
13456                 case "`$run ./try`" in
13457                 ok) echo "Your strtouq() seems to be working okay." ;;
13458                 *) cat <<EOM >&4
13459 Your strtouq() doesn't seem to be working okay.
13460 EOM
13461                    d_strtouq="$undef"
13462                    ;;
13463                 esac
13464         fi
13465         ;;
13466 esac
13467
13468 : see if strxfrm exists
13469 set strxfrm d_strxfrm
13470 eval $inlibc
13471
13472 : see if symlink exists
13473 set symlink d_symlink
13474 eval $inlibc
13475
13476 : see if syscall exists
13477 set syscall d_syscall
13478 eval $inlibc
13479
13480 : see if prototype for syscall is available
13481 echo " "
13482 set d_syscallproto syscall $i_unistd unistd.h
13483 eval $hasproto
13484
13485 : see if sysconf exists
13486 set sysconf d_sysconf
13487 eval $inlibc
13488
13489 : see if system exists
13490 set system d_system
13491 eval $inlibc
13492
13493 : see if tcgetpgrp exists
13494 set tcgetpgrp d_tcgetpgrp
13495 eval $inlibc
13496
13497 : see if tcsetpgrp exists
13498 set tcsetpgrp d_tcsetpgrp
13499 eval $inlibc
13500
13501 : see if prototype for telldir is available
13502 echo " "
13503 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13504 eval $hasproto
13505
13506 : see if this is a sys/times.h system
13507 set sys/times.h i_systimes
13508 eval $inhdr
13509
13510 : see if times exists
13511 echo " "
13512 if set times val -f d_times; eval $csym; $val; then
13513         echo 'times() found.' >&4
13514         d_times="$define"
13515         inc=''
13516         case "$i_systimes" in
13517         "$define") inc='sys/times.h';;
13518         esac
13519         rp="What is the type returned by times() on this system?"
13520         set clock_t clocktype long stdio.h sys/types.h $inc
13521         eval $typedef_ask
13522 else
13523         echo 'times() NOT found, hope that will do.' >&4
13524         d_times="$undef"
13525         clocktype='int'
13526 fi
13527
13528 : see if truncate exists
13529 set truncate d_truncate
13530 eval $inlibc
13531
13532 : see if tzname[] exists
13533 echo " "
13534 if set tzname val -a d_tzname; eval $csym; $val; then
13535         val="$define"
13536         echo 'tzname[] found.' >&4
13537 else
13538         val="$undef"
13539         echo 'tzname[] NOT found.' >&4
13540 fi
13541 set d_tzname
13542 eval $setvar
13543
13544 case "$osname" in
13545 next|rhapsody|darwin) multiarch="$define" ;;
13546 esac
13547 case "$multiarch" in
13548 ''|[nN]*) multiarch="$undef" ;;
13549 esac
13550
13551 : check for ordering of bytes in a long
13552 echo " "
13553 case "$usecrosscompile$multiarch" in
13554 *$define*)
13555         $cat <<EOM
13556 You seem to be either cross-compiling or doing a multiarchitecture build,
13557 skipping the byteorder check.
13558
13559 EOM
13560         byteorder='ffff'
13561         ;;
13562 *)
13563         case "$byteorder" in
13564         '')
13565                 $cat <<'EOM'
13566 In the following, larger digits indicate more significance.  A big-endian
13567 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13568 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13569 machines may have weird orders like 3412.  A Cray will report 87654321,
13570 an Alpha will report 12345678. If the test program works the default is
13571 probably right.
13572 I'm now running the test program...
13573 EOM
13574                 $cat >try.c <<'EOCP'
13575 #include <stdio.h>
13576 int main()
13577 {
13578         int i;
13579         union {
13580                 unsigned long l;
13581                 char c[sizeof(long)];
13582         } u;
13583
13584         if (sizeof(long) > 4)
13585                 u.l = (0x08070605L << 32) | 0x04030201L;
13586         else
13587                 u.l = 0x04030201L;
13588         for (i = 0; i < sizeof(long); i++)
13589                 printf("%c", u.c[i]+'0');
13590         printf("\n");
13591         exit(0);
13592 }
13593 EOCP
13594                 xxx_prompt=y
13595                 set try
13596                 if eval $compile && ./try > /dev/null; then
13597                         dflt=`$run ./try`
13598                         case "$dflt" in
13599                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13600                                 echo "(The test program ran ok.)"
13601                                 echo "byteorder=$dflt"
13602                                 xxx_prompt=n
13603                         ;;
13604                         ????|????????) echo "(The test program ran ok.)" ;;
13605                         *) echo "(The test program didn't run right for some reason.)" ;;
13606                         esac
13607                 else
13608                         dflt='4321'
13609                         cat <<'EOM'
13610 (I can't seem to compile the test program.  Guessing big-endian...)
13611 EOM
13612                 fi
13613                 case "$xxx_prompt" in
13614                 y)
13615                         rp="What is the order of bytes in a long?"
13616                         . ./myread
13617                         byteorder="$ans"
13618                         ;;
13619                 *)      byteorder=$dflt
13620                         ;;
13621                 esac
13622                 ;;
13623         esac
13624         $rm -f try.c try
13625         ;;
13626 esac
13627
13628
13629 $cat <<EOM
13630
13631 Checking to see whether you can access character data unalignedly...
13632 EOM
13633 case "$d_u32align" in
13634 '')   $cat >try.c <<EOCP
13635 #include <stdio.h>
13636 #define U32 $u32type
13637 #define BYTEORDER 0x$byteorder
13638 #define U8 $u8type
13639 #include <signal.h>
13640 #ifdef SIGBUS
13641 $signal_t bletch(s) int s; { exit(4); }
13642 #endif
13643 int main() {
13644 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13645     U8 buf[8];
13646     U32 *up;
13647     int i;
13648
13649     if (sizeof(U32) != 4) {
13650         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13651         exit(1);
13652     }
13653
13654     fflush(stdout);
13655
13656 #ifdef SIGBUS
13657     signal(SIGBUS, bletch);
13658 #endif
13659
13660     buf[0] = 0;
13661     buf[1] = 0;
13662     buf[2] = 0;
13663     buf[3] = 1;
13664     buf[5] = 0;
13665     buf[6] = 0;
13666     buf[7] = 0;
13667     buf[8] = 1;
13668
13669     for (i = 0; i < 4; i++) {
13670         up = (U32*)(buf + i);
13671         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13672                (*up == 1 << (8*(3-i)))  /* little-endian */
13673               )
13674            )
13675         {
13676             printf("read failed (%x)\n", *up);
13677             exit(2);
13678         }
13679     }
13680
13681     /* write test */
13682     for (i = 0; i < 4; i++) {
13683         up = (U32*)(buf + i);
13684         *up = 0xBeef;
13685         if (*up != 0xBeef) {
13686             printf("write failed (%x)\n", *up);
13687             exit(3);
13688         }
13689     }
13690
13691     exit(0);
13692 #else
13693     printf("1\n");
13694     exit(1);
13695 #endif
13696     return 0;
13697 }
13698 EOCP
13699 set try
13700 if eval $compile_ok; then
13701         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
13702         $run ./try 2>&1 >/dev/null
13703         case "$?" in
13704         0)      cat >&4 <<EOM
13705 You can access character data pretty unalignedly.
13706 EOM
13707                 d_u32align="$undef"
13708                 ;;
13709         *)      cat >&4 <<EOM
13710 It seems that you must access character data in an aligned manner.
13711 EOM
13712                 d_u32align="$define"
13713                 ;;
13714         esac
13715 else
13716         rp='Can you access character data at unaligned addresses?'
13717         dflt='n'
13718         . ./myread
13719         case "$ans" in
13720         [yY]*)  d_u32align="$undef"  ;;
13721         *)      d_u32align="$define" ;;
13722         esac
13723 fi
13724 $rm -f core core.try.* try.core
13725 ;;
13726 esac
13727
13728 : see if ualarm exists
13729 set ualarm d_ualarm
13730 eval $inlibc
13731
13732 : see if umask exists
13733 set umask d_umask
13734 eval $inlibc
13735
13736 : see if unordered exists
13737 set unordered d_unordered
13738 eval $inlibc
13739
13740 : see if usleep exists
13741 set usleep d_usleep
13742 eval $inlibc
13743
13744 : see if prototype for usleep is available
13745 echo " "
13746 set d_usleepproto usleep $i_unistd unistd.h
13747 eval $hasproto
13748
13749 : see if ustat exists
13750 set ustat d_ustat
13751 eval $inlibc
13752
13753 : backward compatibility for d_hvfork
13754 if test X$d_hvfork != X; then
13755         d_vfork="$d_hvfork"
13756         d_hvfork=''
13757 fi
13758 : see if there is a vfork
13759 val=''
13760 set vfork val
13761 eval $inlibc
13762
13763 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13764 : perl on Solaris 2.x, and probably elsewhere.
13765 case "$val" in
13766 $define)
13767         echo " "
13768         case "$usevfork" in
13769         false) dflt='n';;
13770         *) dflt='y';;
13771         esac
13772         cat <<'EOM'
13773  
13774 Perl can only use a vfork() that doesn't suffer from strict
13775 restrictions on calling functions or modifying global data in
13776 the child.  For example, glibc-2.1 contains such a vfork()
13777 that is unsuitable.  If your system provides a proper fork()
13778 call, chances are that you do NOT want perl to use vfork().
13779
13780 EOM
13781         rp="Do you still want to use vfork()?"
13782         . ./myread
13783         case "$ans" in
13784         y|Y) ;;
13785         *)
13786                 echo "Ok, we won't use vfork()."
13787                 val="$undef"
13788                 ;;
13789         esac
13790         ;;
13791 esac
13792 set d_vfork
13793 eval $setvar
13794 case "$d_vfork" in
13795 $define) usevfork='true';;
13796 *) usevfork='false';;
13797 esac
13798
13799 : see if closedir exists
13800 set closedir d_closedir
13801 eval $inlibc
13802
13803 case "$d_closedir" in
13804 "$define")
13805         echo " "
13806         echo "Checking whether closedir() returns a status..." >&4
13807         cat > try.c <<EOM
13808 #$i_dirent I_DIRENT             /**/
13809 #$i_sysdir I_SYS_DIR            /**/
13810 #$i_sysndir I_SYS_NDIR          /**/
13811 #$i_systypes I_SYS_TYPES        /**/
13812
13813 #if defined(I_SYS_TYPES)
13814 #include <sys/types.h>
13815 #endif
13816 #if defined(I_DIRENT)
13817 #include <dirent.h>
13818 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13819 #include <sys/dir.h>
13820 #endif
13821 #else
13822 #ifdef I_SYS_NDIR
13823 #include <sys/ndir.h>
13824 #else
13825 #ifdef I_SYS_DIR
13826 #ifdef hp9000s500
13827 #include <ndir.h>       /* may be wrong in the future */
13828 #else
13829 #include <sys/dir.h>
13830 #endif
13831 #endif
13832 #endif
13833 #endif 
13834 int main() { return closedir(opendir(".")); }
13835 EOM
13836         set try
13837         if eval $compile_ok; then
13838                 if $run ./try > /dev/null 2>&1 ; then
13839                         echo "Yes, it does."
13840                         val="$undef"
13841                 else
13842                         echo "No, it doesn't."
13843                         val="$define"
13844                 fi
13845         else
13846                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13847                 val="$define"
13848         fi
13849         ;;
13850 *)
13851         val="$undef";
13852         ;;
13853 esac
13854 set d_void_closedir
13855 eval $setvar
13856 $rm -f try try.*
13857 : see if there is a wait4
13858 set wait4 d_wait4
13859 eval $inlibc
13860
13861 : see if waitpid exists
13862 set waitpid d_waitpid
13863 eval $inlibc
13864
13865 : see if wcstombs exists
13866 set wcstombs d_wcstombs
13867 eval $inlibc
13868
13869 : see if wctomb exists
13870 set wctomb d_wctomb
13871 eval $inlibc
13872
13873 : see if writev exists
13874 set writev d_writev
13875 eval $inlibc
13876
13877 : preserve RCS keywords in files with variable substitution, grrr
13878 Date='$Date'
13879 Id='$Id'
13880 Log='$Log'
13881 RCSfile='$RCSfile'
13882 Revision='$Revision'
13883
13884 : check for alignment requirements
13885 echo " "
13886 case "$usecrosscompile$multiarch" in
13887 *$define*)
13888         $cat <<EOM
13889 You seem to be either cross-compiling or doing a multiarchitecture build,
13890 skipping the memory alignment check.
13891
13892 EOM
13893         case "$alignbytes" in
13894         '') alignbytes=8 ;;
13895         esac
13896         ;;
13897 *)
13898         case "$alignbytes" in
13899         '') echo "Checking alignment constraints..." >&4
13900                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13901                         $cat >try.c <<'EOCP'
13902 typedef long double NV;
13903 EOCP
13904                 else
13905                         $cat >try.c <<'EOCP'
13906 typedef double NV;
13907 EOCP
13908                 fi
13909                 $cat >>try.c <<'EOCP'
13910 #include <stdio.h>
13911 struct foobar {
13912         char foo;
13913         NV bar;
13914 } try_algn;
13915 int main()
13916 {
13917     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13918     return(0);
13919 }
13920 EOCP
13921                 set try
13922                 if eval $compile_ok; then
13923                         dflt=`$run ./try`
13924                 else
13925                         dflt='8'
13926                         echo "(I can't seem to compile the test program...)"
13927                 fi
13928                 ;;
13929         *) dflt="$alignbytes"
13930                 ;;
13931         esac
13932         rp="Doubles must be aligned on a how-many-byte boundary?"
13933         . ./myread
13934         alignbytes="$ans"
13935         $rm -f try.c try
13936         ;;
13937 esac
13938
13939
13940 : set the base revision
13941 baserev=5.0
13942
13943 : how do we catenate cpp tokens here?
13944 echo " "
13945 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13946 $cat >cpp_stuff.c <<'EOCP'
13947 #define RCAT(a,b)a/**/b
13948 #define ACAT(a,b)a ## b
13949 RCAT(Rei,ser)
13950 ACAT(Cir,cus)
13951 EOCP
13952 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13953 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13954         echo "Oh!  Smells like ANSI's been here." >&4
13955         echo "We can catify or stringify, separately or together!"
13956         cpp_stuff=42
13957 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13958         echo "Ah, yes!  The good old days!" >&4
13959         echo "However, in the good old days we don't know how to stringify and"
13960         echo "catify at the same time."
13961         cpp_stuff=1
13962 else
13963         $cat >&4 <<EOM
13964 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13965 to have to edit the values of CAT[2-5] in config.h...
13966 EOM
13967         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13968 fi
13969 $rm -f cpp_stuff.*
13970
13971 : see if this is a db.h system
13972 set db.h i_db
13973 eval $inhdr
13974
13975 case "$i_db" in
13976 $define)
13977         : Check db version.
13978         echo " "
13979         echo "Checking Berkeley DB version ..." >&4
13980         $cat >try.c <<EOCP
13981 #$d_const HASCONST
13982 #ifndef HASCONST
13983 #define const
13984 #endif
13985 #include <sys/types.h>
13986 #include <stdio.h>
13987 #include <db.h>
13988 int main(int argc, char *argv[])
13989 {
13990 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13991     int Major, Minor, Patch ;
13992     unsigned long Version ;
13993     (void)db_version(&Major, &Minor, &Patch) ;
13994     if (argc == 2) {
13995         printf("%d %d %d %d %d %d\n",
13996                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13997                Major, Minor, Patch);
13998         exit(0);
13999     }
14000     printf("You have Berkeley DB Version 2 or greater.\n");
14001
14002     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
14003                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
14004     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
14005                 Major, Minor, Patch) ;
14006
14007     /* check that db.h & libdb are compatible */
14008     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
14009         printf("db.h and libdb are incompatible.\n") ;
14010         exit(3);        
14011     }
14012
14013     printf("db.h and libdb are compatible.\n") ;
14014
14015     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
14016                 + DB_VERSION_PATCH ;
14017
14018     /* needs to be >= 2.3.4 */
14019     if (Version < 2003004) {
14020     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
14021         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
14022         exit(2);        
14023     }
14024
14025     exit(0);
14026 #else
14027 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
14028     if (argc == 2) {
14029         printf("1 0 0\n");
14030         exit(0);
14031     }
14032     printf("You have Berkeley DB Version 1.\n");
14033     exit(0);    /* DB version < 2: the coast is clear. */
14034 #else
14035     exit(1);    /* <db.h> not Berkeley DB? */
14036 #endif
14037 #endif
14038 }
14039 EOCP
14040         set try
14041         if eval $compile_ok && $run ./try; then
14042                 echo 'Looks OK.' >&4
14043                 set `$run ./try 1`
14044                 db_version_major=$1
14045                 db_version_minor=$2
14046                 db_version_patch=$3
14047         else
14048                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
14049                 i_db=$undef
14050                 case " $libs " in
14051                 *"-ldb "*)
14052                         : Remove db from list of libraries to use
14053                         echo "Removing unusable -ldb from library list" >&4
14054                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
14055                         shift
14056                         libs="$*"
14057                         echo "libs = $libs" >&4
14058                         ;;
14059                 esac
14060         fi
14061         $rm -f try.*
14062         ;;
14063 esac
14064
14065 case "$i_db" in
14066 define)
14067         : Check the return type needed for hash 
14068         echo " "
14069         echo "Checking return type needed for hash for Berkeley DB ..." >&4
14070         $cat >try.c <<EOCP
14071 #$d_const HASCONST
14072 #ifndef HASCONST
14073 #define const
14074 #endif
14075 #include <sys/types.h>
14076 #include <db.h>
14077
14078 #ifndef DB_VERSION_MAJOR
14079 u_int32_t hash_cb (ptr, size)
14080 const void *ptr;
14081 size_t size;
14082 {
14083 }
14084 HASHINFO info;
14085 int main()
14086 {
14087         info.hash = hash_cb;
14088 }
14089 #endif
14090 EOCP
14091         if $cc $ccflags -c try.c >try.out 2>&1 ; then
14092                 if $contains warning try.out >>/dev/null 2>&1 ; then
14093                         db_hashtype='int'
14094                 else
14095                         db_hashtype='u_int32_t'
14096                 fi
14097         else
14098                 : XXX Maybe we should just give up here.
14099                 db_hashtype=u_int32_t
14100                 $cat try.out >&4
14101                 echo "Help:  I can't seem to compile the db test program." >&4
14102                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
14103         fi
14104         $rm -f try.*
14105         echo "Your version of Berkeley DB uses $db_hashtype for hash."
14106         ;;
14107 *)      db_hashtype=u_int32_t
14108         ;;
14109 esac
14110 case "$i_db" in
14111 define)
14112         : Check the return type needed for prefix 
14113         echo " "
14114         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
14115         cat >try.c <<EOCP
14116 #$d_const HASCONST
14117 #ifndef HASCONST
14118 #define const
14119 #endif
14120 #include <sys/types.h>
14121 #include <db.h>
14122
14123 #ifndef DB_VERSION_MAJOR
14124 size_t prefix_cb (key1, key2)
14125 const DBT *key1;
14126 const DBT *key2;
14127 {
14128 }
14129 BTREEINFO info;
14130 int main()
14131 {
14132         info.prefix = prefix_cb;
14133 }
14134 #endif
14135 EOCP
14136         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
14137                 if $contains warning try.out >>/dev/null 2>&1 ; then
14138                         db_prefixtype='int'
14139                 else
14140                         db_prefixtype='size_t'
14141                 fi
14142         else
14143                 db_prefixtype='size_t'
14144                 : XXX Maybe we should just give up here.
14145                 $cat try.out >&4
14146                 echo "Help:  I can't seem to compile the db test program." >&4
14147                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
14148         fi
14149         $rm -f try.*
14150         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
14151         ;;
14152 *)      db_prefixtype='size_t'
14153         ;;
14154 esac
14155
14156
14157 : How can we generate normalized random numbers ?
14158 echo " "
14159 echo "Looking for a random number function..." >&4
14160 case "$randfunc" in
14161 '')
14162         if set drand48 val -f; eval $csym; $val; then
14163                 dflt="drand48"
14164                 echo "Good, found drand48()." >&4
14165         elif set random val -f; eval $csym; $val; then
14166                 dflt="random"
14167                 echo "OK, found random()." >&4
14168         else
14169                 dflt="rand"
14170                 echo "Yick, looks like I have to use rand()." >&4
14171         fi
14172         echo " "
14173         ;;
14174 *)
14175         dflt="$randfunc"
14176         ;;
14177 esac
14178 cont=true
14179
14180 case "$ccflags" in
14181 *-Dmy_rand=*|*-Dmy_srand=*)
14182         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
14183         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
14184         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
14185         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
14186         ;;
14187 esac
14188
14189 while $test "$cont"; do
14190         rp="Use which function to generate random numbers?"
14191         . ./myread
14192         if $test "$ans" = "$dflt"; then
14193                 : null
14194         else
14195                 randbits=''
14196         fi
14197         randfunc="$ans"
14198         if set $ans val -f; eval $csym; $val; then
14199                 cont=''
14200         else
14201                 dflt=y
14202                 rp="I cannot find function $ans. Use that name anyway?"
14203                 . ./myread
14204                 dflt=rand
14205                 case "$ans" in
14206                         [yY]*) cont='';;
14207                 esac
14208         fi
14209         case "$cont" in
14210         '')
14211                 case "$randfunc" in
14212                 drand48)
14213                         drand01="drand48()"
14214                         seedfunc="srand48"
14215                         randbits=48
14216                         randseedtype=long
14217                         ;;
14218                 rand|random)
14219                         case "$randbits" in
14220                         '')
14221 echo "Checking to see how many bits your $randfunc() function produces..." >&4
14222                                 $cat >try.c <<EOCP
14223 #$i_unistd I_UNISTD
14224 #$i_stdlib I_STDLIB
14225 #include <stdio.h>
14226 #ifdef I_UNISTD
14227 #  include <unistd.h>
14228 #endif
14229 #ifdef I_STDLIB
14230 #  include <stdlib.h>
14231 #endif
14232 int main()
14233 {
14234         register int i;
14235         register unsigned long tmp;
14236         register unsigned long max = 0L;
14237
14238         for (i = 1000; i; i--) {
14239                 tmp = (unsigned long) $randfunc();
14240                 if (tmp > max) max = tmp;
14241         }
14242         for (i = 0; max; i++)
14243                 max /= 2;
14244         printf("%d\n",i);
14245 }
14246 EOCP
14247                                 set try
14248                                 if eval $compile_ok; then
14249                                         dflt=`try`
14250                                 else
14251                                         dflt='?'
14252                                         echo "(I can't seem to compile the test program...)"
14253                                 fi
14254                                 ;;
14255                         *)
14256                                 dflt="$randbits"
14257                                 ;;
14258                         esac
14259                         rp="How many bits does your $randfunc() function produce?"
14260                         . ./myread
14261                         randbits="$ans"
14262                         $rm -f try.c try
14263                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14264                         seedfunc="s$randfunc"
14265                         randseedtype=unsigned
14266                         ;;
14267                 *)
14268                         dflt="31"
14269                         rp="How many bits does your $randfunc() function produce?"
14270                         . ./myread
14271                         randbits="$ans"
14272                         seedfunc="s$randfunc"
14273                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
14274                         if set $seedfunc val -f; eval $csym; $val; then
14275                                 echo "(Using $seedfunc() to seed random generator)"
14276                         else
14277                                 echo "(Warning: no $seedfunc() to seed random generator)"
14278                                 seedfunc=rand
14279                         fi
14280                         randseedtype=unsigned
14281                         ;;
14282                 esac
14283                 ;;
14284         esac
14285 done
14286
14287 echo " "
14288 echo "Determining whether or not we are on an EBCDIC system..." >&4
14289 $cat >try.c <<'EOM'
14290 int main()
14291 {
14292   if ('M'==0xd4) return 0;
14293   return 1;
14294 }
14295 EOM
14296
14297 val=$undef
14298 set try
14299 if eval $compile_ok; then
14300         if $run ./try; then
14301                 echo "You seem to speak EBCDIC." >&4
14302                 val="$define"
14303         else
14304                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
14305         fi
14306 else
14307         echo "I'm unable to compile the test program." >&4
14308         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
14309 fi
14310 $rm -f try try.*
14311 set ebcdic
14312 eval $setvar
14313
14314 echo " "
14315 $cat >&4 <<EOM
14316 Checking how to flush all pending stdio output...
14317 EOM
14318 # I only know how to find the first 32 possibly open files on SunOS.
14319 # See also hints/sunos_4_1.sh and util.c  --AD
14320 case "$osname" in
14321 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
14322 esac
14323 $cat >>try.c <<EOCP
14324 #include <stdio.h>
14325 #$i_unistd I_UNISTD
14326 #ifdef I_UNISTD
14327 # include <unistd.h>
14328 #endif
14329 #$d_sysconf HAS_SYSCONF
14330 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
14331 #ifdef HAS_STDIO_STREAM_ARRAY
14332 # define STDIO_STREAM_ARRAY $stdio_stream_array
14333 #endif
14334 int main() {
14335   FILE* p;
14336   unlink("try.out");
14337   p = fopen("try.out", "w");
14338 #ifdef TRY_FPUTC
14339   fputc('x', p);
14340 #else
14341 # ifdef TRY_FPRINTF
14342   fprintf(p, "x");
14343 # endif
14344 #endif
14345 #ifdef TRY_FFLUSH_NULL
14346   fflush(NULL);
14347 #endif
14348 #ifdef TRY_FFLUSH_ALL
14349   {
14350     long open_max = -1;
14351 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
14352     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
14353 # else
14354 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
14355     open_max = sysconf(_SC_OPEN_MAX);
14356 #  else
14357 #   ifdef FOPEN_MAX
14358     open_max = FOPEN_MAX;
14359 #   else
14360 #    ifdef OPEN_MAX
14361     open_max = OPEN_MAX;
14362 #    else
14363 #     ifdef _NFILE
14364     open_max = _NFILE;
14365 #     endif
14366 #    endif
14367 #   endif
14368 #  endif
14369 # endif 
14370 # ifdef HAS_STDIO_STREAM_ARRAY
14371     if (open_max > 0) {
14372       long i;
14373       for (i = 0; i < open_max; i++)
14374             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
14375                 STDIO_STREAM_ARRAY[i]._file < open_max &&
14376                 STDIO_STREAM_ARRAY[i]._flag)
14377                 fflush(&STDIO_STREAM_ARRAY[i]);
14378     }   
14379   }
14380 # endif
14381 #endif
14382   _exit(42);
14383 }
14384 EOCP
14385 : first we have to find out how _not_ to flush
14386 $to try.c
14387 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
14388     output=''
14389     set try -DTRY_FPUTC
14390     if eval $compile; then
14391             $run ./try 2>/dev/null
14392             code="$?"
14393             $from try.out
14394             if $test ! -s try.out -a "X$code" = X42; then
14395                 output=-DTRY_FPUTC
14396             fi
14397     fi
14398     case "$output" in
14399     '')
14400             set try -DTRY_FPRINTF
14401             if eval $compile; then
14402                     $run ./try 2>/dev/null
14403                     code="$?"
14404                     $from try.out
14405                     if $test ! -s try.out -a "X$code" = X42; then
14406                         output=-DTRY_FPRINTF
14407                     fi
14408             fi
14409         ;;
14410     esac
14411 fi
14412 : check for fflush NULL behaviour
14413 case "$fflushNULL" in
14414 '')     set try -DTRY_FFLUSH_NULL $output
14415         if eval $compile; then
14416                 $run ./try 2>/dev/null
14417                 code="$?"
14418                 $from try.out
14419                 if $test -s try.out -a "X$code" = X42; then
14420                         fflushNULL="`$cat try.out`"
14421                 else
14422                         if $test "X$code" != X42; then
14423                                 $cat >&4 <<EOM
14424 (If this test failed, don't worry, we'll try another method shortly.)
14425 EOM
14426                         fi
14427                 fi
14428         fi
14429         $rm -f core try.core core.try.*
14430         case "$fflushNULL" in
14431         x)      $cat >&4 <<EOM
14432 Your fflush(NULL) works okay for output streams.
14433 Let's see if it clobbers input pipes...
14434 EOM
14435 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14436 # bug that improperly flushes the input end of pipes.  So we avoid the
14437 # autoflush on fork/system/exec support for now. :-(
14438 $cat >tryp.c <<EOCP
14439 #include <stdio.h>
14440 int
14441 main(int argc, char **argv)
14442 {
14443     char buf[1024];
14444     int i;
14445     char *bp = buf;
14446     while (1) {
14447         while ((i = getc(stdin)) != -1
14448                && (*bp++ = i) != '\n'
14449                && bp < &buf[1024])
14450         /* DO NOTHING */ ;
14451         *bp = '\0';
14452         fprintf(stdout, "%s", buf);
14453         fflush(NULL);
14454         if (i == -1)
14455             return 0;
14456         bp = buf;
14457     }
14458 }
14459 EOCP
14460                 fflushNULL="$define"
14461                 set tryp
14462                 if eval $compile; then
14463                     $rm -f tryp.out
14464                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14465                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14466                        $cat >&4 <<EOM
14467 fflush(NULL) seems to behave okay with input streams.
14468 EOM
14469                         fflushNULL="$define"
14470                     else
14471                         $cat >&4 <<EOM
14472 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14473 EOM
14474                         fflushNULL="$undef"
14475                     fi
14476                 fi
14477                 $rm -f core tryp.c tryp.core core.tryp.*
14478                 ;;
14479         '')     $cat >&4 <<EOM
14480 Your fflush(NULL) isn't working (contrary to ANSI C).
14481 EOM
14482                 fflushNULL="$undef"
14483                 ;;
14484         *)      $cat >&4 <<EOM
14485 Cannot figure out whether your fflush(NULL) works or not.
14486 I'm assuming it doesn't (contrary to ANSI C).
14487 EOM
14488                 fflushNULL="$undef"
14489                 ;;
14490         esac
14491         ;;
14492 $define|true|[yY]*)
14493         fflushNULL="$define"
14494         ;;
14495 *)
14496         fflushNULL="$undef"
14497         ;;
14498 esac
14499 : check explicit looping only if NULL did not work, and if the pipe
14500 : bug does not show up on an explicit flush too
14501 case "$fflushNULL" in
14502 "$undef")
14503         $cat >tryp.c <<EOCP
14504 #include <stdio.h>
14505 int
14506 main(int argc, char **argv)
14507 {
14508     char buf[1024];
14509     int i;
14510     char *bp = buf;
14511     while (1) {
14512         while ((i = getc(stdin)) != -1
14513                && (*bp++ = i) != '\n'
14514                && bp < &buf[1024])
14515         /* DO NOTHING */ ;
14516         *bp = '\0';
14517         fprintf(stdout, "%s", buf);
14518         fflush(stdin);
14519         if (i == -1)
14520             return 0;
14521         bp = buf;
14522     }
14523 }
14524 EOCP
14525         set tryp
14526         if eval $compile; then
14527             $rm -f tryp.out
14528             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14529             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14530                $cat >&4 <<EOM
14531 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14532 EOM
14533                 : now check for fflushall behaviour
14534                 case "$fflushall" in
14535                 '')     set try -DTRY_FFLUSH_ALL $output
14536                         if eval $compile; then
14537                                 $cat >&4 <<EOM
14538 (Now testing the other method--but note that this also may fail.)
14539 EOM
14540                                 $run ./try 2>/dev/null
14541                                 code=$?
14542                                 $from try.out
14543                                 if $test -s try.out -a "X$code" = X42; then
14544                                         fflushall="`$cat try.out`"
14545                                 fi
14546                         fi
14547                         $rm -f core try.core core.try.*
14548                         case "$fflushall" in
14549                         x)      $cat >&4 <<EOM
14550 Whew. Flushing explicitly all the stdio streams works.
14551 EOM
14552                                 fflushall="$define"
14553                                 ;;
14554                         '')     $cat >&4 <<EOM
14555 Sigh. Flushing explicitly all the stdio streams doesn't work.
14556 EOM
14557                                 fflushall="$undef"
14558                                 ;;
14559                         *)      $cat >&4 <<EOM
14560 Cannot figure out whether flushing stdio streams explicitly works or not.
14561 I'm assuming it doesn't.
14562 EOM
14563                                 fflushall="$undef"
14564                                 ;;
14565                         esac
14566                         ;;
14567                 "$define"|true|[yY]*)
14568                         fflushall="$define"
14569                         ;;
14570                 *)
14571                         fflushall="$undef"
14572                         ;;
14573                 esac
14574             else
14575                 $cat >&4 <<EOM
14576 All is futile.  Even fflush(stdin) clobbers input pipes!
14577 EOM
14578                 fflushall="$undef"
14579             fi
14580         else
14581             fflushall="$undef"
14582         fi
14583         $rm -f core tryp.c tryp.core core.tryp.*
14584         ;;
14585 *)      fflushall="$undef"
14586         ;;
14587 esac
14588
14589 case "$fflushNULL$fflushall" in
14590 undefundef)
14591         $cat <<EOM
14592 OK, I give up.  I cannot figure out how to flush pending stdio output.
14593 We won't be flushing handles at all before fork/exec/popen.
14594 EOM
14595         ;;
14596 esac
14597 $rm -f try.* try$exe_ext
14598
14599 : Store the full pathname to the ar program for use in the C program
14600 : Respect a hint or command line value for full_ar.
14601 case "$full_ar" in
14602 '') full_ar=$ar ;;
14603 esac
14604
14605 : Store the full pathname to the sed program for use in the C program
14606 full_sed=$sed
14607
14608 : see what type gids are declared as in the kernel
14609 echo " "
14610 echo "Looking for the type for group ids returned by getgid()."
14611 set gid_t gidtype xxx stdio.h sys/types.h
14612 eval $typedef
14613 case "$gidtype" in
14614 xxx)
14615         xxx=`./findhdr sys/user.h`
14616         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14617         case $1 in
14618         unsigned) dflt="$1 $2" ;;
14619         *) dflt="$1" ;;
14620         esac
14621         ;;
14622 *) dflt="$gidtype";;
14623 esac
14624 case "$gidtype" in
14625 gid_t) echo "gid_t found." ;;
14626 *)      rp="What is the type for group ids returned by getgid()?"
14627         . ./myread
14628         gidtype="$ans"
14629         ;;
14630 esac
14631
14632 echo " "
14633 case "$gidtype" in
14634 *_t) zzz="$gidtype"     ;;
14635 *)   zzz="gid"          ;;
14636 esac
14637 echo "Checking the size of $zzz..." >&4 
14638 cat > try.c <<EOCP
14639 #include <sys/types.h>
14640 #include <stdio.h>
14641 int main() {
14642     printf("%d\n", (int)sizeof($gidtype));
14643     exit(0);
14644 }
14645 EOCP
14646 set try
14647 if eval $compile_ok; then
14648         yyy=`$run ./try`
14649         case "$yyy" in
14650         '')     gidsize=4
14651                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14652                 ;;
14653         *)      gidsize=$yyy
14654                 echo "Your $zzz is $gidsize bytes long."
14655                 ;;
14656         esac
14657 else
14658         gidsize=4
14659         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14660 fi
14661
14662
14663 echo " "
14664 case "$gidtype" in
14665 *_t) zzz="$gidtype"     ;;
14666 *)   zzz="gid"          ;;
14667 esac
14668 echo "Checking the sign of $zzz..." >&4 
14669 cat > try.c <<EOCP
14670 #include <sys/types.h>
14671 #include <stdio.h>
14672 int main() {
14673         $gidtype foo = -1;
14674         if (foo < 0)
14675                 printf("-1\n");
14676         else
14677                 printf("1\n");
14678 }
14679 EOCP
14680 set try
14681 if eval $compile; then
14682         yyy=`$run ./try`
14683         case "$yyy" in
14684         '')     gidsign=1
14685                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14686                 ;;
14687         *)      gidsign=$yyy
14688                 case "$gidsign" in
14689                  1) echo "Your $zzz is unsigned." ;;
14690                 -1) echo "Your $zzz is signed."   ;;
14691                 esac
14692                 ;;
14693         esac
14694 else
14695         gidsign=1
14696         echo "(I can't compile the test program--guessing unsigned.)" >&4
14697 fi
14698
14699
14700 echo " "
14701
14702 if $test X"$quadtype" != X; then
14703
14704 echo "Checking how to print 64-bit integers..." >&4
14705
14706 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14707         $cat >try.c <<'EOCP'
14708 #include <sys/types.h>
14709 #include <stdio.h>
14710 int main() {
14711   int q = 12345678901;
14712   printf("%ld\n", q);
14713 }
14714 EOCP
14715         set try
14716         if eval $compile; then
14717                 yyy=`$run ./try`
14718                 case "$yyy" in
14719                 12345678901)
14720                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14721                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14722                         echo "We will use %d."
14723                         ;;
14724                 esac
14725         fi
14726 fi
14727
14728 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14729         $cat >try.c <<'EOCP'
14730 #include <sys/types.h>
14731 #include <stdio.h>
14732 int main() {
14733   long q = 12345678901;
14734   printf("%ld\n", q);
14735 }
14736 EOCP
14737         set try
14738         if eval $compile; then
14739                 yyy=`$run ./try`
14740                 case "$yyy" in
14741                 12345678901)
14742                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14743                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14744                         echo "We will use %ld."
14745                         ;;
14746                 esac
14747         fi
14748 fi
14749
14750 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14751         $cat >try.c <<'EOCP'
14752 #include <sys/types.h>
14753 #include <inttypes.h>
14754 #include <stdio.h>
14755 int main() {
14756   int64_t q = 12345678901;
14757   printf("%" PRId64 "\n", q);
14758 }
14759 EOCP
14760         set try
14761         if eval $compile; then
14762                 yyy=`$run ./try`
14763                 case "$yyy" in
14764                 12345678901)
14765                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14766                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14767                         echo "We will use the C9X style."
14768                         ;;
14769                 esac
14770         fi
14771 fi
14772
14773 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14774         $cat >try.c <<EOCP
14775 #include <sys/types.h>
14776 #include <stdio.h>
14777 int main() {
14778   $quadtype q = 12345678901;
14779   printf("%Ld\n", q);
14780 }
14781 EOCP
14782         set try
14783         if eval $compile; then
14784                 yyy=`$run ./try`
14785                 case "$yyy" in
14786                 12345678901)
14787                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14788                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14789                         echo "We will use %Ld."
14790                         ;;
14791                 esac
14792         fi
14793 fi
14794
14795 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14796         $cat >try.c <<'EOCP'
14797 #include <sys/types.h>
14798 #include <stdio.h>
14799 int main() {
14800   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14801   printf("%lld\n", q);
14802 }
14803 EOCP
14804         set try
14805         if eval $compile; then
14806                 yyy=`$run ./try`
14807                 case "$yyy" in
14808                 12345678901)
14809                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14810                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14811                         echo "We will use the %lld style."
14812                         ;;
14813                 esac
14814         fi
14815 fi
14816
14817 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14818         $cat >try.c <<EOCP
14819 #include <sys/types.h>
14820 #include <stdio.h>
14821 int main() {
14822   $quadtype q = 12345678901;
14823   printf("%qd\n", q);
14824 }
14825 EOCP
14826         set try
14827         if eval $compile; then
14828                 yyy=`$run ./try`
14829                 case "$yyy" in
14830                 12345678901)
14831                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14832                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14833                         echo "We will use %qd."
14834                         ;;
14835                 esac
14836         fi
14837 fi
14838
14839 if $test X"$sPRId64" = X; then
14840         echo "Cannot figure out how to print 64-bit integers." >&4
14841 fi
14842
14843 $rm -f try try.*
14844
14845 fi
14846
14847 case "$sPRId64" in
14848 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14849         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14850         ;;
14851 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14852         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14853         ;;
14854 esac
14855
14856
14857 echo " "
14858 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14859
14860 if $test X"$ivsize" = X8; then
14861         ivdformat="$sPRId64"
14862         uvuformat="$sPRIu64"
14863         uvoformat="$sPRIo64"
14864         uvxformat="$sPRIx64"
14865         uvXUformat="$sPRIXU64"
14866 else
14867         if $test X"$ivsize" = X"$longsize"; then
14868                 ivdformat='"ld"'
14869                 uvuformat='"lu"'
14870                 uvoformat='"lo"'
14871                 uvxformat='"lx"'
14872                 uvXUformat='"lX"'
14873         else
14874                 if $test X"$ivsize" = X"$intsize"; then
14875                         ivdformat='"d"'
14876                         uvuformat='"u"'
14877                         uvoformat='"o"'
14878                         uvxformat='"x"'
14879                         uvXUformat='"X"'
14880                 else
14881                         : far out
14882                         if $test X"$ivsize" = X"$shortsize"; then
14883                                 ivdformat='"hd"'
14884                                 uvuformat='"hu"'
14885                                 uvoformat='"ho"'
14886                                 uvxformat='"hx"'
14887                                 uvXUformat='"hX"'
14888                         fi
14889                 fi
14890         fi
14891 fi
14892
14893 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14894         nveformat="$sPRIeldbl"
14895         nvfformat="$sPRIfldbl"
14896         nvgformat="$sPRIgldbl"
14897         nvEUformat="$sPRIEUldbl"
14898         nvFUformat="$sPRIFUldbl"
14899         nvGUformat="$sPRIGUldbl"
14900 else
14901         nveformat='"e"'
14902         nvfformat='"f"'
14903         nvgformat='"g"'
14904         nvEUformat='"E"'
14905         nvFUformat='"F"'
14906         nvGUformat='"G"'
14907 fi
14908
14909 case "$ivdformat" in
14910 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
14911     exit 1
14912     ;;
14913 esac
14914
14915
14916 echo " "
14917 $echo "Checking the format string to be used for gids..." >&4
14918
14919 case "$gidsign" in
14920 -1)     if $test X"$gidsize" = X"$ivsize"; then
14921                 gidformat="$ivdformat"
14922         else
14923                 if $test X"$gidsize" = X"$longsize"; then
14924                         gidformat='"ld"'
14925                 else
14926                         if $test X"$gidsize" = X"$intsize"; then
14927                                 gidformat='"d"'
14928                         else
14929                                 if $test X"$gidsize" = X"$shortsize"; then
14930                                         gidformat='"hd"'
14931                                 fi
14932                         fi
14933                 fi
14934         fi
14935         ;;
14936 *)      if $test X"$gidsize" = X"$uvsize"; then
14937                 gidformat="$uvuformat"
14938         else
14939                 if $test X"$gidsize" = X"$longsize"; then
14940                         gidformat='"lu"'
14941                 else
14942                         if $test X"$gidsize" = X"$intsize"; then
14943                                 gidformat='"u"'
14944                         else
14945                                 if $test X"$gidsize" = X"$shortsize"; then
14946                                         gidformat='"hu"'
14947                                 fi
14948                         fi
14949                 fi
14950         fi
14951         ;;
14952 esac
14953
14954 : see if getgroups exists
14955 set getgroups d_getgrps
14956 eval $inlibc
14957
14958 : see if setgroups exists
14959 set setgroups d_setgrps
14960 eval $inlibc
14961
14962
14963 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14964 echo " "
14965 case "$d_getgrps$d_setgrps" in
14966 *define*)
14967         case "$groupstype" in
14968         '') dflt="$gidtype" ;;
14969         *)  dflt="$groupstype" ;;
14970         esac
14971         $cat <<EOM
14972 What type of pointer is the second argument to getgroups() and setgroups()?
14973 Usually this is the same as group ids, $gidtype, but not always.
14974
14975 EOM
14976         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14977         . ./myread
14978         groupstype="$ans"
14979         ;;
14980 *)  groupstype="$gidtype";;
14981 esac
14982
14983 echo " "
14984 echo "Checking if your $make program sets \$(MAKE)..." >&4
14985 case "$make_set_make" in
14986 '')
14987         $sed 's/^X //' > testmake.mak << 'EOF'
14988 Xall:
14989 X       @echo 'maketemp="$(MAKE)"'
14990 EOF
14991         case "`$make -f testmake.mak 2>/dev/null`" in
14992         *maketemp=*) make_set_make='#' ;;
14993         *)      make_set_make="MAKE=$make" ;;
14994         esac
14995         $rm -f testmake.mak
14996         ;;
14997 esac
14998 case "$make_set_make" in
14999 '#') echo "Yup, it does.";;
15000 *) echo "Nope, it doesn't.";;
15001 esac
15002
15003 : see what type is used for mode_t
15004 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
15005 set mode_t modetype int stdio.h sys/types.h
15006 eval $typedef_ask
15007
15008 : see if stdarg is available
15009 echo " "
15010 if $test `./findhdr stdarg.h`; then
15011         echo "<stdarg.h> found." >&4
15012         valstd="$define"
15013 else
15014         echo "<stdarg.h> NOT found." >&4
15015         valstd="$undef"
15016 fi
15017
15018 : see if varags is available
15019 echo " "
15020 if $test `./findhdr varargs.h`; then
15021         echo "<varargs.h> found." >&4
15022 else
15023         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
15024 fi
15025
15026 : set up the varargs testing programs
15027 $cat > varargs.c <<EOP
15028 #ifdef I_STDARG
15029 #include <stdarg.h>
15030 #endif
15031 #ifdef I_VARARGS
15032 #include <varargs.h>
15033 #endif
15034
15035 #ifdef I_STDARG
15036 int f(char *p, ...)
15037 #else
15038 int f(va_alist)
15039 va_dcl
15040 #endif
15041 {
15042         va_list ap;
15043 #ifndef I_STDARG
15044         char *p;
15045 #endif
15046 #ifdef I_STDARG
15047         va_start(ap,p);
15048 #else
15049         va_start(ap);
15050         p = va_arg(ap, char *);
15051 #endif
15052         va_end(ap);
15053 }
15054 EOP
15055 $cat > varargs <<EOP
15056 $startsh
15057 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
15058         echo "true"
15059 else
15060         echo "false"
15061 fi
15062 $rm -f varargs$_o
15063 EOP
15064 chmod +x varargs
15065
15066 : now check which varargs header should be included
15067 echo " "
15068 i_varhdr=''
15069 case "$valstd" in
15070 "$define")
15071         if `./varargs I_STDARG`; then
15072                 val='stdarg.h'
15073         elif `./varargs I_VARARGS`; then
15074                 val='varargs.h'
15075         fi
15076         ;;
15077 *)
15078         if `./varargs I_VARARGS`; then
15079                 val='varargs.h'
15080         fi
15081         ;;
15082 esac
15083 case "$val" in
15084 '')
15085 echo "I could not find the definition for va_dcl... You have problems..." >&4
15086         val="$undef"; set i_stdarg; eval $setvar
15087         val="$undef"; set i_varargs; eval $setvar
15088         ;;
15089 *) 
15090         set i_varhdr
15091         eval $setvar
15092         case "$i_varhdr" in
15093         stdarg.h)
15094                 val="$define"; set i_stdarg; eval $setvar
15095                 val="$undef"; set i_varargs; eval $setvar
15096                 ;;
15097         varargs.h)
15098                 val="$undef"; set i_stdarg; eval $setvar
15099                 val="$define"; set i_varargs; eval $setvar
15100                 ;;
15101         esac
15102         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
15103 esac
15104 $rm -f varargs*
15105
15106 : see if we need va_copy
15107 echo " "
15108 case "$i_stdarg" in
15109 "$define")
15110         $cat >try.c <<EOCP
15111 #include <stdarg.h>
15112 #include <stdio.h>
15113 #$i_stdlib I_STDLIB
15114 #ifdef I_STDLIB
15115 #include <stdlib.h>
15116 #endif
15117 #include <signal.h>
15118
15119 int
15120 ivfprintf(FILE *f, const char *fmt, va_list *valp)
15121 {
15122   return vfprintf(f, fmt, *valp);
15123 }
15124  
15125 int    
15126 myvfprintf(FILE *f, const  char *fmt, va_list val)
15127 {
15128   return ivfprintf(f, fmt, &val);
15129 }
15130       
15131 int
15132 myprintf(char *fmt, ...) 
15133 {
15134   va_list val;
15135   va_start(val, fmt);
15136   return myvfprintf(stdout, fmt, val); 
15137 }         
15138
15139 int
15140 main(int ac, char **av)
15141 {
15142   signal(SIGSEGV, exit);
15143
15144   myprintf("%s%cs all right, then\n", "that", '\'');                            
15145   exit(0);      
15146 }
15147 EOCP
15148         set try
15149         if eval $compile && $run ./try 2>&1 >/dev/null; then
15150                 case "`$run ./try`" in
15151                 "that's all right, then")
15152                         okay=yes
15153                         ;;
15154                 esac
15155         fi
15156         case "$okay" in
15157         yes)    echo "It seems that you don't need va_copy()." >&4
15158                 need_va_copy="$undef"
15159                 ;;
15160         *)      echo "It seems that va_copy() or similar will be needed." >&4
15161                 need_va_copy="$define"
15162                 ;;
15163         esac
15164         $rm -f try.* core core.* *.core *.core.*
15165         ;;
15166 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
15167         ;;
15168 esac
15169
15170 : define a fucntion to check prototypes
15171 $cat > protochk <<EOSH
15172 $startsh
15173 cc="$cc"
15174 optimize="$optimize"
15175 ccflags="$ccflags"
15176 prototype="$prototype"
15177 define="$define"
15178 rm=$rm
15179 EOSH
15180
15181 $cat >> protochk <<'EOSH'
15182
15183 $rm -f try.c
15184 foo="$1"
15185 shift
15186 while test $# -ge 2; do
15187         case "$1" in
15188                 $define) echo "#include <$2>" >> try.c ;;
15189                 literal) echo "$2" >> try.c ;;
15190         esac
15191     shift 2
15192 done
15193 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
15194 cat >> try.c <<'EOCP'
15195 #ifdef CAN_PROTOTYPE
15196 #define _(args) args
15197 #else
15198 #define _(args) ()
15199 #endif
15200 EOCP
15201 echo "$foo" >> try.c
15202 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
15203 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
15204 status=$?
15205 $rm -f try.[co]
15206 exit $status
15207 EOSH
15208 chmod +x protochk
15209 $eunicefix protochk
15210
15211 : see what type is used for size_t
15212 rp="What is the type used for the length parameter for string functions?"
15213 set size_t sizetype 'unsigned int' stdio.h sys/types.h
15214 eval $typedef_ask
15215
15216 : check for type of arguments to gethostbyaddr. 
15217 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
15218         case "$d_gethbyaddr" in
15219         $define)
15220                 $cat <<EOM
15221
15222 Checking to see what type of arguments are accepted by gethostbyaddr().
15223 EOM
15224                 hdrs="$define sys/types.h
15225                         $d_socket sys/socket.h 
15226                         $i_niin netinet/in.h 
15227                         $i_netdb netdb.h
15228                         $i_unistd unistd.h"
15229                 : The first arg can 'char *' or 'void *'
15230                 : The second arg is some of integral type
15231                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
15232                         for yyy in size_t long int; do
15233                                 case "$netdb_host_type" in
15234                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
15235                                         if ./protochk "$try" $hdrs; then
15236                                                 echo "Your system accepts $xxx for the first arg."
15237                                                 echo "...and $yyy for the second arg."
15238                                                 netdb_host_type="$xxx"
15239                                                 netdb_hlen_type="$yyy"
15240                                         fi
15241                                         ;;
15242                                 esac
15243                         done
15244                 done
15245                 : In case none of those worked, prompt the user.
15246                 case "$netdb_host_type" in
15247                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
15248                         dflt='char *'
15249                         . ./myread
15250                         netdb_host_type=$ans
15251                         rp='What is the type for the 2nd argument to gethostbyaddr?'
15252                         dflt="$sizetype"
15253                         . ./myread
15254                         netdb_hlen_type=$ans
15255                         ;;
15256                 esac
15257                 ;;
15258         *)      : no gethostbyaddr, so pick harmless defaults
15259                 netdb_host_type='char *'
15260                 netdb_hlen_type="$sizetype"
15261                 ;;
15262         esac
15263         # Remove the "const" if needed. -- but then we'll have a 
15264         # prototype clash!
15265         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
15266 fi
15267
15268 : check for type of argument to gethostbyname. 
15269 if test "X$netdb_name_type" = X ; then
15270         case "$d_gethbyname" in
15271         $define)
15272                 $cat <<EOM
15273
15274 Checking to see what type of argument is accepted by gethostbyname().
15275 EOM
15276                 hdrs="$define sys/types.h
15277                         $d_socket sys/socket.h 
15278                         $i_niin netinet/in.h 
15279                         $i_netdb netdb.h
15280                         $i_unistd unistd.h"
15281                 for xxx in "const char *" "char *"; do
15282                         case "$netdb_name_type" in
15283                         '')     try="extern struct hostent *gethostbyname($xxx);"
15284                                 if ./protochk "$try" $hdrs; then
15285                                         echo "Your system accepts $xxx."
15286                                         netdb_name_type="$xxx"
15287                                 fi
15288                                 ;;
15289                         esac
15290                 done
15291                 : In case none of those worked, prompt the user.
15292                 case "$netdb_name_type" in
15293                 '')     rp='What is the type for the 1st argument to gethostbyname?'
15294                         dflt='char *'
15295                         . ./myread
15296                         netdb_name_type=$ans
15297                         ;;
15298                 esac
15299                 ;;
15300         *)      : no gethostbyname, so pick harmless default
15301                 netdb_name_type='char *'
15302                 ;;
15303         esac
15304 fi
15305
15306 : check for type of 1st argument to getnetbyaddr. 
15307 if test "X$netdb_net_type" = X ; then
15308         case "$d_getnbyaddr" in
15309         $define)
15310                 $cat <<EOM
15311
15312 Checking to see what type of 1st argument is accepted by getnetbyaddr().
15313 EOM
15314                 hdrs="$define sys/types.h
15315                         $d_socket sys/socket.h 
15316                         $i_niin netinet/in.h 
15317                         $i_netdb netdb.h
15318                         $i_unistd unistd.h"
15319                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
15320                         case "$netdb_net_type" in
15321                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
15322                                 if ./protochk "$try" $hdrs; then
15323                                         echo "Your system accepts $xxx."
15324                                         netdb_net_type="$xxx"
15325                                 fi
15326                                 ;;
15327                         esac
15328                 done
15329                 : In case none of those worked, prompt the user.
15330                 case "$netdb_net_type" in
15331                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
15332                         dflt='long'
15333                         . ./myread
15334                         netdb_net_type=$ans
15335                         ;;
15336                 esac
15337                 ;;
15338         *)      : no getnetbyaddr, so pick harmless default
15339                 netdb_net_type='long'
15340                 ;;
15341         esac
15342 fi
15343 : locate the preferred pager for this system
15344 case "$pager" in
15345 '')
15346         dflt=''
15347         case "$pg" in
15348         /*) dflt=$pg;;
15349         [a-zA-Z]:/*) dflt=$pg;;
15350         esac
15351         case "$more" in
15352         /*) dflt=$more;;
15353         [a-zA-Z]:/*) dflt=$more;;
15354         esac
15355         case "$less" in
15356         /*) dflt=$less;;
15357         [a-zA-Z]:/*) dflt=$less;;
15358         esac
15359         case "$dflt" in
15360         '') dflt=/usr/ucb/more;;
15361         esac
15362         ;;
15363 *) dflt="$pager";;
15364 esac
15365 echo " "
15366 fn=f/
15367 rp='What pager is used on your system?'
15368 . ./getfile
15369 pager="$ans"
15370
15371 : see what type pids are declared as in the kernel
15372 rp="What is the type of process ids on this system?"
15373 set pid_t pidtype int stdio.h sys/types.h
15374 eval $typedef_ask
15375
15376 : Find earliest binary compatible site_perl subdirectory perl can use.
15377 case "$bincompat5005" in
15378 "$define") xs_apiversion='5.005' ;;
15379 *) xs_apiversion=$version ;;   # The current site_perl version.
15380 esac
15381 : Find earliest pure perl site_perl subdirectory perl can use.
15382 : The versioned directories started at 5.005.
15383 pm_apiversion='5.005'
15384
15385 : see if ar generates random libraries by itself
15386 echo " "
15387 echo "Checking how to generate random libraries on your machine..." >&4
15388 echo 'int bar1() { return bar2(); }' > bar1.c
15389 echo 'int bar2() { return 2; }' > bar2.c
15390 $cat > foo.c <<'EOP'
15391 int main() { printf("%d\n", bar1()); exit(0); }
15392 EOP
15393 $cc $ccflags -c bar1.c >/dev/null 2>&1
15394 $cc $ccflags -c bar2.c >/dev/null 2>&1
15395 $cc $ccflags -c foo.c >/dev/null 2>&1
15396 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
15397 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15398         $run ./foobar >/dev/null 2>&1; then
15399         echo "$ar appears to generate random libraries itself."
15400         orderlib=false
15401         ranlib=":"
15402 elif $ar ts bar$_a >/dev/null 2>&1 &&
15403         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
15404         $run ./foobar >/dev/null 2>&1; then
15405                 echo "a table of contents needs to be added with '$ar ts'."
15406                 orderlib=false
15407                 ranlib="$ar ts"
15408 else
15409         case "$ranlib" in
15410         :) ranlib='';;
15411         '')
15412                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
15413                 $test -f $ranlib || ranlib=''
15414                 ;;
15415         esac
15416         if $test -n "$ranlib"; then
15417                 echo "your system has '$ranlib'; we'll use that."
15418                 orderlib=false
15419         else
15420                 echo "your system doesn't seem to support random libraries"
15421                 echo "so we'll use lorder and tsort to order the libraries."
15422                 orderlib=true
15423                 ranlib=":"
15424         fi
15425 fi
15426 $rm -f foo* bar* 
15427
15428 : check for type of arguments to select. 
15429 case "$selecttype" in
15430 '') case "$d_select" in
15431         $define)
15432                 echo " "
15433                 $cat <<EOM
15434 Checking to see what type of arguments are accepted by select().
15435 EOM
15436                 hdrs="$define sys/types.h
15437                         $i_systime sys/time.h 
15438                         $i_sysselct sys/select.h
15439                         $d_socket sys/socket.h"
15440                 : The first arg can be int, unsigned, or size_t
15441                 : The last arg may or may not be 'const'
15442                 val=''
15443                 : void pointer has been seen but using that
15444                 : breaks the selectminbits test
15445                 for xxx in 'fd_set *' 'int *'; do
15446                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15447                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15448                                         case "$val" in
15449                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15450                                                 if ./protochk "$try" $hdrs; then
15451                                                         echo "Your system accepts $xxx."
15452                                                         val="$xxx"
15453                                                 fi
15454                                                 ;;
15455                                         esac
15456                                 done
15457                         done
15458                 done
15459                 case "$val" in
15460                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15461                         case "$d_fd_set" in
15462                                 $define) dflt="fd_set *" ;;
15463                                 *)              dflt="int *" ;;
15464                         esac
15465                         . ./myread
15466                         val=$ans
15467                         ;;
15468                 esac
15469                 selecttype="$val"
15470                 ;;
15471         *)      : no select, so pick a harmless default
15472                 selecttype='int *'
15473                 ;;
15474         esac
15475         ;;
15476 esac
15477
15478 : check for the select 'width'
15479 case "$selectminbits" in
15480 '') case "$d_select" in
15481         $define)
15482                 $cat <<EOM
15483
15484 Checking to see on how many bits at a time your select() operates...
15485 EOM
15486                 $cat >try.c <<EOCP
15487 #include <sys/types.h>
15488 #$i_time I_TIME
15489 #$i_systime I_SYS_TIME
15490 #$i_systimek I_SYS_TIME_KERNEL
15491 #ifdef I_TIME
15492 #   include <time.h>
15493 #endif
15494 #ifdef I_SYS_TIME
15495 #   ifdef I_SYS_TIME_KERNEL
15496 #       define KERNEL
15497 #   endif
15498 #   include <sys/time.h>
15499 #   ifdef I_SYS_TIME_KERNEL
15500 #       undef KERNEL
15501 #   endif
15502 #endif
15503 #$i_sysselct I_SYS_SELECT
15504 #ifdef I_SYS_SELECT
15505 #include <sys/select.h>
15506 #endif
15507 #$d_socket HAS_SOCKET
15508 #ifdef HAS_SOCKET
15509 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15510 #endif
15511 #include <stdio.h>
15512 $selecttype b;
15513 #define S sizeof(*(b))
15514 #define MINBITS 64
15515 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15516 #define NBITS  (NBYTES * 8)
15517 int main() {
15518     char s[NBYTES];
15519     struct timeval t;
15520     int i;
15521     FILE* fp;
15522     int fd;
15523
15524     fclose(stdin);
15525     fp = fopen("try.c", "r");
15526     if (fp == 0)
15527       exit(1);
15528     fd = fileno(fp);
15529     if (fd < 0)
15530       exit(2);
15531     b = ($selecttype)s;
15532     for (i = 0; i < NBITS; i++)
15533         FD_SET(i, b);
15534     t.tv_sec  = 0;
15535     t.tv_usec = 0;
15536     select(fd + 1, b, 0, 0, &t);
15537     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15538     printf("%d\n", i + 1);
15539     return 0;
15540 }
15541 EOCP
15542                 set try
15543                 if eval $compile_ok; then
15544                         selectminbits=`$run ./try`
15545                         case "$selectminbits" in
15546                         '')     cat >&4 <<EOM
15547 Cannot figure out on how many bits at a time your select() operates.
15548 I'll play safe and guess it is 32 bits.
15549 EOM
15550                                 selectminbits=32
15551                                 bits="32 bits"
15552                                 ;;
15553                         1)      bits="1 bit" ;;
15554                         *)      bits="$selectminbits bits" ;;
15555                         esac
15556                         echo "Your select() operates on $bits at a time." >&4
15557                 else
15558                         rp='What is the minimum number of bits your select() operates on?'
15559                         case "$byteorder" in
15560                         1234|12345678)  dflt=32 ;;
15561                         *)              dflt=1  ;;
15562                         esac
15563                         . ./myread
15564                         val=$ans
15565                         selectminbits="$val"
15566                 fi
15567                 $rm -f try.* try
15568                 ;;
15569         *)      : no select, so pick a harmless default
15570                 selectminbits='32'
15571                 ;;
15572         esac
15573         ;;
15574 esac
15575
15576 : Trace out the files included by signal.h, then look for SIGxxx names.
15577 : Remove SIGARRAYSIZE used by HPUX.
15578 : Remove SIGSTKSIZE used by Linux.
15579 : Remove SIGSTKSZ used by Posix.
15580 : Remove SIGTYP void lines used by OS2.
15581 : Some cpps, like os390, dont give the file name anywhere
15582 if [ "X$fieldn" = X ]; then
15583         : Just make some guesses.  We check them later.
15584         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15585 else
15586         xxx=`echo '#include <signal.h>' |
15587         $cppstdin $cppminus $cppflags 2>/dev/null |
15588         $grep '^[       ]*#.*include' | 
15589         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15590 fi
15591 : Check this list of files to be sure we have parsed the cpp output ok.
15592 : This will also avoid potentially non-existent files, such 
15593 : as ../foo/bar.h
15594 xxxfiles=''
15595 for xx in $xxx /dev/null ; do
15596         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15597 done
15598 : If we have found no files, at least try signal.h
15599 case "$xxxfiles" in
15600 '')     xxxfiles=`./findhdr signal.h` ;;
15601 esac
15602 xxx=`awk '
15603 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15604         print substr($2, 4, 20)
15605 }
15606 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15607         print substr($3, 4, 20)
15608 }' $xxxfiles`
15609 : Append some common names just in case the awk scan failed.
15610 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15611 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15612 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15613 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15614 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15615
15616 : generate a few handy files for later
15617 $cat > signal.c <<'EOCP'
15618 #include <sys/types.h>
15619 #include <signal.h>
15620 #include <stdio.h>
15621 int main() {
15622
15623 /* Strange style to avoid deeply-nested #if/#else/#endif */
15624 #ifndef NSIG
15625 #  ifdef _NSIG
15626 #    define NSIG (_NSIG)
15627 #  endif
15628 #endif
15629
15630 #ifndef NSIG
15631 #  ifdef SIGMAX
15632 #    define NSIG (SIGMAX+1)
15633 #  endif
15634 #endif
15635
15636 #ifndef NSIG
15637 #  ifdef SIG_MAX
15638 #    define NSIG (SIG_MAX+1)
15639 #  endif
15640 #endif
15641
15642 #ifndef NSIG
15643 #  ifdef MAXSIG
15644 #    define NSIG (MAXSIG+1)
15645 #  endif
15646 #endif
15647
15648 #ifndef NSIG
15649 #  ifdef MAX_SIG
15650 #    define NSIG (MAX_SIG+1)
15651 #  endif
15652 #endif
15653
15654 #ifndef NSIG
15655 #  ifdef SIGARRAYSIZE
15656 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15657 #  endif
15658 #endif
15659
15660 #ifndef NSIG
15661 #  ifdef _sys_nsig
15662 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15663 #  endif
15664 #endif
15665
15666 /* Default to some arbitrary number that's big enough to get most
15667    of the common signals.
15668 */
15669 #ifndef NSIG
15670 #    define NSIG 50
15671 #endif
15672
15673 printf("NSIG %d\n", NSIG);
15674
15675 #ifndef JUST_NSIG
15676
15677 EOCP
15678
15679 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15680 {
15681         printf "#ifdef SIG"; printf $1; printf "\n"
15682         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15683         printf $1; printf ");\n"
15684         printf "#endif\n"
15685 }
15686 END {
15687         printf "#endif /* JUST_NSIG */\n";
15688         printf "exit(0);\n}\n";
15689 }
15690 ' >>signal.c
15691 $cat >signal.awk <<'EOP'
15692 BEGIN { ndups = 0 }
15693 $1 ~ /^NSIG$/ { nsig = $2 }
15694 ($1 !~ /^NSIG$/) && (NF == 2) {
15695     if ($2 > maxsig) { maxsig = $2 }
15696     if (sig_name[$2]) {
15697         dup_name[ndups] = $1
15698         dup_num[ndups] = $2
15699         ndups++ 
15700     }
15701     else {
15702         sig_name[$2] = $1
15703         sig_num[$2] = $2
15704     }
15705 }
15706 END { 
15707     if (nsig == 0) {
15708         nsig = maxsig + 1
15709     }
15710     printf("NSIG %d\n", nsig);
15711     for (n = 1; n < nsig; n++) {
15712         if (sig_name[n]) {
15713             printf("%s %d\n", sig_name[n], sig_num[n])
15714         }
15715         else {
15716             printf("NUM%d %d\n", n, n) 
15717         }
15718     }
15719     for (n = 0; n < ndups; n++) {
15720         printf("%s %d\n", dup_name[n], dup_num[n])
15721     }
15722 }
15723 EOP
15724 $cat >signal_cmd <<EOS
15725 $startsh
15726 if $test -s signal.lst; then
15727     echo "Using your existing signal.lst file"
15728         exit 0
15729 fi
15730 xxx="$xxx"
15731 EOS
15732 $cat >>signal_cmd <<'EOS'
15733
15734 set signal
15735 if eval $compile_ok; then
15736         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
15737 else
15738         echo "(I can't seem be able to compile the whole test program)" >&4
15739         echo "(I'll try it in little pieces.)" >&4
15740         set signal -DJUST_NSIG
15741         if eval $compile_ok; then
15742                 $run ./signal$_exe > signal.nsg
15743                 $cat signal.nsg
15744         else
15745                 echo "I can't seem to figure out how many signals you have." >&4
15746                 echo "Guessing 50." >&4
15747                 echo 'NSIG 50' > signal.nsg
15748         fi
15749         : Now look at all the signal names, one at a time.
15750         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15751                 $cat > signal.c <<EOCP
15752 #include <sys/types.h>
15753 #include <signal.h>
15754 #include <stdio.h>
15755 int main() {
15756 printf("$xx %d\n", SIG${xx});
15757 return 0;
15758 }
15759 EOCP
15760                 set signal
15761                 if eval $compile; then
15762                         echo "SIG${xx} found."
15763                         $run ./signal$_exe  >> signal.ls1
15764                 else
15765                         echo "SIG${xx} NOT found."
15766                 fi
15767         done
15768         if $test -s signal.ls1; then
15769                 $cat signal.nsg signal.ls1 |
15770                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
15771         fi
15772
15773 fi
15774 if $test -s signal.lst; then
15775         :
15776 else
15777         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15778         echo 'kill -l' >signal
15779         set X `csh -f <signal`
15780         $rm -f signal
15781         shift
15782         case $# in
15783         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15784         esac
15785         echo $@ | $tr ' ' $trnl | \
15786             $awk '{ printf "%s %d\n", $1, ++s; }
15787                   END { printf "NSIG %d\n", ++s }' >signal.lst
15788 fi
15789 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15790 EOS
15791 chmod a+x signal_cmd
15792 $eunicefix signal_cmd
15793
15794 : generate list of signal names
15795 echo " "
15796 case "$sig_name_init" in
15797 '') doinit=yes ;;
15798 *)  case "$sig_num_init" in
15799     ''|*,*) doinit=yes ;;
15800     esac ;;
15801 esac
15802 case "$doinit" in
15803 yes)
15804         echo "Generating a list of signal names and numbers..." >&4
15805         . ./signal_cmd
15806         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15807         sig_name=`$awk 'BEGIN { printf "ZERO " }
15808                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15809         sig_num=`$awk  'BEGIN { printf "0 " }
15810                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15811         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15812                              !/^NSIG/   { printf "\"%s\", ", $1 }
15813                              END        { printf "0\n" }' signal.lst`
15814         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15815                              !/^NSIG/   { printf "%d, ", $2}
15816                              END        { printf "0\n"}' signal.lst`
15817         ;;
15818 esac
15819 echo "The following $sig_count signals are available:"
15820 echo " "
15821 echo $sig_name | $awk \
15822 'BEGIN { linelen = 0 }
15823 {
15824         for (i = 1; i <= NF; i++) {
15825                 name = "SIG" $i " "
15826                 linelen = linelen + length(name)
15827                 if (linelen > 70) {
15828                         printf "\n"
15829                         linelen = length(name)
15830                 }
15831                 printf "%s", name
15832         }
15833         printf "\n"
15834 }'
15835 sig_size=`echo $sig_name | awk '{print NF}'`
15836 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15837
15838 echo " "
15839 case "$sizetype" in
15840 *_t) zzz="$sizetype"    ;;
15841 *)   zzz="filesize"     ;;
15842 esac
15843 echo "Checking the size of $zzz..." >&4 
15844 cat > try.c <<EOCP
15845 #include <sys/types.h>
15846 #include <stdio.h>
15847 int main() {
15848     printf("%d\n", (int)sizeof($sizetype));
15849     exit(0);
15850 }
15851 EOCP
15852 set try
15853 if eval $compile_ok; then
15854         yyy=`$run ./try`
15855         case "$yyy" in
15856         '')     sizesize=4
15857                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15858                 ;;
15859         *)      sizesize=$yyy
15860                 echo "Your $zzz size is $sizesize bytes."
15861                 ;;
15862         esac
15863 else
15864         sizesize=4
15865         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15866 fi
15867
15868
15869 : check for socklen_t
15870 echo " "
15871 echo "Checking to see if you have socklen_t..." >&4
15872 $cat >try.c <<EOCP
15873 #include <sys/types.h>
15874 #$d_socket HAS_SOCKET
15875 #ifdef HAS_SOCKET
15876 #include <sys/socket.h>
15877 #endif
15878 int main() { socklen_t x = 16; }
15879 EOCP
15880 set try
15881 if eval $compile; then
15882         val="$define"
15883         echo "You have socklen_t."
15884 else
15885         val="$undef"
15886         echo "You do not have socklen_t."
15887         case "$sizetype" in
15888         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15889         esac
15890 fi
15891 $rm -f try try.*
15892 set d_socklen_t
15893 eval $setvar
15894
15895 : see if this is a socks.h system
15896 set socks.h i_socks
15897 eval $inhdr
15898
15899 : check for type of the size argument to socket calls
15900 case "$d_socket" in
15901 "$define")
15902         $cat <<EOM
15903
15904 Checking to see what type is the last argument of accept().
15905 EOM
15906         yyy=''
15907         case "$d_socklen_t" in
15908         "$define") yyy="$yyy socklen_t"
15909         esac
15910         yyy="$yyy $sizetype int long unsigned"
15911         for xxx in $yyy; do
15912                 case "$socksizetype" in
15913                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15914                         case "$usesocks" in
15915                         "$define")
15916                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15917                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15918                                         socksizetype="$xxx"
15919                                 fi
15920                                 ;;
15921                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15922                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15923                                         socksizetype="$xxx"
15924                                 fi
15925                                 ;;
15926                         esac
15927                         ;;
15928                 esac
15929         done
15930 : In case none of those worked, prompt the user.
15931         case "$socksizetype" in
15932         '')     rp='What is the type for socket address structure sizes?'
15933                 dflt='int'
15934                 . ./myread
15935                 socksizetype=$ans
15936                 ;;
15937         esac
15938         ;;
15939 *)      : no sockets, so pick relatively harmless default
15940         socksizetype='int'
15941         ;;
15942 esac
15943
15944 : see what type is used for signed size_t
15945 set ssize_t ssizetype int stdio.h sys/types.h
15946 eval $typedef
15947 dflt="$ssizetype"
15948 $cat > try.c <<EOM
15949 #include <stdio.h>
15950 #include <sys/types.h>
15951 #define Size_t $sizetype
15952 #define SSize_t $dflt
15953 int main()
15954 {
15955         if (sizeof(Size_t) == sizeof(SSize_t))
15956                 printf("$dflt\n");
15957         else if (sizeof(Size_t) == sizeof(int))
15958                 printf("int\n");
15959         else 
15960                 printf("long\n");
15961         exit(0);
15962 }
15963 EOM
15964 echo " "
15965 set try
15966 if eval $compile_ok && $run ./try > /dev/null; then
15967         ssizetype=`$run ./try`
15968         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15969 else
15970         $cat >&4 <<EOM
15971 Help! I can't compile and run the ssize_t test program: please enlighten me!
15972 (This is probably a misconfiguration in your system or libraries, and
15973 you really ought to fix it.  Still, I'll try anyway.)
15974
15975 I need a type that is the same size as $sizetype, but is guaranteed to
15976 be signed.  Common values are ssize_t, int and long.
15977
15978 EOM
15979         rp="What signed type is the same size as $sizetype?"
15980         . ./myread
15981         ssizetype="$ans"
15982 fi
15983 $rm -f try try.*
15984
15985 : see what type of char stdio uses.
15986 echo " "
15987 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15988 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15989         echo "Your stdio uses unsigned chars." >&4
15990         stdchar="unsigned char"
15991 else
15992         echo "Your stdio uses signed chars." >&4
15993         stdchar="char"
15994 fi
15995 $rm -f stdioh
15996
15997
15998
15999 : see if time exists
16000 echo " "
16001 if test "X$d_time" = X -o X"$timetype" = X; then
16002     if set time val -f d_time; eval $csym; $val; then
16003                 echo 'time() found.' >&4
16004                 val="$define"
16005                 rp="What is the type returned by time() on this system?"
16006                 set time_t timetype long stdio.h sys/types.h
16007                 eval $typedef_ask
16008     else
16009                 echo 'time() not found, hope that will do.' >&4
16010                 val="$undef"
16011                 timetype='int';
16012     fi
16013     set d_time
16014     eval $setvar
16015 fi
16016
16017 : see what type uids are declared as in the kernel
16018 echo " "
16019 echo "Looking for the type for user ids returned by getuid()."
16020 set uid_t uidtype xxx stdio.h sys/types.h
16021 eval $typedef
16022 case "$uidtype" in
16023 xxx)
16024         xxx=`./findhdr sys/user.h`
16025         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
16026         case $1 in
16027         unsigned) dflt="$1 $2" ;;
16028         *) dflt="$1" ;;
16029         esac
16030         ;;
16031 *) dflt="$uidtype";;
16032 esac
16033 case "$uidtype" in
16034 uid_t)  echo "uid_t found." ;;
16035 *)      rp="What is the type for user ids returned by getuid()?"
16036         . ./myread
16037         uidtype="$ans"
16038         ;;
16039 esac
16040
16041 echo " "
16042 case "$uidtype" in
16043 *_t) zzz="$uidtype"     ;;
16044 *)   zzz="uid"          ;;
16045 esac
16046 echo "Checking the size of $zzz..." >&4 
16047 cat > try.c <<EOCP
16048 #include <sys/types.h>
16049 #include <stdio.h>
16050 int main() {
16051     printf("%d\n", (int)sizeof($uidtype));
16052     exit(0);
16053 }
16054 EOCP
16055 set try
16056 if eval $compile_ok; then
16057         yyy=`$run ./try`
16058         case "$yyy" in
16059         '')     uidsize=4
16060                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
16061                 ;;
16062         *)      uidsize=$yyy
16063                 echo "Your $zzz is $uidsize bytes long."
16064                 ;;
16065         esac
16066 else
16067         uidsize=4
16068         echo "(I can't compile the test program--guessing $uidsize.)" >&4
16069 fi
16070
16071 echo " "
16072 case "$uidtype" in
16073 *_t) zzz="$uidtype"     ;;
16074 *)   zzz="uid"          ;;
16075 esac
16076 echo "Checking the sign of $zzz..." >&4
16077 cat > try.c <<EOCP
16078 #include <sys/types.h>
16079 #include <stdio.h>
16080 int main() {
16081         $uidtype foo = -1;
16082         if (foo < 0)
16083                 printf("-1\n");
16084         else
16085                 printf("1\n");
16086 }
16087 EOCP
16088 set try
16089 if eval $compile; then
16090         yyy=`$run ./try`
16091         case "$yyy" in
16092         '')     uidsign=1
16093                 echo "(I can't execute the test program--guessing unsigned.)" >&4
16094                 ;;
16095         *)      uidsign=$yyy
16096                 case "$uidsign" in
16097                  1) echo "Your $zzz is unsigned." ;;
16098                 -1) echo "Your $zzz is signed."   ;;
16099                 esac
16100                 ;;
16101         esac
16102 else
16103         uidsign=1
16104         echo "(I can't compile the test program--guessing unsigned.)" >&4
16105 fi
16106
16107
16108
16109 echo " "
16110 $echo "Checking the format string to be used for uids..." >&4
16111
16112 case "$uidsign" in
16113 -1)     if $test X"$uidsize" = X"$ivsize"; then
16114                 uidformat="$ivdformat"
16115         else
16116                 if $test X"$uidsize" = X"$longsize"; then
16117                         uidformat='"ld"'
16118                 else
16119                         if $test X"$uidsize" = X"$intsize"; then
16120                                 uidformat='"d"'
16121                         else
16122                                 if $test X"$uidsize" = X"$shortsize"; then
16123                                         uidformat='"hd"'
16124                                 fi
16125                         fi
16126                 fi
16127         fi
16128         ;;
16129 *)      if $test X"$uidsize" = X"$uvsize"; then
16130                 uidformat="$uvuformat"
16131         else
16132                 if $test X"$uidsize" = X"$longsize"; then
16133                         uidformat='"lu"'
16134                 else
16135                         if $test X"$uidsize" = X"$intsize"; then
16136                                 uidformat='"u"'
16137                         else
16138                                 if $test X"$uidsize" = X"$shortsize"; then
16139                                         uidformat='"hu"'
16140                                 fi
16141                         fi
16142                 fi
16143         fi
16144         ;;
16145 esac
16146
16147 : determine compiler compiler
16148 case "$yacc" in
16149 '')
16150         dflt=yacc;;
16151 *)
16152         dflt="$yacc";;
16153 esac
16154 echo " "
16155 comp='yacc'
16156 if $test -f "$byacc$_exe"; then
16157         dflt="$byacc"
16158         comp="byacc or $comp"
16159 fi
16160 if $test -f "$bison$_exe"; then
16161         comp="$comp or bison -y"
16162 fi
16163 rp="Which compiler compiler ($comp) shall I use?"
16164 . ./myread
16165 yacc="$ans"
16166 case "$yacc" in
16167 *bis*)
16168         case "$yacc" in
16169         *-y*) ;;
16170         *)
16171                 yacc="$yacc -y"
16172                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
16173                 ;;
16174         esac
16175         ;;
16176 esac
16177
16178 : see if this is a fp.h system
16179 set fp.h i_fp
16180 eval $inhdr
16181
16182 : see if this is a fp_class.h system
16183 set fp_class.h i_fp_class
16184 eval $inhdr
16185
16186 : see if this is a ieeefp.h system
16187 case "$i_ieeefp" in
16188 '' ) set ieeefp.h i_ieeefp
16189      eval $inhdr
16190      ;;
16191 esac
16192
16193 : see if this is a libutil.h system
16194 set libutil.h i_libutil
16195 eval $inhdr
16196
16197 : see if locale.h is available
16198 set locale.h i_locale
16199 eval $inhdr
16200
16201 : see if mach cthreads are available
16202 if test "X$usethreads" = "X$define"; then
16203         set mach/cthreads.h i_machcthr
16204         eval $inhdr
16205 else
16206         i_machcthr="$undef"
16207 fi
16208
16209
16210
16211 : see if this is a math.h system
16212 set math.h i_math
16213 eval $inhdr
16214
16215 : see if this is a mntent.h system
16216 set mntent.h i_mntent
16217 eval $inhdr
16218
16219 : see if ndbm.h is available
16220 set ndbm.h t_ndbm
16221 eval $inhdr
16222
16223 case "$t_ndbm" in
16224 $undef)
16225     # Some Linux distributions such as RedHat 7.1 put the
16226     # ndbm.h header in /usr/include/gdbm/ndbm.h.
16227     if $test -f /usr/include/gdbm/ndbm.h; then
16228         echo '<gdbm/ndbm.h> found.'
16229         ccflags="$ccflags -I/usr/include/gdbm"
16230         cppflags="$cppflags -I/usr/include/gdbm"
16231         t_ndbm=$define
16232     fi
16233     ;;
16234 esac
16235
16236 case "$t_ndbm" in
16237 $define)
16238         : see if dbm_open exists
16239         set dbm_open d_dbm_open
16240         eval $inlibc
16241         case "$d_dbm_open" in
16242         $undef)
16243                 t_ndbm="$undef"
16244                 echo "We won't be including <ndbm.h>"
16245                 ;;
16246         esac
16247         ;;
16248 esac
16249 val="$t_ndbm"
16250 set i_ndbm
16251 eval $setvar
16252
16253 : see if net/errno.h is available
16254 val=''
16255 set net/errno.h val
16256 eval $inhdr
16257
16258 : Unfortunately, it causes problems on some systems.  Arrgh.
16259 case "$val" in
16260 $define)
16261         cat > try.c <<'EOM'
16262 #include <stdio.h>
16263 #include <errno.h>
16264 #include <net/errno.h>
16265 int func()
16266 {
16267         return ENOTSOCK;
16268 }
16269 EOM
16270         if $cc $ccflags -c try.c >/dev/null 2>&1; then
16271                 echo "We'll be including <net/errno.h>." >&4
16272         else
16273                 echo "We won't be including <net/errno.h>." >&4
16274                 val="$undef"
16275         fi
16276         $rm -f try.* try
16277         ;;
16278 esac
16279 set i_neterrno
16280 eval $setvar
16281
16282 : see if netinet/tcp.h is available
16283 set netinet/tcp.h i_netinettcp
16284 eval $inhdr
16285
16286 : see if this is a poll.h system
16287 set poll.h i_poll
16288 eval $inhdr
16289
16290 : see if this is a prot.h system
16291 set prot.h i_prot
16292 eval $inhdr
16293
16294 echo " "
16295 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
16296 $cat <<'EOSH' > Cppsym.know
16297 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
16298 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
16299 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
16300 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
16301 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
16302 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
16303 bull c cadmus clipper CMU COFF COMPILER_VERSION
16304 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
16305 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
16306 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
16307 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
16308 GLIBC GLIBC_MINOR
16309 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
16310 H3050R H3050RX hbullx20 hcx host_mips
16311 hp200 hp300 hp700 HP700 hp800 hp9000
16312 hp9000s200 hp9000s300 hp9000s400 hp9000s500
16313 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
16314 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
16315 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
16316 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
16317 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
16318 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
16319 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
16320 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
16321 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
16322 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
16323 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
16324 MATH_HAS_NO_SIDE_EFFECTS
16325 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
16326 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
16327 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
16328 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
16329 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
16330 NetBSD news1500 news1700 news1800 news1900 news3700
16331 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
16332 ns32016 ns32332 ns32k nsc32000
16333 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
16334 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
16335 pc532 pdp11 PGC PIC plexus PORTAR posix
16336 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
16337 POSIX_C_SOURCE POSIX_SOURCE POWER
16338 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
16339 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
16340 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
16341 sony sony_news sonyrisc sparc sparclite spectrum
16342 stardent stdc STDC_EXT stratos sun sun3 sun386
16343 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
16344 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
16345 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
16346 sysV68 sysV88 Tek4132 Tek4300 titan
16347 TM3200 TM5400 TM5600
16348 tower tower32 tower32_200 tower32_600 tower32_700
16349 tower32_800 tower32_850 tss
16350 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
16351 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
16352 unix UNIX95 UNIX99 unixpc unos
16353 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
16354 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
16355 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
16356 USGr4 USGr4_2
16357 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
16358 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
16359 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
16360 z8000
16361 EOSH
16362 # Maybe put other stuff here too.
16363 cat <<EOSH >>Cppsym.know
16364 $osname
16365 EOSH
16366 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
16367 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
16368 $cat Cppsym.know > Cppsym.c
16369 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
16370 $rm -f Cppsym.a Cppsym.b Cppsym.c
16371 cat <<EOSH > Cppsym
16372 $startsh
16373 if $test \$# -gt 0; then
16374     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
16375     if $test -s Cppsym.got; then
16376         $rm -f Cppsym.got
16377         exit 0
16378     fi
16379     $rm -f Cppsym.got
16380     exit 1
16381 else
16382     $tr " " "$trnl" | ./Cppsym.try
16383     exit 0
16384 fi
16385 EOSH
16386 chmod +x Cppsym
16387 $eunicefix Cppsym
16388 cat <<EOSH > Cppsym.try
16389 $startsh
16390 cat <<'EOCP' > try.c
16391 #include <stdio.h>
16392 int main() {
16393 EOCP
16394 $awk \\
16395 EOSH
16396 cat <<'EOSH' >> Cppsym.try
16397 'length($1) > 0 {
16398     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
16399     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
16400     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
16401     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
16402 }'       >> try.c
16403 echo 'return 0;}' >> try.c
16404 EOSH
16405 cat <<EOSH >> Cppsym.try
16406 ccflags="$ccflags"
16407 case "$osname-$gccversion" in
16408 irix-) ccflags="\$ccflags -woff 1178" ;;
16409 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
16410 esac
16411 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
16412 EOSH
16413 chmod +x Cppsym.try
16414 $eunicefix Cppsym.try
16415 ./Cppsym < Cppsym.know > Cppsym.true
16416 : now check the C compiler for additional symbols
16417 postprocess_cc_v=''
16418 case "$osname" in
16419 aix) postprocess_cc_v="|$tr , ' '" ;;
16420 esac
16421 $cat >ccsym <<EOS
16422 $startsh
16423 $cat >tmp.c <<EOF
16424 extern int foo;
16425 EOF
16426 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
16427 do
16428         case "\$i" in
16429         -D*) echo "\$i" | $sed 's/^-D//';;
16430         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16431         esac
16432 done
16433 $rm -f try.c
16434 EOS
16435 postprocess_cc_v=''
16436 chmod +x ccsym
16437 $eunicefix ccsym
16438 ./ccsym > ccsym1.raw
16439 if $test -s ccsym1.raw; then
16440        $sort ccsym1.raw | $uniq >ccsym.raw
16441 else
16442        mv ccsym1.raw ccsym.raw
16443 fi
16444
16445 $awk '/\=/ { print $0; next }
16446         { print $0"=1" }' ccsym.raw >ccsym.list
16447 $awk '/\=/ { print $0; next }
16448         { print $0"=1" }' Cppsym.true >ccsym.true
16449 $comm -13 ccsym.true ccsym.list >ccsym.own
16450 $comm -12 ccsym.true ccsym.list >ccsym.com
16451 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16452 also=''
16453 if $test -z ccsym.raw; then
16454         echo "Your C compiler doesn't seem to define any symbols!" >&4
16455         echo " "
16456         echo "However, your C preprocessor defines the following symbols:"
16457         $cat Cppsym.true
16458         ccsymbols=''
16459         cppsymbols=`$cat Cppsym.true`
16460         cppsymbols=`echo $cppsymbols`
16461         cppccsymbols="$cppsymbols"
16462 else
16463         if $test -s ccsym.com; then
16464                 echo "Your C compiler and pre-processor define these symbols:"
16465                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16466                 also='also '
16467                 symbols='ones'
16468                 cppccsymbols=`$cat ccsym.com`
16469                 cppccsymbols=`echo $cppccsymbols`
16470                 $test "$silent" || sleep 1
16471         fi
16472         if $test -s ccsym.cpp; then
16473                 $test "$also" && echo " "
16474                 echo "Your C pre-processor ${also}defines the following symbols:"
16475                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16476                 also='further '
16477                 cppsymbols=`$cat ccsym.cpp`
16478                 cppsymbols=`echo $cppsymbols`
16479                 $test "$silent" || sleep 1
16480         fi
16481         if $test -s ccsym.own; then
16482                 $test "$also" && echo " "
16483                 echo "Your C compiler ${also}defines the following cpp symbols:"
16484                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16485                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16486                 ccsymbols=`$cat ccsym.own`
16487                 ccsymbols=`echo $ccsymbols`
16488                 $test "$silent" || sleep 1
16489         fi
16490 fi
16491
16492 : see if this is a termio system
16493 val="$undef"
16494 val2="$undef"
16495 val3="$undef"
16496 if $test `./findhdr termios.h`; then
16497         set tcsetattr i_termios
16498         eval $inlibc
16499         val3="$i_termios"
16500 fi
16501 echo " "
16502 case "$val3" in
16503 "$define") echo "You have POSIX termios.h... good!" >&4;;
16504 *) if ./Cppsym pyr; then
16505                 case "`/bin/universe`" in
16506                 ucb) if $test `./findhdr sgtty.h`; then
16507                                 val2="$define"
16508                                 echo "<sgtty.h> found." >&4
16509                         else
16510                                 echo "System is pyramid with BSD universe."
16511                                 echo "<sgtty.h> not found--you could have problems." >&4
16512                         fi;;
16513                 *) if $test `./findhdr termio.h`; then
16514                                 val="$define"
16515                                 echo "<termio.h> found." >&4
16516                         else
16517                                 echo "System is pyramid with USG universe."
16518                                 echo "<termio.h> not found--you could have problems." >&4
16519                         fi;;
16520                 esac
16521         elif ./usg; then
16522                 if $test `./findhdr termio.h`; then
16523                         echo "<termio.h> found." >&4
16524                         val="$define"
16525                 elif $test `./findhdr sgtty.h`; then
16526                         echo "<sgtty.h> found." >&4
16527                         val2="$define"
16528                 else
16529 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16530                 fi
16531         else
16532                 if $test `./findhdr sgtty.h`; then
16533                         echo "<sgtty.h> found." >&4
16534                         val2="$define"
16535                 elif $test `./findhdr termio.h`; then
16536                         echo "<termio.h> found." >&4
16537                         val="$define"
16538                 else
16539 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16540                 fi
16541         fi;;
16542 esac
16543 set i_termio; eval $setvar
16544 val=$val2; set i_sgtty; eval $setvar
16545 val=$val3; set i_termios; eval $setvar
16546
16547 : see if this is a shadow.h system
16548 set shadow.h i_shadow
16549 eval $inhdr
16550
16551 : see if stddef is available
16552 set stddef.h i_stddef
16553 eval $inhdr
16554
16555 : see if this is a sunmath.h system
16556 set sunmath.h i_sunmath
16557 eval $inhdr
16558
16559 : see if sys/access.h is available
16560 set sys/access.h i_sysaccess
16561 eval $inhdr
16562
16563 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16564 set sys/filio.h i_sysfilio
16565 eval $inhdr
16566 echo " "
16567 if $test `./findhdr sys/ioctl.h`; then
16568         val="$define"
16569         echo '<sys/ioctl.h> found.' >&4
16570 else
16571         val="$undef"
16572         if $test $i_sysfilio = "$define"; then
16573             echo '<sys/ioctl.h> NOT found.' >&4
16574         else
16575                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16576                 $test $i_termio = "$define" && xxx="termio.h"
16577                 $test $i_termios = "$define" && xxx="termios.h"
16578 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16579         fi
16580 fi
16581 set i_sysioctl
16582 eval $setvar
16583
16584 : see if socket ioctl defs are in sys/sockio.h
16585 echo " "
16586 xxx=`./findhdr sys/sockio.h`
16587 if $test "$xxx"; then
16588         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16589                 val="$define"
16590                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16591         else
16592                 val="$undef"
16593                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16594         fi
16595 else
16596         val="$undef"
16597         $cat <<EOM
16598 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16599 EOM
16600 fi
16601 set i_syssockio
16602 eval $setvar
16603
16604
16605 : see if this is a syslog.h system
16606 set syslog.h i_syslog
16607 eval $inhdr
16608
16609
16610 : see if this is a sys/mode.h system
16611 set sys/mode.h i_sysmode
16612 eval $inhdr
16613
16614 : see if sys/resource.h has to be included
16615 set sys/resource.h i_sysresrc
16616 eval $inhdr
16617
16618 : see if sys/security.h is available
16619 set sys/security.h i_syssecrt
16620 eval $inhdr
16621
16622 : see if this is a sys/statvfs.h system
16623 set sys/statvfs.h i_sysstatvfs
16624 eval $inhdr
16625
16626 : see if this is a sys/un.h system
16627 set sys/un.h i_sysun
16628 eval $inhdr
16629
16630
16631 : see if this is a sys/utsname.h system
16632 set sys/utsname.h i_sysutsname
16633 eval $inhdr
16634
16635 : see if this is a syswait system
16636 set sys/wait.h i_syswait
16637 eval $inhdr
16638
16639 : see if this is a ustat.h system
16640 set ustat.h i_ustat
16641 eval $inhdr
16642
16643 : see if this is an utime system
16644 set utime.h i_utime
16645 eval $inhdr
16646
16647 : see if this is a values.h system
16648 set values.h i_values
16649 eval $inhdr
16650
16651 : see if this is a vfork system
16652 case "$d_vfork" in
16653 "$define")
16654         set vfork.h i_vfork
16655         eval $inhdr
16656         ;;
16657 *)
16658         i_vfork="$undef"
16659         ;;
16660 esac
16661
16662 : see if gdbm.h is available
16663 set gdbm.h t_gdbm
16664 eval $inhdr
16665 case "$t_gdbm" in
16666 $define)
16667         : see if gdbm_open exists
16668         set gdbm_open d_gdbm_open
16669         eval $inlibc
16670         case "$d_gdbm_open" in
16671         $undef)
16672                 t_gdbm="$undef"
16673                 echo "We won't be including <gdbm.h>"
16674                 ;;
16675         esac
16676         ;;
16677 esac
16678 val="$t_gdbm"
16679 set i_gdbm
16680 eval $setvar
16681
16682 echo " "
16683 echo "Looking for extensions..." >&4
16684 : If we are using the old config.sh, known_extensions may contain
16685 : old or inaccurate or duplicate values.
16686 known_extensions=''
16687 nonxs_extensions=''
16688 : We do not use find because it might not be available.
16689 : We do not just use MANIFEST because the user may have dropped
16690 : some additional extensions into the source tree and expect them
16691 : to be built.
16692
16693 : Function to recursively find available extensions, ignoring DynaLoader
16694 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16695 find_extensions='
16696     for xxx in *; do
16697        case "$xxx" in
16698            DynaLoader|dynaload) ;;
16699            *)
16700            if $test -f $xxx/$xxx.xs; then
16701                known_extensions="$known_extensions $1$xxx";
16702            elif $test -f $xxx/Makefile.PL; then
16703                nonxs_extensions="$nonxs_extensions $1$xxx";
16704            else
16705                if $test -d $xxx -a $# -lt 10; then
16706                    set $1$xxx/ $*;
16707                    cd "$xxx";
16708                    eval $find_extensions;
16709                    cd ..;
16710                    shift;
16711                fi;
16712            fi
16713            ;;
16714        esac;
16715     done'
16716 tdir=`pwd`
16717 cd "$rsrc/ext"
16718 set X
16719 shift
16720 eval $find_extensions
16721 # Special case:  Add in threads/shared since it is not picked up by the
16722 # recursive find above (and adding in general recursive finding breaks
16723 # SDBM_File/sdbm).  A.D.  10/25/2001.
16724 # Encode::XX need explicit mentions for the same reason.
16725 # --jhi 2002-03-04
16726 known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
16727 set X $nonxs_extensions
16728 shift
16729 nonxs_extensions="$*"
16730 set X $known_extensions
16731 shift
16732 known_extensions="$*"
16733 cd "$tdir"
16734
16735 : Now see which are supported on this system.
16736 avail_ext=''
16737 for xxx in $known_extensions ; do
16738         case "$xxx" in
16739         DB_File|db_file)
16740                 case "$i_db" in
16741                 $define) avail_ext="$avail_ext $xxx" ;;
16742                 esac
16743                 ;;
16744         GDBM_File|gdbm_fil)
16745                 case "$i_gdbm" in 
16746                 $define) avail_ext="$avail_ext $xxx" ;;
16747                 esac
16748                 ;;
16749         I18N/Langinfo|i18n_lan)
16750                 case "$i_langinfo$d_nl_langinfo" in 
16751                 $define$define) avail_ext="$avail_ext $xxx" ;;
16752                 esac
16753                 ;;
16754         NDBM_File|ndbm_fil)
16755                 case "$i_ndbm" in
16756                 $define)
16757                     case "$osname-$use64bitint" in
16758                     cygwin-*|hpux-define)
16759                         case "$libs" in
16760                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16761                         esac
16762                         ;;
16763                     *) avail_ext="$avail_ext $xxx" ;;
16764                     esac
16765                     ;;
16766                 esac
16767                 ;;
16768         ODBM_File|odbm_fil) 
16769                 case "${i_dbm}${i_rpcsvcdbm}" in
16770                 *"${define}"*)
16771                     case "$osname-$use64bitint" in
16772                     cygwin-*|hpux-define)
16773                         case "$libs" in
16774                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16775                         esac
16776                         ;;
16777                     *) avail_ext="$avail_ext $xxx" ;;
16778                     esac
16779                     ;;
16780                 esac
16781                 ;;
16782         POSIX|posix)
16783                 case "$useposix" in
16784                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16785                 esac
16786                 ;;
16787         Opcode|opcode)
16788                 case "$useopcode" in
16789                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16790                 esac
16791                 ;;
16792         Socket|socket)
16793                 case "$d_socket" in 
16794                 true|$define|y)
16795                     case "$osname" in
16796                     beos) ;; # not unless BONE
16797                     *) avail_ext="$avail_ext $xxx" ;;
16798                     esac
16799                     ;;
16800                 esac
16801                 ;;
16802         Sys/Syslog|sys/syslog)
16803                 : XXX syslog requires socket
16804                 case "$d_socket" in 
16805                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16806                 esac
16807                 ;;
16808         Thread|thread)
16809                 case "$usethreads" in
16810                 true|$define|y)
16811                         case "$useithreads" in
16812                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16813                         esac
16814                 esac
16815                 ;;
16816         threads|threads/shared)
16817                 case "$usethreads" in
16818                 true|$define|y)
16819                         case "$useithreads" in
16820                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
16821                         esac
16822                 esac
16823                 ;;
16824         IPC/SysV|ipc/sysv)
16825                 : XXX Do we need a useipcsysv variable here
16826                 case "${d_msg}${d_sem}${d_shm}" in 
16827                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16828                 esac
16829                 ;;
16830         *)      avail_ext="$avail_ext $xxx"
16831                 ;;
16832         esac
16833 done
16834
16835 set X $avail_ext
16836 shift
16837 avail_ext="$*"
16838
16839 : Now see which nonxs extensions are supported on this system.
16840 : For now assume all are.
16841 nonxs_ext=''
16842 for xxx in $nonxs_extensions ; do
16843         case "$xxx" in
16844         *)      nonxs_ext="$nonxs_ext $xxx"
16845                 ;;
16846         esac
16847 done
16848
16849 set X $nonxs_ext
16850 shift
16851 nonxs_ext="$*"
16852
16853 case $usedl in
16854 $define)
16855         $cat <<EOM
16856 A number of extensions are supplied with $package.  You may choose to
16857 compile these extensions for dynamic loading (the default), compile
16858 them into the $package executable (static loading), or not include
16859 them at all.  Answer "none" to include no extensions.
16860 Note that DynaLoader is always built and need not be mentioned here.
16861
16862 EOM
16863         case "$dynamic_ext" in
16864         '') dflt="$avail_ext" ;;
16865         *)      dflt="$dynamic_ext"
16866                 # Perhaps we are reusing an old out-of-date config.sh.
16867                 case "$hint" in
16868                 previous)
16869                         if test X"$dynamic_ext" != X"$avail_ext"; then
16870                                 $cat <<EOM
16871 NOTICE:  Your previous config.sh list may be incorrect. 
16872 The extensions now available to you are 
16873         ${avail_ext}
16874 but the default list from your previous config.sh is
16875         ${dynamic_ext} 
16876
16877 EOM
16878                         fi
16879                         ;;
16880                 esac
16881                 ;;
16882         esac
16883         case "$dflt" in
16884         '')     dflt=none;;
16885         esac
16886         rp="What extensions do you wish to load dynamically?"
16887         . ./myread
16888         case "$ans" in
16889         none) dynamic_ext=' ' ;;
16890         *) dynamic_ext="$ans" ;;
16891         esac
16892
16893         case "$static_ext" in
16894         '')
16895                 : Exclude those already listed in dynamic linking
16896                 dflt=''
16897                 for xxx in $avail_ext; do
16898                         case " $dynamic_ext " in
16899                         *" $xxx "*) ;;
16900                         *) dflt="$dflt $xxx" ;;
16901                         esac
16902                 done
16903                 set X $dflt
16904                 shift
16905                 dflt="$*"
16906                 ;;
16907         *)  dflt="$static_ext" 
16908                 ;;
16909         esac
16910
16911         case "$dflt" in
16912         '')     dflt=none;;
16913         esac
16914         rp="What extensions do you wish to load statically?"
16915         . ./myread
16916         case "$ans" in
16917         none) static_ext=' ' ;;
16918         *) static_ext="$ans" ;;
16919         esac
16920         ;;
16921 *)
16922         $cat <<EOM
16923 A number of extensions are supplied with $package.  Answer "none" 
16924 to include no extensions. 
16925 Note that DynaLoader is always built and need not be mentioned here.
16926
16927 EOM
16928         case "$static_ext" in
16929         '') dflt="$avail_ext" ;;
16930         *)      dflt="$static_ext"
16931                 # Perhaps we are reusing an old out-of-date config.sh.
16932                 case "$hint" in
16933                 previous)
16934                         if test X"$static_ext" != X"$avail_ext"; then
16935                                 $cat <<EOM
16936 NOTICE:  Your previous config.sh list may be incorrect. 
16937 The extensions now available to you are 
16938         ${avail_ext}
16939 but the default list from your previous config.sh is
16940         ${static_ext} 
16941
16942 EOM
16943                         fi
16944                         ;;
16945                 esac
16946                 ;;
16947         esac
16948         : Exclude those that are not xs extensions
16949         case "$dflt" in
16950         '')     dflt=none;;
16951         esac
16952         rp="What extensions do you wish to include?"
16953         . ./myread
16954         case "$ans" in
16955         none) static_ext=' ' ;;
16956         *) static_ext="$ans" ;;
16957         esac
16958         ;;
16959 esac
16960
16961 set X $dynamic_ext $static_ext $nonxs_ext
16962 shift
16963 extensions="$*"
16964
16965 : Remove libraries needed only for extensions
16966 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16967 : The exception is SunOS 4.x, which needs them.
16968 case "${osname}X${osvers}" in
16969 sunos*X4*)
16970     perllibs="$libs"
16971     ;;
16972 *) case "$usedl" in
16973     $define|true|[yY]*)
16974             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16975             shift
16976             perllibs="$*"
16977             ;;
16978     *)  perllibs="$libs"
16979             ;;
16980     esac
16981     ;;
16982 esac
16983
16984 : Remove build directory name from cppstdin so it can be used from
16985 : either the present location or the final installed location.
16986 echo " "
16987 : Get out of the UU directory to get correct path name.
16988 cd ..
16989 case "$cppstdin" in
16990 `pwd`/cppstdin)
16991         echo "Stripping down cppstdin path name"
16992         cppstdin=cppstdin
16993         ;;
16994 esac
16995 cd UU
16996
16997 : end of configuration questions
16998 echo " "
16999 echo "End of configuration questions."
17000 echo " "
17001
17002 : back to where it started
17003 if test -d ../UU; then
17004         cd ..
17005 fi
17006
17007 : configuration may be patched via a 'config.arch' file
17008 if $test -f config.arch; then
17009         echo "I see a config.arch file, loading it."
17010         . ./config.arch
17011 fi
17012
17013 : configuration may be patched via a 'config.over' file
17014 if $test -f config.over; then
17015         echo " "
17016         dflt=y
17017         rp='I see a config.over file.  Do you wish to load it?'
17018         . UU/myread
17019         case "$ans" in
17020         n*) echo "OK, I'll ignore it.";;
17021         *)      . ./config.over
17022                 echo "Configuration override changes have been loaded."
17023                 ;;
17024         esac
17025 fi
17026
17027 : in case they want portability, strip down executable paths
17028 case "$d_portable" in
17029 "$define")
17030         echo " "
17031         echo "Stripping down executable paths..." >&4
17032         for file in $loclist $trylist; do
17033                 eval temp=\$$file
17034                 eval $file=`basename $temp`
17035         done
17036         ;;
17037 esac
17038
17039 : create config.sh file
17040 echo " "
17041 echo "Creating config.sh..." >&4
17042 $spitshell <<EOT >config.sh
17043 $startsh
17044 #
17045 # This file was produced by running the Configure script. It holds all the
17046 # definitions figured out by Configure. Should you modify one of these values,
17047 # do not forget to propagate your changes by running "Configure -der". You may
17048 # instead choose to run each of the .SH files by yourself, or "Configure -S".
17049 #
17050
17051 # Package name      : $package
17052 # Source directory  : $src
17053 # Configuration time: $cf_time
17054 # Configured by     : $cf_by
17055 # Target system     : $myuname
17056
17057 Author='$Author'
17058 Date='$Date'
17059 Header='$Header'
17060 Id='$Id'
17061 Locker='$Locker'
17062 Log='$Log'
17063 Mcc='$Mcc'
17064 RCSfile='$RCSfile'
17065 Revision='$Revision'
17066 Source='$Source'
17067 State='$State'
17068 _a='$_a'
17069 _exe='$_exe'
17070 _o='$_o'
17071 afs='$afs'
17072 afsroot='$afsroot'
17073 alignbytes='$alignbytes'
17074 ansi2knr='$ansi2knr'
17075 aphostname='$aphostname'
17076 api_revision='$api_revision'
17077 api_subversion='$api_subversion'
17078 api_version='$api_version'
17079 api_versionstring='$api_versionstring'
17080 ar='$ar'
17081 archlib='$archlib'
17082 archlibexp='$archlibexp'
17083 archname64='$archname64'
17084 archname='$archname'
17085 archobjs='$archobjs'
17086 awk='$awk'
17087 baserev='$baserev'
17088 bash='$bash'
17089 bin='$bin'
17090 bincompat5005='$bincompat5005'
17091 binexp='$binexp'
17092 bison='$bison'
17093 byacc='$byacc'
17094 byteorder='$byteorder'
17095 c='$c'
17096 castflags='$castflags'
17097 cat='$cat'
17098 cc='$cc'
17099 cccdlflags='$cccdlflags'
17100 ccdlflags='$ccdlflags'
17101 ccflags='$ccflags'
17102 ccflags_uselargefiles='$ccflags_uselargefiles'
17103 ccname='$ccname'
17104 ccsymbols='$ccsymbols'
17105 ccversion='$ccversion'
17106 cf_by='$cf_by'
17107 cf_email='$cf_email'
17108 cf_time='$cf_time'
17109 charsize='$charsize'
17110 chgrp='$chgrp'
17111 chmod='$chmod'
17112 chown='$chown'
17113 clocktype='$clocktype'
17114 comm='$comm'
17115 compress='$compress'
17116 contains='$contains'
17117 cp='$cp'
17118 cpio='$cpio'
17119 cpp='$cpp'
17120 cpp_stuff='$cpp_stuff'
17121 cppccsymbols='$cppccsymbols'
17122 cppflags='$cppflags'
17123 cpplast='$cpplast'
17124 cppminus='$cppminus'
17125 cpprun='$cpprun'
17126 cppstdin='$cppstdin'
17127 cppsymbols='$cppsymbols'
17128 cryptlib='$cryptlib'
17129 csh='$csh'
17130 d_Gconvert='$d_Gconvert'
17131 d_PRIEUldbl='$d_PRIEUldbl'
17132 d_PRIFUldbl='$d_PRIFUldbl'
17133 d_PRIGUldbl='$d_PRIGUldbl'
17134 d_PRIXU64='$d_PRIXU64'
17135 d_PRId64='$d_PRId64'
17136 d_PRIeldbl='$d_PRIeldbl'
17137 d_PRIfldbl='$d_PRIfldbl'
17138 d_PRIgldbl='$d_PRIgldbl'
17139 d_PRIi64='$d_PRIi64'
17140 d_PRIo64='$d_PRIo64'
17141 d_PRIu64='$d_PRIu64'
17142 d_PRIx64='$d_PRIx64'
17143 d_SCNfldbl='$d_SCNfldbl'
17144 d__fwalk='$d__fwalk'
17145 d_access='$d_access'
17146 d_accessx='$d_accessx'
17147 d_alarm='$d_alarm'
17148 d_archlib='$d_archlib'
17149 d_atolf='$d_atolf'
17150 d_atoll='$d_atoll'
17151 d_attribut='$d_attribut'
17152 d_bcmp='$d_bcmp'
17153 d_bcopy='$d_bcopy'
17154 d_bincompat5005='$d_bincompat5005'
17155 d_bsd='$d_bsd'
17156 d_bsdgetpgrp='$d_bsdgetpgrp'
17157 d_bsdsetpgrp='$d_bsdsetpgrp'
17158 d_bzero='$d_bzero'
17159 d_casti32='$d_casti32'
17160 d_castneg='$d_castneg'
17161 d_charvspr='$d_charvspr'
17162 d_chown='$d_chown'
17163 d_chroot='$d_chroot'
17164 d_chsize='$d_chsize'
17165 d_class='$d_class'
17166 d_closedir='$d_closedir'
17167 d_cmsghdr_s='$d_cmsghdr_s'
17168 d_const='$d_const'
17169 d_crypt='$d_crypt'
17170 d_csh='$d_csh'
17171 d_cuserid='$d_cuserid'
17172 d_dbl_dig='$d_dbl_dig'
17173 d_dbminitproto='$d_dbminitproto'
17174 d_difftime='$d_difftime'
17175 d_dirfd='$d_dirfd'
17176 d_dirnamlen='$d_dirnamlen'
17177 d_dlerror='$d_dlerror'
17178 d_dlopen='$d_dlopen'
17179 d_dlsymun='$d_dlsymun'
17180 d_dosuid='$d_dosuid'
17181 d_drand48proto='$d_drand48proto'
17182 d_dup2='$d_dup2'
17183 d_eaccess='$d_eaccess'
17184 d_endgrent='$d_endgrent'
17185 d_endhent='$d_endhent'
17186 d_endnent='$d_endnent'
17187 d_endpent='$d_endpent'
17188 d_endpwent='$d_endpwent'
17189 d_endsent='$d_endsent'
17190 d_eofnblk='$d_eofnblk'
17191 d_eunice='$d_eunice'
17192 d_fchdir='$d_fchdir'
17193 d_fchmod='$d_fchmod'
17194 d_fchown='$d_fchown'
17195 d_fcntl='$d_fcntl'
17196 d_fcntl_can_lock='$d_fcntl_can_lock'
17197 d_fd_macros='$d_fd_macros'
17198 d_fd_set='$d_fd_set'
17199 d_fds_bits='$d_fds_bits'
17200 d_fgetpos='$d_fgetpos'
17201 d_finite='$d_finite'
17202 d_finitel='$d_finitel'
17203 d_flexfnam='$d_flexfnam'
17204 d_flock='$d_flock'
17205 d_flockproto='$d_flockproto'
17206 d_fork='$d_fork'
17207 d_fp_class='$d_fp_class'
17208 d_fpathconf='$d_fpathconf'
17209 d_fpclass='$d_fpclass'
17210 d_fpclassify='$d_fpclassify'
17211 d_fpclassl='$d_fpclassl'
17212 d_fpos64_t='$d_fpos64_t'
17213 d_frexpl='$d_frexpl'
17214 d_fs_data_s='$d_fs_data_s'
17215 d_fseeko='$d_fseeko'
17216 d_fsetpos='$d_fsetpos'
17217 d_fstatfs='$d_fstatfs'
17218 d_fstatvfs='$d_fstatvfs'
17219 d_fsync='$d_fsync'
17220 d_ftello='$d_ftello'
17221 d_ftime='$d_ftime'
17222 d_getcwd='$d_getcwd'
17223 d_getespwnam='$d_getespwnam'
17224 d_getfsstat='$d_getfsstat'
17225 d_getgrent='$d_getgrent'
17226 d_getgrps='$d_getgrps'
17227 d_gethbyaddr='$d_gethbyaddr'
17228 d_gethbyname='$d_gethbyname'
17229 d_gethent='$d_gethent'
17230 d_gethname='$d_gethname'
17231 d_gethostprotos='$d_gethostprotos'
17232 d_getitimer='$d_getitimer'
17233 d_getlogin='$d_getlogin'
17234 d_getmnt='$d_getmnt'
17235 d_getmntent='$d_getmntent'
17236 d_getnbyaddr='$d_getnbyaddr'
17237 d_getnbyname='$d_getnbyname'
17238 d_getnent='$d_getnent'
17239 d_getnetprotos='$d_getnetprotos'
17240 d_getpagsz='$d_getpagsz'
17241 d_getpbyname='$d_getpbyname'
17242 d_getpbynumber='$d_getpbynumber'
17243 d_getpent='$d_getpent'
17244 d_getpgid='$d_getpgid'
17245 d_getpgrp2='$d_getpgrp2'
17246 d_getpgrp='$d_getpgrp'
17247 d_getppid='$d_getppid'
17248 d_getprior='$d_getprior'
17249 d_getprotoprotos='$d_getprotoprotos'
17250 d_getprpwnam='$d_getprpwnam'
17251 d_getpwent='$d_getpwent'
17252 d_getsbyname='$d_getsbyname'
17253 d_getsbyport='$d_getsbyport'
17254 d_getsent='$d_getsent'
17255 d_getservprotos='$d_getservprotos'
17256 d_getspnam='$d_getspnam'
17257 d_gettimeod='$d_gettimeod'
17258 d_gnulibc='$d_gnulibc'
17259 d_grpasswd='$d_grpasswd'
17260 d_hasmntopt='$d_hasmntopt'
17261 d_htonl='$d_htonl'
17262 d_index='$d_index'
17263 d_inetaton='$d_inetaton'
17264 d_int64_t='$d_int64_t'
17265 d_isascii='$d_isascii'
17266 d_isfinite='$d_isfinite'
17267 d_isinf='$d_isinf'
17268 d_isnan='$d_isnan'
17269 d_isnanl='$d_isnanl'
17270 d_killpg='$d_killpg'
17271 d_lchown='$d_lchown'
17272 d_ldbl_dig='$d_ldbl_dig'
17273 d_link='$d_link'
17274 d_locconv='$d_locconv'
17275 d_lockf='$d_lockf'
17276 d_longdbl='$d_longdbl'
17277 d_longlong='$d_longlong'
17278 d_lseekproto='$d_lseekproto'
17279 d_lstat='$d_lstat'
17280 d_madvise='$d_madvise'
17281 d_mblen='$d_mblen'
17282 d_mbstowcs='$d_mbstowcs'
17283 d_mbtowc='$d_mbtowc'
17284 d_memchr='$d_memchr'
17285 d_memcmp='$d_memcmp'
17286 d_memcpy='$d_memcpy'
17287 d_memmove='$d_memmove'
17288 d_memset='$d_memset'
17289 d_mkdir='$d_mkdir'
17290 d_mkdtemp='$d_mkdtemp'
17291 d_mkfifo='$d_mkfifo'
17292 d_mkstemp='$d_mkstemp'
17293 d_mkstemps='$d_mkstemps'
17294 d_mktime='$d_mktime'
17295 d_mmap='$d_mmap'
17296 d_modfl='$d_modfl'
17297 d_modfl_pow32_bug='$d_modfl_pow32_bug'
17298 d_mprotect='$d_mprotect'
17299 d_msg='$d_msg'
17300 d_msg_ctrunc='$d_msg_ctrunc'
17301 d_msg_dontroute='$d_msg_dontroute'
17302 d_msg_oob='$d_msg_oob'
17303 d_msg_peek='$d_msg_peek'
17304 d_msg_proxy='$d_msg_proxy'
17305 d_msgctl='$d_msgctl'
17306 d_msgget='$d_msgget'
17307 d_msghdr_s='$d_msghdr_s'
17308 d_msgrcv='$d_msgrcv'
17309 d_msgsnd='$d_msgsnd'
17310 d_msync='$d_msync'
17311 d_munmap='$d_munmap'
17312 d_mymalloc='$d_mymalloc'
17313 d_nice='$d_nice'
17314 d_nl_langinfo='$d_nl_langinfo'
17315 d_nv_preserves_uv='$d_nv_preserves_uv'
17316 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
17317 d_off64_t='$d_off64_t'
17318 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
17319 d_oldpthreads='$d_oldpthreads'
17320 d_oldsock='$d_oldsock'
17321 d_open3='$d_open3'
17322 d_pathconf='$d_pathconf'
17323 d_pause='$d_pause'
17324 d_perl_otherlibdirs='$d_perl_otherlibdirs'
17325 d_phostname='$d_phostname'
17326 d_pipe='$d_pipe'
17327 d_poll='$d_poll'
17328 d_portable='$d_portable'
17329 d_procselfexe='$d_procselfexe'
17330 d_pthread_atfork='$d_pthread_atfork'
17331 d_pthread_yield='$d_pthread_yield'
17332 d_pwage='$d_pwage'
17333 d_pwchange='$d_pwchange'
17334 d_pwclass='$d_pwclass'
17335 d_pwcomment='$d_pwcomment'
17336 d_pwexpire='$d_pwexpire'
17337 d_pwgecos='$d_pwgecos'
17338 d_pwpasswd='$d_pwpasswd'
17339 d_pwquota='$d_pwquota'
17340 d_qgcvt='$d_qgcvt'
17341 d_quad='$d_quad'
17342 d_readdir='$d_readdir'
17343 d_readlink='$d_readlink'
17344 d_readv='$d_readv'
17345 d_recvmsg='$d_recvmsg'
17346 d_rename='$d_rename'
17347 d_rewinddir='$d_rewinddir'
17348 d_rmdir='$d_rmdir'
17349 d_safebcpy='$d_safebcpy'
17350 d_safemcpy='$d_safemcpy'
17351 d_sanemcmp='$d_sanemcmp'
17352 d_sbrkproto='$d_sbrkproto'
17353 d_sched_yield='$d_sched_yield'
17354 d_scm_rights='$d_scm_rights'
17355 d_seekdir='$d_seekdir'
17356 d_select='$d_select'
17357 d_sem='$d_sem'
17358 d_semctl='$d_semctl'
17359 d_semctl_semid_ds='$d_semctl_semid_ds'
17360 d_semctl_semun='$d_semctl_semun'
17361 d_semget='$d_semget'
17362 d_semop='$d_semop'
17363 d_sendmsg='$d_sendmsg'
17364 d_setegid='$d_setegid'
17365 d_seteuid='$d_seteuid'
17366 d_setgrent='$d_setgrent'
17367 d_setgrps='$d_setgrps'
17368 d_sethent='$d_sethent'
17369 d_setitimer='$d_setitimer'
17370 d_setlinebuf='$d_setlinebuf'
17371 d_setlocale='$d_setlocale'
17372 d_setnent='$d_setnent'
17373 d_setpent='$d_setpent'
17374 d_setpgid='$d_setpgid'
17375 d_setpgrp2='$d_setpgrp2'
17376 d_setpgrp='$d_setpgrp'
17377 d_setprior='$d_setprior'
17378 d_setproctitle='$d_setproctitle'
17379 d_setpwent='$d_setpwent'
17380 d_setregid='$d_setregid'
17381 d_setresgid='$d_setresgid'
17382 d_setresuid='$d_setresuid'
17383 d_setreuid='$d_setreuid'
17384 d_setrgid='$d_setrgid'
17385 d_setruid='$d_setruid'
17386 d_setsent='$d_setsent'
17387 d_setsid='$d_setsid'
17388 d_setvbuf='$d_setvbuf'
17389 d_sfio='$d_sfio'
17390 d_shm='$d_shm'
17391 d_shmat='$d_shmat'
17392 d_shmatprototype='$d_shmatprototype'
17393 d_shmctl='$d_shmctl'
17394 d_shmdt='$d_shmdt'
17395 d_shmget='$d_shmget'
17396 d_sigaction='$d_sigaction'
17397 d_sigprocmask='$d_sigprocmask'
17398 d_sigsetjmp='$d_sigsetjmp'
17399 d_sockatmark='$d_sockatmark'
17400 d_sockatmarkproto='$d_sockatmarkproto'
17401 d_socket='$d_socket'
17402 d_socklen_t='$d_socklen_t'
17403 d_sockpair='$d_sockpair'
17404 d_socks5_init='$d_socks5_init'
17405 d_sqrtl='$d_sqrtl'
17406 d_sresgproto='$d_sresgproto'
17407 d_sresuproto='$d_sresuproto'
17408 d_statblks='$d_statblks'
17409 d_statfs_f_flags='$d_statfs_f_flags'
17410 d_statfs_s='$d_statfs_s'
17411 d_statvfs='$d_statvfs'
17412 d_stdio_cnt_lval='$d_stdio_cnt_lval'
17413 d_stdio_ptr_lval='$d_stdio_ptr_lval'
17414 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
17415 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
17416 d_stdio_stream_array='$d_stdio_stream_array'
17417 d_stdiobase='$d_stdiobase'
17418 d_stdstdio='$d_stdstdio'
17419 d_strchr='$d_strchr'
17420 d_strcoll='$d_strcoll'
17421 d_strctcpy='$d_strctcpy'
17422 d_strerrm='$d_strerrm'
17423 d_strerror='$d_strerror'
17424 d_strftime='$d_strftime'
17425 d_strtod='$d_strtod'
17426 d_strtol='$d_strtol'
17427 d_strtold='$d_strtold'
17428 d_strtoll='$d_strtoll'
17429 d_strtoq='$d_strtoq'
17430 d_strtoul='$d_strtoul'
17431 d_strtoull='$d_strtoull'
17432 d_strtouq='$d_strtouq'
17433 d_strxfrm='$d_strxfrm'
17434 d_suidsafe='$d_suidsafe'
17435 d_symlink='$d_symlink'
17436 d_syscall='$d_syscall'
17437 d_syscallproto='$d_syscallproto'
17438 d_sysconf='$d_sysconf'
17439 d_sysernlst='$d_sysernlst'
17440 d_syserrlst='$d_syserrlst'
17441 d_system='$d_system'
17442 d_tcgetpgrp='$d_tcgetpgrp'
17443 d_tcsetpgrp='$d_tcsetpgrp'
17444 d_telldir='$d_telldir'
17445 d_telldirproto='$d_telldirproto'
17446 d_time='$d_time'
17447 d_times='$d_times'
17448 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
17449 d_tm_tm_zone='$d_tm_tm_zone'
17450 d_truncate='$d_truncate'
17451 d_tzname='$d_tzname'
17452 d_u32align='$d_u32align'
17453 d_ualarm='$d_ualarm'
17454 d_umask='$d_umask'
17455 d_uname='$d_uname'
17456 d_union_semun='$d_union_semun'
17457 d_unordered='$d_unordered'
17458 d_usleep='$d_usleep'
17459 d_usleepproto='$d_usleepproto'
17460 d_ustat='$d_ustat'
17461 d_vendorarch='$d_vendorarch'
17462 d_vendorbin='$d_vendorbin'
17463 d_vendorlib='$d_vendorlib'
17464 d_vfork='$d_vfork'
17465 d_void_closedir='$d_void_closedir'
17466 d_voidsig='$d_voidsig'
17467 d_voidtty='$d_voidtty'
17468 d_volatile='$d_volatile'
17469 d_vprintf='$d_vprintf'
17470 d_wait4='$d_wait4'
17471 d_waitpid='$d_waitpid'
17472 d_wcstombs='$d_wcstombs'
17473 d_wctomb='$d_wctomb'
17474 d_writev='$d_writev'
17475 d_xenix='$d_xenix'
17476 date='$date'
17477 db_hashtype='$db_hashtype'
17478 db_prefixtype='$db_prefixtype'
17479 db_version_major='$db_version_major'
17480 db_version_minor='$db_version_minor'
17481 db_version_patch='$db_version_patch'
17482 defvoidused='$defvoidused'
17483 direntrytype='$direntrytype'
17484 dlext='$dlext'
17485 dlsrc='$dlsrc'
17486 doublesize='$doublesize'
17487 drand01='$drand01'
17488 dynamic_ext='$dynamic_ext'
17489 eagain='$eagain'
17490 ebcdic='$ebcdic'
17491 echo='$echo'
17492 egrep='$egrep'
17493 emacs='$emacs'
17494 eunicefix='$eunicefix'
17495 exe_ext='$exe_ext'
17496 expr='$expr'
17497 extensions='$extensions'
17498 extras='$extras'
17499 fflushNULL='$fflushNULL'
17500 fflushall='$fflushall'
17501 find='$find'
17502 firstmakefile='$firstmakefile'
17503 flex='$flex'
17504 fpossize='$fpossize'
17505 fpostype='$fpostype'
17506 freetype='$freetype'
17507 from='$from'
17508 full_ar='$full_ar'
17509 full_csh='$full_csh'
17510 full_sed='$full_sed'
17511 gccosandvers='$gccosandvers'
17512 gccversion='$gccversion'
17513 gidformat='$gidformat'
17514 gidsign='$gidsign'
17515 gidsize='$gidsize'
17516 gidtype='$gidtype'
17517 glibpth='$glibpth'
17518 gmake='$gmake'
17519 grep='$grep'
17520 groupcat='$groupcat'
17521 groupstype='$groupstype'
17522 gzip='$gzip'
17523 h_fcntl='$h_fcntl'
17524 h_sysfile='$h_sysfile'
17525 hint='$hint'
17526 hostcat='$hostcat'
17527 i16size='$i16size'
17528 i16type='$i16type'
17529 i32size='$i32size'
17530 i32type='$i32type'
17531 i64size='$i64size'
17532 i64type='$i64type'
17533 i8size='$i8size'
17534 i8type='$i8type'
17535 i_arpainet='$i_arpainet'
17536 i_bsdioctl='$i_bsdioctl'
17537 i_db='$i_db'
17538 i_dbm='$i_dbm'
17539 i_dirent='$i_dirent'
17540 i_dld='$i_dld'
17541 i_dlfcn='$i_dlfcn'
17542 i_fcntl='$i_fcntl'
17543 i_float='$i_float'
17544 i_fp='$i_fp'
17545 i_fp_class='$i_fp_class'
17546 i_gdbm='$i_gdbm'
17547 i_grp='$i_grp'
17548 i_ieeefp='$i_ieeefp'
17549 i_inttypes='$i_inttypes'
17550 i_langinfo='$i_langinfo'
17551 i_libutil='$i_libutil'
17552 i_limits='$i_limits'
17553 i_locale='$i_locale'
17554 i_machcthr='$i_machcthr'
17555 i_malloc='$i_malloc'
17556 i_math='$i_math'
17557 i_memory='$i_memory'
17558 i_mntent='$i_mntent'
17559 i_ndbm='$i_ndbm'
17560 i_netdb='$i_netdb'
17561 i_neterrno='$i_neterrno'
17562 i_netinettcp='$i_netinettcp'
17563 i_niin='$i_niin'
17564 i_poll='$i_poll'
17565 i_prot='$i_prot'
17566 i_pthread='$i_pthread'
17567 i_pwd='$i_pwd'
17568 i_rpcsvcdbm='$i_rpcsvcdbm'
17569 i_sfio='$i_sfio'
17570 i_sgtty='$i_sgtty'
17571 i_shadow='$i_shadow'
17572 i_socks='$i_socks'
17573 i_stdarg='$i_stdarg'
17574 i_stddef='$i_stddef'
17575 i_stdlib='$i_stdlib'
17576 i_string='$i_string'
17577 i_sunmath='$i_sunmath'
17578 i_sysaccess='$i_sysaccess'
17579 i_sysdir='$i_sysdir'
17580 i_sysfile='$i_sysfile'
17581 i_sysfilio='$i_sysfilio'
17582 i_sysin='$i_sysin'
17583 i_sysioctl='$i_sysioctl'
17584 i_syslog='$i_syslog'
17585 i_sysmman='$i_sysmman'
17586 i_sysmode='$i_sysmode'
17587 i_sysmount='$i_sysmount'
17588 i_sysndir='$i_sysndir'
17589 i_sysparam='$i_sysparam'
17590 i_sysresrc='$i_sysresrc'
17591 i_syssecrt='$i_syssecrt'
17592 i_sysselct='$i_sysselct'
17593 i_syssockio='$i_syssockio'
17594 i_sysstat='$i_sysstat'
17595 i_sysstatfs='$i_sysstatfs'
17596 i_sysstatvfs='$i_sysstatvfs'
17597 i_systime='$i_systime'
17598 i_systimek='$i_systimek'
17599 i_systimes='$i_systimes'
17600 i_systypes='$i_systypes'
17601 i_sysuio='$i_sysuio'
17602 i_sysun='$i_sysun'
17603 i_sysutsname='$i_sysutsname'
17604 i_sysvfs='$i_sysvfs'
17605 i_syswait='$i_syswait'
17606 i_termio='$i_termio'
17607 i_termios='$i_termios'
17608 i_time='$i_time'
17609 i_unistd='$i_unistd'
17610 i_ustat='$i_ustat'
17611 i_utime='$i_utime'
17612 i_values='$i_values'
17613 i_varargs='$i_varargs'
17614 i_varhdr='$i_varhdr'
17615 i_vfork='$i_vfork'
17616 ignore_versioned_solibs='$ignore_versioned_solibs'
17617 inc_version_list='$inc_version_list'
17618 inc_version_list_init='$inc_version_list_init'
17619 incpath='$incpath'
17620 inews='$inews'
17621 installarchlib='$installarchlib'
17622 installbin='$installbin'
17623 installman1dir='$installman1dir'
17624 installman3dir='$installman3dir'
17625 installprefix='$installprefix'
17626 installprefixexp='$installprefixexp'
17627 installprivlib='$installprivlib'
17628 installscript='$installscript'
17629 installsitearch='$installsitearch'
17630 installsitebin='$installsitebin'
17631 installsitelib='$installsitelib'
17632 installstyle='$installstyle'
17633 installusrbinperl='$installusrbinperl'
17634 installvendorarch='$installvendorarch'
17635 installvendorbin='$installvendorbin'
17636 installvendorlib='$installvendorlib'
17637 intsize='$intsize'
17638 issymlink='$issymlink'
17639 ivdformat='$ivdformat'
17640 ivsize='$ivsize'
17641 ivtype='$ivtype'
17642 known_extensions='$known_extensions'
17643 ksh='$ksh'
17644 ld='$ld'
17645 lddlflags='$lddlflags'
17646 ldflags='$ldflags'
17647 ldflags_uselargefiles='$ldflags_uselargefiles'
17648 ldlibpthname='$ldlibpthname'
17649 less='$less'
17650 lib_ext='$lib_ext'
17651 libc='$libc'
17652 libperl='$libperl'
17653 libpth='$libpth'
17654 libs='$libs'
17655 libsdirs='$libsdirs'
17656 libsfiles='$libsfiles'
17657 libsfound='$libsfound'
17658 libspath='$libspath'
17659 libswanted='$libswanted'
17660 libswanted_uselargefiles='$libswanted_uselargefiles'
17661 line='$line'
17662 lint='$lint'
17663 lkflags='$lkflags'
17664 ln='$ln'
17665 lns='$lns'
17666 locincpth='$locincpth'
17667 loclibpth='$loclibpth'
17668 longdblsize='$longdblsize'
17669 longlongsize='$longlongsize'
17670 longsize='$longsize'
17671 lp='$lp'
17672 lpr='$lpr'
17673 ls='$ls'
17674 lseeksize='$lseeksize'
17675 lseektype='$lseektype'
17676 mail='$mail'
17677 mailx='$mailx'
17678 make='$make'
17679 make_set_make='$make_set_make'
17680 mallocobj='$mallocobj'
17681 mallocsrc='$mallocsrc'
17682 malloctype='$malloctype'
17683 man1dir='$man1dir'
17684 man1direxp='$man1direxp'
17685 man1ext='$man1ext'
17686 man3dir='$man3dir'
17687 man3direxp='$man3direxp'
17688 man3ext='$man3ext'
17689 mips_type='$mips_type'
17690 mkdir='$mkdir'
17691 mmaptype='$mmaptype'
17692 modetype='$modetype'
17693 more='$more'
17694 multiarch='$multiarch'
17695 mv='$mv'
17696 myarchname='$myarchname'
17697 mydomain='$mydomain'
17698 myhostname='$myhostname'
17699 myuname='$myuname'
17700 n='$n'
17701 need_va_copy='$need_va_copy'
17702 netdb_hlen_type='$netdb_hlen_type'
17703 netdb_host_type='$netdb_host_type'
17704 netdb_name_type='$netdb_name_type'
17705 netdb_net_type='$netdb_net_type'
17706 nm='$nm'
17707 nm_opt='$nm_opt'
17708 nm_so_opt='$nm_so_opt'
17709 nonxs_ext='$nonxs_ext'
17710 nroff='$nroff'
17711 nvEUformat='$nvEUformat'
17712 nvFUformat='$nvFUformat'
17713 nvGUformat='$nvGUformat'
17714 nveformat='$nveformat'
17715 nvfformat='$nvfformat'
17716 nvgformat='$nvgformat'
17717 nvsize='$nvsize'
17718 nvtype='$nvtype'
17719 o_nonblock='$o_nonblock'
17720 obj_ext='$obj_ext'
17721 old_pthread_create_joinable='$old_pthread_create_joinable'
17722 optimize='$optimize'
17723 orderlib='$orderlib'
17724 osname='$osname'
17725 osvers='$osvers'
17726 otherlibdirs='$otherlibdirs'
17727 package='$package'
17728 pager='$pager'
17729 passcat='$passcat'
17730 patchlevel='$patchlevel'
17731 path_sep='$path_sep'
17732 perl5='$perl5'
17733 perl='$perl'
17734 perl_patchlevel='$perl_patchlevel'
17735 perladmin='$perladmin'
17736 perllibs='$perllibs'
17737 perlpath='$perlpath'
17738 pg='$pg'
17739 phostname='$phostname'
17740 pidtype='$pidtype'
17741 plibpth='$plibpth'
17742 pm_apiversion='$pm_apiversion'
17743 pmake='$pmake'
17744 pr='$pr'
17745 prefix='$prefix'
17746 prefixexp='$prefixexp'
17747 privlib='$privlib'
17748 privlibexp='$privlibexp'
17749 procselfexe='$procselfexe'
17750 prototype='$prototype'
17751 ptrsize='$ptrsize'
17752 quadkind='$quadkind'
17753 quadtype='$quadtype'
17754 randbits='$randbits'
17755 randfunc='$randfunc'
17756 randseedtype='$randseedtype'
17757 ranlib='$ranlib'
17758 rd_nodata='$rd_nodata'
17759 revision='$revision'
17760 rm='$rm'
17761 rmail='$rmail'
17762 run='$run'
17763 runnm='$runnm'
17764 sPRIEUldbl='$sPRIEUldbl'
17765 sPRIFUldbl='$sPRIFUldbl'
17766 sPRIGUldbl='$sPRIGUldbl'
17767 sPRIXU64='$sPRIXU64'
17768 sPRId64='$sPRId64'
17769 sPRIeldbl='$sPRIeldbl'
17770 sPRIfldbl='$sPRIfldbl'
17771 sPRIgldbl='$sPRIgldbl'
17772 sPRIi64='$sPRIi64'
17773 sPRIo64='$sPRIo64'
17774 sPRIu64='$sPRIu64'
17775 sPRIx64='$sPRIx64'
17776 sSCNfldbl='$sSCNfldbl'
17777 sched_yield='$sched_yield'
17778 scriptdir='$scriptdir'
17779 scriptdirexp='$scriptdirexp'
17780 sed='$sed'
17781 seedfunc='$seedfunc'
17782 selectminbits='$selectminbits'
17783 selecttype='$selecttype'
17784 sendmail='$sendmail'
17785 sh='$sh'
17786 shar='$shar'
17787 sharpbang='$sharpbang'
17788 shmattype='$shmattype'
17789 shortsize='$shortsize'
17790 shrpenv='$shrpenv'
17791 shsharp='$shsharp'
17792 sig_count='$sig_count'
17793 sig_name='$sig_name'
17794 sig_name_init='$sig_name_init'
17795 sig_num='$sig_num'
17796 sig_num_init='$sig_num_init'
17797 sig_size='$sig_size'
17798 signal_t='$signal_t'
17799 sitearch='$sitearch'
17800 sitearchexp='$sitearchexp'
17801 sitebin='$sitebin'
17802 sitebinexp='$sitebinexp'
17803 sitelib='$sitelib'
17804 sitelib_stem='$sitelib_stem'
17805 sitelibexp='$sitelibexp'
17806 siteprefix='$siteprefix'
17807 siteprefixexp='$siteprefixexp'
17808 sizesize='$sizesize'
17809 sizetype='$sizetype'
17810 sleep='$sleep'
17811 smail='$smail'
17812 so='$so'
17813 sockethdr='$sockethdr'
17814 socketlib='$socketlib'
17815 socksizetype='$socksizetype'
17816 sort='$sort'
17817 spackage='$spackage'
17818 spitshell='$spitshell'
17819 src='$src'
17820 ssizetype='$ssizetype'
17821 startperl='$startperl'
17822 startsh='$startsh'
17823 static_ext='$static_ext'
17824 stdchar='$stdchar'
17825 stdio_base='$stdio_base'
17826 stdio_bufsiz='$stdio_bufsiz'
17827 stdio_cnt='$stdio_cnt'
17828 stdio_filbuf='$stdio_filbuf'
17829 stdio_ptr='$stdio_ptr'
17830 stdio_stream_array='$stdio_stream_array'
17831 strings='$strings'
17832 submit='$submit'
17833 subversion='$subversion'
17834 sysman='$sysman'
17835 tail='$tail'
17836 tar='$tar'
17837 targetarch='$targetarch'
17838 tbl='$tbl'
17839 tee='$tee'
17840 test='$test'
17841 timeincl='$timeincl'
17842 timetype='$timetype'
17843 to='$to'
17844 touch='$touch'
17845 tr='$tr'
17846 trnl='$trnl'
17847 troff='$troff'
17848 u16size='$u16size'
17849 u16type='$u16type'
17850 u32size='$u32size'
17851 u32type='$u32type'
17852 u64size='$u64size'
17853 u64type='$u64type'
17854 u8size='$u8size'
17855 u8type='$u8type'
17856 uidformat='$uidformat'
17857 uidsign='$uidsign'
17858 uidsize='$uidsize'
17859 uidtype='$uidtype'
17860 uname='$uname'
17861 uniq='$uniq'
17862 uquadtype='$uquadtype'
17863 use5005threads='$use5005threads'
17864 use64bitall='$use64bitall'
17865 use64bitint='$use64bitint'
17866 usecrosscompile='$usecrosscompile'
17867 usedl='$usedl'
17868 useithreads='$useithreads'
17869 uselargefiles='$uselargefiles'
17870 uselongdouble='$uselongdouble'
17871 usemorebits='$usemorebits'
17872 usemultiplicity='$usemultiplicity'
17873 usemymalloc='$usemymalloc'
17874 usenm='$usenm'
17875 useopcode='$useopcode'
17876 useperlio='$useperlio'
17877 useposix='$useposix'
17878 usereentrant='$usereentrant'
17879 usesfio='$usesfio'
17880 useshrplib='$useshrplib'
17881 usesocks='$usesocks'
17882 usethreads='$usethreads'
17883 usevendorprefix='$usevendorprefix'
17884 usevfork='$usevfork'
17885 usrinc='$usrinc'
17886 uuname='$uuname'
17887 uvXUformat='$uvXUformat'
17888 uvoformat='$uvoformat'
17889 uvsize='$uvsize'
17890 uvtype='$uvtype'
17891 uvuformat='$uvuformat'
17892 uvxformat='$uvxformat'
17893 vendorarch='$vendorarch'
17894 vendorarchexp='$vendorarchexp'
17895 vendorbin='$vendorbin'
17896 vendorbinexp='$vendorbinexp'
17897 vendorlib='$vendorlib'
17898 vendorlib_stem='$vendorlib_stem'
17899 vendorlibexp='$vendorlibexp'
17900 vendorprefix='$vendorprefix'
17901 vendorprefixexp='$vendorprefixexp'
17902 version='$version'
17903 version_patchlevel_string='$version_patchlevel_string'
17904 versiononly='$versiononly'
17905 vi='$vi'
17906 voidflags='$voidflags'
17907 xlibpth='$xlibpth'
17908 xs_apiversion='$xs_apiversion'
17909 yacc='$yacc'
17910 yaccflags='$yaccflags'
17911 zcat='$zcat'
17912 zip='$zip'
17913 EOT
17914
17915 : Add in command line options if available
17916 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17917
17918 : add special variables
17919 $test -f $src/patchlevel.h && \
17920 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17921 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17922 echo "PERL_CONFIG_SH=true" >>config.sh
17923
17924 : propagate old symbols
17925 if $test -f UU/config.sh; then
17926         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17927         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17928         $sort | $uniq -u >UU/oldsyms
17929         set X `cat UU/oldsyms`
17930         shift
17931         case $# in
17932         0) ;;
17933         *)
17934                 cat <<EOM
17935 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17936 EOM
17937                 echo "# Variables propagated from previous config.sh file." >>config.sh
17938                 for sym in `cat UU/oldsyms`; do
17939                         echo "    Propagating $hint variable "'$'"$sym..."
17940                         eval 'tmp="$'"${sym}"'"'
17941                         echo "$tmp" | \
17942                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17943                 done
17944                 ;;
17945         esac
17946 fi
17947
17948 : Finish up by extracting the .SH files
17949 case "$alldone" in
17950 exit)
17951         $rm -rf UU
17952         echo "Extraction done."
17953         exit 0
17954         ;;
17955 cont)
17956         ;;
17957 '')
17958         dflt=''
17959         nostick=true
17960         $cat <<EOM
17961
17962 If you'd like to make any changes to the config.sh file before I begin
17963 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17964
17965 EOM
17966         rp="Press return or use a shell escape to edit config.sh:"
17967         . UU/myread
17968         nostick=''
17969         case "$ans" in
17970         '') ;;
17971         *) : in case they cannot read
17972                 sh 1>&4 -c "$ans";;
17973         esac
17974         ;;
17975 esac
17976
17977 : if this fails, just run all the .SH files by hand
17978 . ./config.sh
17979
17980 echo " "
17981 exec 1>&4
17982 pwd=`pwd`
17983 . ./UU/extract
17984 cd "$pwd"
17985
17986 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17987         dflt=y
17988         case "$silent" in
17989         true) ;;
17990         *)
17991                 $cat <<EOM
17992
17993 Now you need to generate make dependencies by running "$make depend".
17994 You might prefer to run it in background: "$make depend > makedepend.out &"
17995 It can take a while, so you might not want to run it right now.
17996
17997 EOM
17998                 ;;
17999         esac
18000         rp="Run $make depend now?"
18001         . UU/myread
18002         case "$ans" in
18003         y*)
18004                 $make depend && echo "Now you must run '$make'."
18005                 ;;
18006         *)
18007                 echo "You must run '$make depend' then '$make'."
18008                 ;;
18009         esac
18010 elif test -f [Mm]akefile; then
18011         echo " "
18012         echo "Now you must run a $make."
18013 else
18014         echo "Configure done."
18015 fi
18016
18017 if $test -f Policy.sh; then
18018     $cat <<EOM
18019
18020 If you compile $package on a different machine or from a different object
18021 directory, copy the Policy.sh file from this object directory to the
18022 new one before you run Configure -- this will help you with most of
18023 the policy defaults.
18024
18025 EOM
18026 fi
18027 if $test -f config.msg; then
18028     echo "Hmm.  I also noted the following information while running:"
18029     echo " "
18030     $cat config.msg >&4
18031     $rm -f config.msg
18032 fi
18033 $rm -f kit*isdone ark*isdone
18034 $rm -rf UU
18035
18036 : End of Configure
18037