Missed quotes in protocheck for rm_try
[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 # Though this script was generated by metaconfig, it is OK to send
22 # patches against it. It's up to the Configure pumpkin to backport
23 # the patch to the metaunits if it is accepted.
24 # See Porting/pumpkin.pod for more information on metaconfig.
25 #
26
27 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
28 #
29 # Generated on Mon Apr 23 22:54:24 CEST 2007 [metaconfig 3.0 PL70]
30 # (with additional metaconfig patches by perlbug@perl.org)
31
32 cat >c1$$ <<EOF
33 ARGGGHHHH!!!!!
34
35 SCO csh still thinks true is false.  Write to SCO today and tell them that next
36 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
37
38 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
39 we'd have to do is go in and swap the && and || tokens, wherever they are.)
40
41 [End of diatribe. We now return you to your regularly scheduled programming...]
42 EOF
43 cat >c2$$ <<EOF
44
45 OOPS!  You naughty creature!  You didn't run Configure with sh!
46 I will attempt to remedy the situation by running sh for you...
47 EOF
48
49 true || cat c1$$ c2$$
50 true || exec sh $0 $argv:q
51
52 (exit $?0) || cat c2$$
53 (exit $?0) || exec sh $0 $argv:q
54 rm -f c1$$ c2$$
55
56 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
57         cat >&4 <<EOF
58 ***
59 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
60 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
61 *** Please read the README.plan9 for further instructions.
62 *** Cannot continue, aborting.
63 ***
64 EOF
65         exit 1
66 fi
67
68 if test ! -c /dev/null ; then
69         cat >&4 <<EOF
70 ***
71 *** I'm sorry, but /dev/null appears to be a file rather than a device.
72 *** Please consult your operating sytem's notes for making a device
73 *** in /dev.
74 *** Cannot continue, aborting.
75 ***
76 EOF
77         exit 1
78 fi
79
80 : compute my invocation name
81 me=$0
82 case "$0" in
83 */*)
84         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
85         test "$me" || me=$0
86         ;;
87 esac
88
89 : Proper separator for the PATH environment variable
90 p_=:
91 : On OS/2 this directory should exist if this is not floppy only system :-]
92 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
93     if test -n "$OS2_SHELL"; then
94                 p_=\;
95                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
96                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
97                 is_os2=yes
98         elif test -n "$DJGPP"; then
99                 case "X${MACHTYPE:-nonesuchmach}" in
100                 *cygwin) ;;
101                 *) p_=\; ;;
102                 esac
103         fi
104 fi
105
106 : Proper PATH setting
107 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
108 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
109 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
110 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
111 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
112 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
113 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
114 paths="$paths /sbin /usr/sbin /usr/libexec"
115 paths="$paths /system/gnu_library/bin"
116
117 for p in $paths
118 do
119         case "$p_$PATH$p_" in
120         *$p_$p$p_*) ;;
121         *) test -d $p && PATH=$PATH$p_$p ;;
122         esac
123 done
124
125 PATH=.$p_$PATH
126 export PATH
127
128 : shall we be using ksh?
129 inksh=''
130 needksh=''
131 avoidksh=''
132 newsh=/bin/ksh
133 changesh=''
134 if (PATH=.; alias -x) >/dev/null 2>&1; then
135                 inksh=true
136 fi
137 if test -f /hp-ux -a -f /bin/ksh; then
138         needksh='to avoid sh bug in "here document" expansion'
139 fi
140 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
141         if test X`/usr/bin/uname -v` = X4; then
142                 avoidksh="to avoid AIX 4's /bin/sh"
143                 newsh=/usr/bin/bsh
144         fi
145 fi
146 if test -f /osf_boot -a -f /usr/sbin/setld; then
147         if test X`/usr/bin/uname -s` = XOSF1; then
148                 avoidksh="to avoid Digital UNIX' ksh"
149                 newsh=/bin/sh
150                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
151         fi
152 fi
153 case "$inksh/$needksh" in
154 /[a-z]*)
155                 ENV=''
156                 changesh=true
157                 reason="$needksh"
158         ;;
159 esac
160 case "$inksh/$avoidksh" in
161 true/[a-z]*)
162         changesh=true
163         reason="$avoidksh"
164         ;;
165 esac
166 case "$inksh/$needksh-$avoidksh-" in
167 true/--)
168                 cat <<EOM
169 (I see you are using the Korn shell.  Some ksh's blow up on $me,
170 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
171 EOM
172         ;;
173 esac
174 case "$changesh" in
175 true)
176         export newsh
177         echo "(Feeding myself to $newsh $reason.)"
178         case "$0" in
179         Configure|*/Configure) exec $newsh $0 "$@";;
180         *) exec $newsh Configure "$@";;
181         esac
182         ;;
183 esac
184
185 : if needed set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *)              CDPATH='' ;;
192         esac
193         ;;
194 esac
195 : Configure runs within the UU subdirectory
196 test -d UU || mkdir UU
197 cd UU && rm -f ./*
198
199 ccname=''
200 ccversion=''
201 ccsymbols=''
202 cppccsymbols=''
203 cppsymbols=''
204 from=''
205 run=''
206 targetarch=''
207 to=''
208 usecrosscompile=''
209 mistrustnm=''
210 perllibs=''
211 dynamic_ext=''
212 extensions=''
213 known_extensions=''
214 nonxs_ext=''
215 static_ext=''
216 useopcode=''
217 useposix=''
218 extras=''
219 d_bsd=''
220 d_eunice=''
221 d_xenix=''
222 eunicefix=''
223 Mcc=''
224 ar=''
225 awk=''
226 bash=''
227 bison=''
228 byacc=''
229 cat=''
230 chgrp=''
231 chmod=''
232 chown=''
233 comm=''
234 compress=''
235 cp=''
236 cpio=''
237 cpp=''
238 csh=''
239 date=''
240 echo=''
241 egrep=''
242 emacs=''
243 expr=''
244 find=''
245 flex=''
246 gmake=''
247 grep=''
248 gzip=''
249 inews=''
250 ksh=''
251 less=''
252 line=''
253 lint=''
254 ln=''
255 lp=''
256 lpr=''
257 ls=''
258 mail=''
259 mailx=''
260 make=''
261 mkdir=''
262 more=''
263 mv=''
264 nm=''
265 nroff=''
266 perl=''
267 pg=''
268 pmake=''
269 pr=''
270 rm=''
271 rmail=''
272 sed=''
273 sendmail=''
274 shar=''
275 sleep=''
276 smail=''
277 sort=''
278 submit=''
279 tail=''
280 tar=''
281 tbl=''
282 tee=''
283 test=''
284 touch=''
285 tr=''
286 troff=''
287 uname=''
288 uniq=''
289 uuname=''
290 vi=''
291 zcat=''
292 zip=''
293 full_ar=''
294 full_sed=''
295 libswanted=''
296 hint=''
297 myuname=''
298 osname=''
299 osvers=''
300 Author=''
301 Date=''
302 Header=''
303 Id=''
304 Locker=''
305 Log=''
306 RCSfile=''
307 Revision=''
308 Source=''
309 State=''
310 _a=''
311 _exe=''
312 _o=''
313 archobjs=''
314 exe_ext=''
315 firstmakefile=''
316 lib_ext=''
317 obj_ext=''
318 path_sep=''
319 rm_try=''
320 afs=''
321 afsroot=''
322 alignbytes=''
323 ansi2knr=''
324 archlib=''
325 archlibexp=''
326 d_archlib=''
327 installarchlib=''
328 archname=''
329 myarchname=''
330 d_atolf=''
331 d_atoll=''
332 baserev=''
333 bin=''
334 binexp=''
335 initialinstalllocation=''
336 installbin=''
337 userelocatableinc=''
338 byteorder=''
339 cc=''
340 ccflags=''
341 cppflags=''
342 ldflags=''
343 lkflags=''
344 locincpth=''
345 optimize=''
346 cf_email=''
347 cf_by=''
348 cf_time=''
349 charsize=''
350 contains=''
351 cpp_stuff=''
352 cpplast=''
353 cppminus=''
354 cpprun=''
355 cppstdin=''
356 d__fwalk=''
357 d_access=''
358 d_accessx=''
359 d_aintl=''
360 d_alarm=''
361 asctime_r_proto=''
362 d_asctime_r=''
363 d_attribute_format=''
364 d_attribute_malloc=''
365 d_attribute_nonnull=''
366 d_attribute_noreturn=''
367 d_attribute_pure=''
368 d_attribute_unused=''
369 d_attribute_warn_unused_result=''
370 d_printf_format_null=''
371 d_bcmp=''
372 d_bcopy=''
373 d_builtin_choose_expr=''
374 d_builtin_expect=''
375 d_bzero=''
376 d_c99_variadic_macros=''
377 d_casti32=''
378 castflags=''
379 d_castneg=''
380 d_chown=''
381 d_chroot=''
382 d_chsize=''
383 d_class=''
384 d_clearenv=''
385 d_closedir=''
386 d_void_closedir=''
387 d_cmsghdr_s=''
388 d_const=''
389 d_copysignl=''
390 d_cplusplus=''
391 cryptlib=''
392 d_crypt=''
393 crypt_r_proto=''
394 d_crypt_r=''
395 d_csh=''
396 full_csh=''
397 d_ctermid=''
398 ctermid_r_proto=''
399 d_ctermid_r=''
400 ctime_r_proto=''
401 d_ctime_r=''
402 d_cuserid=''
403 d_dbl_dig=''
404 d_dbminitproto=''
405 d_difftime=''
406 d_dir_dd_fd=''
407 d_dirfd=''
408 d_dlerror=''
409 d_dlopen=''
410 d_dlsymun=''
411 d_dosuid=''
412 d_suidsafe=''
413 d_drand48_r=''
414 drand48_r_proto=''
415 d_drand48proto=''
416 d_dup2=''
417 d_eaccess=''
418 d_endgrent=''
419 d_endgrent_r=''
420 endgrent_r_proto=''
421 d_endhent=''
422 d_endhostent_r=''
423 endhostent_r_proto=''
424 d_endnent=''
425 d_endnetent_r=''
426 endnetent_r_proto=''
427 d_endpent=''
428 d_endprotoent_r=''
429 endprotoent_r_proto=''
430 d_endpwent=''
431 d_endpwent_r=''
432 endpwent_r_proto=''
433 d_endsent=''
434 d_endservent_r=''
435 endservent_r_proto=''
436 d_faststdio=''
437 d_fchdir=''
438 d_fchmod=''
439 d_fchown=''
440 d_fcntl=''
441 d_fcntl_can_lock=''
442 d_fd_macros=''
443 d_fd_set=''
444 d_fds_bits=''
445 d_fgetpos=''
446 d_finite=''
447 d_finitel=''
448 d_flexfnam=''
449 d_flock=''
450 d_flockproto=''
451 d_fork=''
452 d_fp_class=''
453 d_fpclass=''
454 d_fpclassify=''
455 d_fpclassl=''
456 d_fpos64_t=''
457 d_frexpl=''
458 d_fs_data_s=''
459 d_fseeko=''
460 d_fsetpos=''
461 d_fstatfs=''
462 d_fsync=''
463 d_ftello=''
464 d_ftime=''
465 d_gettimeod=''
466 d_futimes=''
467 d_Gconvert=''
468 d_getcwd=''
469 d_getespwnam=''
470 d_getfsstat=''
471 d_getgrent=''
472 d_getgrent_r=''
473 getgrent_r_proto=''
474 d_getgrgid_r=''
475 getgrgid_r_proto=''
476 d_getgrnam_r=''
477 getgrnam_r_proto=''
478 d_getgrps=''
479 d_gethbyaddr=''
480 d_gethbyname=''
481 d_gethent=''
482 aphostname=''
483 d_gethname=''
484 d_phostname=''
485 d_uname=''
486 d_gethostbyaddr_r=''
487 gethostbyaddr_r_proto=''
488 d_gethostbyname_r=''
489 gethostbyname_r_proto=''
490 d_gethostent_r=''
491 gethostent_r_proto=''
492 d_gethostprotos=''
493 d_getitimer=''
494 d_getlogin=''
495 d_getlogin_r=''
496 getlogin_r_proto=''
497 d_getmnt=''
498 d_getmntent=''
499 d_getnbyaddr=''
500 d_getnbyname=''
501 d_getnent=''
502 d_getnetbyaddr_r=''
503 getnetbyaddr_r_proto=''
504 d_getnetbyname_r=''
505 getnetbyname_r_proto=''
506 d_getnetent_r=''
507 getnetent_r_proto=''
508 d_getnetprotos=''
509 d_getpagsz=''
510 d_getpent=''
511 d_getpgid=''
512 d_getpgrp2=''
513 d_bsdgetpgrp=''
514 d_getpgrp=''
515 d_getppid=''
516 d_getprior=''
517 d_getpbyname=''
518 d_getpbynumber=''
519 d_getprotobyname_r=''
520 getprotobyname_r_proto=''
521 d_getprotobynumber_r=''
522 getprotobynumber_r_proto=''
523 d_getprotoent_r=''
524 getprotoent_r_proto=''
525 d_getprotoprotos=''
526 d_getprpwnam=''
527 d_getpwent=''
528 d_getpwent_r=''
529 getpwent_r_proto=''
530 d_getpwnam_r=''
531 getpwnam_r_proto=''
532 d_getpwuid_r=''
533 getpwuid_r_proto=''
534 d_getsent=''
535 d_getservbyname_r=''
536 getservbyname_r_proto=''
537 d_getservbyport_r=''
538 getservbyport_r_proto=''
539 d_getservent_r=''
540 getservent_r_proto=''
541 d_getservprotos=''
542 d_getspnam=''
543 d_getspnam_r=''
544 getspnam_r_proto=''
545 d_getsbyname=''
546 d_getsbyport=''
547 d_gmtime_r=''
548 gmtime_r_proto=''
549 d_gnulibc=''
550 gnulibc_version=''
551 d_hasmntopt=''
552 d_htonl=''
553 d_ilogbl=''
554 d_inetaton=''
555 d_int64_t=''
556 d_isascii=''
557 d_isfinite=''
558 d_isinf=''
559 d_isnan=''
560 d_isnanl=''
561 d_killpg=''
562 d_lchown=''
563 d_ldbl_dig=''
564 d_libm_lib_version=''
565 d_link=''
566 d_localtime_r=''
567 d_localtime_r_needs_tzset=''
568 localtime_r_proto=''
569 d_locconv=''
570 d_lockf=''
571 d_longdbl=''
572 longdblsize=''
573 d_longlong=''
574 longlongsize=''
575 d_lseekproto=''
576 d_lstat=''
577 d_madvise=''
578 d_malloc_good_size=''
579 d_malloc_size=''
580 d_mblen=''
581 d_mbstowcs=''
582 d_mbtowc=''
583 d_memchr=''
584 d_memcmp=''
585 d_memcpy=''
586 d_memmove=''
587 d_memset=''
588 d_mkdir=''
589 d_mkdtemp=''
590 d_mkfifo=''
591 d_mkstemp=''
592 d_mkstemps=''
593 d_mktime=''
594 d_mmap=''
595 mmaptype=''
596 d_modfl=''
597 d_modfl_pow32_bug=''
598 d_modflproto=''
599 d_mprotect=''
600 d_msg=''
601 d_msgctl=''
602 d_msgget=''
603 d_msghdr_s=''
604 d_msgrcv=''
605 d_msgsnd=''
606 d_msync=''
607 d_munmap=''
608 d_nice=''
609 d_nl_langinfo=''
610 d_off64_t=''
611 d_open3=''
612 d_fpathconf=''
613 d_pathconf=''
614 d_pause=''
615 d_pipe=''
616 d_poll=''
617 d_portable=''
618 d_procselfexe=''
619 procselfexe=''
620 d_old_pthread_create_joinable=''
621 old_pthread_create_joinable=''
622 d_pthread_atfork=''
623 d_pthread_attr_setscope=''
624 d_pthread_yield=''
625 d_sched_yield=''
626 sched_yield=''
627 d_qgcvt=''
628 d_random_r=''
629 random_r_proto=''
630 d_readdir64_r=''
631 readdir64_r_proto=''
632 d_readdir=''
633 d_rewinddir=''
634 d_seekdir=''
635 d_telldir=''
636 d_readdir_r=''
637 readdir_r_proto=''
638 d_readlink=''
639 d_readv=''
640 d_recvmsg=''
641 d_rename=''
642 d_rmdir=''
643 d_safebcpy=''
644 d_safemcpy=''
645 d_sanemcmp=''
646 d_sbrkproto=''
647 d_scalbnl=''
648 d_select=''
649 d_sem=''
650 d_semctl=''
651 d_semget=''
652 d_semop=''
653 d_sendmsg=''
654 d_setegid=''
655 d_seteuid=''
656 d_setgrent=''
657 d_setgrent_r=''
658 setgrent_r_proto=''
659 d_setgrps=''
660 d_sethent=''
661 d_sethostent_r=''
662 sethostent_r_proto=''
663 d_setitimer=''
664 d_setlinebuf=''
665 d_setlocale=''
666 d_setlocale_r=''
667 setlocale_r_proto=''
668 d_setnent=''
669 d_setnetent_r=''
670 setnetent_r_proto=''
671 d_setpent=''
672 d_setpgid=''
673 d_setpgrp2=''
674 d_bsdsetpgrp=''
675 d_setpgrp=''
676 d_setprior=''
677 d_setproctitle=''
678 d_setprotoent_r=''
679 setprotoent_r_proto=''
680 d_setpwent=''
681 d_setpwent_r=''
682 setpwent_r_proto=''
683 d_setregid=''
684 d_setresgid=''
685 d_setresuid=''
686 d_setreuid=''
687 d_setrgid=''
688 d_setruid=''
689 d_setsent=''
690 d_setservent_r=''
691 setservent_r_proto=''
692 d_setsid=''
693 d_setvbuf=''
694 d_sfio=''
695 usesfio=''
696 d_shm=''
697 d_shmat=''
698 d_shmatprototype=''
699 shmattype=''
700 d_shmctl=''
701 d_shmdt=''
702 d_shmget=''
703 d_sigaction=''
704 d_signbit=''
705 d_sigprocmask=''
706 d_sigsetjmp=''
707 usesitecustomize=''
708 d_snprintf=''
709 d_vsnprintf=''
710 d_sockatmark=''
711 d_sockatmarkproto=''
712 d_msg_ctrunc=''
713 d_msg_dontroute=''
714 d_msg_oob=''
715 d_msg_peek=''
716 d_msg_proxy=''
717 d_oldsock=''
718 d_scm_rights=''
719 d_socket=''
720 d_sockpair=''
721 sockethdr=''
722 socketlib=''
723 d_socklen_t=''
724 d_socks5_init=''
725 d_sprintf_returns_strlen=''
726 d_sqrtl=''
727 d_srand48_r=''
728 srand48_r_proto=''
729 d_srandom_r=''
730 srandom_r_proto=''
731 d_sresgproto=''
732 d_sresuproto=''
733 d_statblks=''
734 d_statfs_f_flags=''
735 d_statfs_s=''
736 d_fstatvfs=''
737 d_statvfs=''
738 d_stdio_cnt_lval=''
739 d_stdio_ptr_lval=''
740 d_stdio_ptr_lval_nochange_cnt=''
741 d_stdio_ptr_lval_sets_cnt=''
742 d_stdiobase=''
743 d_stdstdio=''
744 stdio_base=''
745 stdio_bufsiz=''
746 stdio_cnt=''
747 stdio_filbuf=''
748 stdio_ptr=''
749 d_index=''
750 d_strchr=''
751 d_strcoll=''
752 d_strctcpy=''
753 d_strerrm=''
754 d_strerror=''
755 d_sysernlst=''
756 d_syserrlst=''
757 d_strerror_r=''
758 strerror_r_proto=''
759 d_strftime=''
760 d_strlcat=''
761 d_strlcpy=''
762 d_strtod=''
763 d_strtol=''
764 d_strtold=''
765 d_strtoll=''
766 d_strtoq=''
767 d_strtoul=''
768 d_strtoull=''
769 d_strtouq=''
770 d_strxfrm=''
771 d_symlink=''
772 d_syscall=''
773 d_syscallproto=''
774 d_sysconf=''
775 d_system=''
776 d_tcgetpgrp=''
777 d_tcsetpgrp=''
778 d_telldirproto=''
779 d_time=''
780 timetype=''
781 clocktype=''
782 d_times=''
783 d_tmpnam_r=''
784 tmpnam_r_proto=''
785 d_truncate=''
786 d_ttyname_r=''
787 ttyname_r_proto=''
788 d_tzname=''
789 d_u32align=''
790 d_ualarm=''
791 d_umask=''
792 d_semctl_semid_ds=''
793 d_semctl_semun=''
794 d_union_semun=''
795 d_unordered=''
796 d_unsetenv=''
797 d_usleep=''
798 d_usleepproto=''
799 d_ustat=''
800 d_pseudofork=''
801 d_vfork=''
802 usevfork=''
803 d_voidsig=''
804 signal_t=''
805 d_volatile=''
806 d_charvspr=''
807 d_vprintf=''
808 d_wait4=''
809 d_waitpid=''
810 d_wcstombs=''
811 d_wctomb=''
812 d_writev=''
813 dlext=''
814 cccdlflags=''
815 ccdlflags=''
816 dlsrc=''
817 ld=''
818 lddlflags=''
819 usedl=''
820 doublesize=''
821 ebcdic=''
822 fflushNULL=''
823 fflushall=''
824 fpossize=''
825 fpostype=''
826 gccansipedantic=''
827 gccosandvers=''
828 gccversion=''
829 gidformat=''
830 gidsign=''
831 gidsize=''
832 gidtype=''
833 groupstype=''
834 h_fcntl=''
835 h_sysfile=''
836 html1dir=''
837 html1direxp=''
838 installhtml1dir=''
839 html3dir=''
840 html3direxp=''
841 installhtml3dir=''
842 i_arpainet=''
843 i_crypt=''
844 db_hashtype=''
845 db_prefixtype=''
846 db_version_major=''
847 db_version_minor=''
848 db_version_patch=''
849 i_db=''
850 i_dbm=''
851 i_rpcsvcdbm=''
852 d_dirnamlen=''
853 direntrytype=''
854 i_dirent=''
855 i_dld=''
856 i_dlfcn=''
857 i_fcntl=''
858 i_float=''
859 i_fp=''
860 i_fp_class=''
861 i_gdbm=''
862 d_grpasswd=''
863 i_grp=''
864 i_ieeefp=''
865 i_inttypes=''
866 i_langinfo=''
867 i_libutil=''
868 i_limits=''
869 i_locale=''
870 i_machcthr=''
871 i_malloc=''
872 i_math=''
873 i_memory=''
874 i_mntent=''
875 i_ndbm=''
876 i_netdb=''
877 i_neterrno=''
878 i_netinettcp=''
879 i_niin=''
880 i_sysin=''
881 i_poll=''
882 i_prot=''
883 i_pthread=''
884 d_pwage=''
885 d_pwchange=''
886 d_pwclass=''
887 d_pwcomment=''
888 d_pwexpire=''
889 d_pwgecos=''
890 d_pwpasswd=''
891 d_pwquota=''
892 i_pwd=''
893 i_sfio=''
894 i_shadow=''
895 i_socks=''
896 i_stddef=''
897 i_stdlib=''
898 i_string=''
899 strings=''
900 i_sunmath=''
901 i_sysaccess=''
902 i_sysdir=''
903 i_sysfile=''
904 d_voidtty=''
905 i_bsdioctl=''
906 i_sysfilio=''
907 i_sysioctl=''
908 i_syssockio=''
909 i_syslog=''
910 i_sysmman=''
911 i_sysmode=''
912 i_sysmount=''
913 i_sysndir=''
914 i_sysparam=''
915 i_sysresrc=''
916 i_syssecrt=''
917 i_sysselct=''
918 i_sysstat=''
919 i_sysstatfs=''
920 i_sysstatvfs=''
921 i_systimes=''
922 i_systypes=''
923 i_sysuio=''
924 i_sysun=''
925 i_sysutsname=''
926 i_sysvfs=''
927 i_syswait=''
928 i_sgtty=''
929 i_termio=''
930 i_termios=''
931 d_tm_tm_gmtoff=''
932 d_tm_tm_zone=''
933 i_systime=''
934 i_systimek=''
935 i_time=''
936 timeincl=''
937 i_unistd=''
938 i_ustat=''
939 i_utime=''
940 i_values=''
941 i_stdarg=''
942 i_varargs=''
943 i_varhdr=''
944 i_vfork=''
945 d_inc_version_list=''
946 inc_version_list=''
947 inc_version_list_init=''
948 installprefix=''
949 installprefixexp=''
950 installstyle=''
951 installusrbinperl=''
952 intsize=''
953 longsize=''
954 shortsize=''
955 issymlink=''
956 libc=''
957 ldlibpthname=''
958 libperl=''
959 shrpenv=''
960 useshrplib=''
961 glibpth=''
962 libpth=''
963 loclibpth=''
964 plibpth=''
965 xlibpth=''
966 ignore_versioned_solibs=''
967 libs=''
968 libsdirs=''
969 libsfiles=''
970 libsfound=''
971 libspath=''
972 lns=''
973 d_PRIEUldbl=''
974 d_PRIFUldbl=''
975 d_PRIGUldbl=''
976 d_PRIeldbl=''
977 d_PRIfldbl=''
978 d_PRIgldbl=''
979 d_SCNfldbl=''
980 sPRIEUldbl=''
981 sPRIFUldbl=''
982 sPRIGUldbl=''
983 sPRIeldbl=''
984 sPRIfldbl=''
985 sPRIgldbl=''
986 sSCNfldbl=''
987 lseeksize=''
988 lseektype=''
989 mad=''
990 madlyh=''
991 madlyobj=''
992 madlysrc=''
993 make_set_make=''
994 d_mymalloc=''
995 freetype=''
996 mallocobj=''
997 mallocsrc=''
998 malloctype=''
999 usemallocwrap=''
1000 usemymalloc=''
1001 installman1dir=''
1002 man1dir=''
1003 man1direxp=''
1004 man1ext=''
1005 installman3dir=''
1006 man3dir=''
1007 man3direxp=''
1008 man3ext=''
1009 modetype=''
1010 multiarch=''
1011 mydomain=''
1012 myhostname=''
1013 phostname=''
1014 c=''
1015 n=''
1016 d_eofnblk=''
1017 eagain=''
1018 o_nonblock=''
1019 rd_nodata=''
1020 need_va_copy=''
1021 netdb_hlen_type=''
1022 netdb_host_type=''
1023 netdb_name_type=''
1024 netdb_net_type=''
1025 groupcat=''
1026 hostcat=''
1027 passcat=''
1028 orderlib=''
1029 ranlib=''
1030 d_perl_otherlibdirs=''
1031 otherlibdirs=''
1032 package=''
1033 spackage=''
1034 pager=''
1035 api_revision=''
1036 api_subversion=''
1037 api_version=''
1038 api_versionstring=''
1039 patchlevel=''
1040 perl_patchlevel=''
1041 revision=''
1042 subversion=''
1043 version=''
1044 version_patchlevel_string=''
1045 perl5=''
1046 perladmin=''
1047 perlpath=''
1048 d_nv_preserves_uv=''
1049 d_nv_zero_is_allbits_zero=''
1050 i16size=''
1051 i16type=''
1052 i32size=''
1053 i32type=''
1054 i64size=''
1055 i64type=''
1056 i8size=''
1057 i8type=''
1058 ivsize=''
1059 ivtype=''
1060 nv_preserves_uv_bits=''
1061 nvsize=''
1062 nvtype=''
1063 u16size=''
1064 u16type=''
1065 u32size=''
1066 u32type=''
1067 u64size=''
1068 u64type=''
1069 u8size=''
1070 u8type=''
1071 uvsize=''
1072 uvtype=''
1073 ivdformat=''
1074 nvEUformat=''
1075 nvFUformat=''
1076 nvGUformat=''
1077 nveformat=''
1078 nvfformat=''
1079 nvgformat=''
1080 uvXUformat=''
1081 uvoformat=''
1082 uvuformat=''
1083 uvxformat=''
1084 pidtype=''
1085 prefix=''
1086 prefixexp=''
1087 installprivlib=''
1088 privlib=''
1089 privlibexp=''
1090 prototype=''
1091 ptrsize=''
1092 d_PRIXU64=''
1093 d_PRId64=''
1094 d_PRIi64=''
1095 d_PRIo64=''
1096 d_PRIu64=''
1097 d_PRIx64=''
1098 sPRIXU64=''
1099 sPRId64=''
1100 sPRIi64=''
1101 sPRIo64=''
1102 sPRIu64=''
1103 sPRIx64=''
1104 d_quad=''
1105 quadkind=''
1106 quadtype=''
1107 uquadtype=''
1108 drand01=''
1109 randbits=''
1110 randfunc=''
1111 randseedtype=''
1112 seedfunc=''
1113 installscript=''
1114 scriptdir=''
1115 scriptdirexp=''
1116 selectminbits=''
1117 selecttype=''
1118 sh=''
1119 sig_count=''
1120 sig_name=''
1121 sig_name_init=''
1122 sig_num=''
1123 sig_num_init=''
1124 sig_size=''
1125 d_sitearch=''
1126 installsitearch=''
1127 sitearch=''
1128 sitearchexp=''
1129 installsitebin=''
1130 sitebin=''
1131 sitebinexp=''
1132 installsitehtml1dir=''
1133 sitehtml1dir=''
1134 sitehtml1direxp=''
1135 installsitehtml3dir=''
1136 sitehtml3dir=''
1137 sitehtml3direxp=''
1138 installsitelib=''
1139 sitelib=''
1140 sitelib_stem=''
1141 sitelibexp=''
1142 installsiteman1dir=''
1143 siteman1dir=''
1144 siteman1direxp=''
1145 installsiteman3dir=''
1146 siteman3dir=''
1147 siteman3direxp=''
1148 siteprefix=''
1149 siteprefixexp=''
1150 installsitescript=''
1151 sitescript=''
1152 sitescriptexp=''
1153 sizesize=''
1154 sizetype=''
1155 so=''
1156 socksizetype=''
1157 sharpbang=''
1158 shsharp=''
1159 spitshell=''
1160 src=''
1161 ssizetype=''
1162 startperl=''
1163 startsh=''
1164 stdchar=''
1165 d_stdio_stream_array=''
1166 stdio_stream_array=''
1167 sysman=''
1168 trnl=''
1169 uidformat=''
1170 uidsign=''
1171 uidsize=''
1172 uidtype=''
1173 archname64=''
1174 use64bitall=''
1175 use64bitint=''
1176 usefaststdio=''
1177 ccflags_uselargefiles=''
1178 ldflags_uselargefiles=''
1179 libswanted_uselargefiles=''
1180 uselargefiles=''
1181 uselongdouble=''
1182 usemorebits=''
1183 usemultiplicity=''
1184 nm_opt=''
1185 nm_so_opt=''
1186 runnm=''
1187 usenm=''
1188 useperlio=''
1189 usesocks=''
1190 d_oldpthreads=''
1191 use5005threads=''
1192 useithreads=''
1193 usereentrant=''
1194 usethreads=''
1195 incpath=''
1196 mips_type=''
1197 usrinc=''
1198 d_vendorarch=''
1199 installvendorarch=''
1200 vendorarch=''
1201 vendorarchexp=''
1202 d_vendorbin=''
1203 installvendorbin=''
1204 vendorbin=''
1205 vendorbinexp=''
1206 installvendorhtml1dir=''
1207 vendorhtml1dir=''
1208 vendorhtml1direxp=''
1209 installvendorhtml3dir=''
1210 vendorhtml3dir=''
1211 vendorhtml3direxp=''
1212 d_vendorlib=''
1213 installvendorlib=''
1214 vendorlib=''
1215 vendorlib_stem=''
1216 vendorlibexp=''
1217 installvendorman1dir=''
1218 vendorman1dir=''
1219 vendorman1direxp=''
1220 installvendorman3dir=''
1221 vendorman3dir=''
1222 vendorman3direxp=''
1223 usevendorprefix=''
1224 vendorprefix=''
1225 vendorprefixexp=''
1226 d_vendorscript=''
1227 installvendorscript=''
1228 vendorscript=''
1229 vendorscriptexp=''
1230 versiononly=''
1231 defvoidused=''
1232 voidflags=''
1233 yacc=''
1234 yaccflags=''
1235 CONFIG=''
1236
1237 define='define'
1238 undef='undef'
1239 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1240 rmlist=''
1241
1242 : We must find out about Eunice early
1243 eunicefix=':'
1244 if test -f /etc/unixtovms; then
1245         eunicefix=/etc/unixtovms
1246 fi
1247 if test -f /etc/unixtovms.exe; then
1248         eunicefix=/etc/unixtovms.exe
1249 fi
1250
1251 : Set executable suffix now -- needed before hints available
1252 if test -f "/libs/version.library"; then
1253 : Amiga OS
1254     _exe=""
1255 elif test -f "/system/gnu_library/bin/ar.pm"; then
1256 : Stratus VOS
1257     _exe=".pm"
1258 elif test -n "$DJGPP"; then
1259 : DOS DJGPP
1260     _exe=".exe"
1261 elif test -d c:/. -o -n "$is_os2" ; then
1262 : OS/2 or cygwin
1263     _exe=".exe"
1264 fi
1265
1266 i_whoami=''
1267 : Trailing extension.  Override this in a hint file, if needed.
1268 : Extra object files, if any, needed on this platform.
1269 archobjs=''
1270 archname=''
1271 groupstype=''
1272 libnames=''
1273 : change the next line if compiling for Xenix/286 on Xenix/386
1274 xlibpth='/usr/lib/386 /lib/386'
1275 : Possible local library directories to search.
1276 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1277 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1278
1279 : general looking path for locating libraries
1280 glibpth="/lib /usr/lib $xlibpth"
1281 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1282 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1283 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1284 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1285
1286 : Private path used by Configure to find libraries.  Its value
1287 : is prepended to libpth. This variable takes care of special
1288 : machines, like the mips.  Usually, it should be empty.
1289 plibpth=''
1290
1291 : default library list
1292 libswanted=''
1293 : some systems want to use only the non-versioned libso:s
1294 ignore_versioned_solibs=''
1295 siteman1dir=''
1296 siteman3dir=''
1297 sitescript=''
1298 : set usethreads on the Configure command line to enable threads.
1299 usereentrant='undef'
1300 : full support for void wanted by default
1301 defvoidused=15
1302
1303 : Possible local include directories to search.
1304 : Set locincpth to "" in a hint file to defeat local include searches.
1305 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1306 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1307 :
1308 : no include file wanted by default
1309 inclwanted=''
1310
1311 : Enable -DEBUGGING and -DDEBUGGING from the command line
1312 EBUGGING=''
1313 DEBUGGING=old
1314
1315 ccname=''
1316 ccversion=''
1317 perllibs=''
1318 : set useposix=false in your hint file to disable the POSIX extension.
1319 useposix=true
1320 : set useopcode=false in your hint file to disable the Opcode extension.
1321 useopcode=true
1322 archname64=''
1323 ccflags_uselargefiles=''
1324 ldflags_uselargefiles=''
1325 libswanted_uselargefiles=''
1326 : set usemultiplicity on the Configure command line to enable multiplicity.
1327 : set usesocks on the Configure command line to enable socks.
1328 : List of libraries we want.
1329 : If anyone needs extra -lxxx, put those in a hint file.
1330 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1331 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1332 : We probably want to search /usr/shlib before most other libraries.
1333 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1334 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1335 glibpth="/usr/shlib $glibpth"
1336 : Do not use vfork unless overridden by a hint file.
1337 usevfork=false
1338
1339 : Find the basic shell for Bourne shell scripts
1340 case "$sh" in
1341 '')
1342         case "$SYSTYPE" in
1343         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1344         *) xxx='/bin/sh';;
1345         esac
1346         if test -f "$xxx"; then
1347                 sh="$xxx"
1348         else
1349                 : Build up a list and do a single loop so we can 'break' out.
1350                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1351                 for xxx in sh bash ksh pdksh ash; do
1352                         for p in $pth; do
1353                                 try="$try ${p}/${xxx}"
1354                         done
1355                 done
1356                 for xxx in $try; do
1357                         if test -f "$xxx"; then
1358                                 sh="$xxx";
1359                                 break
1360                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1361                                 sh="$xxx";
1362                                 break
1363                         elif test -f "$xxx.exe"; then
1364                                 sh="$xxx";
1365                                 break
1366                         fi
1367                 done
1368         fi
1369         ;;
1370 esac
1371
1372 case "$sh" in
1373 '')     cat >&2 <<EOM
1374 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1375
1376 Usually it's in /bin/sh.  How did you even get this far?
1377 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1378 we'll try to straighten this all out.
1379 EOM
1380         exit 1
1381         ;;
1382 esac
1383
1384 : see if sh knows # comments
1385 if `$sh -c '#' >/dev/null 2>&1`; then
1386         shsharp=true
1387         spitshell=cat
1388         xcat=/bin/cat
1389         test -f $xcat$_exe || xcat=/usr/bin/cat
1390         if test ! -f $xcat$_exe; then
1391                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1392                         if test -f $p/cat$_exe; then
1393                                 xcat=$p/cat
1394                                 break
1395                         fi
1396                 done
1397                 if test ! -f $xcat$_exe; then
1398                         echo "Can't find cat anywhere!"
1399                         exit 1
1400                 fi
1401         fi
1402         echo "#!$xcat" >sharp
1403         $eunicefix sharp
1404         chmod +x sharp
1405         ./sharp > today
1406         if test -s today; then
1407                 sharpbang='#!'
1408         else
1409                 echo "#! $xcat" > sharp
1410                 $eunicefix sharp
1411                 chmod +x sharp
1412                 ./sharp > today
1413                 if test -s today; then
1414                         sharpbang='#! '
1415                 else
1416                         sharpbang=': use '
1417                 fi
1418         fi
1419 else
1420         echo " "
1421         echo "Your $sh doesn't grok # comments--I will strip them later on."
1422         shsharp=false
1423         cd ..
1424         echo "exec grep -v '^[  ]*#'" >spitshell
1425         chmod +x spitshell
1426         $eunicefix spitshell
1427         spitshell=`pwd`/spitshell
1428         cd UU
1429         echo "I presume that if # doesn't work, #! won't work either!"
1430         sharpbang=': use '
1431 fi
1432 rm -f sharp today
1433
1434 : figure out how to guarantee sh startup
1435 case "$startsh" in
1436 '') startsh=${sharpbang}${sh} ;;
1437 *)
1438 esac
1439 cat >sharp <<EOSS
1440 $startsh
1441 set abc
1442 test "$?abc" != 1
1443 EOSS
1444
1445 chmod +x sharp
1446 $eunicefix sharp
1447 if ./sharp; then
1448         : echo "Yup, it does."
1449 else
1450         echo "Hmm... '$startsh' does not guarantee sh startup..."
1451         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1452 fi
1453 rm -f sharp
1454
1455
1456 : Save command line options in file UU/cmdline.opt for later use in
1457 : generating config.sh.
1458 cat > cmdline.opt <<EOSH
1459 # Configure command line arguments.
1460 config_arg0='$0'
1461 config_args='$*'
1462 config_argc=$#
1463 EOSH
1464 argn=1
1465 args_exp=''
1466 args_sep=''
1467 for arg in "$@"; do
1468         cat >>cmdline.opt <<EOSH
1469 config_arg$argn='$arg'
1470 EOSH
1471         # Extreme backslashitis: replace each ' by '"'"'
1472         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1473 $arg
1474 EOC
1475         arg_exp=`cat cmdl.opt`
1476         args_exp="$args_exp$args_sep'$arg_exp'"
1477         argn=`expr $argn + 1`
1478         args_sep=' '
1479 done
1480 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1481 # used by ./hints/os2.sh
1482 rm -f cmdl.opt
1483
1484 : produce awk script to parse command line options
1485 cat >options.awk <<'EOF'
1486 BEGIN {
1487         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1488
1489         len = length(optstr);
1490         for (i = 1; i <= len; i++) {
1491                 c = substr(optstr, i, 1);
1492                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1493                 if (a == ":") {
1494                         arg[c] = 1;
1495                         i++;
1496                 }
1497                 opt[c] = 1;
1498         }
1499 }
1500 {
1501         expect = 0;
1502         str = $0;
1503         if (substr(str, 1, 1) != "-") {
1504                 printf("'%s'\n", str);
1505                 next;
1506         }
1507         len = length($0);
1508         for (i = 2; i <= len; i++) {
1509                 c = substr(str, i, 1);
1510                 if (!opt[c]) {
1511                         printf("-%s\n", substr(str, i));
1512                         next;
1513                 }
1514                 printf("-%s\n", c);
1515                 if (arg[c]) {
1516                         if (i < len)
1517                                 printf("'%s'\n", substr(str, i + 1));
1518                         else
1519                                 expect = 1;
1520                         next;
1521                 }
1522         }
1523 }
1524 END {
1525         if (expect)
1526                 print "?";
1527 }
1528 EOF
1529
1530 : process the command line options
1531 set X `for arg in "$@"; do echo "X$arg"; done |
1532         sed -e s/X// | awk -f options.awk`
1533 eval "set $*"
1534 shift
1535 rm -f options.awk
1536
1537 : set up default values
1538 fastread=''
1539 reuseval=false
1540 config_sh=''
1541 alldone=''
1542 error=''
1543 silent=''
1544 extractsh=''
1545 override=''
1546 knowitall=''
1547 rm -f optdef.sh posthint.sh
1548 cat >optdef.sh <<EOS
1549 $startsh
1550 EOS
1551
1552
1553 : option parsing
1554 while test $# -gt 0; do
1555         case "$1" in
1556         -d) shift; fastread=yes;;
1557         -e) shift; alldone=cont;;
1558         -f)
1559                 shift
1560                 cd ..
1561                 if test -r "$1"; then
1562                         config_sh="$1"
1563                 else
1564                         echo "$me: cannot read config file $1." >&2
1565                         error=true
1566                 fi
1567                 cd UU
1568                 shift;;
1569         -h) shift; error=true;;
1570         -r) shift; reuseval=true;;
1571         -s) shift; silent=true; realsilent=true;;
1572         -E) shift; alldone=exit;;
1573         -K) shift; knowitall=true;;
1574         -O) shift; override=true;;
1575         -S) shift; silent=true; extractsh=true;;
1576         -D)
1577                 shift
1578                 case "$1" in
1579                 *=)
1580                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1581                         echo "$me: ignoring -D $1" >&2
1582                         ;;
1583                 *=*) echo "$1" | \
1584                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1585                 *) echo "$1='define'" >> optdef.sh;;
1586                 esac
1587                 shift
1588                 ;;
1589         -U)
1590                 shift
1591                 case "$1" in
1592                 *=) echo "$1" >> optdef.sh;;
1593                 *=*)
1594                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1595                         echo "$me: ignoring -U $1" >&2
1596                         ;;
1597                 *) echo "$1='undef'" >> optdef.sh;;
1598                 esac
1599                 shift
1600                 ;;
1601         -A)
1602             shift
1603             xxx=''
1604             yyy="$1"
1605             zzz=''
1606             uuu=undef
1607             case "$yyy" in
1608             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1609                  case "$zzz" in
1610                  *:*) zzz='' ;;
1611                  *)   xxx=append
1612                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1613                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1614                  esac
1615                  ;;
1616             esac
1617             case "$xxx" in
1618             '')  case "$yyy" in
1619                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1620                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1621                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1622                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1623                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1624                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1625                  esac
1626                  ;;       
1627             esac
1628             case "$xxx" in
1629             append)
1630                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1631             clear)
1632                 echo "$yyy=''"                  >> posthint.sh ;;
1633             define)
1634                 case "$zzz" in
1635                 '') zzz=define ;;
1636                 esac
1637                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1638             eval)
1639                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1640             prepend)
1641                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1642             undef)
1643                 case "$zzz" in
1644                 '') zzz="$uuu" ;;
1645                 esac
1646                 echo "$yyy=$zzz"                >> posthint.sh ;;
1647             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1648             esac
1649             shift
1650             ;;
1651         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1652             exit 0;;
1653         --) break;;
1654         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1655         *) break;;
1656         esac
1657 done
1658
1659 case "$error" in
1660 true)
1661         cat >&2 <<EOM
1662 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1663                  [-U symbol] [-U symbol=] [-A command:symbol...]
1664   -d : use defaults for all answers.
1665   -e : go on without questioning past the production of config.sh.
1666   -f : specify an alternate default configuration file.
1667   -h : print this help message and exit (with an error status).
1668   -r : reuse C symbols value if possible (skips costly nm extraction).
1669   -s : silent mode, only echoes questions and essential information.
1670   -D : define symbol to have some value:
1671          -D symbol         symbol gets the value 'define'
1672          -D symbol=value   symbol gets the value 'value'
1673   -E : stop at the end of questions, after having produced config.sh.
1674   -K : do not use unless you know what you are doing.
1675   -O : let -D and -U override definitions from loaded configuration file.
1676   -S : perform variable substitutions on all .SH files (can mix with -f)
1677   -U : undefine symbol:
1678          -U symbol    symbol gets the value 'undef'
1679          -U symbol=   symbol gets completely empty
1680   -A : manipulate symbol after the platform specific hints have been applied:
1681          -A symbol=value                append " "value to symbol
1682          -A append:symbol=value         append value to symbol
1683          -A define:symbol=value         define symbol to have value
1684          -A clear:symbol                define symbol to be ''
1685          -A define:symbol               define symbol to be 'define'
1686          -A eval:symbol=value           define symbol to be eval of value
1687          -A prepend:symbol=value        prepend value to symbol
1688          -A undef:symbol                define symbol to be 'undef'
1689          -A undef:symbol=               define symbol to be ''
1690   -V : print version number and exit (with a zero status).
1691 EOM
1692         exit 1
1693         ;;
1694 esac
1695
1696 : Sanity checks
1697 case "$fastread$alldone" in
1698 yescont|yesexit) ;;
1699 *)
1700         case "$extractsh" in
1701         true) ;;
1702         *)
1703                 if test ! -t 0; then
1704                         echo "Say 'sh Configure', not 'sh <Configure'"
1705                         exit 1
1706                 fi
1707                 ;;
1708         esac
1709         ;;
1710 esac
1711
1712 exec 4>&1
1713 case "$silent" in
1714 true) exec 1>/dev/null;;
1715 esac
1716
1717 : run the defines and the undefines, if any, but leave the file out there...
1718 touch optdef.sh
1719 . ./optdef.sh
1720 : create the posthint manipulation script and leave the file out there...
1721 touch posthint.sh
1722
1723 : set package name
1724 package=perl5
1725 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1726 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1727 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1728 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1729 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1730 esac
1731
1732 : Some greps do not return status, grrr.
1733 echo "grimblepritz" >grimble
1734 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1735         contains=contains
1736 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1737         contains=grep
1738 else
1739         contains=contains
1740 fi
1741 rm -f grimble
1742 : the following should work in any shell
1743 case "$contains" in
1744 contains*)
1745         echo " "
1746         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1747         cat >contains <<'EOSS'
1748 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1749 EOSS
1750 chmod +x contains
1751 esac
1752
1753 : Find the path to the source tree
1754 case "$src" in
1755 '') case "$0" in
1756     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1757          case "$src" in
1758          /*)    ;;
1759          .)     ;;
1760          *)     src=`cd ../$src && pwd` ;;
1761          esac
1762          ;;
1763     *)   src='.';;
1764     esac;;
1765 esac
1766 case "$src" in
1767 '')     src=/
1768         rsrc=/
1769         ;;
1770 /*) rsrc="$src";;
1771 *) rsrc="../$src";;
1772 esac
1773 if test -f $rsrc/Configure && \
1774         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1775 then
1776    : found it, so we are ok.
1777 else
1778         rsrc=''
1779         for src in . .. ../.. ../../.. ../../../..; do
1780                 if test -f ../$src/Configure && \
1781                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1782                 then
1783                         rsrc=../$src
1784                         break
1785                 fi
1786         done
1787 fi
1788 case "$rsrc" in
1789 '')
1790         cat <<EOM >&4
1791
1792 Sorry, I can't seem to locate the source dir for $package.  Please start
1793 Configure with an explicit path -- i.e. /some/path/Configure.
1794
1795 EOM
1796         exit 1
1797         ;;
1798 ../.)   rsrc='..';;
1799 *)
1800         echo " "
1801         echo "Sources for $package found in \"$src\"." >&4
1802         ;;
1803 esac
1804
1805 : script used to extract .SH files with variable substitutions
1806 cat >extract <<'EOS'
1807 PERL_CONFIG_SH=true
1808 echo "Doing variable substitutions on .SH files..."
1809 if test -f MANIFEST; then
1810         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1811 else
1812         echo "(Looking for .SH files under the source directory.)"
1813         set x `(cd "$src"; find . -name "*.SH" -print)`
1814 fi
1815 shift
1816 case $# in
1817 0) set x `(cd "$src"; echo *.SH)`; shift;;
1818 esac
1819 if test ! -f "$src/$1"; then
1820         shift
1821 fi
1822 mkdir_p='
1823 name=$1;
1824 create="";
1825 while test $name; do
1826         if test ! -d "$name"; then
1827                 create="$name $create";
1828                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1829                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1830         else
1831                 name="";
1832         fi;
1833 done;
1834 for file in $create; do
1835         mkdir $file;
1836 done
1837 '
1838 for file in $*; do
1839         case "$src" in
1840         ".")
1841                 case "$file" in
1842                 */*)
1843                         dir=`expr X$file : 'X\(.*\)/'`
1844                         file=`expr X$file : 'X.*/\(.*\)'`
1845                         (cd "$dir" && . ./$file)
1846                         ;;
1847                 *)
1848                         . ./$file
1849                         ;;
1850                 esac
1851                 ;;
1852         *)
1853                 case "$file" in
1854                 */*)
1855                         dir=`expr X$file : 'X\(.*\)/'`
1856                         file=`expr X$file : 'X.*/\(.*\)'`
1857                         (set x $dir; shift; eval $mkdir_p)
1858                         sh <"$src/$dir/$file"
1859                         ;;
1860                 *)
1861                         sh <"$src/$file"
1862                         ;;
1863                 esac
1864                 ;;
1865         esac
1866 done
1867 if test -f "$src/config_h.SH"; then
1868         if test ! -f config.h; then
1869         : oops, they left it out of MANIFEST, probably, so do it anyway.
1870         . "$src/config_h.SH"
1871         fi
1872 fi
1873 EOS
1874
1875 : extract files and exit if asked to do so
1876 case "$extractsh" in
1877 true)
1878         case "$realsilent" in
1879         true) ;;
1880         *) exec 1>&4;;
1881         esac
1882         case "$config_sh" in
1883         '') config_sh='config.sh';;
1884         esac
1885         echo " "
1886         echo "Fetching answers from $config_sh..."
1887         cd ..
1888         . $config_sh
1889         test "$override" && . ./optdef.sh
1890         echo " "
1891         . UU/extract
1892         rm -rf UU
1893         echo "Extraction done."
1894         exit 0
1895         ;;
1896 esac
1897
1898 : Eunice requires " " instead of "", can you believe it
1899 echo " "
1900 : Here we go...
1901 echo "Beginning of configuration questions for $package."
1902
1903 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1904
1905 : first determine how to suppress newline on echo command
1906 echo " "
1907 echo "Checking echo to see how to suppress newlines..."
1908 (echo "hi there\c" ; echo " ") >.echotmp
1909 if $contains c .echotmp >/dev/null 2>&1 ; then
1910         echo "...using -n."
1911         n='-n'
1912         c=''
1913 else
1914         cat <<'EOM'
1915 ...using \c
1916 EOM
1917         n=''
1918         c='\c'
1919 fi
1920 echo $n "The star should be here-->$c"
1921 echo '*'
1922 rm -f .echotmp
1923
1924 : Now test for existence of everything in MANIFEST
1925 echo " "
1926 if test -f "$rsrc/MANIFEST"; then
1927         echo "First let's make sure your kit is complete.  Checking..." >&4
1928         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1929         rm -f missing
1930         tmppwd=`pwd`
1931         for filelist in x??; do
1932                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1933         done
1934         if test -s missing; then
1935                 cat missing >&4
1936                 cat >&4 <<'EOM'
1937
1938 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1939
1940 You have the option of continuing the configuration process, despite the
1941 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1942 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1943 and contact the author (perlbug@perl.org).
1944
1945 EOM
1946                 echo $n "Continue? [n] $c" >&4
1947                 read ans
1948                 case "$ans" in
1949                 y*)
1950                         echo "Continuing..." >&4
1951                         rm -f missing
1952                         ;;
1953                 *)
1954                         echo "ABORTING..." >&4
1955                         kill $$
1956                         ;;
1957                 esac
1958         else
1959                 echo "Looks good..."
1960         fi
1961 else
1962         echo "There is no MANIFEST file.  I hope your kit is complete !"
1963 fi
1964 rm -f missing x??
1965
1966 echo " "
1967 : Find the appropriate value for a newline for tr
1968 if test -n "$DJGPP"; then
1969        trnl='\012'
1970 fi
1971 if test X"$trnl" = X; then
1972         case "`echo foo|tr '\n' x 2>/dev/null`" in
1973         foox) trnl='\n' ;;
1974         esac
1975 fi
1976 if test X"$trnl" = X; then
1977         case "`echo foo|tr '\012' x 2>/dev/null`" in
1978         foox) trnl='\012' ;;
1979         esac
1980 fi
1981 if test X"$trnl" = X; then
1982        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1983        fooxy) trnl='\n\r' ;;
1984        esac
1985 fi
1986 if test X"$trnl" = X; then
1987         cat <<EOM >&2
1988
1989 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1990
1991 EOM
1992         exit 1
1993 fi
1994
1995 : compute the number of columns on the terminal for proper question formatting
1996 case "$COLUMNS" in
1997 '') COLUMNS='80';;
1998 esac
1999
2000 : set up the echo used in my read
2001 myecho="case \"\$xxxm\" in
2002 '') echo $n \"\$rp $c\" >&4;;
2003 *) case \"\$rp\" in
2004         '') echo $n \"[\$xxxm] $c\";;
2005         *)
2006                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2007                         echo \"\$rp\" >&4
2008                         echo $n \"[\$xxxm] $c\" >&4
2009                 else
2010                         echo $n \"\$rp [\$xxxm] $c\" >&4
2011                 fi
2012                 ;;
2013         esac;;
2014 esac"
2015
2016 : now set up to do reads with possible shell escape and default assignment
2017 cat <<EOSC >myread
2018 $startsh
2019 xxxm=\$dflt
2020 $myecho
2021 ans='!'
2022 case "\$fastread" in
2023 yes) case "\$dflt" in
2024         '') ;;
2025         *) ans='';
2026                 case "\$silent-\$rp" in
2027                 true-) ;;
2028                 *) echo " " >&4;;
2029                 esac;;
2030         esac;;
2031 *) case "\$silent" in
2032         true) case "\$rp" in
2033                 '') ans='';;
2034                 esac;;
2035         esac;;
2036 esac
2037 while expr "X\$ans" : "X!" >/dev/null; do
2038         read answ
2039         set x \$xxxm
2040         shift
2041         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2042         case  "\$answ" in
2043         "!")
2044                 sh 1>&4
2045                 echo " "
2046                 $myecho
2047                 ;;
2048         !*)
2049                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2050                 shift
2051                 sh 1>&4 -c "\$*"
2052                 echo " "
2053                 $myecho
2054                 ;;
2055         "\$ans")
2056                 case "\$ans" in
2057                 \\&*)
2058                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2059                         shift
2060                         case "\$1" in
2061                         -d)
2062                                 fastread=yes
2063                                 echo "(OK, I'll run with -d after this question.)" >&4
2064                                 ;;
2065                         -*)
2066                                 echo "*** Sorry, \$1 not supported yet." >&4
2067                                 ;;
2068                         esac
2069                         $myecho
2070                         ans=!
2071                         ;;
2072                 esac;;
2073         *)
2074                 case "\$aok" in
2075                 y)
2076                         echo "*** Substitution done -- please confirm."
2077                         xxxm="\$ans"
2078                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2079                         xxxm="\$ans"
2080                         ans=!
2081                         ;;
2082                 *)
2083                         echo "*** Error -- try again."
2084                         ans=!
2085                         ;;
2086                 esac
2087                 $myecho
2088                 ;;
2089         esac
2090         case "\$ans\$xxxm\$nostick" in
2091         '')
2092                 ans=!
2093                 $myecho
2094                 ;;
2095         esac
2096 done
2097 case "\$ans" in
2098 '') ans="\$xxxm";;
2099 esac
2100 EOSC
2101
2102 : create .config dir to save info across Configure sessions
2103 test -d ../.config || mkdir ../.config
2104 cat >../.config/README <<EOF
2105 This directory created by Configure to save information that should
2106 persist across sessions for $package.
2107
2108 You may safely delete it if you wish.
2109 EOF
2110
2111 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2112 case "$usedevel" in
2113 $define|true|[yY]*) ;;
2114 *) case "$xversion" in
2115    *[13579])
2116         cat >&4 <<EOH
2117 *** WHOA THERE!!! ***
2118
2119     This is an UNSTABLE DEVELOPMENT release.
2120     The version of this $package distribution is $xversion, that is, odd,
2121     (as opposed to even) and that signifies a development release.
2122     If you want a maintenance release, you want an even-numbered version.
2123
2124     Do ***NOT*** install this into production use.
2125     Data corruption and crashes are possible.
2126
2127     It is most seriously suggested that you do not continue any further
2128     unless you want to help in developing and debugging Perl.
2129
2130     If you *still* want to build perl, you can answer 'y' now,
2131     or pass -Dusedevel to Configure.
2132
2133 EOH
2134         rp='Do you really want to continue?'
2135         dflt='n'
2136         . ./myread
2137         case "$ans" in
2138         [yY]) echo >&4 "Okay, continuing."
2139               usedevel="$define" ;;
2140         *) echo >&4 "Okay, bye."
2141            exit 1
2142            ;;
2143         esac
2144         ;;
2145     esac
2146     ;;
2147 esac
2148 case "$usedevel" in
2149 $define|true|[yY]*)
2150         case "$versiononly" in
2151         '') versiononly="$define" ;;
2152         esac
2153         case "$installusrbinperl" in
2154         '') installusrbinperl="$undef" ;;
2155         esac
2156         ;;
2157 esac
2158
2159 : general instructions
2160 needman=true
2161 firsttime=true
2162 user=`(logname) 2>/dev/null`
2163 case "$user" in
2164 '') user=`whoami 2>&1`;;
2165 esac
2166 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2167         firsttime=false
2168         echo " "
2169         rp='Would you like to see the instructions?'
2170         dflt=n
2171         . ./myread
2172         case "$ans" in
2173         [yY]*) ;;
2174         *) needman=false;;
2175         esac
2176 fi
2177 if $needman; then
2178         cat <<EOH
2179
2180 This installation shell script will examine your system and ask you questions
2181 to determine how the perl5 package should be installed. If you get
2182 stuck on a question, you may use a ! shell escape to start a subshell or
2183 execute a command.  Many of the questions will have default answers in square
2184 brackets; typing carriage return will give you the default.
2185
2186 On some of the questions which ask for file or directory names you are allowed
2187 to use the ~name construct to specify the login directory belonging to "name",
2188 even if you don't have a shell which knows about that.  Questions where this is
2189 allowed will be marked "(~name ok)".
2190
2191 EOH
2192         rp=''
2193         dflt='Type carriage return to continue'
2194         . ./myread
2195         cat <<'EOH'
2196
2197 The prompter used in this script allows you to use shell variables and
2198 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2199 in the default answer, as if the default line was a set of arguments given to a
2200 script shell.  This means you may also use $* to repeat the whole default line,
2201 so you do not have to re-type everything to add something to the default.
2202
2203 Everytime there is a substitution, you will have to confirm.  If there is an
2204 error (e.g. an unmatched backtick), the default answer will remain unchanged
2205 and you will be prompted again.
2206
2207 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2208 the questions and use the computed defaults (or the previous answers if there
2209 was already a config.sh file). Type 'Configure -h' for a list of options.
2210 You may also start interactively and then answer '& -d' at any prompt to turn
2211 on the non-interactive behaviour for the remainder of the execution.
2212
2213 EOH
2214         . ./myread
2215         cat <<EOH
2216
2217 Much effort has been expended to ensure that this shell script will run on any
2218 Unix system.  If despite that it blows up on yours, your best bet is to edit
2219 Configure and run it again.  If you can't run Configure for some reason,
2220 you'll have to generate a config.sh file by hand.  Whatever problems you
2221 have, let me (perlbug@perl.org) know how I blew it.
2222
2223 This installation script affects things in two ways:
2224
2225 1) it may do direct variable substitutions on some of the files included
2226    in this kit.
2227 2) it builds a config.h file for inclusion in C programs.  You may edit
2228    any of these files as the need arises after running this script.
2229
2230 If you make a mistake on a question, there is no easy way to back up to it
2231 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2232 files.  Configure will offer to let you do this before it runs the SH files.
2233
2234 EOH
2235         dflt='Type carriage return to continue'
2236         . ./myread
2237         case "$firsttime" in
2238         true) echo $user >>../.config/instruct;;
2239         esac
2240 fi
2241
2242 : find out where common programs are
2243 echo " "
2244 echo "Locating common programs..." >&4
2245 cat <<EOSC >loc
2246 $startsh
2247 case \$# in
2248 0) exit 1;;
2249 esac
2250 thing=\$1
2251 shift
2252 dflt=\$1
2253 shift
2254 for dir in \$*; do
2255         case "\$thing" in
2256         .)
2257         if test -d \$dir/\$thing; then
2258                 echo \$dir
2259                 exit 0
2260         fi
2261         ;;
2262         *)
2263         for thisthing in \$dir/\$thing; do
2264                 : just loop through to pick last item
2265         done
2266         if test -f \$thisthing; then
2267                 echo \$thisthing
2268                 exit 0
2269         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2270                 echo \$thisthing
2271                 exit 0
2272         elif test -f \$dir/\$thing.exe; then
2273                 if test -n "$DJGPP"; then
2274                         echo \$dir/\$thing.exe
2275                 elif test "$eunicefix" != ":"; then
2276                         : on Eunice apparently
2277                         echo \$dir/\$thing
2278                         exit 0
2279                 fi
2280                 exit 0
2281         fi
2282         ;;
2283         esac
2284 done
2285 echo \$dflt
2286 exit 1
2287 EOSC
2288 chmod +x loc
2289 $eunicefix loc
2290 loclist="
2291 awk
2292 cat
2293 chmod
2294 comm
2295 cp
2296 echo
2297 expr
2298 grep
2299 ls
2300 mkdir
2301 rm
2302 sed
2303 sort
2304 touch
2305 tr
2306 uniq
2307 "
2308 trylist="
2309 Mcc
2310 ar
2311 bison
2312 byacc
2313 cpp
2314 csh
2315 date
2316 egrep
2317 gmake
2318 gzip
2319 less
2320 ln
2321 make
2322 more
2323 nm
2324 nroff
2325 pg
2326 test
2327 uname
2328 zip
2329 "
2330 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2331 pth="$pth /lib /usr/lib"
2332 for file in $loclist; do
2333         eval xxx=\$$file
2334         case "$xxx" in
2335         /*|?:[\\/]*)
2336                 if test -f "$xxx"; then
2337                         : ok
2338                 else
2339                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2340                         xxx=`./loc $file $file $pth`
2341                 fi
2342                 ;;
2343         '') xxx=`./loc $file $file $pth`;;
2344         *) xxx=`./loc $xxx $xxx $pth`;;
2345         esac
2346         eval $file=$xxx$_exe
2347         eval _$file=$xxx
2348         case "$xxx" in
2349         /*)
2350                 echo $file is in $xxx.
2351                 ;;
2352         ?:[\\/]*)
2353                 echo $file is in $xxx.
2354                 ;;
2355         *)
2356                 echo "I don't know where '$file' is, and my life depends on it." >&4
2357                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2358                 exit 1
2359                 ;;
2360         esac
2361 done
2362 echo " "
2363 echo "Don't worry if any of the following aren't found..."
2364 say=offhand
2365 for file in $trylist; do
2366         eval xxx=\$$file
2367         case "$xxx" in
2368         /*|?:[\\/]*)
2369                 if test -f "$xxx"; then
2370                         : ok
2371                 else
2372                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2373                         xxx=`./loc $file $file $pth`
2374                 fi
2375                 ;;
2376         '') xxx=`./loc $file $file $pth`;;
2377         *) xxx=`./loc $xxx $xxx $pth`;;
2378         esac
2379         eval $file=$xxx$_exe
2380         eval _$file=$xxx
2381         case "$xxx" in
2382         /*)
2383                 echo $file is in $xxx.
2384                 ;;
2385         ?:[\\/]*)
2386                 echo $file is in $xxx.
2387                 ;;
2388         *)
2389                 echo "I don't see $file out there, $say."
2390                 say=either
2391                 ;;
2392         esac
2393 done
2394 case "$egrep" in
2395 egrep)
2396         echo "Substituting grep for egrep."
2397         egrep=$grep
2398         _egrep=$grep
2399         ;;
2400 esac
2401 case "$ln" in
2402 ln)
2403         echo "Substituting cp for ln."
2404         ln=$cp
2405         _ln=$cp
2406         ;;
2407 esac
2408 case "$make" in
2409 make)   
2410         case "$gmake" in
2411         gmake)
2412         echo "I can't find make or gmake, and my life depends on it." >&4
2413         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2414         exit 1
2415         ;;
2416         esac
2417         ;;
2418 esac    
2419 case "$gmake" in
2420 gmake)  ;;
2421 *)      # We can't have osname yet.
2422         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2423                 # Assume that gmake, if found, is definitely GNU make
2424                 # and prefer it over the system make.
2425                 echo "Substituting gmake for make."
2426                 make=$gmake
2427                 _make=$gmake
2428         fi
2429         ;;
2430 esac
2431 case "$test" in
2432 test)
2433         echo "Hopefully test is built into your sh."
2434         ;;
2435 *)
2436         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2437                 echo "Using the test built into your sh."
2438                 test=test
2439                 _test=test
2440         fi
2441         ;;
2442 esac
2443 case "$echo" in
2444 echo)
2445         echo "Hopefully echo is built into your sh."
2446         ;;
2447 '') ;;
2448 *)
2449         echo " "
2450 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2451         $echo $n "hi there$c" >foo1
2452         echo $n "hi there$c" >foo2
2453         if cmp foo1 foo2 >/dev/null 2>&1; then
2454                 echo "They are compatible.  In fact, they may be identical."
2455         else
2456                 case "$n" in
2457                 '-n') n='' c='\c';;
2458                 *) n='-n' c='';;
2459                 esac
2460                 cat <<FOO
2461 They are not compatible!  You are probably running ksh on a non-USG system.
2462 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2463 have echo built in and we may have to run some Bourne shell scripts.  That
2464 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2465
2466 FOO
2467                 $echo $n "The star should be here-->$c"
2468                 $echo "*"
2469         fi
2470         $rm -f foo1 foo2
2471         ;;
2472 esac
2473
2474 cat <<EOS >trygcc
2475 $startsh
2476 EOS
2477 cat <<'EOSC' >>trygcc
2478 case "$cc" in
2479 '') ;;
2480 *)  $rm -f try try.*
2481     $cat >try.c <<EOM
2482 int main(int argc, char *argv[]) {
2483   return 0;
2484 }
2485 EOM
2486     if $cc -o try $ccflags $ldflags try.c; then
2487        :
2488     else
2489         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         despair=yes
2491         trygcc=yes
2492         case "$cc" in
2493         *gcc*) trygcc=no ;;
2494         esac
2495         case "`$cc -v -c try.c 2>&1`" in
2496         *gcc*) trygcc=no ;;
2497         esac
2498         if $test X"$trygcc" = Xyes; then
2499             if gcc -o try -c try.c; then
2500                 echo " "
2501                 echo "You seem to have a working gcc, though." >&4
2502                 rp="Would you like to use it?"
2503                 dflt=y
2504                 if $test -f myread; then
2505                     . ./myread
2506                 else
2507                     if $test -f UU/myread; then
2508                         . ./UU/myread
2509                     else
2510                         echo "Cannot find myread, sorry.  Aborting." >&2
2511                         exit 1
2512                     fi
2513                 fi  
2514                 case "$ans" in
2515                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2516                        if $test -f usethreads.cbu; then
2517                            $cat >&4 <<EOM 
2518
2519 *** However, any setting of the C compiler flags (e.g. for thread support)
2520 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2521 *** (together with e.g. -Dusethreads).
2522
2523 EOM
2524                        fi;;
2525                 esac
2526             fi
2527         fi
2528     fi
2529     $rm -f try try.*
2530     ;;
2531 esac
2532 EOSC
2533
2534 cat <<EOS >checkcc
2535 $startsh
2536 EOS
2537 cat <<'EOSC' >>checkcc
2538 case "$cc" in        
2539 '') ;;
2540 *)  $rm -f try try.*              
2541     $cat >try.c <<EOM
2542 int main(int argc, char *argv[]) {
2543   return 0;
2544 }
2545 EOM
2546     if $cc -o try $ccflags $ldflags try.c; then
2547        :
2548     else
2549         if $test X"$despair" = Xyes; then
2550            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2551         fi
2552         $cat >&4 <<EOM         
2553 You need to find a working C compiler.
2554 Either (purchase and) install the C compiler supplied by your OS vendor,
2555 or for a free C compiler try http://gcc.gnu.org/
2556 I cannot continue any further, aborting.
2557 EOM
2558         exit 1
2559     fi
2560     $rm -f try try.*
2561     ;;
2562 esac
2563 EOSC
2564
2565 : determine whether symbolic links are supported
2566 echo " "
2567 $touch blurfl
2568 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2569         echo "Symbolic links are supported." >&4
2570         lns="$ln -s"
2571 else
2572         echo "Symbolic links are NOT supported." >&4
2573         lns="$ln"
2574 fi
2575 $rm -f blurfl sym
2576
2577 : determine whether symbolic links are supported
2578 echo " "
2579 case "$lns" in
2580 *"ln"*" -s")
2581         echo "Checking how to test for symbolic links..." >&4
2582         $lns blurfl sym
2583         if $test "X$issymlink" = X; then
2584                 case "$newsh" in
2585                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2586                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2587                 esac
2588                 if test $? = 0; then
2589                         issymlink="test -h"
2590                 else
2591                         echo "Your builtin 'test -h' may be broken." >&4
2592                         case "$test" in
2593                         /*)     ;;
2594                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2595                                 for p in $pth
2596                                 do
2597                                         if test -f "$p/$test"; then
2598                                                 test="$p/$test"
2599                                                 break
2600                                         fi
2601                                 done
2602                                 ;;
2603                         esac
2604                         case "$test" in
2605                         /*)
2606                                 echo "Trying external '$test -h'." >&4
2607                                 issymlink="$test -h"
2608                                 if $test ! -h sym >/dev/null 2>&1; then
2609                                         echo "External '$test -h' is broken, too." >&4
2610                                         issymlink=''
2611                                 fi
2612                                 ;;
2613                         *)      issymlink='' ;;
2614                         esac
2615                 fi              
2616         fi
2617         if $test "X$issymlink" = X; then
2618                 if $test -L sym 2>/dev/null; then
2619                         issymlink="$test -L"
2620                         echo "The builtin '$test -L' worked." >&4
2621                 fi
2622         fi
2623         if $test "X$issymlink" != X; then
2624                 echo "You can test for symbolic links with '$issymlink'." >&4
2625         else
2626                 echo "I do not know how you can test for symbolic links." >&4
2627         fi
2628         $rm -f blurfl sym
2629         ;;
2630 *)      echo "No symbolic links, so not testing for their testing..." >&4
2631         ;;
2632 esac
2633 echo " "
2634
2635
2636 case "$mksymlinks" in
2637 $define|true|[yY]*)
2638         case "$src" in
2639         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2640                 exit 1
2641                 ;;
2642         *)      case "$lns:$issymlink" in
2643                 *"ln"*" -s:"*"test -"?)
2644                         echo "Creating the symbolic links..." >&4
2645                         echo "(First creating the subdirectories...)" >&4
2646                         cd ..
2647                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2648                                 read directory
2649                                 test -z "$directory" && break
2650                                 mkdir -p $directory
2651                         done
2652                         # Sanity check 1.
2653                         if test ! -d t/base; then
2654                                 echo "Failed to create the subdirectories.  Aborting." >&4
2655                                 exit 1
2656                         fi
2657                         echo "(Then creating the symlinks...)" >&4
2658                         awk '{print $1}' $src/MANIFEST | while true; do
2659                                 read filename
2660                                 test -z "$filename" && break
2661                                 if test -f $filename; then
2662                                         if $issymlink $filename; then
2663                                                 rm -f $filename
2664                                         fi
2665                                 fi
2666                                 if test -f $filename; then
2667                                         echo "$filename already exists, not symlinking."
2668                                 else
2669                                         ln -s $src/$filename $filename
2670                                 fi
2671                         done
2672                         # Sanity check 2.
2673                         if test ! -f t/base/lex.t; then
2674                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2675                                 exit 1
2676                         fi
2677                         cd UU
2678                         ;;
2679                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2680                         ;;
2681                 esac
2682                 ;;
2683         esac
2684         ;;
2685 esac
2686
2687
2688 case "$usecrosscompile" in
2689 $define|true|[yY]*)
2690         $echo "Cross-compiling..."
2691         croak=''
2692         case "$cc" in
2693         *-*-gcc) # A cross-compiling gcc, probably.
2694             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2695             ar=$targetarch-ar
2696             # leave out ld, choosing it is more complex
2697             nm=$targetarch-nm
2698             ranlib=$targetarch-ranlib
2699             $echo 'extern int foo;' > try.c
2700             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2701             shift
2702             if $test $# -gt 0; then
2703                 incpth="$incpth $*"
2704                 incpth="`$echo $incpth|$sed 's/^ //'`"
2705                 echo "Guessing incpth '$incpth'." >&4
2706                 for i in $*; do
2707                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2708                     if $test -d $j; then
2709                         libpth="$libpth $j"
2710                     fi
2711                 done   
2712                 libpth="`$echo $libpth|$sed 's/^ //'`"
2713                 echo "Guessing libpth '$libpth'." >&4
2714             fi
2715             $rm -f try.c
2716             ;;
2717         esac
2718         case "$targetarch" in
2719         '') echo "Targetarch not defined." >&4; croak=y ;;
2720         *)  echo "Using targetarch $targetarch." >&4 ;;
2721         esac
2722         case "$incpth" in
2723         '') echo "Incpth not defined." >&4; croak=y ;;
2724         *)  echo "Using incpth '$incpth'." >&4 ;;
2725         esac
2726         case "$libpth" in
2727         '') echo "Libpth not defined." >&4; croak=y ;;
2728         *)  echo "Using libpth '$libpth'." >&4 ;;
2729         esac
2730         case "$usrinc" in
2731         '') for i in $incpth; do
2732                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2733                     usrinc=$i
2734                     echo "Guessing usrinc $usrinc." >&4
2735                     break
2736                 fi
2737             done
2738             case "$usrinc" in
2739             '') echo "Usrinc not defined." >&4; croak=y ;;
2740             esac
2741             ;;
2742         *)  echo "Using usrinc $usrinc." >&4 ;;
2743         esac
2744         case "$targethost" in
2745         '') echo "Targethost not defined." >&4; croak=y ;;
2746         *)  echo "Using targethost $targethost." >&4
2747         esac
2748         locincpth=' '
2749         loclibpth=' '
2750         case "$croak" in
2751         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2752         esac
2753         case "$src" in
2754         /*) run=$src/Cross/run
2755             targetmkdir=$src/Cross/mkdir
2756             to=$src/Cross/to
2757             from=$src/Cross/from
2758             ;;
2759         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2760             run=$pwd/Cross/run
2761             targetmkdir=$pwd/Cross/mkdir
2762             to=$pwd/Cross/to
2763             from=$pwd/Cross/from
2764             ;;
2765         esac
2766         case "$targetrun" in
2767         '') targetrun=ssh ;;
2768         esac
2769         case "$targetto" in
2770         '') targetto=scp ;;
2771         esac
2772         case "$targetfrom" in
2773         '') targetfrom=scp ;;
2774         esac
2775         run=$run-$targetrun
2776         to=$to-$targetto
2777         from=$from-$targetfrom
2778         case "$targetdir" in
2779         '')  targetdir=/tmp
2780              echo "Guessing targetdir $targetdir." >&4
2781              ;;
2782         esac
2783         case "$targetuser" in
2784         '')  targetuser=root
2785              echo "Guessing targetuser $targetuser." >&4
2786              ;;
2787         esac
2788         case "$targetfrom" in
2789         scp)    q=-q ;;
2790         *)      q='' ;;
2791         esac
2792         case "$targetrun" in
2793         ssh|rsh)
2794             cat >$run <<EOF
2795 #!/bin/sh
2796 case "\$1" in
2797 -cwd)
2798   shift
2799   cwd=\$1
2800   shift
2801   ;;
2802 esac
2803 case "\$cwd" in
2804 '') cwd=$targetdir ;;
2805 esac
2806 exe=\$1
2807 shift
2808 if $test ! -f \$exe.xok; then
2809   $to \$exe
2810   $touch \$exe.xok
2811 fi
2812 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2813 EOF
2814             ;;
2815         *)  echo "Unknown targetrun '$targetrun'" >&4
2816             exit 1
2817             ;;
2818         esac
2819         case "$targetmkdir" in
2820         */Cross/mkdir)
2821             cat >$targetmkdir <<EOF
2822 #!/bin/sh
2823 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2824 EOF
2825             $chmod a+rx $targetmkdir
2826             ;;
2827         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2828             exit 1
2829             ;;
2830         esac
2831         case "$targetto" in
2832         scp|rcp)
2833             cat >$to <<EOF
2834 #!/bin/sh
2835 for f in \$@
2836 do
2837   case "\$f" in
2838   /*)
2839     $targetmkdir \`dirname \$f\`
2840     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2841     ;;
2842   *)
2843     $targetmkdir $targetdir/\`dirname \$f\`
2844     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2845     ;;
2846   esac
2847 done
2848 exit 0
2849 EOF
2850             ;;
2851         cp) cat >$to <<EOF
2852 #!/bin/sh
2853 for f in \$@
2854 do
2855   case "\$f" in
2856   /*)
2857     $mkdir -p $targetdir/\`dirname \$f\`
2858     $cp \$f $targetdir/\$f || exit 1
2859     ;;
2860   *)
2861     $targetmkdir $targetdir/\`dirname \$f\`
2862     $cp \$f $targetdir/\$f || exit 1
2863     ;;
2864   esac
2865 done
2866 exit 0
2867 EOF
2868             ;;
2869         *)  echo "Unknown targetto '$targetto'" >&4
2870             exit 1
2871             ;;
2872         esac
2873         case "$targetfrom" in
2874         scp|rcp)
2875           cat >$from <<EOF
2876 #!/bin/sh
2877 for f in \$@
2878 do
2879   $rm -f \$f
2880   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2881 done
2882 exit 0
2883 EOF
2884             ;;
2885         cp) cat >$from <<EOF
2886 #!/bin/sh
2887 for f in \$@
2888 do
2889   $rm -f \$f
2890   cp $targetdir/\$f . || exit 1
2891 done
2892 exit 0
2893 EOF
2894             ;;
2895         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2896             exit 1
2897             ;;
2898         esac
2899         if $test ! -f $run; then
2900             echo "Target 'run' script '$run' not found." >&4
2901         else
2902             $chmod a+rx $run
2903         fi
2904         if $test ! -f $to; then
2905             echo "Target 'to' script '$to' not found." >&4
2906         else
2907             $chmod a+rx $to
2908         fi
2909         if $test ! -f $from; then
2910             echo "Target 'from' script '$from' not found." >&4
2911         else
2912             $chmod a+rx $from
2913         fi
2914         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2915             exit 1
2916         fi
2917         cat >&4 <<EOF
2918 Using '$run' for remote execution,
2919 and '$from' and '$to'
2920 for remote file transfer.
2921 EOF
2922         ;;
2923 *)      run=''
2924         to=:
2925         from=:
2926         usecrosscompile='undef'
2927         targetarch=''
2928         ;;
2929 esac
2930
2931 : see whether [:lower:] and [:upper:] are supported character classes
2932 echo " "
2933 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2934 ABYZ)
2935         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2936         up='[:upper:]'
2937         low='[:lower:]'
2938         ;;
2939 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2940         # (0xd9 and 0xe2), therefore that is a nice testing point.
2941         if test "X$up" = X -o "X$low" = X; then
2942             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2943             rs) up='[A-Z]'
2944                 low='[a-z]'
2945                 ;;
2946             esac
2947         fi
2948         if test "X$up" = X -o "X$low" = X; then
2949             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2950             rs) up='A-Z'
2951                 low='a-z'
2952                 ;;
2953             esac
2954         fi
2955         if test "X$up" = X -o "X$low" = X; then
2956             case "`echo RS | od -x 2>/dev/null`" in
2957             *D9E2*|*d9e2*)
2958                 echo "Hey, this might be EBCDIC." >&4
2959                 if test "X$up" = X -o "X$low" = X; then
2960                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2961                     rs) up='[A-IJ-RS-Z]'
2962                         low='[a-ij-rs-z]'
2963                         ;;
2964                     esac
2965                 fi
2966                 if test "X$up" = X -o "X$low" = X; then
2967                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2968                     rs) up='A-IJ-RS-Z'
2969                         low='a-ij-rs-z'
2970                         ;;
2971                     esac
2972                 fi
2973                 ;;
2974             esac
2975         fi
2976 esac
2977 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2978 rs)
2979     echo "Using $up and $low to convert case." >&4
2980     ;;
2981 *)
2982     echo "I don't know how to translate letters from upper to lower case." >&4
2983     echo "Your tr is not acting any way I know of." >&4
2984     exit 1
2985     ;;
2986 esac
2987 : set up the translation script tr, must be called with ./tr of course
2988 cat >tr <<EOSC
2989 $startsh
2990 case "\$1\$2" in
2991 '[A-Z][a-z]') exec $tr '$up' '$low';;
2992 '[a-z][A-Z]') exec $tr '$low' '$up';;
2993 esac
2994 exec $tr "\$@"
2995 EOSC
2996 chmod +x tr
2997 $eunicefix tr
2998
2999 : Try to determine whether config.sh was made on this system
3000 case "$config_sh" in
3001 '')
3002 myuname=`$uname -a 2>/dev/null`
3003 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3004 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3005 # because the A-Z/a-z are not consecutive.
3006 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3007         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3008 newmyuname="$myuname"
3009 dflt=n
3010 case "$knowitall" in
3011 '')
3012         if test -f ../config.sh; then
3013                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3014                         eval "`grep myuname= ../config.sh`"
3015                 fi
3016                 if test "X$myuname" = "X$newmyuname"; then
3017                         dflt=y
3018                 fi
3019         fi
3020         ;;
3021 *) dflt=y;;
3022 esac
3023
3024 : Get old answers from old config file if Configure was run on the
3025 : same system, otherwise use the hints.
3026 hint=default
3027 cd ..
3028 if test -f config.sh; then
3029         echo " "
3030         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3031         . UU/myread
3032         case "$ans" in
3033         n*|N*) echo "OK, I'll ignore it."
3034                 mv config.sh config.sh.old
3035                 myuname="$newmyuname"
3036                 ;;
3037         *)  echo "Fetching default answers from your old config.sh file..." >&4
3038                 tmp_n="$n"
3039                 tmp_c="$c"
3040                 tmp_sh="$sh"
3041                 . ./config.sh
3042                 cp config.sh UU
3043                 n="$tmp_n"
3044                 c="$tmp_c"
3045                 : Older versions did not always set $sh.  Catch re-use of such
3046                 : an old config.sh.
3047                 case "$sh" in
3048                 '') sh="$tmp_sh" ;;
3049                 esac
3050                 hint=previous
3051                 ;;
3052         esac
3053 fi
3054 . ./UU/checkcc
3055 if test ! -f config.sh; then
3056         $cat <<EOM
3057
3058 First time through, eh?  I have some defaults handy for some systems
3059 that need some extra help getting the Configure answers right:
3060
3061 EOM
3062         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3063         dflt=''
3064         : Half the following guesses are probably wrong... If you have better
3065         : tests or hints, please send them to perlbug@perl.org
3066         : The metaconfig authors would also appreciate a copy...
3067         $test -f /irix && osname=irix
3068         $test -f /xenix && osname=sco_xenix
3069         $test -f /dynix && osname=dynix
3070         $test -f /dnix && osname=dnix
3071         $test -f /lynx.os && osname=lynxos
3072         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3073         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3074         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3075         $test -f /bin/mips && /bin/mips && osname=mips
3076         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3077                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3078         $test -d /usr/apollo/bin && osname=apollo
3079         $test -f /etc/saf/_sactab && osname=svr4
3080         $test -d /usr/include/minix && osname=minix
3081         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3082         if $test -d /MachTen -o -d /MachTen_Folder; then
3083                 osname=machten
3084                 if $test -x /sbin/version; then
3085                         osvers=`/sbin/version | $awk '{print $2}' |
3086                         $sed -e 's/[A-Za-z]$//'`
3087                 elif $test -x /usr/etc/version; then
3088                         osvers=`/usr/etc/version | $awk '{print $2}' |
3089                         $sed -e 's/[A-Za-z]$//'`
3090                 else
3091                         osvers="$2.$3"
3092                 fi
3093         fi
3094
3095         $test -f /sys/posix.dll &&
3096                 $test -f /usr/bin/what &&
3097                 set X `/usr/bin/what /sys/posix.dll` &&
3098                 $test "$3" = UWIN &&
3099                 osname=uwin &&
3100                 osvers="$5"
3101
3102         if $test -f $uname; then
3103                 set X $myuname
3104                 shift
3105
3106                 case "$5" in
3107                 fps*) osname=fps ;;
3108                 mips*)
3109                         case "$4" in
3110                         umips) osname=umips ;;
3111                         *) osname=mips ;;
3112                         esac;;
3113                 [23]100) osname=mips ;;
3114                 next*) osname=next ;;
3115                 i386*)
3116                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3117                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3118                                 osname='sco'
3119                                 osvers=$tmp
3120                         elif $test -f /etc/kconfig; then
3121                                 osname=isc
3122                                 if test "$lns" = "$ln -s"; then
3123                                         osvers=4
3124                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3125                                         osvers=3
3126                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3127                                         osvers=2
3128                                 fi
3129                         fi
3130                         tmp=''
3131                         ;;
3132                 pc*)
3133                         if test -n "$DJGPP"; then
3134                                 osname=dos
3135                                 osvers=djgpp
3136                         fi
3137                         ;;
3138                 esac
3139
3140                 case "$1" in
3141                 aix) osname=aix
3142                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3143                         case "$tmp" in
3144                         # oslevel can fail with:
3145                         # oslevel: Unable to acquire lock.
3146                         *not\ found) osvers="$4"."$3" ;;
3147                         '<3240'|'<>3240') osvers=3.2.0 ;;
3148                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3149                         '=3250'|'>3250') osvers=3.2.5 ;;
3150                         *) osvers=$tmp;;
3151                         esac
3152                         ;;
3153                 bsd386) osname=bsd386
3154                         osvers=`$uname -r`
3155                         ;;
3156                 cygwin*) osname=cygwin
3157                         osvers="$3"
3158                         ;;
3159                 *dc.osx) osname=dcosx
3160                         osvers="$3"
3161                         ;;
3162                 dnix) osname=dnix
3163                         osvers="$3"
3164                         ;;
3165                 domainos) osname=apollo
3166                         osvers="$3"
3167                         ;;
3168                 dgux)   osname=dgux
3169                         osvers="$3"
3170                         ;;
3171                 dragonfly) osname=dragonfly
3172                         osvers="$3"
3173                         ;;
3174                 dynixptx*) osname=dynixptx
3175                         osvers=`echo "$4"|sed 's/^v//'`
3176                         ;;
3177                 freebsd) osname=freebsd
3178                         osvers="$3" ;;
3179                 genix)  osname=genix ;;
3180                 gnu)    osname=gnu
3181                         osvers="$3" ;;
3182                 hp*)    osname=hpux
3183                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3184                         ;;
3185                 irix*)  osname=irix
3186                         case "$3" in
3187                         4*) osvers=4 ;;
3188                         5*) osvers=5 ;;
3189                         *)      osvers="$3" ;;
3190                         esac
3191                         ;;
3192                 linux)  osname=linux
3193                         case "$3" in
3194                         *)      osvers="$3" ;;
3195                         esac
3196                         ;;
3197                 MiNT)   osname=mint
3198                         ;;
3199                 netbsd*) osname=netbsd
3200                         osvers="$3"
3201                         ;;
3202                 news-os) osvers="$3"
3203                         case "$3" in
3204                         4*) osname=newsos4 ;;
3205                         *) osname=newsos ;;
3206                         esac
3207                         ;;
3208                 next*) osname=next ;;
3209                 nonstop-ux) osname=nonstopux ;;
3210                 openbsd) osname=openbsd
3211                         osvers="$3"
3212                         ;;
3213                 os2)    osname=os2
3214                         osvers="$4"
3215                         ;;
3216                 POSIX-BC | posix-bc ) osname=posix-bc
3217                         osvers="$3"
3218                         ;;
3219                 powerux | power_ux | powermax_os | powermaxos | \
3220                 powerunix | power_unix) osname=powerux
3221                         osvers="$3"
3222                         ;;
3223                 qnx) osname=qnx
3224                         osvers="$4"
3225                         ;;
3226                 solaris) osname=solaris
3227                         case "$3" in
3228                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3229                         *)      osvers="$3" ;;
3230                         esac
3231                         ;;
3232                 sunos) osname=sunos
3233                         case "$3" in
3234                         5*) osname=solaris
3235                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3236                         *)      osvers="$3" ;;
3237                         esac
3238                         ;;
3239                 titanos) osname=titanos
3240                         case "$3" in
3241                         1*) osvers=1 ;;
3242                         2*) osvers=2 ;;
3243                         3*) osvers=3 ;;
3244                         4*) osvers=4 ;;
3245                         *)      osvers="$3" ;;
3246                         esac
3247                         ;;
3248                 ultrix) osname=ultrix
3249                         osvers="$3"
3250                         ;;
3251                 osf1|mls+)      case "$5" in
3252                                 alpha)
3253                                         osname=dec_osf
3254                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3255                                         case "$osvers" in
3256                                         [1-9].[0-9]*) ;;
3257                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3258                                         esac
3259                                         ;;
3260                         hp*)    osname=hp_osf1  ;;
3261                         mips)   osname=mips_osf1 ;;
3262                         esac
3263                         ;;
3264                 # UnixWare 7.1.2 is known as Open UNIX 8
3265                 openunix|unixware) osname=svr5
3266                         osvers="$4"
3267                         ;;
3268                 uts)    osname=uts
3269                         osvers="$3"
3270                         ;;
3271                 vos) osvers="$3"
3272                         ;;
3273                 $2) case "$osname" in
3274                         *isc*) ;;
3275                         *freebsd*) ;;
3276                         svr*)
3277                                 : svr4.x or possibly later
3278                                 case "svr$3" in
3279                                 ${osname}*)
3280                                         osname=svr$3
3281                                         osvers=$4
3282                                         ;;
3283                                 esac
3284                                 case "$osname" in
3285                                 svr4.0)
3286                                         : Check for ESIX
3287                                         if test -f /stand/boot ; then
3288                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3289                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3290                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3291                                                         if test -n "$isesix"; then
3292                                                                 osname=esix4
3293                                                         fi
3294                                                 fi
3295                                         fi
3296                                         ;;
3297                                 esac
3298                                 ;;
3299                         *)      if test -f /etc/systemid; then
3300                                         osname=sco
3301                                         set `echo $3 | $sed 's/\./ /g'` $4
3302                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3303                                                 osvers=$1.$2.$3
3304                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3305                                                 osvers=$1.$2
3306                                         elif $test -f $src/hints/sco_$1.sh; then
3307                                                 osvers=$1
3308                                         fi
3309                                 else
3310                                         case "$osname" in
3311                                         '') : Still unknown.  Probably a generic Sys V.
3312                                                 osname="sysv"
3313                                                 osvers="$3"
3314                                                 ;;
3315                                         esac
3316                                 fi
3317                                 ;;
3318                         esac
3319                         ;;
3320                 *)      case "$osname" in
3321                         '') : Still unknown.  Probably a generic BSD.
3322                                 osname="$1"
3323                                 osvers="$3"
3324                                 ;;
3325                         esac
3326                         ;;
3327                 esac
3328         else
3329                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3330                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3331                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3332                                 osname=news_os
3333                         fi
3334                         $rm -f UU/kernel.what
3335                 elif test -d c:/. -o -n "$is_os2" ; then
3336                         set X $myuname
3337                         osname=os2
3338                         osvers="$5"
3339                 fi
3340         fi
3341
3342         case "$targetarch" in
3343         '') ;;
3344         *)  hostarch=$osname
3345             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3346             osvers=''
3347             ;;
3348         esac
3349
3350         : Now look for a hint file osname_osvers, unless one has been
3351         : specified already.
3352         case "$hintfile" in
3353         ''|' ')
3354                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3355                 : Also try without trailing minor version numbers.
3356                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3357                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3358                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3359                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3360                 case "$file" in
3361                 '') dflt=none ;;
3362                 *)  case "$osvers" in
3363                         '') dflt=$file
3364                                 ;;
3365                         *)  if $test -f $src/hints/$file.sh ; then
3366                                         dflt=$file
3367                                 elif $test -f $src/hints/$xfile.sh ; then
3368                                         dflt=$xfile
3369                                 elif $test -f $src/hints/$xxfile.sh ; then
3370                                         dflt=$xxfile
3371                                 elif $test -f $src/hints/$xxxfile.sh ; then
3372                                         dflt=$xxxfile
3373                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3374                                         dflt=$xxxxfile
3375                                 elif $test -f "$src/hints/${osname}.sh" ; then
3376                                         dflt="${osname}"
3377                                 else
3378                                         dflt=none
3379                                 fi
3380                                 ;;
3381                         esac
3382                         ;;
3383                 esac
3384                 if $test -f Policy.sh ; then
3385                         case "$dflt" in
3386                         *Policy*) ;;
3387                         none) dflt="Policy" ;;
3388                         *) dflt="Policy $dflt" ;;
3389                         esac
3390                 fi
3391                 ;;
3392         *)
3393                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3394                 ;;
3395         esac
3396
3397         if $test -f Policy.sh ; then
3398                 $cat <<EOM
3399
3400 There's also a Policy hint file available, which should make the
3401 site-specific (policy) questions easier to answer.
3402 EOM
3403
3404         fi
3405
3406         $cat <<EOM
3407
3408 You may give one or more space-separated answers, or "none" if appropriate.
3409 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3410 previous run of Configure, you may specify it as well as or instead of
3411 OS-specific hints.  If hints are provided for your OS, you should use them:
3412 although Perl can probably be built without hints on many platforms, using
3413 hints often improve performance and may enable features that Configure can't
3414 set up on its own. If there are no hints that match your OS, specify "none";
3415 DO NOT give a wrong version or a wrong OS.
3416
3417 EOM
3418
3419         rp="Which of these apply, if any?"
3420         . UU/myread
3421         tans=$ans
3422         for file in $tans; do
3423                 if $test X$file = XPolicy -a -f Policy.sh; then
3424                         . Policy.sh
3425                         $cat Policy.sh >> UU/config.sh
3426                 elif $test -f $src/hints/$file.sh; then
3427                         . $src/hints/$file.sh
3428                         $cat $src/hints/$file.sh >> UU/config.sh
3429                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3430                         : nothing
3431                 else
3432                         : Give one chance to correct a possible typo.
3433                         echo "$file.sh does not exist"
3434                         dflt=$file
3435                         rp="hint to use instead?"
3436                         . UU/myread
3437                         for file in $ans; do
3438                                 if $test -f "$src/hints/$file.sh"; then
3439                                         . $src/hints/$file.sh
3440                                         $cat $src/hints/$file.sh >> UU/config.sh
3441                                 elif $test X$ans = X -o X$ans = Xnone ; then
3442                                         : nothing
3443                                 else
3444                                         echo "$file.sh does not exist -- ignored."
3445                                 fi
3446                         done
3447                 fi
3448         done
3449
3450         hint=recommended
3451         : Remember our hint file for later.
3452         if $test -f "$src/hints/$file.sh" ; then
3453                 hintfile="$file"
3454         else
3455                 hintfile=''
3456         fi
3457 fi
3458 cd UU
3459 ;;
3460 *)
3461         echo " "
3462         echo "Fetching default answers from $config_sh..." >&4
3463         tmp_n="$n"
3464         tmp_c="$c"
3465         cd ..
3466         cp $config_sh config.sh 2>/dev/null
3467         chmod +w config.sh
3468         . ./config.sh
3469         cd UU
3470         cp ../config.sh .
3471         n="$tmp_n"
3472         c="$tmp_c"
3473         hint=previous
3474         ;;
3475 esac
3476 test "$override" && . ./optdef.sh
3477
3478 : Restore computed paths
3479 for file in $loclist $trylist; do
3480         eval $file="\$_$file"
3481 done
3482
3483 cat << EOM
3484
3485 Configure uses the operating system name and version to set some defaults.
3486 The default value is probably right if the name rings a bell. Otherwise,
3487 since spelling matters for me, either accept the default or answer "none"
3488 to leave it blank.
3489
3490 EOM
3491 case "$osname" in
3492         ''|' ')
3493                 case "$hintfile" in
3494                 ''|' '|none) dflt=none ;;
3495                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3496                 esac
3497                 ;;
3498         *) dflt="$osname" ;;
3499 esac
3500 rp="Operating system name?"
3501 . ./myread
3502 case "$ans" in
3503 none)  osname='' ;;
3504 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3505 esac
3506 echo " "
3507 case "$osvers" in
3508         ''|' ')
3509                 case "$hintfile" in
3510                 ''|' '|none) dflt=none ;;
3511                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3512                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3513                         case "$dflt" in
3514                         ''|' ') dflt=none ;;
3515                         esac
3516                         ;;
3517                 esac
3518                 ;;
3519         *) dflt="$osvers" ;;
3520 esac
3521 rp="Operating system version?"
3522 . ./myread
3523 case "$ans" in
3524 none)  osvers='' ;;
3525 *) osvers="$ans" ;;
3526 esac
3527
3528
3529 . ./posthint.sh
3530
3531 : who configured the system
3532 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3533 case "$cf_by" in
3534 "")
3535         cf_by=`(logname) 2>/dev/null`
3536         case "$cf_by" in
3537         "")
3538                 cf_by=`(whoami) 2>/dev/null`
3539                 case "$cf_by" in
3540                 "") cf_by=unknown ;;
3541                 esac ;;
3542         esac ;;
3543 esac
3544
3545 : decide how portable to be.  Allow command line overrides.
3546 case "$d_portable" in
3547 "$undef") ;;
3548 *)      d_portable="$define" ;;
3549 esac
3550
3551 : set up shell script to do ~ expansion
3552 cat >filexp <<EOSS
3553 $startsh
3554 : expand filename
3555 case "\$1" in
3556  ~/*|~)
3557         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3558         ;;
3559  ~*)
3560         if $test -f /bin/csh; then
3561                 /bin/csh -f -c "glob \$1"
3562                 failed=\$?
3563                 echo ""
3564                 exit \$failed
3565         else
3566                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3567                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3568                 if $test ! -d "\$dir"; then
3569                         me=\`basename \$0\`
3570                         echo "\$me: can't locate home directory for: \$name" >&2
3571                         exit 1
3572                 fi
3573                 case "\$1" in
3574                 */*)
3575                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3576                         ;;
3577                 *)
3578                         echo \$dir
3579                         ;;
3580                 esac
3581         fi
3582         ;;
3583 *)
3584         echo \$1
3585         ;;
3586 esac
3587 EOSS
3588 chmod +x filexp
3589 $eunicefix filexp
3590
3591 : now set up to get a file name
3592 cat <<EOS >getfile
3593 $startsh
3594 EOS
3595 cat <<'EOSC' >>getfile
3596 tilde=''
3597 fullpath=''
3598 already=''
3599 skip=''
3600 none_ok=''
3601 exp_file=''
3602 nopath_ok=''
3603 orig_rp="$rp"
3604 orig_dflt="$dflt"
3605 case "$gfpth" in
3606 '') gfpth='.' ;;
3607 esac
3608
3609 case "$fn" in
3610 *\(*)
3611         : getfile will accept an answer from the comma-separated list
3612         : enclosed in parentheses even if it does not meet other criteria.
3613         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3614         fn=`echo $fn | sed 's/(.*)//'`
3615         ;;
3616 esac
3617
3618 case "$fn" in
3619 *:*)
3620         loc_file=`expr $fn : '.*:\(.*\)'`
3621         fn=`expr $fn : '\(.*\):.*'`
3622         ;;
3623 esac
3624
3625 case "$fn" in
3626 *~*) tilde=true;;
3627 esac
3628 case "$fn" in
3629 */*) fullpath=true;;
3630 esac
3631 case "$fn" in
3632 *+*) skip=true;;
3633 esac
3634 case "$fn" in
3635 *n*) none_ok=true;;
3636 esac
3637 case "$fn" in
3638 *e*) exp_file=true;;
3639 esac
3640 case "$fn" in
3641 *p*) nopath_ok=true;;
3642 esac
3643
3644 case "$fn" in
3645 *f*) type='File';;
3646 *d*) type='Directory';;
3647 *l*) type='Locate';;
3648 esac
3649
3650 what="$type"
3651 case "$what" in
3652 Locate) what='File';;
3653 esac
3654
3655 case "$exp_file" in
3656 '')
3657         case "$d_portable" in
3658         "$define") ;;
3659         *) exp_file=true;;
3660         esac
3661         ;;
3662 esac
3663
3664 cd ..
3665 while test "$type"; do
3666         redo=''
3667         rp="$orig_rp"
3668         dflt="$orig_dflt"
3669         case "$tilde" in
3670         true) rp="$rp (~name ok)";;
3671         esac
3672         . UU/myread
3673         if test -f UU/getfile.ok && \
3674                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3675         then
3676                 value="$ans"
3677                 ansexp="$ans"
3678                 break
3679         fi
3680         case "$ans" in
3681         none)
3682                 value=''
3683                 ansexp=''
3684                 case "$none_ok" in
3685                 true) type='';;
3686                 esac
3687                 ;;
3688         *)
3689                 case "$tilde" in
3690                 '') value="$ans"
3691                         ansexp="$ans";;
3692                 *)
3693                         value=`UU/filexp $ans`
3694                         case $? in
3695                         0)
3696                                 if test "$ans" != "$value"; then
3697                                         echo "(That expands to $value on this system.)"
3698                                 fi
3699                                 ;;
3700                         *) value="$ans";;
3701                         esac
3702                         ansexp="$value"
3703                         case "$exp_file" in
3704                         '') value="$ans";;
3705                         esac
3706                         ;;
3707                 esac
3708                 case "$fullpath" in
3709                 true)
3710                         case "$ansexp" in
3711                         /*) value="$ansexp" ;;
3712                         [a-zA-Z]:/*) value="$ansexp" ;;
3713                         *)
3714                                 redo=true
3715                                 case "$already" in
3716                                 true)
3717                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3718                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3719                                         ;;
3720                                 *)
3721                                 echo "Please give a full path name, starting with slash." >&4
3722                                         case "$tilde" in
3723                                         true)
3724                                 echo "Note that using ~name is ok provided it expands well." >&4
3725                                                 already=true
3726                                                 ;;
3727                                         esac
3728                                 esac
3729                                 ;;
3730                         esac
3731                         ;;
3732                 esac
3733                 case "$redo" in
3734                 '')
3735                         case "$type" in
3736                         File)
3737                                 for fp in $gfpth; do
3738                                         if test "X$fp" = X.; then
3739                                             pf="$ansexp"
3740                                         else    
3741                                             pf="$fp/$ansexp"
3742                                         fi
3743                                         if test -f "$pf"; then
3744                                                 type=''
3745                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3746                                         then
3747                                                 echo "($value is not a plain file, but that's ok.)"
3748                                                 type=''
3749                                         fi
3750                                         if test X"$type" = X; then
3751                                             value="$pf"
3752                                             break
3753                                         fi
3754                                 done
3755                                 ;;
3756                         Directory)
3757                                 for fp in $gfpth; do
3758                                         if test "X$fp" = X.; then
3759                                             dir="$ans"
3760                                             direxp="$ansexp"
3761                                         else    
3762                                             dir="$fp/$ansexp"
3763                                             direxp="$fp/$ansexp"
3764                                         fi
3765                                         if test -d "$direxp"; then
3766                                                 type=''
3767                                                 value="$dir"
3768                                                 break
3769                                         fi
3770                                 done
3771                                 ;;
3772                         Locate)
3773                                 if test -d "$ansexp"; then
3774                                         echo "(Looking for $loc_file in directory $value.)"
3775                                         value="$value/$loc_file"
3776                                         ansexp="$ansexp/$loc_file"
3777                                 fi
3778                                 if test -f "$ansexp"; then
3779                                         type=''
3780                                 fi
3781                                 case "$nopath_ok" in
3782                                 true)   case "$value" in
3783                                         */*) ;;
3784                                         *)      echo "Assuming $value will be in people's path."
3785                                                 type=''
3786                                                 ;;
3787                                         esac
3788                                         ;;
3789                                 esac
3790                                 ;;
3791                         esac
3792
3793                         case "$skip" in
3794                         true) type='';
3795                         esac
3796
3797                         case "$type" in
3798                         '') ;;
3799                         *)
3800                                 if test "$fastread" = yes; then
3801                                         dflt=y
3802                                 else
3803                                         dflt=n
3804                                 fi
3805                                 rp="$what $value doesn't exist.  Use that name anyway?"
3806                                 . UU/myread
3807                                 dflt=''
3808                                 case "$ans" in
3809                                 y*) type='';;
3810                                 *) echo " ";;
3811                                 esac
3812                                 ;;
3813                         esac
3814                         ;;
3815                 esac
3816                 ;;
3817         esac
3818 done
3819 cd UU
3820 ans="$value"
3821 rp="$orig_rp"
3822 dflt="$orig_dflt"
3823 rm -f getfile.ok
3824 test "X$gfpthkeep" != Xy && gfpth=""
3825 EOSC
3826
3827 : determine root of directory hierarchy where package will be installed.
3828 case "$prefix" in
3829 '')
3830         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3831         ;;
3832 *?/)
3833         dflt=`echo "$prefix" | sed 's/.$//'`
3834         ;;
3835 *)
3836         dflt="$prefix"
3837         ;;
3838 esac
3839 $cat <<EOM
3840
3841 By default, $package will be installed in $dflt/bin, manual pages
3842 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3843 installation directories. Typically this is something like /usr/local.
3844 If you wish to have binaries under /usr/bin but other parts of the
3845 installation under /usr/local, that's ok: you will be prompted
3846 separately for each of the installation directories, the prefix being
3847 only used to set the defaults.
3848
3849 EOM
3850 fn=d~
3851 rp='Installation prefix to use?'
3852 . ./getfile
3853 oldprefix=''
3854 case "$prefix" in
3855 '') ;;
3856 *)
3857         case "$ans" in
3858         "$prefix") ;;
3859         *) oldprefix="$prefix";;
3860         esac
3861         ;;
3862 esac
3863 prefix="$ans"
3864 prefixexp="$ansexp"
3865
3866 case "$afsroot" in
3867 '')     afsroot=/afs ;;
3868 *)      afsroot=$afsroot ;;
3869 esac
3870
3871 : is AFS running?
3872 echo " "
3873 case "$afs" in
3874 $define|true)   afs=true ;;
3875 $undef|false)   afs=false ;;
3876 *)      if test -d $afsroot; then
3877                 afs=true
3878         else
3879                 afs=false
3880         fi
3881         ;;
3882 esac
3883 if $afs; then
3884         echo "AFS may be running... I'll be extra cautious then..." >&4
3885 else
3886         echo "AFS does not seem to be running..." >&4
3887 fi
3888
3889 : determine installation prefix for where package is to be installed.
3890 if $afs; then 
3891 $cat <<EOM
3892
3893 Since you are running AFS, I need to distinguish the directory in which
3894 files will reside from the directory in which they are installed (and from
3895 which they are presumably copied to the former directory by occult means).
3896
3897 EOM
3898         case "$installprefix" in
3899         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3900         *) dflt="$installprefix";;
3901         esac
3902 else
3903 $cat <<EOM
3904
3905 In some special cases, particularly when building $package for distribution,
3906 it is convenient to distinguish the directory in which files should be
3907 installed from the directory ($prefix) in which they will
3908 eventually reside.  For most users, these two directories are the same.
3909
3910 EOM
3911         case "$installprefix" in
3912         '') dflt=$prefix ;;
3913         *) dflt=$installprefix;;
3914         esac
3915 fi
3916 fn=d~
3917 rp='What installation prefix should I use for installing files?'
3918 . ./getfile
3919 installprefix="$ans"
3920 installprefixexp="$ansexp"
3921
3922 : Perform the prefixexp/installprefixexp correction if necessary
3923 cat <<EOS >installprefix
3924 $startsh
3925 EOS
3926 cat <<'EOSC' >>installprefix
3927 : Change installation prefix, if necessary.
3928 if $test X"$prefix" != X"$installprefix"; then
3929     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3930 else
3931     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3932 fi
3933 EOSC
3934 chmod +x installprefix
3935 $eunicefix installprefix
3936
3937 : Set variables such as privlib and privlibexp from the output of ./getfile
3938 : performing the prefixexp/installprefixexp correction if necessary.
3939 cat <<EOS >setprefixvar
3940 $startsh
3941 EOS
3942 cat <<'EOSC' >>setprefixvar
3943 eval "${prefixvar}=\"\$ans\""
3944 eval "${prefixvar}exp=\"\$ansexp\""
3945 . ./installprefix
3946 EOSC
3947 chmod +x setprefixvar
3948 $eunicefix setprefixvar
3949
3950 : set up the script used to warn in case of inconsistency
3951 cat <<EOS >whoa
3952 $startsh
3953 EOS
3954 cat <<'EOSC' >>whoa
3955 dflt=y
3956 case "$hint" in
3957     recommended)
3958         case "$hintfile" in
3959         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3960                 ;;
3961         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
3962                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3963                 ;;
3964         esac
3965         ;;
3966     *)  echo " "
3967         echo "*** WHOA THERE!!! ***" >&4
3968         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3969         ;;
3970 esac
3971 rp="    Keep the $hint value?"
3972 . ./myread
3973 case "$ans" in
3974 y) td=$was; tu=$was;;
3975 esac
3976 EOSC
3977
3978 : function used to set $1 to $val
3979 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3980 case "$val$was" in
3981 $define$undef) . ./whoa; eval "$var=\$td";;
3982 $undef$define) . ./whoa; eval "$var=\$tu";;
3983 *) eval "$var=$val";;
3984 esac'
3985
3986 case "$usesocks" in
3987 $define|true|[yY]*)     dflt='y';;
3988 *) dflt='n';;
3989 esac
3990 cat <<EOM
3991
3992 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3993 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3994 to use the PerlIO abstraction layer, this will be implicitly selected.
3995
3996 If this doesn't make any sense to you, just accept the default '$dflt'.
3997 EOM
3998 rp='Build Perl for SOCKS?'
3999 . ./myread
4000 case "$ans" in
4001 y|Y)    val="$define" ;;     
4002 *)      val="$undef" ;;
4003 esac
4004 set usesocks
4005 eval $setvar
4006
4007 case "$usesocks" in
4008 $define|true|[yY]*) useperlio="$define";;
4009 esac
4010
4011 case "$useperlio" in
4012 $define|true|[yY]*|'')  dflt='y';;
4013 *) dflt='n';;
4014 esac
4015 cat <<EOM
4016
4017 Previous version of $package used the standard IO mechanisms as
4018 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4019 alternate IO mechanisms via the PerlIO abstraction layer, but the
4020 stdio mechanism is still available if needed.  The abstraction layer
4021 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4022 Using PerlIO with sfio may cause problems with some extension modules.
4023
4024 If this doesn't make any sense to you, just accept the default '$dflt'.
4025 EOM
4026 rp='Use the PerlIO abstraction layer?'
4027 . ./myread
4028 case "$ans" in
4029 y|Y) 
4030         val="$define"
4031         ;;
4032 *)      
4033         echo "Ok, doing things the stdio way."
4034         val="$undef"
4035         ;;
4036 esac
4037 set useperlio
4038 eval $setvar 
4039
4040 case "$usesocks" in
4041 $define|true|[yY]*)
4042         case "$useperlio" in
4043         $define|true|[yY]*) ;;
4044         *)      cat >&4 <<EOM
4045
4046 You are using the SOCKS proxy protocol library which means that you
4047 should also use the PerlIO layer.  You may be headed for trouble.
4048
4049 EOM
4050                 ;;
4051         esac
4052         ;;
4053 esac
4054
4055         
4056 : get the patchlevel
4057 echo " "
4058 echo "Getting the current patchlevel..." >&4
4059 if $test -r $rsrc/patchlevel.h;then
4060         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4061         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4062         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4063         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4064         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4065         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4066         perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
4067 else
4068         revision=0
4069         patchlevel=0
4070         subversion=0
4071         api_revision=0
4072         api_version=0
4073         api_subversion=0
4074         perl_patchlevel=0
4075         $echo "(You do not have patchlevel.h.  Eek.)"
4076 fi
4077 if $test -r $rsrc/.patch ; then
4078         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4079                 perl_patchlevel=`cat $rsrc/.patch`
4080         fi
4081 fi
4082 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4083 version_patchlevel_string="version $patchlevel subversion $subversion"
4084 case "$perl_patchlevel" in
4085 0|'') ;;
4086 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4087 esac
4088
4089 $echo "(You have $package $version_patchlevel_string.)"
4090
4091 case "$osname" in
4092 dos|vms)
4093         : XXX Should be a Configure test for double-dots in filenames.
4094         version=`echo $revision $patchlevel $subversion | \
4095                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4096         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4097                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4098         ;;
4099 *)
4100         version=`echo $revision $patchlevel $subversion | \
4101                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4102         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4103                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4104         ;;
4105 esac
4106 : Special case the 5.005_xx maintenance series, which used 5.005
4107 : without any subversion label as a subdirectory in $sitelib
4108 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4109         api_versionstring='5.005'
4110 fi
4111
4112 case "$usethreads" in
4113 $define|true|[yY]*)     dflt='y';;
4114 *)     # Catch case where user specified ithreads or 5005threads but
4115        # forgot -Dusethreads (A.D. 4/2002)
4116        case "$useithreads$use5005threads" in
4117        *$define*)      
4118                 case "$useperlio" in
4119                 "$define")      dflt='y' ;;
4120                 *)              dflt='n' ;;
4121                 esac
4122                 ;;
4123        *)       dflt='n';;
4124        esac
4125        ;;
4126 esac
4127 cat <<EOM
4128
4129 Perl can be built to take advantage of threads on some systems.
4130 To do so, Configure can be run with -Dusethreads.
4131
4132 Note that Perl built with threading support runs slightly slower
4133 and uses more memory than plain Perl. The current implementation
4134 is believed to be stable, but it is fairly new, and so should be
4135 treated with caution.
4136
4137 If this doesn't make any sense to you, just accept the default '$dflt'.
4138 EOM
4139 rp='Build a threading Perl?'
4140 . ./myread
4141 case "$ans" in
4142 y|Y)    val="$define" ;;
4143 *)      val="$undef" ;;
4144 esac
4145 set usethreads
4146 eval $setvar
4147
4148 if $test $patchlevel -lt 9; then
4149     case "$usethreads" in
4150     $define)
4151         $cat <<EOM
4152
4153 Since release 5.6, Perl has had two different threading implementations,
4154 the newer interpreter-based version (ithreads) with one interpreter per
4155 thread, and the older 5.005 version (5005threads).
4156 The 5005threads version is effectively unmaintained and will probably be
4157 removed in Perl 5.10, so there should be no need to build a Perl using it
4158 unless needed for backwards compatibility with some existing 5.005threads
4159 code.
4160
4161 EOM
4162         : Default to ithreads unless overridden on command line or with
4163         : old config.sh
4164         dflt='y'
4165         case "$use5005threads" in
4166                 $define|true|[yY]*) dflt='n';;
4167         esac
4168         case "$useithreads" in
4169                 $undef|false|[nN]*) dflt='n';;
4170         esac
4171         rp='Use the newer interpreter-based ithreads?'
4172         . ./myread
4173         case "$ans" in
4174         y|Y)    val="$define" ;;
4175         *)      val="$undef" ;;
4176         esac
4177         set useithreads
4178         eval $setvar
4179         : Now set use5005threads to the opposite value.
4180         case "$useithreads" in
4181         $define) val="$undef" ;;
4182         *) val="$define" ;;
4183         esac
4184         set use5005threads
4185         eval $setvar
4186         ;;
4187     *)
4188         useithreads="$undef"
4189         use5005threads="$undef"
4190         ;;
4191     esac
4192
4193     case "$useithreads$use5005threads" in
4194     "$define$define")
4195         $cat >&4 <<EOM
4196
4197 You cannot have both the ithreads and the 5.005 threads enabled
4198 at the same time.  Disabling the 5.005 threads since they are
4199 much less stable than the ithreads.
4200
4201 EOM
4202         use5005threads="$undef"
4203         ;;
4204     esac
4205
4206 else
4207 : perl-5.9.x and later
4208
4209     use5005threads="$undef"
4210     case "$usethreads" in
4211     $define)
4212         : Default to ithreads unless overridden on command line or with
4213         : old config.sh
4214         dflt='y'
4215         case "$useithreads" in
4216                 $undef|false|[nN]*) dflt='n';;
4217         esac
4218         rp='Use the newer interpreter-based ithreads?'
4219         . ./myread
4220         case "$ans" in
4221         y|Y)    val="$define" ;;
4222         *)      val="$undef" ;;
4223         esac
4224         set useithreads
4225         eval $setvar
4226         ;;
4227     *)
4228         useithreads="$undef"
4229         ;;
4230     esac
4231
4232 fi
4233
4234 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4235         cat >&4 <<EOF
4236 ***
4237 *** To build with ithreads you must also use the PerlIO layer.
4238 *** Cannot continue, aborting.
4239 ***
4240 EOF
4241         exit 1
4242 fi
4243
4244 case "$d_oldpthreads" in
4245 '')     : Configure tests would be welcome here.  For now, assume undef.
4246         val="$undef" ;;
4247 *)      val="$d_oldpthreads" ;;
4248 esac
4249 set d_oldpthreads
4250 eval $setvar
4251
4252
4253 : Look for a hint-file generated 'call-back-unit'.  If the
4254 : user has specified that a threading perl is to be built,
4255 : we may need to set or change some other defaults.
4256 if $test -f usethreads.cbu; then
4257     echo "Your platform has some specific hints regarding threaded builds, using them..."
4258     . ./usethreads.cbu
4259 else
4260     case "$usethreads" in
4261         "$define"|true|[yY]*)
4262                 $cat <<EOM
4263 (Your platform does not have any specific hints for threaded builds.
4264  Assuming POSIX threads, then.)
4265 EOM
4266         ;;
4267     esac
4268 fi
4269
4270 cat <<EOM
4271
4272 Perl can be built so that multiple Perl interpreters can coexist
4273 within the same Perl executable.
4274 EOM
4275
4276 case "$useithreads" in
4277 $define)
4278         cat <<EOM
4279 This multiple interpreter support is required for interpreter-based threads.
4280 EOM
4281         val="$define"
4282         ;;
4283 *)      case "$usemultiplicity" in
4284         $define|true|[yY]*)     dflt='y';;
4285         *) dflt='n';;
4286         esac
4287         echo " "
4288         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4289         rp='Build Perl for multiplicity?'
4290         . ./myread
4291         case "$ans" in
4292         y|Y)    val="$define" ;;
4293         *)      val="$undef" ;;
4294         esac
4295         ;;
4296 esac
4297 set usemultiplicity
4298 eval $setvar
4299
4300
4301 case "$usemorebits" in
4302 "$define"|true|[yY]*)
4303         use64bitint="$define"
4304         uselongdouble="$define"
4305         usemorebits="$define"
4306         ;;
4307 *)      usemorebits="$undef"
4308         ;;
4309 esac
4310
4311 : make some quick guesses about what we are up against
4312 echo " "
4313 $echo $n "Hmm...  $c"
4314 echo exit 1 >bsd
4315 echo exit 1 >usg
4316 echo exit 1 >v7
4317 echo exit 1 >osf1
4318 echo exit 1 >eunice
4319 echo exit 1 >xenix
4320 echo exit 1 >venix
4321 echo exit 1 >os2
4322 d_bsd="$undef"
4323 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4324 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4325 then
4326         echo "Looks kind of like an OSF/1 system, but we'll see..."
4327         echo exit 0 >osf1
4328 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4329         xxx=`./loc addbib blurfl $pth`
4330         if $test -f $xxx; then
4331         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4332                 echo exit 0 >bsd
4333                 echo exit 0 >usg
4334         else
4335                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4336                         echo "Looks kind of like an extended USG system, but we'll see..."
4337                 else
4338                         echo "Looks kind of like a USG system, but we'll see..."
4339                 fi
4340                 echo exit 0 >usg
4341         fi
4342 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4343         echo "Looks kind of like a BSD system, but we'll see..."
4344         d_bsd="$define"
4345         echo exit 0 >bsd
4346 else
4347         echo "Looks kind of like a Version 7 system, but we'll see..."
4348         echo exit 0 >v7
4349 fi
4350 case "$eunicefix" in
4351 *unixtovms*)
4352         $cat <<'EOI'
4353 There is, however, a strange, musty smell in the air that reminds me of
4354 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4355 EOI
4356         echo exit 0 >eunice
4357         d_eunice="$define"
4358 : it so happens the Eunice I know will not run shell scripts in Unix format
4359         ;;
4360 *)
4361         echo " "
4362         echo "Congratulations.  You aren't running Eunice."
4363         d_eunice="$undef"
4364         ;;
4365 esac
4366 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4367 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4368 : semicolon as a patch separator
4369 case "$p_" in
4370 :) ;;
4371 *)
4372         $cat <<'EOI'
4373 I have the feeling something is not exactly right, however...don't tell me...
4374 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4375 (Or you may be running DOS with DJGPP.)
4376 EOI
4377         echo exit 0 >os2
4378         ;;
4379 esac
4380 if test -f /xenix; then
4381         echo "Actually, this looks more like a XENIX system..."
4382         echo exit 0 >xenix
4383         d_xenix="$define"
4384 else
4385         echo " "
4386         echo "It's not Xenix..."
4387         d_xenix="$undef"
4388 fi
4389 chmod +x xenix
4390 $eunicefix xenix
4391 if test -f /venix; then
4392         echo "Actually, this looks more like a VENIX system..."
4393         echo exit 0 >venix
4394 else
4395         echo " "
4396         if ./xenix; then
4397                 : null
4398         else
4399                 echo "Nor is it Venix..."
4400         fi
4401 fi
4402 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4403 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4404 $rm -f foo
4405
4406 case "$cc" in
4407 '') dflt=cc;;
4408 *) dflt="$cc";;
4409 esac
4410 rp="Use which C compiler?"
4411 . ./myread
4412 cc="$ans"
4413
4414 : See if they have not cc but they do have gcc
4415 . ./trygcc
4416 : Look for a hint-file generated 'call-back-unit'.  Now that the
4417 : user has specified the compiler, we may need to set or change some
4418 : other defaults.
4419 if $test -f cc.cbu; then
4420     . ./cc.cbu
4421 fi
4422 . ./checkcc
4423
4424 echo " "
4425 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4426 $cat >try.c <<EOM
4427 #include <stdio.h>
4428 int main() {
4429 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4430 #ifdef __VERSION__
4431         printf("%s\n", __VERSION__);
4432 #else
4433         printf("%s\n", "1");
4434 #endif
4435 #endif
4436         return(0);
4437 }
4438 EOM
4439 if $cc -o try $ccflags $ldflags try.c; then
4440         gccversion=`$run ./try`
4441         case "$gccversion" in
4442         '') echo "You are not using GNU cc." ;;
4443         *)  echo "You are using GNU cc $gccversion."
4444             ccname=gcc
4445             ;;
4446         esac
4447 else
4448         echo " "
4449         echo "*** WHOA THERE!!! ***" >&4
4450         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4451         case "$knowitall" in
4452         '')
4453         echo "    You'd better start hunting for one and let me know about it." >&4
4454                 exit 1
4455                 ;;
4456         esac
4457 fi
4458 $rm -f try try.*
4459 case "$gccversion" in
4460 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4461 esac
4462 case "$gccversion" in
4463 '') gccosandvers='' ;;
4464 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4465    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4466    gccshortvers=''
4467    case "$gccosandvers" in
4468    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4469    $osname$osvers) ;; # looking good
4470    $osname*) cat <<EOM >&4
4471
4472 *** WHOA THERE!!! ***
4473
4474     Your gcc has not been compiled for the exact release of
4475     your operating system ($gccosandvers versus $osname$osvers).
4476
4477     In general it is a good idea to keep gcc synchronized with
4478     the operating system because otherwise serious problems
4479     may ensue when trying to compile software, like Perl.
4480
4481     I'm trying to be optimistic here, though, and will continue.
4482     If later during the configuration and build icky compilation
4483     problems appear (headerfile conflicts being the most common
4484     manifestation), I suggest reinstalling the gcc to match
4485     your operating system release.
4486
4487 EOM
4488       ;;
4489    *) gccosandvers='' ;; # failed to parse, better be silent
4490    esac
4491    ;;
4492 esac
4493 case "$ccname" in
4494 '') ccname="$cc" ;;
4495 esac
4496
4497 # gcc 3.* complain about adding -Idirectories that they already know about,
4498 # so we will take those off from locincpth.
4499 case "$gccversion" in
4500 3*)
4501     echo "main(){}">try.c
4502     for incdir in $locincpth; do
4503        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4504              grep '^c[cp]p*[01]: warning: changing search order '`
4505        if test "X$warn" != X; then
4506            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4507        fi
4508     done
4509     $rm -f try try.*
4510 esac
4511
4512 : What should the include directory be ?
4513 echo " "
4514 $echo $n "Hmm...  $c"
4515 dflt='/usr/include'
4516 incpath=''
4517 mips_type=''
4518 if $test -f /bin/mips && /bin/mips; then
4519         echo "Looks like a MIPS system..."
4520         $cat >usr.c <<'EOCP'
4521 #ifdef SYSTYPE_BSD43
4522 /bsd43
4523 #endif
4524 EOCP
4525         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4526                 dflt='/bsd43/usr/include'
4527                 incpath='/bsd43'
4528                 mips_type='BSD 4.3'
4529         else
4530                 mips_type='System V'
4531         fi
4532         $rm -f usr.c usr.out
4533         echo "and you're compiling with the $mips_type compiler and libraries."
4534         xxx_prompt=y
4535         echo "exit 0" >mips
4536 else
4537         echo "Doesn't look like a MIPS system."
4538         xxx_prompt=n
4539         echo "exit 1" >mips
4540 fi
4541 chmod +x mips
4542 $eunicefix mips
4543 case "$usrinc" in
4544 '') ;;
4545 *) dflt="$usrinc";;
4546 esac
4547 case "$xxx_prompt" in
4548 y)      fn=d/
4549         echo " "
4550         rp='Where are the include files you want to use?'
4551         . ./getfile
4552         usrinc="$ans"
4553         ;;
4554 *)      usrinc="$dflt"
4555         ;;
4556 esac
4557
4558 : see how we invoke the C preprocessor
4559 echo " "
4560 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4561 cat <<'EOT' >testcpp.c
4562 #define ABC abc
4563 #define XYZ xyz
4564 ABC.XYZ
4565 EOT
4566 cd ..
4567 if test ! -f cppstdin; then
4568         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4569                 # AIX cc -E doesn't show the absolute headerfile
4570                 # locations but we'll cheat by using the -M flag.
4571                 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
4572         else
4573                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4574         fi
4575 else
4576         echo "Keeping your $hint cppstdin wrapper."
4577 fi
4578 chmod 755 cppstdin
4579 wrapper=`pwd`/cppstdin
4580 ok='false'
4581 cd UU
4582
4583 if $test "X$cppstdin" != "X" && \
4584         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4585         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4586 then
4587         echo "You used to use $cppstdin $cppminus so we'll use that again."
4588         case "$cpprun" in
4589         '') echo "But let's see if we can live without a wrapper..." ;;
4590         *)
4591                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4592                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4593                 then
4594                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4595                         ok='true'
4596                 else
4597                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4598                 fi
4599                 ;;
4600         esac
4601 else
4602         case "$cppstdin" in
4603         '') ;;
4604         *)
4605                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4606                 ;;
4607         esac
4608 fi
4609
4610 if $ok; then
4611         : nothing
4612 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4613         $cc -E <testcpp.c >testcpp.out 2>&1; \
4614         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4615         echo "Yup, it does."
4616         x_cpp="$cc -E"
4617         x_minus='';
4618 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4619         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4620         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4621         echo "Yup, it does."
4622         x_cpp="$cc -E"
4623         x_minus='-';
4624 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4625         $cc -P <testcpp.c >testcpp.out 2>&1; \
4626         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4627         echo "Yipee, that works!"
4628         x_cpp="$cc -P"
4629         x_minus='';
4630 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4631         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4632         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4633         echo "At long last!"
4634         x_cpp="$cc -P"
4635         x_minus='-';
4636 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4637         $cpp <testcpp.c >testcpp.out 2>&1; \
4638         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4639         echo "It works!"
4640         x_cpp="$cpp"
4641         x_minus='';
4642 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4643         $cpp - <testcpp.c >testcpp.out 2>&1; \
4644         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4645         echo "Hooray, it works!  I was beginning to wonder."
4646         x_cpp="$cpp"
4647         x_minus='-';
4648 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4649         $wrapper <testcpp.c >testcpp.out 2>&1; \
4650         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4651         x_cpp="$wrapper"
4652         x_minus=''
4653         echo "Eureka!"
4654 else
4655         dflt=''
4656         rp="No dice.  I can't find a C preprocessor.  Name one:"
4657         . ./myread
4658         x_cpp="$ans"
4659         x_minus=''
4660         $x_cpp <testcpp.c >testcpp.out 2>&1
4661         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4662                 echo "OK, that will do." >&4
4663         else
4664 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4665                 exit 1
4666         fi
4667 fi
4668
4669 case "$ok" in
4670 false)
4671         cppstdin="$x_cpp"
4672         cppminus="$x_minus"
4673         cpprun="$x_cpp"
4674         cpplast="$x_minus"
4675         set X $x_cpp
4676         shift
4677         case "$1" in
4678         "$cpp")
4679                 echo "Perhaps can we force $cc -E using a wrapper..."
4680                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4681                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4682                 then
4683                         echo "Yup, we can."
4684                         cppstdin="$wrapper"
4685                         cppminus='';
4686                 else
4687                         echo "Nope, we'll have to live without it..."
4688                 fi
4689                 ;;
4690         esac
4691         case "$cpprun" in
4692         "$wrapper")
4693                 cpprun=''
4694                 cpplast=''
4695                 ;;
4696         esac
4697         ;;
4698 esac
4699
4700 case "$cppstdin" in
4701 "$wrapper"|'cppstdin') ;;
4702 *) $rm -f $wrapper;;
4703 esac
4704 $rm -f testcpp.c testcpp.out
4705
4706 : Set private lib path
4707 case "$plibpth" in
4708 '') if ./mips; then
4709                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4710         fi;;
4711 esac
4712 case "$libpth" in
4713 ' ') dlist='';;
4714 '') dlist="$loclibpth $plibpth $glibpth";;
4715 *) dlist="$libpth";;
4716 esac
4717
4718 : Now check and see which directories actually exist, avoiding duplicates
4719 libpth=''
4720 for xxx in $dlist
4721 do
4722     if $test -d $xxx; then
4723                 case " $libpth " in
4724                 *" $xxx "*) ;;
4725                 *) libpth="$libpth $xxx";;
4726                 esac
4727     fi
4728 done
4729 $cat <<'EOM'
4730
4731 Some systems have incompatible or broken versions of libraries.  Among
4732 the directories listed in the question below, please remove any you
4733 know not to be holding relevant libraries, and add any that are needed.
4734 Say "none" for none.
4735
4736 EOM
4737 case "$libpth" in
4738 '') dflt='none';;
4739 *)
4740         set X $libpth
4741         shift
4742         dflt=${1+"$@"}
4743         ;;
4744 esac
4745 rp="Directories to use for library searches?"
4746 . ./myread
4747 case "$ans" in
4748 none) libpth=' ';;
4749 *) libpth="$ans";;
4750 esac
4751
4752 : compute shared library extension
4753 case "$so" in
4754 '')
4755         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4756                 dflt='sl'
4757         else
4758                 dflt='so'
4759         fi
4760         ;;
4761 *) dflt="$so";;
4762 esac
4763 $cat <<EOM
4764
4765 On some systems, shared libraries may be available.  Answer 'none' if
4766 you want to suppress searching of shared libraries for the remainder
4767 of this configuration.
4768
4769 EOM
4770 rp='What is the file extension used for shared libraries?'
4771 . ./myread
4772 so="$ans"
4773
4774 : Define several unixisms.
4775 : Hints files or command line option can be used to override them.
4776 : The convoluted testing is in case hints files set either the old
4777 : or the new name.
4778 case "$_exe" in
4779 '')     case "$exe_ext" in
4780         '')     ;;
4781         *)      _exe="$exe_ext" ;;
4782         esac
4783         ;;
4784 esac
4785 case "$_a" in
4786 '')     case "$lib_ext" in
4787     '') _a='.a';;
4788         *)      _a="$lib_ext" ;;
4789         esac
4790         ;;
4791 esac
4792 case "$_o" in
4793 '') case "$obj_ext" in
4794         '')     _o='.o';;
4795         *)      _o="$obj_ext";;
4796         esac
4797         ;;
4798 esac
4799 case "$p_" in
4800 '') case "$path_sep" in
4801         '')     p_=':';;
4802         *)      p_="$path_sep";;
4803         esac
4804         ;;
4805 esac
4806 exe_ext=$_exe
4807 lib_ext=$_a
4808 obj_ext=$_o
4809 path_sep=$p_
4810
4811 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4812
4813 : Which makefile gets called first.  This is used by make depend.
4814 case "$firstmakefile" in
4815 '') firstmakefile='makefile';;
4816 esac
4817
4818 case "$ccflags" in
4819 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4820 esac
4821
4822 case "$uselongdouble" in
4823 $define|true|[yY]*)     dflt='y';;
4824 *) dflt='n';;
4825 esac
4826 cat <<EOM
4827
4828 Perl can be built to take advantage of long doubles which
4829 (if available) may give more accuracy and range for floating point numbers.
4830
4831 If this doesn't make any sense to you, just accept the default '$dflt'.
4832 EOM
4833 rp='Try to use long doubles if available?'
4834 . ./myread
4835 case "$ans" in
4836 y|Y)    val="$define"   ;;
4837 *)      val="$undef"    ;;
4838 esac
4839 set uselongdouble
4840 eval $setvar
4841
4842 case "$uselongdouble" in
4843 true|[yY]*) uselongdouble="$define" ;;
4844 esac
4845
4846 : Look for a hint-file generated 'call-back-unit'.  If the
4847 : user has specified that long doubles should be used,
4848 : we may need to set or change some other defaults.
4849 if $test -f uselongdouble.cbu; then
4850     echo "Your platform has some specific hints regarding long doubles, using them..."
4851     . ./uselongdouble.cbu
4852 else
4853     case "$uselongdouble" in
4854         $define)
4855                 $cat <<EOM
4856 (Your platform does not have any specific hints for long doubles.)
4857 EOM
4858         ;;
4859     esac
4860 fi
4861
4862 : Looking for optional libraries
4863 echo " "
4864 echo "Checking for optional libraries..." >&4
4865 case "$libs" in
4866 ' '|'') dflt='';;
4867 *) dflt="$libs";;
4868 esac
4869 case "$libswanted" in
4870 '') libswanted='c_s';;
4871 esac
4872 case "$usesocks" in
4873 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4874 esac
4875 libsfound=''
4876 libsfiles=''
4877 libsdirs=''
4878 libspath=''
4879 for thisdir in $libpth $xlibpth; do
4880   test -d $thisdir && libspath="$libspath $thisdir"
4881 done
4882 for thislib in $libswanted; do
4883         for thisdir in $libspath; do
4884             xxx=''
4885             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4886                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4887                 $test -f "$xxx" && eval $libscheck
4888                 $test -f "$xxx" && libstyle=shared
4889             fi
4890             if test ! -f "$xxx"; then
4891                 xxx=$thisdir/lib$thislib.$so
4892                 $test -f "$xxx" && eval $libscheck
4893                 $test -f "$xxx" && libstyle=shared
4894             fi  
4895             if test ! -f "$xxx"; then
4896                 xxx=$thisdir/lib$thislib$_a
4897                 $test -f "$xxx" && eval $libscheck
4898                 $test -f "$xxx" && libstyle=static
4899             fi
4900             if test ! -f "$xxx"; then
4901                 xxx=$thisdir/$thislib$_a
4902                 $test -f "$xxx" && eval $libscheck
4903                 $test -f "$xxx" && libstyle=static
4904             fi
4905             if test ! -f "$xxx"; then
4906                 xxx=$thisdir/lib${thislib}_s$_a
4907                 $test -f "$xxx" && eval $libscheck
4908                 $test -f "$xxx" && libstyle=static
4909                 $test -f "$xxx" && thislib=${thislib}_s
4910             fi
4911             if test ! -f "$xxx"; then
4912                 xxx=$thisdir/Slib$thislib$_a
4913                 $test -f "$xxx" && eval $libscheck
4914                 $test -f "$xxx" && libstyle=static
4915             fi
4916             if $test -f "$xxx"; then
4917                 case "$libstyle" in
4918                 shared) echo "Found -l$thislib (shared)." ;;
4919                 static) echo "Found -l$thislib." ;;
4920                 *)      echo "Found -l$thislib ($libstyle)." ;;
4921                 esac
4922                 case " $dflt " in
4923                 *"-l$thislib "*);;
4924                 *) dflt="$dflt -l$thislib"
4925                    libsfound="$libsfound $xxx"
4926                    yyy=`basename $xxx`
4927                    libsfiles="$libsfiles $yyy"
4928                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4929                    case " $libsdirs " in
4930                    *" $yyy "*) ;;
4931                    *) libsdirs="$libsdirs $yyy" ;;
4932                    esac
4933                    ;;
4934                 esac
4935                 break
4936             fi  
4937         done
4938         if $test ! -f "$xxx"; then
4939             echo "No -l$thislib."
4940         fi
4941 done
4942 set X $dflt
4943 shift
4944 dflt="$*"
4945 case "$libs" in
4946 '') dflt="$dflt";;
4947 *) dflt="$libs";;
4948 esac
4949 case "$dflt" in
4950 ' '|'') dflt='none';;
4951 esac
4952
4953 $cat <<EOM
4954
4955 In order to compile $package on your machine, a number of libraries
4956 are usually needed.  Include any other special libraries here as well.
4957 Say "none" for none.  The default list is almost always right.
4958 EOM
4959
4960 echo " "
4961 rp="What libraries to use?"
4962 . ./myread
4963 case "$ans" in
4964 none) libs=' ';;
4965 *) libs="$ans";;
4966 esac
4967
4968 : determine optimization, if desired, or use for debug flag also
4969 case "$optimize" in
4970 ' '|$undef) dflt='none';;
4971 '') dflt='-O';;
4972 *) dflt="$optimize";;
4973 esac
4974 $cat <<EOH
4975
4976 By default, $package compiles with the -O flag to use the optimizer.
4977 Alternately, you might want to use the symbolic debugger, which uses
4978 the -g flag (on traditional Unix systems).  Either flag can be
4979 specified here.  To use neither flag, specify the word "none".
4980
4981 EOH
4982 rp="What optimizer/debugger flag should be used?"
4983 . ./myread
4984 optimize="$ans"
4985 case "$optimize" in
4986 'none') optimize=" ";;
4987 esac
4988
4989 : Check what DEBUGGING is required from the command line
4990 : -DEBUGGING      or -DDEBUGGING or
4991 : -DEBUGGING=both                       = -g + -DDEBUGGING
4992 : -DEBUGGING=-g   or -Doptimize=-g      = -g
4993 : -DEBUGGING=none or -UDEBUGGING        =
4994 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
4995 case "$EBUGGING" in
4996 '')     ;;
4997 *)      DEBUGGING=$EBUGGING ;;
4998 esac
4999
5000 case "$DEBUGGING" in
5001 -g|both|$define)
5002     case "$optimize" in
5003         *-g*) ;;
5004         *)    optimize="$optimize -g" ;;
5005     esac ;;
5006 none|$undef)
5007     case "$optimize" in
5008         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5009                 shift
5010                 optimize="$*"
5011                 ;;
5012     esac ;;
5013 esac
5014
5015 dflt=''
5016 case "$DEBUGGING" in
5017 both|$define) dflt='-DDEBUGGING'
5018 esac
5019
5020 : We will not override a previous value, but we might want to
5021 : augment a hint file
5022 case "$hint" in
5023 default|recommended)
5024         case "$gccversion" in
5025         1*) dflt="$dflt -fpcc-struct-return" ;;
5026         esac
5027         case "$optimize:$DEBUGGING" in
5028         *-g*:old) dflt="$dflt -DDEBUGGING";;
5029         esac
5030         case "$gccversion" in
5031         2*) if test -d /etc/conf/kconfig.d &&
5032                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5033                 then
5034                         # Interactive Systems (ISC) POSIX mode.
5035                         dflt="$dflt -posix"
5036                 fi
5037                 ;;
5038         esac
5039         case "$gccversion" in
5040         1*) ;;
5041         2.[0-8]*) ;;
5042         ?*)     echo " "
5043                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
5044                 echo 'int main(void) { return 0; }' > gcctest.c
5045                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
5046                         echo "Yes, it does." 2>&1
5047                         case "$ccflags" in
5048                         *strict-aliasing*)
5049                                 echo "Leaving current flags $ccflags alone." 2>&1
5050                                 ;;
5051                         *) dflt="$dflt -fno-strict-aliasing" ;;
5052                         esac
5053                 else
5054                         echo "Nope, it doesn't, but that's ok." 2>&1
5055                 fi
5056                 ;;
5057         esac
5058         # For gcc, adding -pipe speeds up compilations for some, but apparently
5059         # some assemblers can't read from stdin.  (It also slows down compilations
5060         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5061         case "$gccversion" in
5062         ?*)     echo " "
5063                 echo "Checking if your compiler accepts -pipe" 2>&1
5064                 echo 'int main(void) { return 0; }' > gcctest.c
5065                 if $cc -pipe -o gcctest gcctest.c; then
5066                         echo "Yes, it does." 2>&1
5067                         case "$ccflags" in
5068                         *-pipe*)
5069                                 echo "Leaving current flags $ccflags alone." 2>&1
5070                                 ;;
5071                         *) dflt="$dflt -pipe" ;;
5072                         esac
5073                 else
5074                         echo "Nope, it doesn't, but that's ok." 2>&1
5075                 fi
5076                 ;;
5077         esac
5078         ;;
5079 esac
5080
5081 case "$mips_type" in
5082 *BSD*|'') inclwanted="$locincpth $usrinc";;
5083 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5084 esac
5085 for thisincl in $inclwanted; do
5086         if $test -d $thisincl; then
5087                 if $test x$thisincl != x$usrinc; then
5088                         case "$dflt" in
5089                         *" -I$thisincl "*);;
5090                         *) dflt="$dflt -I$thisincl ";;
5091                         esac
5092                 fi
5093         fi
5094 done
5095
5096 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5097         xxx=true;
5098 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5099         xxx=true;
5100 else
5101         xxx=false;
5102 fi;
5103 if $xxx; then
5104         case "$dflt" in
5105         *$2*);;
5106         *) dflt="$dflt -D$2";;
5107         esac;
5108 fi'
5109
5110 set signal.h LANGUAGE_C; eval $inctest
5111
5112 case "$usesocks" in
5113 $define)
5114         ccflags="$ccflags -DSOCKS"
5115         ;;
5116 esac
5117
5118 case "$hint" in
5119 default|recommended) dflt="$ccflags $dflt" ;;
5120 *) dflt="$ccflags";;
5121 esac
5122
5123 case "$dflt" in
5124 ''|' ') dflt=none;;
5125 esac
5126
5127 $cat <<EOH
5128
5129 Your C compiler may want other flags.  For this question you should include
5130 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5131 but you should NOT include libraries or ld flags like -lwhatever.  If you
5132 want $package to honor its debug switch, you should include -DDEBUGGING here.
5133 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5134
5135 To use no flags, specify the word "none".
5136
5137 EOH
5138 set X $dflt
5139 shift
5140 dflt=${1+"$@"}
5141 rp="Any additional cc flags?"
5142 . ./myread
5143 case "$ans" in
5144 none) ccflags='';;
5145 *) ccflags="$ans";;
5146 esac
5147
5148 : the following weeds options from ccflags that are of no interest to cpp
5149 case "$cppflags" in
5150 '') cppflags="$ccflags" ;;
5151 *)  cppflags="$cppflags $ccflags" ;;
5152 esac
5153 case "$gccversion" in
5154 1*) cppflags="$cppflags -D__GNUC__"
5155 esac
5156 case "$mips_type" in
5157 '');;
5158 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5159 esac
5160 case "$cppflags" in
5161 '');;
5162 *)
5163         echo " "
5164         echo "Let me guess what the preprocessor flags are..." >&4
5165         set X $cppflags
5166         shift
5167         cppflags=''
5168         $cat >cpp.c <<'EOM'
5169 #define BLURFL foo
5170
5171 BLURFL xx LFRULB
5172 EOM
5173         previous=''
5174         for flag in $*
5175         do
5176                 case "$flag" in
5177                 -*) ftry="$flag";;
5178                 *) ftry="$previous $flag";;
5179                 esac
5180                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5181                         >cpp1.out 2>/dev/null && \
5182                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5183                         >cpp2.out 2>/dev/null && \
5184                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5185                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5186                 then
5187                         cppflags="$cppflags $ftry"
5188                         previous=''
5189                 else
5190                         previous="$flag"
5191                 fi
5192         done
5193         set X $cppflags
5194         shift
5195         cppflags=${1+"$@"}
5196         case "$cppflags" in
5197         *-*)  echo "They appear to be: $cppflags";;
5198         esac
5199         $rm -f cpp.c cpp?.out
5200         ;;
5201 esac
5202
5203 : flags used in final linking phase
5204 case "$ldflags" in
5205 '') if ./venix; then
5206                 dflt='-i -z'
5207         else
5208                 dflt=''
5209         fi
5210         case "$ccflags" in
5211         *-posix*) dflt="$dflt -posix" ;;
5212         esac
5213         ;;
5214 *) dflt="$ldflags";;
5215 esac
5216
5217 : Try to guess additional flags to pick up local libraries.
5218 for thislibdir in $libpth; do
5219         case " $loclibpth " in
5220         *" $thislibdir "*)
5221                 case "$dflt " in
5222                 *"-L$thislibdir "*) ;;
5223                 *)  dflt="$dflt -L$thislibdir" ;;
5224                 esac
5225                 ;;
5226         esac
5227 done
5228
5229 case "$dflt" in
5230 '') dflt='none' ;;
5231 esac
5232
5233 $cat <<EOH
5234
5235 Your C linker may need flags.  For this question you should
5236 include -L/whatever and any other flags used by the C linker, but you
5237 should NOT include libraries like -lwhatever.
5238
5239 Make sure you include the appropriate -L/path flags if your C linker
5240 does not normally search all of the directories you specified above,
5241 namely
5242         $libpth
5243 To use no flags, specify the word "none".
5244
5245 EOH
5246
5247 rp="Any additional ld flags (NOT including libraries)?"
5248 . ./myread
5249 case "$ans" in
5250 none) ldflags='';;
5251 *) ldflags="$ans";;
5252 esac
5253 rmlist="$rmlist pdp11"
5254
5255 : coherency check
5256 echo " "
5257 echo "Checking your choice of C compiler and flags for coherency..." >&4
5258 $cat > try.c <<'EOF'
5259 #include <stdio.h>
5260 int main() { printf("Ok\n"); return(0); }
5261 EOF
5262 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5263 shift
5264 $cat >try.msg <<'EOM'
5265 I've tried to compile and run the following simple program:
5266
5267 EOM
5268 $cat try.c >> try.msg
5269
5270 $cat >> try.msg <<EOM
5271
5272 I used the command:
5273
5274         $*
5275         $run ./try
5276
5277 and I got the following output:
5278
5279 EOM
5280 dflt=y
5281 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5282         if $sh -c "$run ./try" >>try.msg 2>&1; then
5283                 xxx=`$run ./try`
5284                 case "$xxx" in
5285                 "Ok") dflt=n ;;
5286                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5287                         case " $libs " in
5288                         *" -lsfio "*)
5289                                 cat >> try.msg <<'EOQS'
5290 If $libs contains -lsfio, and sfio is mis-configured, then it
5291 sometimes (apparently) runs and exits with a 0 status, but with no
5292 output!  It may have to do with sfio's use of _exit vs. exit.
5293
5294 EOQS
5295                                 rp="You have a big problem.  Shall I abort Configure"
5296                                 dflt=y
5297                                 ;;
5298                         esac
5299                         ;;
5300                 esac
5301         else
5302                 echo "The program compiled OK, but exited with status $?." >>try.msg
5303                 rp="You have a problem.  Shall I abort Configure"
5304                 dflt=y
5305         fi
5306 else
5307         echo "I can't compile the test program." >>try.msg
5308         rp="You have a BIG problem.  Shall I abort Configure"
5309         dflt=y
5310 fi
5311 case "$dflt" in
5312 y)
5313         $cat try.msg >&4
5314         case "$knowitall" in
5315         '')
5316                 echo "(The supplied flags or libraries might be incorrect.)"
5317                 ;;
5318         *) dflt=n;;
5319         esac
5320         echo " "
5321         . ./myread
5322         case "$ans" in
5323         n*|N*) ;;
5324         *)      echo "Ok.  Stopping Configure." >&4
5325                 exit 1
5326                 ;;
5327         esac
5328         ;;
5329 n) echo "OK, that should do.";;
5330 esac
5331 $rm_try
5332
5333 : define a shorthand compile call
5334 compile='
5335 mc_file=$1;
5336 shift;
5337 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5338 : define a shorthand compile call for compilations that should be ok.
5339 compile_ok='
5340 mc_file=$1;
5341 shift;
5342 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5343
5344 : determine filename position in cpp output
5345 echo " "
5346 echo "Computing filename position in cpp output for #include directives..." >&4
5347 case "$osname" in
5348 vos) testaccess=-e ;;
5349 *)   testaccess=-r ;;
5350 esac
5351 echo '#include <stdio.h>' > foo.c
5352 $cat >fieldn <<EOF
5353 $startsh
5354 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5355 $grep '^[       ]*#.*stdio\.h' | \
5356 while read cline; do
5357         pos=1
5358         set \$cline
5359         while $test \$# -gt 0; do
5360                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5361                         echo "\$pos"
5362                         exit 0
5363                 fi
5364                 shift
5365                 pos=\`expr \$pos + 1\`
5366         done
5367 done
5368 EOF
5369 chmod +x fieldn
5370 fieldn=`./fieldn`
5371 $rm -f foo.c fieldn
5372 case $fieldn in
5373 '') pos='???';;
5374 1) pos=first;;
5375 2) pos=second;;
5376 3) pos=third;;
5377 *) pos="${fieldn}th";;
5378 esac
5379 echo "Your cpp writes the filename in the $pos field of the line."
5380
5381 case "$osname" in
5382 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5383 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5384 *)   cppfilter='' ;;
5385 esac
5386 : locate header file
5387 $cat >findhdr <<EOF
5388 $startsh
5389 wanted=\$1
5390 name=''
5391 for usrincdir in $usrinc
5392 do
5393         if test -f \$usrincdir/\$wanted; then
5394                 echo "\$usrincdir/\$wanted"
5395                 exit 0
5396         fi
5397 done
5398 awkprg='{ print \$$fieldn }'
5399 echo "#include <\$wanted>" > foo\$\$.c
5400 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5401 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5402 while read cline; do
5403         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5404         case "\$name" in
5405         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5406         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5407         *) exit 2;;
5408         esac;
5409 done;
5410 #
5411 # status = 0: grep returned 0 lines, case statement not executed
5412 # status = 1: headerfile found
5413 # status = 2: while loop executed, no headerfile found
5414 #
5415 status=\$?
5416 $rm -f foo\$\$.c;
5417 if test \$status -eq 1; then
5418         exit 0;
5419 fi
5420 exit 1
5421 EOF
5422 chmod +x findhdr
5423
5424 : define an alternate in-header-list? function
5425 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5426 cont=true; xxf="echo \"<\$1> found.\" >&4";
5427 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5428 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5429 esac;
5430 case $# in 4) instead=instead;; *) instead="at last";; esac;
5431 while $test "$cont"; do
5432         xxx=`./findhdr $1`
5433         var=$2; eval "was=\$$2";
5434         if $test "$xxx" && $test -r "$xxx";
5435         then eval $xxf;
5436         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5437                 cont="";
5438         else eval $xxnf;
5439         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5440         set $yyy; shift; shift; yyy=$@;
5441         case $# in 0) cont="";;
5442         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5443                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5444         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5445                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5446         esac;
5447 done;
5448 while $test "$yyy";
5449 do set $yyy; var=$2; eval "was=\$$2";
5450         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5451         set $yyy; shift; shift; yyy=$@;
5452 done'
5453
5454 : see if stdlib is available
5455 set stdlib.h i_stdlib
5456 eval $inhdr
5457
5458 : check for lengths of integral types
5459 echo " "
5460 case "$intsize" in
5461 '')
5462         echo "Checking to see how big your integers are..." >&4
5463         $cat >try.c <<EOCP
5464 #include <stdio.h>
5465 #$i_stdlib I_STDLIB
5466 #ifdef I_STDLIB
5467 #include <stdlib.h>
5468 #endif
5469 int main()
5470 {
5471         printf("intsize=%d;\n", (int)sizeof(int));
5472         printf("longsize=%d;\n", (int)sizeof(long));
5473         printf("shortsize=%d;\n", (int)sizeof(short));
5474         exit(0);
5475 }
5476 EOCP
5477         set try
5478         if eval $compile_ok && $run ./try > /dev/null; then
5479                 eval `$run ./try`
5480                 echo "Your integers are $intsize bytes long."
5481                 echo "Your long integers are $longsize bytes long."
5482                 echo "Your short integers are $shortsize bytes long."
5483         else
5484                 $cat >&4 <<EOM
5485 !
5486 Help! I can't compile and run the intsize test program: please enlighten me!
5487 (This is probably a misconfiguration in your system or libraries, and
5488 you really ought to fix it.  Still, I'll try anyway.)
5489 !
5490 EOM
5491                 dflt=4
5492                 rp="What is the size of an integer (in bytes)?"
5493                 . ./myread
5494                 intsize="$ans"
5495                 dflt=$intsize
5496                 rp="What is the size of a long integer (in bytes)?"
5497                 . ./myread
5498                 longsize="$ans"
5499                 dflt=2
5500                 rp="What is the size of a short integer (in bytes)?"
5501                 . ./myread
5502                 shortsize="$ans"
5503         fi
5504         ;;
5505 esac
5506 $rm_try
5507
5508 : check for long long
5509 echo " "
5510 echo "Checking to see if you have long long..." >&4
5511 echo 'int main() { long long x = 7; return 0; }' > try.c
5512 set try
5513 if eval $compile; then
5514         val="$define"
5515         echo "You have long long."
5516 else
5517         val="$undef"
5518         echo "You do not have long long."
5519 fi
5520 $rm_try
5521 set d_longlong
5522 eval $setvar
5523
5524 : check for length of long long
5525 case "${d_longlong}${longlongsize}" in
5526 $define)
5527         echo " "
5528         echo "Checking to see how big your long longs are..." >&4
5529         $cat >try.c <<'EOCP'
5530 #include <stdio.h>
5531 int main()
5532 {
5533     printf("%d\n", (int)sizeof(long long));
5534     return(0);
5535 }
5536 EOCP
5537         set try
5538         if eval $compile_ok; then
5539                 longlongsize=`$run ./try`
5540                 echo "Your long longs are $longlongsize bytes long."
5541         else
5542                 dflt='8'
5543                 echo " "
5544                 echo "(I can't seem to compile the test program.  Guessing...)"
5545                 rp="What is the size of a long long (in bytes)?"
5546                 . ./myread
5547                 longlongsize="$ans"
5548         fi
5549         if $test "X$longsize" = "X$longlongsize"; then
5550                 echo "(That isn't any different from an ordinary long.)"
5551         fi
5552         ;;
5553 esac
5554 $rm_try
5555
5556 : see if inttypes.h is available
5557 : we want a real compile instead of Inhdr because some systems
5558 : have an inttypes.h which includes non-existent headers
5559 echo " "
5560 $cat >try.c <<EOCP
5561 #include <inttypes.h>
5562 int main() {
5563         static int32_t foo32 = 0x12345678;
5564 }
5565 EOCP
5566 set try
5567 if eval $compile; then
5568         echo "<inttypes.h> found." >&4
5569         val="$define"
5570 else
5571         echo "<inttypes.h> NOT found." >&4
5572         val="$undef"
5573 fi
5574 $rm_try
5575 set i_inttypes
5576 eval $setvar
5577
5578 : check for int64_t
5579 echo " "
5580 echo "Checking to see if you have int64_t..." >&4
5581 $cat >try.c <<EOCP
5582 #include <sys/types.h>
5583 #$i_inttypes I_INTTYPES
5584 #ifdef I_INTTYPES
5585 #include <inttypes.h>
5586 #endif
5587 int main() { int64_t x = 7; }
5588 EOCP
5589 set try
5590 if eval $compile; then
5591         val="$define"
5592         echo "You have int64_t."
5593 else
5594         val="$undef"
5595         echo "You do not have int64_t."
5596 fi
5597 $rm_try
5598 set d_int64_t
5599 eval $setvar
5600
5601
5602 echo " "
5603 echo "Checking which 64-bit integer type we could use..." >&4
5604
5605 case "$intsize" in
5606 8) val=int
5607    set quadtype
5608    eval $setvar
5609    val='"unsigned int"'
5610    set uquadtype
5611    eval $setvar
5612    quadkind=1
5613    ;;
5614 *) case "$longsize" in
5615    8) val=long
5616       set quadtype
5617       eval $setvar
5618       val='"unsigned long"'
5619       set uquadtype
5620       eval $setvar
5621       quadkind=2
5622       ;;
5623    *) case "$d_longlong:$longlongsize" in
5624       define:8)
5625         val='"long long"'
5626         set quadtype
5627         eval $setvar
5628         val='"unsigned long long"'
5629         set uquadtype
5630         eval $setvar
5631         quadkind=3
5632         ;;
5633       *) case "$d_int64_t" in
5634          define)
5635            val=int64_t
5636            set quadtype
5637            eval $setvar
5638            val=uint64_t
5639            set uquadtype
5640            eval $setvar
5641            quadkind=4
5642            ;;
5643          esac
5644          ;;
5645       esac
5646       ;;
5647    esac
5648    ;;
5649 esac
5650
5651 case "$quadtype" in
5652 '')     echo "Alas, no 64-bit integer types in sight." >&4
5653         d_quad="$undef"
5654         ;;
5655 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5656         d_quad="$define"
5657         ;;
5658 esac
5659
5660
5661 case "$uselonglong" in
5662 "$define"|true|[yY]*)
5663         cat <<EOM >&4
5664
5665 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5666 EOM
5667         use64bitint="$define"
5668         ;;
5669 esac                          
5670 case "$use64bits" in
5671 "$define"|true|[yY]*)
5672         cat <<EOM >&4
5673
5674 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5675 EOM
5676         use64bitint="$define"
5677         ;;
5678 esac                          
5679 case "$use64bitints" in
5680 "$define"|true|[yY]*)
5681         cat <<EOM >&4
5682
5683 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5684 EOM
5685         use64bitint="$define"
5686         ;;
5687 esac                          
5688 case "$use64bitsint" in
5689 "$define"|true|[yY]*)
5690         cat <<EOM >&4
5691
5692 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5693 EOM
5694         use64bitint="$define"
5695         ;;
5696 esac                          
5697 case "$uselonglongs" in
5698 "$define"|true|[yY]*)
5699         cat <<EOM >&4
5700
5701 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5702 EOM
5703         use64bitint="$define"
5704         ;;
5705 esac                          
5706 case "$use64bitsall" in
5707 "$define"|true|[yY]*)
5708         cat <<EOM >&4
5709
5710 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5711 EOM
5712         use64bitall="$define"
5713         ;;
5714 esac                          
5715
5716 case "$ccflags" in
5717 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5718 esac
5719 case "$use64bitall" in
5720 "$define"|true|[yY]*) use64bitint="$define" ;;
5721 esac
5722
5723 case "$longsize" in
5724 8) cat <<EOM
5725
5726 You have natively 64-bit long integers.
5727 EOM
5728    val="$define"
5729    ;;
5730 *) case "$use64bitint" in
5731    "$define"|true|[yY]*) dflt='y';;
5732    *) dflt='n';;
5733    esac
5734    case "$d_quad" in
5735    "$define") ;;
5736    *) dflt='n' ;;
5737    esac
5738    cat <<EOM
5739
5740 Perl can be built to take advantage of 64-bit integer types
5741 on some systems.  To do so, Configure can be run with -Duse64bitint.
5742 Choosing this option will most probably introduce binary incompatibilities.
5743
5744 If this doesn't make any sense to you, just accept the default '$dflt'.
5745 (The default has been chosen based on your configuration.)
5746 EOM
5747    rp='Try to use 64-bit integers, if available?'
5748    . ./myread
5749    case "$ans" in
5750    [yY]*) val="$define" ;;
5751    *)     val="$undef"  ;;
5752    esac
5753    ;;
5754 esac
5755 set use64bitint
5756 eval $setvar
5757
5758 case "$use64bitall" in
5759 "$define"|true|[yY]*) dflt='y' ;;
5760 *) case "$longsize" in
5761    8) dflt='y' ;;
5762    *) dflt='n' ;;
5763    esac
5764    ;;
5765 esac    
5766 cat <<EOM
5767
5768 You may also choose to try maximal 64-bitness.  It means using as much
5769 64-bitness as possible on the platform.  This in turn means even more
5770 binary incompatibilities.  On the other hand, your platform may not
5771 have any more 64-bitness available than what you already have chosen.
5772
5773 If this doesn't make any sense to you, just accept the default '$dflt'.
5774 (The default has been chosen based on your configuration.)
5775 EOM
5776 rp='Try to use maximal 64-bit support, if available?'
5777 . ./myread
5778 case "$ans" in
5779 [yY]*) val="$define" ;;
5780 *)     val="$undef"  ;;
5781 esac
5782 set use64bitall
5783 eval $setvar
5784 case "$use64bitall" in
5785 "$define")
5786         case "$use64bitint" in
5787         "$undef")
5788                 cat <<EOM
5789
5790 Since you have chosen a maximally 64-bit build, I'm also turning on
5791 the use of 64-bit integers.
5792 EOM
5793                 use64bitint="$define" ;;
5794         esac
5795         ;;
5796 esac
5797
5798 : Look for a hint-file generated 'call-back-unit'.  If the
5799 : user has specified that a 64-bit perl is to be built,
5800 : we may need to set or change some other defaults.
5801 if $test -f use64bitint.cbu; then
5802         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5803         . ./use64bitint.cbu
5804 fi
5805 case "$use64bitint" in
5806 "$define"|true|[yY]*)
5807         case "$longsize" in
5808         4) case "$archname64" in
5809            '') archname64=64int ;;
5810            esac
5811            ;;
5812         esac
5813         ;;
5814 esac
5815
5816 : Look for a hint-file generated 'call-back-unit'.  If the
5817 : user has specified that a maximally 64-bit perl is to be built,
5818 : we may need to set or change some other defaults.
5819 if $test -f use64bitall.cbu; then
5820         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5821         . ./use64bitall.cbu
5822 fi
5823 case "$use64bitall" in
5824 "$define"|true|[yY]*)
5825         case "$longsize" in
5826         4) case "$archname64" in
5827            ''|64int) archname64=64all ;;
5828            esac
5829            ;;
5830         esac
5831         ;;
5832 esac
5833
5834 case "$d_quad:$use64bitint" in
5835 $undef:$define)
5836         cat >&4 <<EOF
5837
5838 *** You have chosen to use 64-bit integers,
5839 *** but none can be found.
5840 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5841 *** Cannot continue, aborting.
5842
5843 EOF
5844         exit 1
5845         ;;
5846 esac
5847
5848 : check for length of double
5849 echo " "
5850 case "$doublesize" in
5851 '')
5852         echo "Checking to see how big your double precision numbers are..." >&4
5853         $cat >try.c <<EOCP
5854 #include <stdio.h>
5855 #$i_stdlib I_STDLIB
5856 #ifdef I_STDLIB
5857 #include <stdlib.h>
5858 #endif
5859 int main()
5860 {
5861     printf("%d\n", (int)sizeof(double));
5862     exit(0);
5863 }
5864 EOCP
5865         set try
5866         if eval $compile_ok; then
5867                 doublesize=`$run ./try`
5868                 echo "Your double is $doublesize bytes long."
5869         else
5870                 dflt='8'
5871                 echo "(I can't seem to compile the test program.  Guessing...)"
5872                 rp="What is the size of a double precision number (in bytes)?"
5873                 . ./myread
5874                 doublesize="$ans"
5875         fi
5876         ;;
5877 esac
5878 $rm_try
5879
5880 : check for long doubles
5881 echo " "
5882 echo "Checking to see if you have long double..." >&4
5883 echo 'int main() { long double x = 7.0; }' > try.c
5884 set try
5885 if eval $compile; then
5886         val="$define"
5887         echo "You have long double."
5888 else
5889         val="$undef"
5890         echo "You do not have long double."
5891 fi
5892 $rm_try
5893 set d_longdbl
5894 eval $setvar
5895
5896 : check for length of long double
5897 case "${d_longdbl}${longdblsize}" in
5898 $define)
5899         echo " "
5900         echo "Checking to see how big your long doubles are..." >&4
5901         $cat >try.c <<'EOCP'
5902 #include <stdio.h>
5903 int main()
5904 {
5905         printf("%d\n", sizeof(long double));
5906 }
5907 EOCP
5908         set try
5909         set try
5910         if eval $compile; then
5911                 longdblsize=`$run ./try`
5912                 echo "Your long doubles are $longdblsize bytes long."
5913         else
5914                 dflt='8'
5915                 echo " "
5916                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5917                 rp="What is the size of a long double (in bytes)?"
5918                 . ./myread
5919                 longdblsize="$ans"
5920         fi
5921         if $test "X$doublesize" = "X$longdblsize"; then
5922                 echo "That isn't any different from an ordinary double."
5923                 echo "I'll keep your setting anyway, but you may see some"
5924                 echo "harmless compilation warnings."
5925         fi
5926         ;;
5927 esac
5928 $rm_try
5929
5930 : determine the architecture name
5931 echo " "
5932 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5933         tarch=`arch`"-$osname"
5934 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5935         if uname -m > tmparch 2>&1 ; then
5936                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5937                         -e 's/$/'"-$osname/" tmparch`
5938         else
5939                 tarch="$osname"
5940         fi
5941         $rm -f tmparch
5942 else
5943         tarch="$osname"
5944 fi
5945 case "$myarchname" in
5946 ''|"$tarch") ;;
5947 *)
5948         echo "(Your architecture name used to be $myarchname.)"
5949         archname=''
5950         ;;
5951 esac
5952 case "$targetarch" in
5953 '') ;;
5954 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5955 esac
5956 myarchname="$tarch"
5957 case "$archname" in
5958 '') dflt="$tarch";;
5959 *) dflt="$archname";;
5960 esac
5961 rp='What is your architecture name'
5962 . ./myread
5963 archname="$ans"
5964 case "$usethreads" in
5965 $define)
5966         echo "Threads selected." >&4
5967         case "$archname" in
5968         *-thread*) echo "...and architecture name already has -thread." >&4
5969                 ;;
5970         *)      archname="$archname-thread"
5971                 echo "...setting architecture name to $archname." >&4
5972                 ;;
5973         esac
5974         ;;
5975 esac
5976 case "$usemultiplicity" in
5977 $define)
5978         echo "Multiplicity selected." >&4
5979         case "$archname" in
5980         *-multi*) echo "...and architecture name already has -multi." >&4
5981                 ;;
5982         *)      archname="$archname-multi"
5983                 echo "...setting architecture name to $archname." >&4
5984                 ;;
5985         esac
5986         ;;
5987 esac
5988 case "$use64bitint$use64bitall" in
5989 *"$define"*)
5990         case "$archname64" in
5991         '')
5992                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5993                 ;;
5994         *)
5995                 case "$use64bitint" in
5996                 "$define") echo "64 bit integers selected." >&4 ;;
5997                 esac
5998                 case "$use64bitall" in
5999                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6000                 esac
6001                 case "$archname" in
6002                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6003                         ;;
6004                 *)      archname="$archname-$archname64"
6005                         echo "...setting architecture name to $archname." >&4
6006                         ;;
6007                 esac
6008                 ;;
6009         esac
6010 esac
6011 case "$uselongdouble" in
6012 $define)
6013         echo "Long doubles selected." >&4
6014         case "$longdblsize" in
6015         $doublesize)
6016                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6017                 ;;
6018         *)
6019                 case "$archname" in
6020                 *-ld*) echo "...and architecture name already has -ld." >&4
6021                         ;;
6022                 *)      archname="$archname-ld"
6023                         echo "...setting architecture name to $archname." >&4
6024                         ;;
6025                 esac
6026                 ;;
6027         esac
6028         ;;
6029 esac
6030 case "$useperlio" in
6031 $define)
6032         echo "Perlio selected." >&4
6033         ;;
6034 *)
6035         echo "Perlio not selected, using stdio." >&4
6036         case "$archname" in
6037         *-stdio*) echo "...and architecture name already has -stdio." >&4
6038                 ;;
6039         *)      archname="$archname-stdio"
6040                 echo "...setting architecture name to $archname." >&4
6041                 ;;
6042         esac
6043         ;;
6044 esac
6045 if $test -f archname.cbu; then
6046         echo "Your platform has some specific hints for architecture name, using them..."
6047         . ./archname.cbu
6048 fi
6049
6050 : set the prefixit variable, to compute a suitable default value
6051 prefixit='case "$3" in
6052 ""|none)
6053         case "$oldprefix" in
6054         "") eval "$1=\"\$$2\"";;
6055         *)
6056                 case "$3" in
6057                 "") eval "$1=";;
6058                 none)
6059                         eval "tp=\"\$$2\"";
6060                         case "$tp" in
6061                         ""|" ") eval "$1=\"\$$2\"";;
6062                         *) eval "$1=";;
6063                         esac;;
6064                 esac;;
6065         esac;;
6066 *)
6067         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6068         case "$tp" in
6069         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6070         /*-$oldprefix/*|\~*-$oldprefix/*)
6071                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6072         *) eval "$1=\"\$$2\"";;
6073         esac;;
6074 esac'
6075
6076 : determine installation style
6077 : For now, try to deduce it from prefix unless it is already set.
6078 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6079 case "$installstyle" in
6080 '')     case "$prefix" in
6081                 *perl*) dflt='lib';;
6082                 *) dflt='lib/perl5' ;;
6083         esac
6084         ;;
6085 *)      dflt="$installstyle" ;;
6086 esac
6087 : Probably not worth prompting for this since we prompt for all
6088 : the directories individually, and the prompt would be too long and
6089 : confusing anyway.
6090 installstyle=$dflt
6091
6092 : determine where public executables go
6093 echo " "
6094 set dflt bin bin
6095 eval $prefixit
6096 fn=d~
6097 rp='Pathname where the public executables will reside?'
6098 . ./getfile
6099 if $test "X$ansexp" != "X$binexp"; then
6100         installbin=''
6101 fi
6102 prefixvar=bin
6103 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6104 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6105 :     this via initialinstalllocation
6106 . ./setprefixvar
6107
6108 case "$userelocatableinc" in
6109 $define|true|[yY]*)     dflt='y' ;;
6110 *)                      dflt='n' ;;
6111 esac
6112 cat <<EOM
6113
6114 Would you like to build Perl so that the installation is relocatable, so that
6115 library paths in @INC are determined relative to the path of the perl binary?
6116 This is not advised for system Perl installs, or if you need to run setid
6117 scripts or scripts under taint mode.
6118
6119 If this doesn't make any sense to you, just accept the default '$dflt'.
6120 EOM
6121 rp='Use relocatable @INC?'
6122 . ./myread
6123 case "$ans" in
6124 y|Y)    val="$define" ;;
6125 *)      val="$undef"  ;;
6126 esac
6127 set userelocatableinc
6128 eval $setvar
6129
6130 initialinstalllocation="$binexp"
6131 : Default prefix is now "up one level from where the binaries are"
6132 case "$userelocatableinc" in
6133 $define|true|[yY]*)
6134     bin=".../"
6135     binexp=".../"
6136     prefix=".../.."
6137     prefixexp=".../.."
6138     installprefixexp=".../.."
6139     ;;
6140 esac
6141
6142 : determine where private library files go
6143 : Usual default is /usr/local/lib/perl5/$version.
6144 : Also allow things like /opt/perl/lib/$version, since
6145 : /opt/perl/lib/perl5... would be redundant.
6146 : The default "style" setting is made in installstyle.U
6147 case "$installstyle" in
6148 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6149 *)       set dflt privlib lib/$version ;;
6150 esac
6151 eval $prefixit
6152 $cat <<EOM
6153
6154 There are some auxiliary files for $package that need to be put into a
6155 private library directory that is accessible by everyone.
6156
6157 EOM
6158 fn=$binexp
6159 fn=d~+
6160 rp='Pathname where the private library files will reside?'
6161 . ./getfile
6162 prefixvar=privlib
6163 . ./setprefixvar
6164
6165 : set the prefixup variable, to restore leading tilda escape
6166 prefixup='case "$prefixexp" in
6167 "$prefix") ;;
6168 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6169 esac'
6170
6171 : determine where public architecture dependent libraries go
6172 set archlib archlib
6173 eval $prefixit
6174 : privlib default is /usr/local/lib/$package/$version
6175 : archlib default is /usr/local/lib/$package/$version/$archname
6176 : privlib may have an optional trailing /share.
6177 tdflt=`echo $privlib | $sed 's,/share$,,'`
6178 tdflt=$tdflt/$archname
6179 case "$archlib" in
6180 '')     dflt=$tdflt
6181         ;;
6182 *)      dflt="$archlib"
6183     ;;
6184 esac
6185 $cat <<EOM
6186
6187 $spackage contains architecture-dependent library files.  If you are
6188 sharing libraries in a heterogeneous environment, you might store
6189 these files in a separate location.  Otherwise, you can just include
6190 them with the rest of the public library files.
6191
6192 EOM
6193 fn=$binexp
6194 fn=d+~
6195 rp='Where do you want to put the public architecture-dependent libraries?'
6196 . ./getfile
6197 prefixvar=archlib
6198 . ./setprefixvar
6199 if $test X"$archlib" = X"$privlib"; then
6200         d_archlib="$undef"
6201 else
6202         d_archlib="$define"
6203 fi
6204
6205 : see if setuid scripts can be secure
6206 $cat <<EOM
6207
6208 Some kernels have a bug that prevents setuid #! scripts from being
6209 secure.  Some sites have disabled setuid #! scripts because of this.
6210
6211 First let's decide if your kernel supports secure setuid #! scripts.
6212 (If setuid #! scripts would be secure but have been disabled anyway,
6213 don't say that they are secure if asked.)
6214
6215 EOM
6216
6217 val="$undef"
6218 if $test -d /dev/fd; then
6219         echo "#!$ls" >reflect
6220         chmod +x,u+s reflect
6221         ./reflect >flect 2>&1
6222         if $contains "/dev/fd" flect >/dev/null; then
6223                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6224                 val="$define"
6225         else
6226                 $cat <<EOM
6227 If you are not sure if they are secure, I can check but I'll need a
6228 username and password different from the one you are using right now.
6229 If you don't have such a username or don't want me to test, simply
6230 enter 'none'.
6231
6232 EOM
6233                 rp='Other username to test security of setuid scripts with?'
6234                 dflt='none'
6235                 . ./myread
6236                 case "$ans" in
6237                 n|none)
6238                         case "$d_suidsafe" in
6239                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6240                                 dflt=n;;
6241                         "$undef")
6242                                 echo "Well, the $hint value is *not* secure." >&4
6243                                 dflt=n;;
6244                         *)      echo "Well, the $hint value *is* secure." >&4
6245                                 dflt=y;;
6246                         esac
6247                         ;;
6248                 *)
6249                         $rm -f reflect flect
6250                         echo "#!$ls" >reflect
6251                         chmod +x,u+s reflect
6252                         echo >flect
6253                         chmod a+w flect
6254                         echo '"su" will (probably) prompt you for '"$ans's password."
6255                         su $ans -c './reflect >flect'
6256                         if $contains "/dev/fd" flect >/dev/null; then
6257                                 echo "Okay, it looks like setuid scripts are secure." >&4
6258                                 dflt=y
6259                         else
6260                                 echo "I don't think setuid scripts are secure." >&4
6261                                 dflt=n
6262                         fi
6263                         ;;
6264                 esac
6265                 rp='Does your kernel have *secure* setuid scripts?'
6266                 . ./myread
6267                 case "$ans" in
6268                 [yY]*)  val="$define";;
6269                 *)      val="$undef";;
6270                 esac
6271         fi
6272 else
6273         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6274         echo "(That's for file descriptors, not floppy disks.)"
6275         val="$undef"
6276 fi
6277 set d_suidsafe
6278 eval $setvar
6279
6280 $rm -f reflect flect
6281
6282 : now see if they want to do setuid emulation
6283 echo " "
6284 val="$undef"
6285 case "$d_suidsafe" in
6286 "$define")
6287         val="$undef"
6288         echo "No need to emulate SUID scripts since they are secure here." >&4
6289         ;;
6290 *)
6291         $cat <<EOM
6292 Some systems have disabled setuid scripts, especially systems where
6293 setuid scripts cannot be secure.  On systems where setuid scripts have
6294 been disabled, the setuid/setgid bits on scripts are currently
6295 useless.  It is possible for $package to detect those bits and emulate
6296 setuid/setgid in a secure fashion.  This emulation will only work if
6297 setuid scripts have been disabled in your kernel.
6298
6299 EOM
6300         case "$d_dosuid" in
6301         "$define") dflt=y ;;
6302         *) dflt=n ;;
6303         esac
6304         rp="Do you want to do setuid/setgid emulation?"
6305         . ./myread
6306         case "$ans" in
6307         [yY]*)  val="$define";;
6308         *)      val="$undef";;
6309         esac
6310         ;;
6311 esac
6312 set d_dosuid
6313 eval $setvar
6314
6315 : Find perl5.005 or later.
6316 echo "Looking for a previously installed perl5.005 or later... "
6317 case "$perl5" in
6318 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6319                 : Check if this perl is recent and can load a simple module
6320                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6321                         perl5=$tdir/perl
6322                         break;
6323                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6324                         perl5=$tdir/perl5
6325                         break;
6326                 fi
6327         done
6328         ;;
6329 *)      perl5="$perl5"
6330         ;;
6331 esac
6332 case "$perl5" in
6333 '')     echo "None found.  That's ok.";;
6334 *)      echo "Using $perl5." ;;
6335 esac
6336
6337 $cat <<EOM
6338
6339 After $package is installed, you may wish to install various
6340 add-on modules and utilities.  Typically, these add-ons will
6341 be installed under $prefix with the rest
6342 of this package.  However, you may wish to install such add-ons
6343 elsewhere under a different prefix.
6344
6345 If you do not wish to put everything under a single prefix, that's
6346 ok.  You will be prompted for the individual locations; this siteprefix
6347 is only used to suggest the defaults.
6348
6349 The default should be fine for most people.
6350
6351 EOM
6352 fn=d~+
6353 rp='Installation prefix to use for add-on modules and utilities?'
6354 : XXX Here might be another good place for an installstyle setting.
6355 case "$siteprefix" in
6356 '') dflt=$prefix ;;
6357 *)  dflt=$siteprefix ;;
6358 esac
6359 . ./getfile
6360 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6361 oldsiteprefix=''
6362 case "$siteprefix" in
6363 '') ;;
6364 *)      case "$ans" in
6365         "$prefix") ;;
6366         *) oldsiteprefix="$prefix";;
6367         esac
6368         ;;
6369 esac
6370 siteprefix="$ans"
6371 siteprefixexp="$ansexp"
6372
6373 : determine where site specific libraries go.
6374 : Usual default is /usr/local/lib/perl5/site_perl/$version
6375 : The default "style" setting is made in installstyle.U
6376 : XXX No longer works with Prefixit stuff.
6377 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6378 case "$sitelib" in
6379 '') case "$installstyle" in
6380         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6381         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6382         esac
6383         ;;
6384 *)      dflt="$sitelib"
6385         ;;
6386 esac
6387 $cat <<EOM
6388
6389 The installation process will create a directory for
6390 site-specific extensions and modules.  Most users find it convenient
6391 to place all site-specific files in this directory rather than in the
6392 main distribution directory.
6393
6394 EOM
6395 fn=d~+
6396 rp='Pathname for the site-specific library files?'
6397 . ./getfile
6398 prefixvar=sitelib
6399 . ./setprefixvar
6400 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6401
6402 : Determine list of previous versions to include in @INC
6403 $cat > getverlist <<EOPL
6404 #!$perl5 -w
6405 use File::Basename;
6406 \$api_versionstring = "$api_versionstring";
6407 \$version = "$version";
6408 \$stem = "$sitelib_stem";
6409 \$archname = "$archname";
6410 EOPL
6411         $cat >> getverlist <<'EOPL'
6412 # The list found is store twice for each entry: the original name, and
6413 # the binary broken down version as pack "sss", so sorting is easy and
6414 # unambiguous. This will work for all versions that have a maximum of
6415 # three digit groups, separate by '.'s or '_'s. Names are extended with
6416 # ".0.0" to ensure at least three elements for the pack.
6417 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6418
6419 # Can't have leading @ because metaconfig interprets it as a command!
6420 ;@inc_version_list=();
6421 # XXX Redo to do opendir/readdir?
6422 if (-d $stem) {
6423     chdir($stem);
6424     ;@candidates = map {
6425         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6426 }
6427 else {
6428     ;@candidates = ();
6429 }
6430
6431 ($pversion, $aversion, $vsn5005) = map {
6432     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6433 foreach $d (@candidates) {
6434     if ($d->[1] lt $pversion) {
6435         if ($d->[1] ge $aversion) {
6436             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6437         }
6438         elsif ($d->[1] ge $vsn5005) {
6439             unshift(@inc_version_list, grep { -d } $d->[0]);
6440         }
6441     }
6442     else {
6443         # Skip newer version.  I.e. don't look in
6444         # 5.7.0 if we're installing 5.6.1.
6445     }
6446 }
6447
6448 if (@inc_version_list) {
6449     print join(' ', @inc_version_list);
6450 }
6451 else {
6452     # Blank space to preserve value for next Configure run.
6453     print " ";
6454 }
6455 EOPL
6456 chmod +x getverlist
6457 case "$inc_version_list" in
6458 '')     if test -x "$perl5$exe_ext"; then
6459                 dflt=`$perl5 getverlist`
6460         else
6461                 dflt='none'
6462         fi
6463         ;;
6464 $undef) dflt='none' ;;
6465 *)  eval dflt=\"$inc_version_list\" ;;
6466 esac
6467 case "$dflt" in
6468 ''|' ') dflt=none ;;
6469 esac
6470 case "$dflt" in
6471 5.005) dflt=none ;;
6472 esac
6473 $cat <<EOM
6474
6475 In order to ease the process of upgrading, this version of perl
6476 can be configured to use modules built and installed with earlier
6477 versions of perl that were installed under $prefix.  Specify here
6478 the list of earlier versions that this version of perl should check.
6479 If Configure detected no earlier versions of perl installed under
6480 $prefix, then the list will be empty.  Answer 'none' to tell perl
6481 to not search earlier versions.
6482
6483 The default should almost always be sensible, so if you're not sure,
6484 just accept the default.
6485 EOM
6486
6487 rp='List of earlier versions to include in @INC?'
6488 . ./myread
6489 case "$ans" in
6490 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6491 *) inc_version_list="$ans" ;;
6492 esac
6493 case "$inc_version_list" in
6494 ''|' ')
6495         inc_version_list_init='0'
6496         d_inc_version_list="$undef"
6497         ;;
6498 *)      inc_version_list_init=`echo $inc_version_list |
6499                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6500         d_inc_version_list="$define"
6501         ;;
6502 esac
6503 $rm -f getverlist
6504
6505 : see if this is a malloc.h system
6506 : we want a real compile instead of Inhdr because some systems have a
6507 : malloc.h that just gives a compile error saying to use stdlib.h instead
6508 echo " "
6509 $cat >try.c <<EOCP
6510 #include <stdlib.h>
6511 #include <malloc.h>
6512 int main () { return 0; }
6513 EOCP
6514 set try
6515 if eval $compile; then
6516     echo "<malloc.h> found." >&4
6517     val="$define"
6518 else
6519     echo "<malloc.h> NOT found." >&4
6520     val="$undef"
6521 fi
6522 $rm_try
6523 set i_malloc
6524 eval $setvar
6525
6526 : check for void type
6527 echo " "
6528 echo "Checking to see how well your C compiler groks the void type..." >&4
6529 case "$voidflags" in
6530 '')
6531         $cat >try.c <<EOCP
6532 #$i_stdlib I_STDLIB
6533 #ifdef I_STDLIB
6534 #include <stdlib.h>
6535 #endif
6536 #if TRY & 1
6537 void sub() {
6538 #else
6539 sub() {
6540 #endif
6541         extern void moo();      /* function returning void */
6542         void (*goo)();          /* ptr to func returning void */
6543 #if TRY & 8
6544         void *hue;              /* generic ptr */
6545 #endif
6546 #if TRY & 2
6547         void (*foo[10])();
6548 #endif
6549
6550 #if TRY & 4
6551         if(goo == moo) {
6552                 exit(0);
6553         }
6554 #endif
6555         exit(0);
6556 }
6557 int main() { sub(); }
6558 EOCP
6559         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6560                 voidflags=$defvoidused
6561         echo "Good.  It appears to support void to the level $package wants.">&4
6562                 if $contains warning .out >/dev/null 2>&1; then
6563                         echo "However, you might get some warnings that look like this:"
6564                         $cat .out
6565                 fi
6566         else
6567 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6568                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6569                         echo "It supports 1..."
6570                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6571                                 echo "It also supports 2..."
6572                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6573                                         voidflags=7
6574                                         echo "And it supports 4 but not 8 definitely."
6575                                 else
6576                                         echo "It doesn't support 4..."
6577                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6578                                                 voidflags=11
6579                                                 echo "But it supports 8."
6580                                         else
6581                                                 voidflags=3
6582                                                 echo "Neither does it support 8."
6583                                         fi
6584                                 fi
6585                         else
6586                                 echo "It does not support 2..."
6587                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6588                                         voidflags=13
6589                                         echo "But it supports 4 and 8."
6590                                 else
6591                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6592                                                 voidflags=5
6593                                                 echo "And it supports 4 but has not heard about 8."
6594                                         else
6595                                                 echo "However it supports 8 but not 4."
6596                                         fi
6597                                 fi
6598                         fi
6599                 else
6600                         echo "There is no support at all for void."
6601                         voidflags=0
6602                 fi
6603         fi
6604 esac
6605 case "$voidflags" in
6606 "$defvoidused") ;;
6607 *)      $cat >&4 <<'EOM'
6608   Support flag bits are:
6609     1: basic void declarations.
6610     2: arrays of pointers to functions returning void.
6611     4: operations between pointers to and addresses of void functions.
6612     8: generic void pointers.
6613 EOM
6614         dflt="$voidflags";
6615         rp="Your void support flags add up to what?"
6616         . ./myread
6617         voidflags="$ans"
6618         ;;
6619 esac
6620 $rm_try
6621
6622 : check for length of pointer
6623 echo " "
6624 case "$ptrsize" in
6625 '')
6626         echo "Checking to see how big your pointers are..." >&4
6627         if test "$voidflags" -gt 7; then
6628                 echo '#define VOID_PTR char *' > try.c
6629         else
6630                 echo '#define VOID_PTR void *' > try.c
6631         fi
6632         $cat >>try.c <<EOCP
6633 #include <stdio.h>
6634 #$i_stdlib I_STDLIB
6635 #ifdef I_STDLIB
6636 #include <stdlib.h>
6637 #endif
6638 int main()
6639 {
6640     printf("%d\n", (int)sizeof(VOID_PTR));
6641     exit(0);
6642 }
6643 EOCP
6644         set try
6645         if eval $compile_ok; then
6646                 ptrsize=`$run ./try`
6647                 echo "Your pointers are $ptrsize bytes long."
6648         else
6649                 dflt='4'
6650                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6651                 rp="What is the size of a pointer (in bytes)?"
6652                 . ./myread
6653                 ptrsize="$ans"
6654         fi
6655         ;;
6656 esac
6657 $rm_try
6658 case "$use64bitall" in
6659 "$define"|true|[yY]*)
6660         case "$ptrsize" in
6661         4)      cat <<EOM >&4
6662
6663 *** You have chosen a maximally 64-bit build,
6664 *** but your pointers are only 4 bytes wide.
6665 *** Please rerun Configure without -Duse64bitall.
6666 EOM
6667                 case "$d_quad" in
6668                 define)
6669                         cat <<EOM >&4
6670 *** Since you have quads, you could possibly try with -Duse64bitint.
6671 EOM
6672                         ;;
6673                 esac
6674                 cat <<EOM >&4
6675 *** Cannot continue, aborting.
6676
6677 EOM
6678
6679                 exit 1
6680                 ;;
6681         esac
6682         ;;
6683 esac
6684
6685
6686 : determine whether to use malloc wrapping
6687 echo " "
6688 case "$usemallocwrap" in
6689 [yY]*|true|$define)     dflt='y' ;;
6690 [nN]*|false|$undef)     dflt='n' ;;
6691 *)      case "$usedevel" in
6692         [yY]*|true|$define)     dflt='y' ;;
6693         *) dflt='n' ;;
6694         esac
6695         ;;
6696 esac
6697 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6698 . ./myread
6699 usemallocwrap="$ans"
6700 case "$ans" in
6701 y*|true)
6702         usemallocwrap="$define" ;;
6703 *)
6704         usemallocwrap="$undef" ;;
6705 esac
6706
6707 : determine which malloc to compile in
6708 echo " "
6709 case "$usemymalloc" in
6710 [yY]*|true|$define)     dflt='y' ;;
6711 [nN]*|false|$undef)     dflt='n' ;;
6712 *)      case "$ptrsize" in
6713         4) dflt='y' ;;
6714         *) dflt='n' ;;
6715         esac
6716         ;;
6717 esac
6718 rp="Do you wish to attempt to use the malloc that comes with $package?"
6719 . ./myread
6720 usemymalloc="$ans"
6721 case "$ans" in
6722 y*|true)
6723         usemymalloc='y'
6724         mallocsrc='malloc.c'
6725         mallocobj="malloc$_o"
6726         d_mymalloc="$define"
6727         case "$libs" in
6728         *-lmalloc*)
6729                 : Remove malloc from list of libraries to use
6730                 echo "Removing unneeded -lmalloc from library list" >&4
6731                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6732                 shift
6733                 libs="$*"
6734                 echo "libs = $libs" >&4
6735                 ;;
6736         esac
6737         ;;
6738 *)
6739         usemymalloc='n'
6740         mallocsrc=''
6741         mallocobj=''
6742         d_mymalloc="$undef"
6743         ;;
6744 esac
6745
6746 : compute the return types of malloc and free
6747 echo " "
6748 $cat >malloc.c <<END
6749 #$i_malloc I_MALLOC
6750 #$i_stdlib I_STDLIB
6751 #include <stdio.h>
6752 #include <sys/types.h>
6753 #ifdef I_MALLOC
6754 #include <malloc.h>
6755 #endif
6756 #ifdef I_STDLIB
6757 #include <stdlib.h>
6758 #endif
6759 #ifdef TRY_MALLOC
6760 void *malloc();
6761 #endif
6762 #ifdef TRY_FREE
6763 void free();
6764 #endif
6765 END
6766 case "$malloctype" in
6767 '')
6768         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6769                 malloctype='void *'
6770         else
6771                 malloctype='char *'
6772         fi
6773         ;;
6774 esac
6775 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6776
6777 case "$freetype" in
6778 '')
6779         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6780                 freetype='void'
6781         else
6782                 freetype='int'
6783         fi
6784         ;;
6785 esac
6786 echo "Your system uses $freetype free(), it would seem." >&4
6787 $rm -f malloc.[co]
6788 : determine where site specific architecture-dependent libraries go.
6789 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6790 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6791 : sitelib may have an optional trailing /share.
6792 case "$sitearch" in
6793 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6794         dflt="$dflt/$archname"
6795         ;;
6796 *)      dflt="$sitearch"
6797         ;;
6798 esac
6799 set sitearch sitearch none
6800 eval $prefixit
6801 $cat <<EOM
6802
6803 The installation process will also create a directory for
6804 architecture-dependent site-specific extensions and modules.
6805
6806 EOM
6807 fn=d~+
6808 rp='Pathname for the site-specific architecture-dependent library files?'
6809 . ./getfile
6810 prefixvar=sitearch
6811 . ./setprefixvar
6812 if $test X"$sitearch" = X"$sitelib"; then
6813         d_sitearch="$undef"
6814 else
6815         d_sitearch="$define"
6816 fi
6817
6818 $cat <<EOM
6819
6820 The installation process will also create a directory for
6821 vendor-supplied add-ons.  Vendors who supply perl with their system
6822 may find it convenient to place all vendor-supplied files in this
6823 directory rather than in the main distribution directory.  This will
6824 ease upgrades between binary-compatible maintenance versions of perl.
6825
6826 Of course you may also use these directories in whatever way you see
6827 fit.  For example, you might use them to access modules shared over a
6828 company-wide network.
6829
6830 The default answer should be fine for most people.
6831 This causes further questions about vendor add-ons to be skipped
6832 and no vendor-specific directories will be configured for perl.
6833
6834 EOM
6835 rp='Do you want to configure vendor-specific add-on directories?'
6836 case "$usevendorprefix" in
6837 define|true|[yY]*) dflt=y ;;
6838 *)      : User may have set vendorprefix directly on Configure command line.
6839         case "$vendorprefix" in
6840         ''|' ') dflt=n ;;
6841         *)      dflt=y ;;
6842         esac
6843         ;;
6844 esac
6845 . ./myread
6846 case "$ans" in
6847 [yY]*)  fn=d~+
6848         rp='Installation prefix to use for vendor-supplied add-ons?'
6849         case "$vendorprefix" in
6850         '') dflt='' ;;
6851         *)  dflt=$vendorprefix ;;
6852         esac
6853         . ./getfile
6854         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6855         oldvendorprefix=''
6856         case "$vendorprefix" in
6857         '') ;;
6858         *)      case "$ans" in
6859                 "$prefix") ;;
6860                 *) oldvendorprefix="$prefix";;
6861                 esac
6862                 ;;
6863         esac
6864         usevendorprefix="$define"
6865         vendorprefix="$ans"
6866         vendorprefixexp="$ansexp"
6867         ;;
6868 *)      usevendorprefix="$undef"
6869         vendorprefix=''
6870         vendorprefixexp=''
6871         ;;
6872 esac
6873
6874 case "$vendorprefix" in
6875 '')     d_vendorlib="$undef"
6876         vendorlib=''
6877         vendorlibexp=''
6878         ;;
6879 *)      d_vendorlib="$define"
6880         : determine where vendor-supplied modules go.
6881         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6882         case "$vendorlib" in
6883         '')
6884                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6885                 case "$installstyle" in
6886                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6887                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6888                 esac
6889                 ;;
6890         *)      dflt="$vendorlib"
6891                 ;;
6892         esac
6893         fn=d~+
6894         rp='Pathname for the vendor-supplied library files?'
6895         . ./getfile
6896         vendorlib="$ans"
6897         vendorlibexp="$ansexp"
6898         ;;
6899 esac
6900 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6901 prefixvar=vendorlib
6902 . ./installprefix
6903
6904 case "$vendorprefix" in
6905 '')     d_vendorarch="$undef"
6906         vendorarch=''
6907         vendorarchexp=''
6908         ;;
6909 *)      d_vendorarch="$define"
6910         : determine where vendor-supplied architecture-dependent libraries go.
6911         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6912         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6913         : vendorlib may have an optional trailing /share.
6914         case "$vendorarch" in
6915         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6916                 dflt="$dflt/$archname"
6917                 ;;
6918         *)      dflt="$vendorarch" ;;
6919         esac
6920         fn=d~+
6921         rp='Pathname for vendor-supplied architecture-dependent files?'
6922         . ./getfile
6923         vendorarch="$ans"
6924         vendorarchexp="$ansexp"
6925         ;;
6926 esac
6927 prefixvar=vendorarch
6928 . ./installprefix
6929
6930 : Final catch-all directories to search
6931 $cat <<EOM
6932
6933 Lastly, you can have perl look in other directories for extensions and
6934 modules in addition to those already specified.
6935 These directories will be searched after 
6936         $sitearch 
6937         $sitelib 
6938 EOM
6939 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6940 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6941 echo ' '
6942 case "$otherlibdirs" in
6943 ''|' ') dflt='none' ;;
6944 *)      dflt="$otherlibdirs" ;;
6945 esac
6946 $cat <<EOM
6947 Enter a colon-separated set of extra paths to include in perl's @INC
6948 search path, or enter 'none' for no extra paths.
6949
6950 EOM
6951
6952 rp='Colon-separated list of additional directories for perl to search?'
6953 . ./myread
6954 case "$ans" in
6955 ' '|''|none)    otherlibdirs=' ' ;;     
6956 *)      otherlibdirs="$ans" ;;
6957 esac
6958 case "$otherlibdirs" in
6959 ' ') val=$undef ;;
6960 *)      val=$define ;;
6961 esac
6962 set d_perl_otherlibdirs
6963 eval $setvar
6964
6965 : Cruising for prototypes
6966 echo " "
6967 echo "Checking out function prototypes..." >&4
6968 $cat >prototype.c <<EOCP
6969 #$i_stdlib I_STDLIB
6970 #ifdef I_STDLIB
6971 #include <stdlib.h>
6972 #endif
6973 int main(int argc, char *argv[]) {
6974         exit(0);}
6975 EOCP
6976 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6977         echo "Your C compiler appears to support function prototypes."
6978         val="$define"
6979 else
6980         echo "Your C compiler doesn't seem to understand function prototypes."
6981         val="$undef"
6982 fi
6983 set prototype
6984 eval $setvar
6985 $rm -f prototype*
6986
6987 case "$prototype" in
6988 "$define") ;;
6989 *)      ansi2knr='ansi2knr'
6990         echo " "
6991         cat <<EOM >&4
6992
6993 $me:  FATAL ERROR:
6994 This version of $package can only be compiled by a compiler that 
6995 understands function prototypes.  Unfortunately, your C compiler 
6996         $cc $ccflags
6997 doesn't seem to understand them.  Sorry about that.
6998
6999 If GNU cc is available for your system, perhaps you could try that instead.  
7000
7001 Eventually, we hope to support building Perl with pre-ANSI compilers.
7002 If you would like to help in that effort, please contact <perlbug@perl.org>.
7003
7004 Aborting Configure now.
7005 EOM
7006         exit 2
7007         ;;
7008 esac
7009
7010 echo " "
7011 case "$extras" in
7012 '') dflt='n';;
7013 *) dflt='y';;
7014 esac
7015 cat <<EOM
7016 Perl can be built with extra modules or bundles of modules which
7017 will be fetched from the CPAN and installed alongside Perl.
7018
7019 Notice that you will need access to the CPAN; either via the Internet,
7020 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7021 be asked later to configure the CPAN.pm module which will in turn do
7022 the installation of the rest of the extra modules or bundles.)
7023
7024 Notice also that if the modules require any external software such as
7025 libraries and headers (the libz library and the zlib.h header for the
7026 Compress::Zlib module, for example) you MUST have any such software
7027 already installed, this configuration process will NOT install such
7028 things for you.
7029
7030 If this doesn't make any sense to you, just accept the default '$dflt'.
7031 EOM
7032 rp='Install any extra modules (y or n)?'
7033 . ./myread
7034 case "$ans" in
7035 y|Y)
7036         cat <<EOM
7037
7038 Please list any extra modules or bundles to be installed from CPAN,
7039 with spaces between the names.  The names can be in any format the
7040 'install' command of CPAN.pm will understand.  (Answer 'none',
7041 without the quotes, to install no extra modules or bundles.)
7042 EOM
7043         rp='Extras?'
7044         dflt="$extras"
7045         . ./myread
7046         extras="$ans"
7047 esac
7048 case "$extras" in
7049 ''|'none')
7050         val=''
7051         $rm -f ../extras.lst
7052         ;;
7053 *)      echo "(Saving the list of extras for later...)"
7054         echo "$extras" > ../extras.lst
7055         val="'$extras'"
7056         ;;
7057 esac
7058 set extras
7059 eval $setvar
7060 echo " "
7061
7062 : determine where html pages for programs go
7063 set html1dir html1dir none
7064 eval $prefixit
7065 $cat <<EOM
7066
7067 If you wish to install html files for programs in $spackage, indicate
7068 the appropriate directory here.  To skip installing html files,
7069 answer "none".
7070 EOM
7071 case "$html1dir" in
7072 ''|none|$undef|' ') dflt=none ;;
7073 *) dflt=$html1dir ;;
7074 esac
7075 fn=dn+~
7076 rp="Directory for the main $spackage html pages?"
7077 . ./getfile
7078 prefixvar=html1dir
7079 . ./setprefixvar
7080 : Use ' ' for none so value is preserved next time through Configure
7081 $test X"$html1dir" = "X" && html1dir=' '
7082
7083 : determine where html pages for libraries and modules go
7084 set html3dir html3dir none
7085 eval $prefixit
7086 $cat <<EOM
7087
7088 If you wish to install html files for modules associated with $spackage,
7089 indicate the appropriate directory here.  To skip installing html files,
7090 answer "none".
7091 EOM
7092 : There is no obvious default.  If they have specified html1dir, then
7093 : try to key off that, possibly changing .../html1 into .../html3.
7094 case "$html3dir" in
7095 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7096 *) dflt=$html3dir ;;
7097 esac
7098 fn=dn+~
7099 rp="Directory for the $spackage module html pages?"
7100 . ./getfile
7101 prefixvar=html3dir
7102 . ./setprefixvar
7103 : Use ' ' for none so value is preserved next time through Configure
7104 $test X"$html3dir" = "X" && html3dir=' '
7105
7106 : determine whether to install perl also as /usr/bin/perl
7107
7108 echo " "
7109 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7110         $cat <<EOM
7111 Many scripts expect perl to be installed as /usr/bin/perl.
7112
7113 If you want to, I can install the perl you are about to compile
7114 as /usr/bin/perl (in addition to $bin/perl).
7115 EOM
7116         if test -f /usr/bin/perl; then
7117             $cat <<EOM
7118
7119 However, please note that because you already have a /usr/bin/perl,
7120 overwriting that with a new Perl would very probably cause problems.
7121 Therefore I'm assuming you don't want to do that (unless you insist).
7122
7123 EOM
7124             case "$installusrbinperl" in
7125             "$define"|[yY]*)    dflt='y';;
7126             *)                  dflt='n';;
7127             esac
7128         else
7129             $cat <<EOM
7130
7131 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7132
7133 EOM
7134             case "$installusrbinperl" in
7135             "$undef"|[nN]*)     dflt='n';;
7136             *)                  dflt='y';;
7137             esac
7138         fi
7139         rp="Do you want to install perl as /usr/bin/perl?"
7140         . ./myread
7141         case "$ans" in
7142         [yY]*)  val="$define";;
7143         *)      val="$undef" ;;
7144         esac
7145 else
7146         val="$undef"
7147 fi
7148 set installusrbinperl
7149 eval $setvar
7150
7151 echo " "
7152 echo "Checking for GNU C Library..." >&4
7153 cat >try.c <<'EOCP'
7154 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7155    alone are insufficient to distinguish different versions, such as
7156    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7157    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7158 */
7159 #include <stdio.h>
7160 int main(void)
7161 {
7162 #ifdef __GLIBC__
7163 #   ifdef __GLIBC_MINOR__
7164 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7165 #           include <gnu/libc-version.h>
7166             printf("%s\n",  gnu_get_libc_version());
7167 #       else
7168             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7169 #       endif
7170 #   else
7171         printf("%d\n",  __GLIBC__);
7172 #   endif
7173     return 0;
7174 #else
7175     return 1;
7176 #endif
7177 }
7178 EOCP
7179 set try
7180 if eval $compile_ok && $run ./try > glibc.ver; then
7181         val="$define"
7182         gnulibc_version=`$cat glibc.ver`
7183         echo "You are using the GNU C Library version $gnulibc_version"
7184 else
7185         val="$undef"
7186         gnulibc_version=''
7187         echo "You are not using the GNU C Library"
7188 fi
7189 $rm_try glibc.ver
7190 set d_gnulibc
7191 eval $setvar
7192
7193 : see if nm is to be used to determine whether a symbol is defined or not
7194 case "$usenm" in
7195 '')
7196         dflt=''
7197         case "$d_gnulibc" in
7198         "$define")
7199                 echo " "
7200                 echo "nm probably won't work on the GNU C Library." >&4
7201                 dflt=n
7202                 ;;
7203         esac
7204         case "$dflt" in
7205         '') 
7206                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7207                         echo " "
7208                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7209                         echo "'nm' won't be sufficient on this sytem." >&4
7210                         dflt=n
7211                 fi
7212                 ;;
7213         esac
7214         case "$dflt" in
7215         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7216                 if $test $dflt -gt 20; then
7217                         dflt=y
7218                 else
7219                         dflt=n
7220                 fi
7221                 ;;
7222         esac
7223         ;;
7224 *)
7225         case "$usenm" in
7226         true|$define) dflt=y;;
7227         *) dflt=n;;
7228         esac
7229         ;;
7230 esac
7231 $cat <<EOM
7232
7233 I can use $nm to extract the symbols from your C libraries. This
7234 is a time consuming task which may generate huge output on the disk (up
7235 to 3 megabytes) but that should make the symbols extraction faster. The
7236 alternative is to skip the 'nm' extraction part and to compile a small
7237 test program instead to determine whether each symbol is present. If
7238 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7239 this may be the best solution.
7240
7241 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7242
7243 EOM
7244 rp="Shall I use $nm to extract C symbols from the libraries?"
7245 . ./myread
7246 case "$ans" in
7247 [Nn]*) usenm=false;;
7248 *) usenm=true;;
7249 esac
7250
7251 runnm=$usenm
7252 case "$reuseval" in
7253 true) runnm=false;;
7254 esac
7255
7256 : nm options which may be necessary
7257 case "$nm_opt" in
7258 '') if $test -f /mach_boot; then
7259                 nm_opt=''       # Mach
7260         elif $test -d /usr/ccs/lib; then
7261                 nm_opt='-p'     # Solaris (and SunOS?)
7262         elif $test -f /dgux; then
7263                 nm_opt='-p'     # DG-UX
7264         elif $test -f /lib64/rld; then
7265                 nm_opt='-p'     # 64-bit Irix
7266         else
7267                 nm_opt=''
7268         fi;;
7269 esac
7270
7271 : nm options which may be necessary for shared libraries but illegal
7272 : for archive libraries.  Thank you, Linux.
7273 case "$nm_so_opt" in
7274 '')     case "$myuname" in
7275         *linux*|gnu*)
7276                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7277                         nm_so_opt='--dynamic'
7278                 fi
7279                 ;;
7280         esac
7281         ;;
7282 esac
7283
7284 case "$runnm" in
7285 true)
7286 : get list of predefined functions in a handy place
7287 echo " "
7288 case "$libc" in
7289 '') libc=unknown
7290         case "$libs" in
7291         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7292         esac
7293         ;;
7294 esac
7295 case "$libs" in
7296 '') ;;
7297 *)  for thislib in $libs; do
7298         case "$thislib" in
7299         -lc|-lc_s)
7300                 : Handle C library specially below.
7301                 ;;
7302         -l*)
7303                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7304                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7305                         :
7306                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7307                         :
7308                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7309                         :
7310                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7311                         :
7312                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7313                         :
7314                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7315                         :
7316                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7317                         :
7318                 else
7319                         try=''
7320                 fi
7321                 libnames="$libnames $try"
7322                 ;;
7323         *) libnames="$libnames $thislib" ;;
7324         esac
7325         done
7326         ;;
7327 esac
7328 xxx=normal
7329 case "$libc" in
7330 unknown)
7331         set /lib/libc.$so
7332         for xxx in $libpth; do
7333                 $test -r $1 || set $xxx/libc.$so
7334                 : The messy sed command sorts on library version numbers.
7335                 $test -r $1 || \
7336                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7337                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7338                                 h
7339                                 s/[0-9][0-9]*/0000&/g
7340                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7341                                 G
7342                                 s/\n/ /' | \
7343                          $sort | $sed -e 's/^.* //'`
7344                 eval set \$$#
7345         done
7346         $test -r $1 || set /usr/ccs/lib/libc.$so
7347         $test -r $1 || set /lib/libsys_s$_a
7348         ;;
7349 *)
7350         set blurfl
7351         ;;
7352 esac
7353 if $test -r "$1"; then
7354         echo "Your (shared) C library seems to be in $1."
7355         libc="$1"
7356 elif $test -r /lib/libc && $test -r /lib/clib; then
7357         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7358         xxx=apollo
7359         libc='/lib/clib /lib/libc'
7360         if $test -r /lib/syslib; then
7361                 echo "(Your math library is in /lib/syslib.)"
7362                 libc="$libc /lib/syslib"
7363         fi
7364 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7365         echo "Your C library seems to be in $libc, as you said before."
7366 elif $test -r $incpath/usr/lib/libc$_a; then
7367         libc=$incpath/usr/lib/libc$_a;
7368         echo "Your C library seems to be in $libc.  That's fine."
7369 elif $test -r /lib/libc$_a; then
7370         libc=/lib/libc$_a;
7371         echo "Your C library seems to be in $libc.  You're normal."
7372 else
7373         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7374                 :
7375         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7376                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7377         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7378                 :
7379         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7380                 :
7381         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7382                 :
7383         else
7384                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7385         fi
7386         if $test -r "$tans"; then
7387                 echo "Your C library seems to be in $tans, of all places."
7388                 libc=$tans
7389         else
7390                 libc='blurfl'
7391         fi
7392 fi
7393 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7394         dflt="$libc"
7395         cat <<EOM
7396
7397 If the guess above is wrong (which it might be if you're using a strange
7398 compiler, or your machine supports multiple models), you can override it here.
7399
7400 EOM
7401 else
7402         dflt=''
7403         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7404         cat >&4 <<EOM
7405 I can't seem to find your C library.  I've looked in the following places:
7406
7407 EOM
7408         $sed 's/^/      /' libpath
7409         cat <<EOM
7410
7411 None of these seems to contain your C library. I need to get its name...
7412
7413 EOM
7414 fi
7415 fn=f
7416 rp='Where is your C library?'
7417 . ./getfile
7418 libc="$ans"
7419
7420 echo " "
7421 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7422 set X `cat libnames`
7423 shift
7424 xxx=files
7425 case $# in 1) xxx=file; esac
7426 echo "Extracting names from the following $xxx for later perusal:" >&4
7427 echo " "
7428 $sed 's/^/      /' libnames >&4
7429 echo " "
7430 $echo $n "This may take a while...$c" >&4
7431
7432 for file in $*; do
7433         case $file in
7434         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7435         *) $nm $nm_opt $file 2>/dev/null;;
7436         esac
7437 done >libc.tmp
7438
7439 $echo $n ".$c"
7440 $grep fprintf libc.tmp > libc.ptf
7441 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7442 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7443 xxx='[ADTSIW]'
7444 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7445         eval $xscan;\
7446         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7447                 eval $xrun
7448 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7449         eval $xscan;\
7450         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7451                 eval $xrun
7452 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7453         eval $xscan;\
7454         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7455                 eval $xrun
7456 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7457         eval $xscan;\
7458         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7459                 eval $xrun
7460 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7461         eval $xscan;\
7462         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7463                 eval $xrun
7464 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7465         eval $xscan;\
7466         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7467                 eval $xrun
7468 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7469                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7470         eval $xscan;\
7471         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7472                 eval $xrun
7473 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7474         eval $xscan;\
7475         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7476                 eval $xrun
7477 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7478         eval $xscan;\
7479         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7480                 eval $xrun
7481 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7482         eval $xscan;\
7483         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7484                 eval $xrun
7485 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7486         eval $xscan;\
7487         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7488                 eval $xrun
7489 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7490         eval $xscan;\
7491         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7492                 eval $xrun
7493 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7494         eval $xscan;\
7495         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7496                 eval $xrun
7497 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7498         eval $xscan;\
7499         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7500                 eval $xrun
7501 else
7502         $nm -p $* 2>/dev/null >libc.tmp
7503         $grep fprintf libc.tmp > libc.ptf
7504         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7505                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7506         then
7507                 nm_opt='-p'
7508                 eval $xrun
7509         else
7510                 echo " "
7511                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7512                 com=''
7513                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7514                         for thisname in $libnames $libc; do
7515                                 $ar t $thisname >>libc.tmp
7516                         done
7517                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7518                         echo "Ok." >&4
7519                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7520                         # Repeat libc to extract forwarders to DLL entries too
7521                         for thisname in $libnames $libc; do
7522                                 $ar tv $thisname >>libc.tmp
7523                                 # Revision 50 of EMX has bug in $ar.
7524                                 # it will not extract forwarders to DLL entries
7525                                 # Use emximp which will extract exactly them.
7526                                 emximp -o tmp.imp $thisname \
7527                                     2>/dev/null && \
7528                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7529                                     < tmp.imp >>libc.tmp
7530                                 $rm tmp.imp
7531                         done
7532                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7533                         echo "Ok." >&4
7534                 else
7535                         echo "$ar didn't seem to work right." >&4
7536                         echo "Maybe this is a Cray...trying bld instead..." >&4
7537                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7538                         then
7539                                 for thisname in $libnames; do
7540                                         bld t $libnames | \
7541                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7542                                         $ar t $thisname >>libc.tmp
7543                                 done
7544                                 echo "Ok." >&4
7545                         else
7546                                 echo "That didn't work either.  Giving up." >&4
7547                                 exit 1
7548                         fi
7549                 fi
7550         fi
7551 fi
7552 nm_extract="$com"
7553 case "$PASE" in
7554 define)
7555     echo " "
7556     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7557     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7558     ;;
7559 *)  if $test -f /lib/syscalls.exp; then
7560         echo " "
7561         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7562         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7563     fi
7564     ;;
7565 esac
7566 ;;
7567 esac
7568 $rm -f libnames libpath
7569
7570 : see if dld is available
7571 set dld.h i_dld
7572 eval $inhdr
7573
7574
7575 echo " "
7576 echo "Checking for C++..." >&4
7577 cat >try.c <<'EOCP'
7578 #include <stdio.h>
7579 int main(void)
7580 {
7581 #ifdef __cplusplus
7582     printf("define\n");
7583 #else
7584     printf("undef\n");
7585 #endif
7586     return 0;
7587 }
7588 EOCP
7589 set try
7590 if eval $compile_ok && $run ./try >cplusplus$$; then
7591         val=`$cat cplusplus$$`
7592         echo "You are using a C++ compiler."
7593 else
7594         val="$undef"
7595         echo "You are not using a C++ compiler."
7596 fi
7597 $rm_try cplusplus$$
7598 set d_cplusplus
7599 eval $setvar
7600
7601 : is a C symbol defined?
7602 csym='tlook=$1;
7603 case "$3" in
7604 -v) tf=libc.tmp; tdc="";;
7605 -a) tf=libc.tmp; tdc="[]";;
7606 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7607 esac;
7608 tx=yes;
7609 case "$reuseval-$4" in
7610 true-) ;;
7611 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7612 esac;
7613 case "$tx" in
7614 yes)
7615         tval=false;
7616         case "$d_cplusplus" in
7617                 $define) extern_C=\"C\";;
7618         esac;
7619         if $test "$runnm" = true; then
7620                 if $contains $tlook $tf >/dev/null 2>&1; then
7621                         tval=true;
7622                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7623                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7624                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7625                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7626                         $rm_try;
7627                 fi;
7628         else
7629                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7630                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7631                 $rm_try;
7632         fi;
7633         ;;
7634 *)
7635         case "$tval" in
7636         $define) tval=true;;
7637         *) tval=false;;
7638         esac;
7639         ;;
7640 esac;
7641 eval "$2=$tval"'
7642
7643 : define an is-in-libc? function
7644 inlibc='echo " "; td=$define; tu=$undef;
7645 sym=$1; var=$2; eval "was=\$$2";
7646 tx=yes;
7647 case "$reuseval$was" in
7648 true) ;;
7649 true*) tx=no;;
7650 esac;
7651 case "$tx" in
7652 yes)
7653         set $sym tres -f;
7654         eval $csym;
7655         case "$tres" in
7656         true)
7657                 echo "$sym() found." >&4;
7658                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7659         *)
7660                 echo "$sym() NOT found." >&4;
7661                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7662         esac;;
7663 *)
7664         case "$was" in
7665         $define) echo "$sym() found." >&4;;
7666         *) echo "$sym() NOT found." >&4;;
7667         esac;;
7668 esac'
7669
7670 : see if dlopen exists
7671 xxx_runnm="$runnm"
7672 xxx_ccflags="$ccflags"
7673 runnm=false
7674 : with g++ one needs -shared to get is-in-libc to work for dlopen
7675 case "$gccversion" in
7676 '')     ;;
7677 *)      case "$d_cplusplus" in
7678         "$define") ccflags="$ccflags -shared" ;;
7679         esac
7680         ;;
7681 esac
7682 set dlopen d_dlopen
7683 eval $inlibc
7684 runnm="$xxx_runnm"
7685 ccflags="$xxx_ccflags"
7686
7687 : see if this is a unistd.h system
7688 set unistd.h i_unistd
7689 eval $inhdr
7690
7691 : determine which dynamic loading, if any, to compile in
7692 echo " "
7693 dldir="ext/DynaLoader"
7694 case "$usedl" in
7695 $define|y|true)
7696         dflt='y'
7697         usedl="$define"
7698         ;;
7699 $undef|n|false)
7700         dflt='n'
7701         usedl="$undef"
7702         ;;
7703 *)
7704         dflt='n'
7705         case "$d_dlopen" in
7706             $define) dflt='y' ;;
7707         esac
7708         case "$i_dld" in
7709             $define) dflt='y' ;;
7710         esac
7711         : Does a dl_xxx.xs file exist for this operating system
7712         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7713         ;;
7714 esac
7715 rp="Do you wish to use dynamic loading?"
7716 . ./myread
7717 usedl="$ans"
7718 case "$ans" in
7719 y*) usedl="$define"
7720         case "$dlsrc" in
7721         '')
7722                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7723                         dflt="$dldir/dl_${osname}.xs"
7724                 elif $test "$d_dlopen" = "$define" ; then
7725                         dflt="$dldir/dl_dlopen.xs"
7726                 elif $test "$i_dld" = "$define" ; then
7727                         dflt="$dldir/dl_dld.xs"
7728                 else
7729                         dflt=''
7730                 fi
7731                 ;;
7732         *)      dflt="$dldir/$dlsrc"
7733                 ;;
7734         esac
7735     echo "The following dynamic loading files are available:"
7736         : Can not go over to $dldir because getfile has path hard-coded in.
7737         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7738         rp="Source file to use for dynamic loading"
7739         fn="fne"
7740         gfpth="$src"
7741         . ./getfile
7742         usedl="$define"
7743         : emulate basename
7744         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7745
7746         $cat << EOM
7747
7748 Some systems may require passing special flags to $cc -c to
7749 compile modules that will be used to create a shared library.
7750 To use no flags, say "none".
7751
7752 EOM
7753     case "$cccdlflags" in
7754     '') case "$gccversion" in
7755                 '') case "$osname" in
7756                         hpux)   dflt='+z' ;;
7757                         next)   dflt='none' ;;
7758                         irix*)  dflt='-KPIC' ;;
7759                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7760                         sunos)  dflt='-pic' ;;
7761                         *)      dflt='none' ;;
7762                     esac
7763                         ;;
7764                 *)  case "$osname" in
7765                         darwin) dflt='none' ;;
7766                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7767                         *)      dflt='-fpic' ;;
7768                     esac ;;
7769             esac ;;
7770         ' ') dflt='none' ;;
7771     *)  dflt="$cccdlflags" ;;
7772     esac
7773     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7774     . ./myread
7775     case "$ans" in
7776     none) cccdlflags=' ' ;;
7777     *) cccdlflags="$ans" ;;
7778     esac
7779
7780     cat << EOM
7781
7782 Some systems use ld to create libraries that can be dynamically loaded,
7783 while other systems (such as those using ELF) use $cc.
7784
7785 EOM
7786         case "$ld" in
7787         '')     $cat >try.c <<EOM
7788 /* Test for whether ELF binaries are produced */
7789 #include <fcntl.h>
7790 #$i_stdlib I_STDLIB
7791 #ifdef I_STDLIB
7792 #include <stdlib.h>
7793 #endif
7794 #$i_unistd I_UNISTD
7795 #ifdef I_UNISTD
7796 #include <unistd.h>
7797 #endif
7798 int main() {
7799         char b[4];
7800         int i = open("a.out",O_RDONLY);
7801         if(i == -1)
7802                 exit(1); /* fail */
7803         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7804                 exit(0); /* succeed (yes, it's ELF) */
7805         else
7806                 exit(1); /* fail */
7807 }
7808 EOM
7809                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7810                         cat <<EOM
7811 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7812 EOM
7813                         dflt="$cc"
7814                 else
7815                         echo "I'll use ld to build dynamic libraries."
7816                         dflt='ld'
7817                 fi
7818                 $rm_try
7819                 ;;
7820         *)      dflt="$ld"
7821                 ;;
7822         esac
7823
7824     rp="What command should be used to create dynamic libraries?"
7825     . ./myread
7826         ld="$ans"
7827
7828     cat << EOM
7829
7830 Some systems may require passing special flags to $ld to create a
7831 library that can be dynamically loaded.  If your ld flags include
7832 -L/other/path options to locate libraries outside your loader's normal
7833 search path, you may need to specify those -L options here as well.  To
7834 use no flags, say "none".
7835
7836 EOM
7837     case "$lddlflags" in
7838     '') case "$osname" in
7839                         beos) dflt='-nostart' ;;
7840                         hpux) dflt='-b';
7841                               case "$gccversion" in
7842                               '') dflt="$dflt +vnocompatwarnings" ;;
7843                               esac
7844                               ;;
7845                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7846                         next)  dflt='none' ;;
7847                         solaris) dflt='-G' ;;
7848                         sunos) dflt='-assert nodefinitions' ;;
7849                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7850                 *)     dflt='none' ;;
7851                         esac
7852                         ;;
7853     *) dflt="$lddlflags" ;;
7854     esac
7855
7856         : Try to guess additional flags to pick up local libraries.
7857         : Be careful not to append to a plain 'none'
7858         case "$dflt" in
7859         none) dflt='' ;;
7860         esac
7861         for thisflag in $ldflags; do
7862                 case "$thisflag" in
7863                 -L*|-R*|-Wl,-R*)
7864                         case " $dflt " in
7865                         *" $thisflag "*) ;;
7866                         *) dflt="$dflt $thisflag" ;;
7867                         esac
7868                         ;;
7869                 esac
7870         done
7871
7872         case "$dflt" in
7873         ''|' ') dflt='none' ;;
7874         esac
7875
7876     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7877     . ./myread
7878     case "$ans" in
7879     none) lddlflags=' ' ;;
7880     *) lddlflags="$ans" ;;
7881     esac
7882
7883         cat <<EOM
7884
7885 Some systems may require passing special flags to $cc to indicate that
7886 the resulting executable will use dynamic linking.  To use no flags,
7887 say "none".
7888
7889 EOM
7890     case "$ccdlflags" in
7891     '') case "$osname" in
7892             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7893             next|sunos) dflt='none' ;;
7894             *)          dflt='none' ;;
7895             esac ;;
7896     ' ')  dflt='none' ;;
7897     *)  dflt="$ccdlflags" ;;
7898     esac
7899     rp="Any special flags to pass to $cc to use dynamic linking?"
7900     . ./myread
7901     case "$ans" in
7902     none) ccdlflags=' ' ;;
7903     *) ccdlflags="$ans" ;;
7904     esac
7905     ;;
7906 *)  usedl="$undef"
7907         ld='ld'
7908     dlsrc='dl_none.xs'
7909     lddlflags=''
7910     ccdlflags=''
7911     ;;
7912 esac
7913
7914 also=''
7915 case "$usedl" in
7916 $undef)
7917         # No dynamic loading being used, so don't bother even to prompt.
7918         useshrplib='false'
7919         ;;
7920 *)      case "$useshrplib" in
7921         '')     case "$osname" in
7922                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7923                         dflt=y
7924                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7925                         ;;
7926                 next*)
7927                         case "$osvers" in
7928                         4*)     dflt=y
7929                                 also='Building a shared libperl is needed for MAB support.'
7930                                 ;;
7931                         *)      dflt=n
7932                                 ;;
7933                         esac
7934                         ;;
7935                 *)      dflt=n
7936                         ;;
7937                 esac
7938                 ;;
7939         $define|true|[Yy]*)
7940                 dflt=y
7941                 ;;
7942         *)      dflt=n
7943                 ;;
7944         esac
7945         $cat << EOM
7946
7947 The perl executable is normally obtained by linking perlmain.c with
7948 libperl${_a}, any static extensions (usually just DynaLoader), and
7949 any other libraries needed on this system (such as -lm, etc.).  Since
7950 your system supports dynamic loading, it is probably possible to build
7951 a shared libperl.$so.  If you will have more than one executable linked
7952 to libperl.$so, this will significantly reduce the size of each
7953 executable, but it may have a noticeable effect on performance.  The
7954 default is probably sensible for your system.
7955 $also
7956
7957 EOM
7958         rp="Build a shared libperl.$so (y/n)"
7959         . ./myread
7960         case "$ans" in
7961         true|$define|[Yy]*)
7962                 useshrplib='true'  ;;
7963         *)      useshrplib='false' ;;
7964         esac
7965         ;;
7966 esac
7967
7968 case "$useshrplib" in
7969 true)
7970         case "$libperl" in
7971         '')
7972                 # Figure out a good name for libperl.so.  Since it gets stored in
7973                 # a version-specific architecture-dependent library, the version
7974                 # number isn't really that important, except for making cc/ld happy.
7975                 #
7976                 # A name such as libperl.so.3.1
7977                 majmin="libperl.$so.$patchlevel.$subversion"
7978                 # A name such as libperl.so.301
7979                 majonly=`echo $patchlevel $subversion |
7980                         $awk '{printf "%d%02d", $1, $2}'`
7981                 majonly=libperl.$so.$majonly
7982                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7983                 # rely on figuring it out from the naming of libc.
7984                 case "${osname}${osvers}" in
7985                 next4*)
7986                         dflt=libperl.5.$so
7987                         # XXX How handle the --version stuff for MAB?
7988                         ;;
7989                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7990                         dflt=libperl.$so
7991                         ;;
7992                 cygwin*) # ld links against an importlib
7993                         dflt=libperl$lib_ext
7994                         ;;
7995                 *)      # Try to guess based on whether libc has major.minor.
7996                         case "$libc" in
7997                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7998                         *libc.$so.[0-9]*) dflt=$majonly ;;
7999                         *)      dflt=libperl.$so ;;
8000                         esac
8001                         ;;
8002                 esac
8003                 ;;
8004         *)      dflt=$libperl
8005                 ;;
8006         esac
8007         cat << EOM
8008
8009 I need to select a good name for the shared libperl.  If your system uses
8010 library names with major and minor numbers, then you might want something
8011 like $majmin.  Alternatively, if your system uses a single version
8012 number for shared libraries, then you might want to use $majonly.
8013 Or, your system might be quite happy with a simple libperl.$so.
8014
8015 Since the shared libperl will get installed into a version-specific
8016 architecture-dependent directory, the version number of the shared perl
8017 library probably isn't important, so the default should be o.k.
8018
8019 EOM
8020         rp='What name do you want to give to the shared libperl?'
8021         . ./myread
8022         libperl=$ans
8023         echo "Ok, I'll use $libperl"
8024         ;;
8025 *)
8026         libperl="libperl${_a}"
8027         ;;
8028 esac
8029
8030 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8031 case "$shrpdir" in
8032 '') ;;
8033 *)      $cat >&4 <<EOM
8034 WARNING:  Use of the shrpdir variable for the installation location of
8035 the shared $libperl is not supported.  It was never documented and
8036 will not work in this version.  Let me (perlbug@perl.org)
8037 know of any problems this may cause.
8038
8039 EOM
8040         case "$shrpdir" in
8041         "$archlibexp/CORE")
8042                 $cat >&4 <<EOM
8043 But your current setting of $shrpdir is
8044 the default anyway, so it's harmless.
8045 EOM
8046                 ;;
8047         *)
8048                 $cat >&4 <<EOM
8049 Further, your current attempted setting of $shrpdir
8050 conflicts with the value of $archlibexp/CORE
8051 that installperl will use.
8052 EOM
8053                 ;;
8054         esac
8055         ;;
8056 esac
8057
8058 # How will the perl executable find the installed shared $libperl?
8059 # Add $xxx to ccdlflags.
8060 # If we can't figure out a command-line option, use $shrpenv to
8061 # set env LD_RUN_PATH.  The main perl makefile uses this.
8062 shrpdir=$archlibexp/CORE
8063 xxx=''
8064 tmp_shrpenv=''
8065 if "$useshrplib"; then
8066     case "$osname" in 
8067         aix)
8068                 # We'll set it in Makefile.SH...
8069                 ;;
8070         solaris)
8071                 xxx="-R $shrpdir"
8072                 ;;
8073         freebsd|netbsd|openbsd|interix|dragonfly)
8074                 xxx="-Wl,-R$shrpdir"
8075                 ;;
8076         bsdos|linux|irix*|dec_osf|gnu*)
8077                 xxx="-Wl,-rpath,$shrpdir"
8078                 ;;
8079         next)
8080                 # next doesn't like the default...
8081                 ;;
8082         beos)
8083                 # beos doesn't like the default, either.
8084                 ;;
8085         hpux*)
8086                 # hpux doesn't like the default, either.
8087                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8088                 ;;
8089         *)
8090                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8091                 ;;
8092         esac
8093         case "$xxx" in
8094         '') ;;
8095         *)      
8096                 # Only add $xxx if it isn't already in ccdlflags.
8097                 case " $ccdlflags " in
8098                 *" $xxx "*)     ;;
8099                 *)      ccdlflags="$ccdlflags $xxx"
8100                         cat <<EOM >&4
8101
8102 Adding $xxx to the flags
8103 passed to $ld so that the perl executable will find the 
8104 installed shared $libperl.
8105
8106 EOM
8107                         ;;
8108                 esac
8109                 ;;
8110         esac
8111 fi
8112 # Fix ccdlflags in AIX for building external extensions.
8113 # (For building Perl itself bare -bE:perl.exp is needed,
8114 #  Makefile.SH takes care of this.)
8115 case "$osname" in
8116 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8117 esac
8118 # Respect a hint or command-line value.
8119 case "$shrpenv" in
8120 '') shrpenv="$tmp_shrpenv" ;;
8121 esac
8122 case "$ldlibpthname" in
8123 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8124 none)   ldlibpthname='' ;;
8125 esac
8126
8127 : determine where manual pages are on this system
8128 echo " "
8129 case "$sysman" in
8130 '') 
8131         syspath='/usr/share/man/man1 /usr/man/man1'
8132         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8133         syspath="$syspath /usr/man/u_man/man1"
8134         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8135         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8136         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8137         sysman=`./loc . /usr/man/man1 $syspath`
8138         ;;
8139 esac
8140 if $test -d "$sysman"; then
8141         echo "System manual is in $sysman." >&4
8142 else
8143         echo "Could not find manual pages in source form." >&4
8144 fi
8145
8146 : determine where manual pages go
8147 set man1dir man1dir none
8148 eval $prefixit
8149 $cat <<EOM
8150
8151 $spackage has manual pages available in source form.
8152 EOM
8153 case "$nroff" in
8154 nroff)
8155         echo "However, you don't have nroff, so they're probably useless to you."
8156         case "$man1dir" in
8157         '') man1dir="none";;
8158         esac;;
8159 esac
8160 echo "If you don't want the manual sources installed, answer 'none'."
8161 case "$man1dir" in
8162 ' ') dflt=none
8163         ;;
8164 '')
8165         lookpath="$prefixexp/share/man/man1"
8166         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8167         lookpath="$lookpath $prefixexp/man/p_man/man1"
8168         lookpath="$lookpath $prefixexp/man/u_man/man1"
8169         lookpath="$lookpath $prefixexp/man/man.1"
8170         case "$sysman" in
8171         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8172         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8173         esac
8174         set dflt
8175         eval $prefixup
8176         ;;
8177 *)  dflt="$man1dir"
8178         ;;
8179 esac
8180 echo " "
8181 fn=dn+~
8182 rp="Where do the main $spackage manual pages (source) go?"
8183 . ./getfile
8184 if $test "X$man1direxp" != "X$ansexp"; then
8185         installman1dir=''
8186 fi
8187 prefixvar=man1dir
8188 . ./setprefixvar
8189
8190 case "$man1dir" in
8191 '')     man1dir=' '
8192         installman1dir='';;
8193 esac
8194
8195 : What suffix to use on installed man pages
8196
8197 case "$man1dir" in
8198 ' ')
8199         man1ext='0'
8200         ;;
8201 *)
8202         rp="What suffix should be used for the main $spackage man pages?"
8203         case "$man1ext" in
8204         '')     case "$man1dir" in
8205                 *1)  dflt=1 ;;
8206                 *1p) dflt=1p ;;
8207                 *1pm) dflt=1pm ;;
8208                 *l) dflt=l;;
8209                 *n) dflt=n;;
8210                 *o) dflt=o;;
8211                 *p) dflt=p;;
8212                 *C) dflt=C;;
8213                 *L) dflt=L;;
8214                 *L1) dflt=L1;;
8215                 *) dflt=1;;
8216                 esac
8217                 ;;
8218         *)      dflt="$man1ext";;
8219         esac
8220         . ./myread
8221         man1ext="$ans"
8222         ;;
8223 esac
8224
8225 : see if we can have long filenames
8226 echo " "
8227 first=123456789abcdef
8228 $rm -f $first
8229 if (echo hi >$first) 2>/dev/null; then
8230         if $test -f 123456789abcde; then
8231                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8232                 val="$undef"
8233         else
8234                 echo 'You can have filenames longer than 14 characters.'>&4
8235                 val="$define"
8236         fi
8237 else
8238         $cat <<'EOM'
8239 You can't have filenames longer than 14 chars.
8240 You can't even think about them!
8241 EOM
8242         val="$undef"
8243 fi 
8244 set d_flexfnam
8245 eval $setvar
8246 $rm -rf 123456789abcde*
8247
8248 : determine where library module manual pages go
8249 set man3dir man3dir none
8250 eval $prefixit
8251 $cat <<EOM
8252
8253 $spackage has manual pages for many of the library modules.
8254 EOM
8255
8256 case "$nroff" in
8257 nroff)
8258         $cat <<'EOM'
8259 However, you don't have nroff, so they're probably useless to you.
8260 EOM
8261         case "$man3dir" in
8262         '') man3dir="none";;
8263         esac;;
8264 esac
8265
8266 case "$d_flexfnam" in
8267 undef)
8268         $cat <<'EOM'
8269 However, your system can't handle the long file names like File::Basename.3.
8270 EOM
8271         case "$man3dir" in
8272         '') man3dir="none";;
8273         esac;;
8274 esac
8275
8276 echo "If you don't want the manual sources installed, answer 'none'."
8277 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8278 case "$man3dir" in
8279 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8280         if $test -d "$privlib/man/man3"; then
8281                 cat <<EOM >&4
8282
8283 WARNING:  Previous versions of perl installed man3 pages into
8284 $privlib/man/man3.  This version will suggest a
8285 new default of $dflt.
8286 EOM
8287                 tdflt=$dflt
8288                 dflt='n'
8289                 rp='Do you wish to preserve the old behavior?(y/n)'
8290                 . ./myread
8291                 case "$ans" in
8292                 y*) dflt="$privlib/man/man3" ;;
8293                 *)  dflt=$tdflt ;;
8294                 esac
8295     fi
8296         ;;
8297 *)      dflt="$man3dir" ;;
8298 esac
8299 case "$dflt" in
8300 ' ') dflt=none ;;
8301 esac
8302 echo " "
8303 fn=dn+~
8304 rp="Where do the $package library man pages (source) go?"
8305 . ./getfile
8306 prefixvar=man3dir
8307 . ./setprefixvar
8308
8309 case "$man3dir" in
8310 '')     man3dir=' '
8311         installman3dir='';;
8312 esac
8313
8314 : What suffix to use on installed man pages
8315 case "$man3dir" in
8316 ' ')
8317         man3ext='0'
8318         ;;
8319 *)
8320         rp="What suffix should be used for the $package library man pages?"
8321         case "$man3ext" in
8322         '')     case "$man3dir" in
8323                 *3)  dflt=3 ;;
8324                 *3p) dflt=3p ;;
8325                 *3pm) dflt=3pm ;;
8326                 *l) dflt=l;;
8327                 *n) dflt=n;;
8328                 *o) dflt=o;;
8329                 *p) dflt=p;;
8330                 *C) dflt=C;;
8331                 *L) dflt=L;;
8332                 *L3) dflt=L3;;
8333                 *) dflt=3;;
8334                 esac
8335                 ;;
8336         *)      dflt="$man3ext";;
8337         esac
8338         . ./myread
8339         man3ext="$ans"
8340         ;;
8341 esac
8342
8343 : see if we have to deal with yellow pages, now NIS.
8344 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8345         if $test -f /usr/etc/nibindd; then
8346                 echo " "
8347                 echo "I'm fairly confident you're on a NeXT."
8348                 echo " "
8349                 rp='Do you get the hosts file via NetInfo?'
8350                 dflt=y
8351                 case "$hostcat" in
8352                 nidump*) ;;
8353                 '') ;;
8354                 *) dflt=n;;
8355                 esac
8356                 . ./myread
8357                 case "$ans" in
8358                 y*) hostcat='nidump hosts .';;
8359                 *)      case "$hostcat" in
8360                         nidump*) hostcat='';;
8361                         esac
8362                         ;;
8363                 esac
8364         fi
8365         case "$hostcat" in
8366         nidump*) ;;
8367         *)
8368                 case "$hostcat" in
8369                 *ypcat*) dflt=y;;
8370                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8371                                 dflt=y
8372                         else
8373                                 dflt=n
8374                         fi;;
8375                 *) dflt=n;;
8376                 esac
8377                 echo " "
8378                 rp='Are you getting the hosts file via yellow pages?'
8379                 . ./myread
8380                 case "$ans" in
8381                 y*) hostcat='ypcat hosts';;
8382                 *) hostcat='cat /etc/hosts';;
8383                 esac
8384                 ;;
8385         esac
8386 fi
8387 case "$hostcat" in
8388 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8389 esac
8390 case "$groupcat" in
8391 '') test -f /etc/group && groupcat='cat /etc/group';;
8392 esac
8393 case "$passcat" in
8394 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8395 esac
8396
8397 : now get the host name
8398 echo " "
8399 echo "Figuring out host name..." >&4
8400 case "$myhostname" in
8401 '') cont=true
8402         echo 'Maybe "hostname" will work...'
8403         if tans=`sh -c hostname 2>&1` ; then
8404                 myhostname=$tans
8405                 phostname=hostname
8406                 cont=''
8407         fi
8408         ;;
8409 *) cont='';;
8410 esac
8411 if $test "$cont"; then
8412         if ./xenix; then
8413                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8414                 if tans=`cat /etc/systemid 2>&1` ; then
8415                         myhostname=$tans
8416                         phostname='cat /etc/systemid'
8417                         echo "Whadyaknow.  Xenix always was a bit strange..."
8418                         cont=''
8419                 fi
8420         elif $test -r /etc/systemid; then
8421                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8422         fi
8423 fi
8424 if $test "$cont"; then
8425         echo 'No, maybe "uuname -l" will work...'
8426         if tans=`sh -c 'uuname -l' 2>&1` ; then
8427                 myhostname=$tans
8428                 phostname='uuname -l'
8429         else
8430                 echo 'Strange.  Maybe "uname -n" will work...'
8431                 if tans=`sh -c 'uname -n' 2>&1` ; then
8432                         myhostname=$tans
8433                         phostname='uname -n'
8434                 else
8435                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8436                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8437                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8438                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8439                         else
8440                                 case "$myhostname" in
8441                                 '') echo "Does this machine have an identity crisis or something?"
8442                                         phostname='';;
8443                                 *)
8444                                         echo "Well, you said $myhostname before..."
8445                                         phostname='echo $myhostname';;
8446                                 esac
8447                         fi
8448                 fi
8449         fi
8450 fi
8451 case "$myhostname" in
8452 '') myhostname=noname ;;
8453 esac
8454 : you do not want to know about this
8455 set $myhostname
8456 myhostname=$1
8457
8458 : verify guess
8459 if $test "$myhostname" ; then
8460         dflt=y
8461         rp='Your host name appears to be "'$myhostname'".'" Right?"
8462         . ./myread
8463         case "$ans" in
8464         y*) ;;
8465         *) myhostname='';;
8466         esac
8467 fi
8468
8469 : bad guess or no guess
8470 while $test "X$myhostname" = X ; do
8471         dflt=''
8472         rp="Please type the (one word) name of your host:"
8473         . ./myread
8474         myhostname="$ans"
8475 done
8476
8477 : translate upper to lower if necessary
8478 case "$myhostname" in
8479 *[A-Z]*)
8480         echo "(Normalizing case in your host name)"
8481         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8482         ;;
8483 esac
8484
8485 case "$myhostname" in
8486 *.*)
8487         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8488         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8489         echo "(Trimming domain name from host name--host name is now $myhostname)"
8490         ;;
8491 *) case "$mydomain" in
8492         '')
8493                 {
8494                         test "X$hostcat" = "Xypcat hosts" &&
8495                         ypmatch "$myhostname" hosts 2>/dev/null |\
8496                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8497                         $test -s hosts
8498                 } || {
8499                         test "X$hostcat" != "X" &&
8500                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8501                                         /[       ]$myhostname[  . ]/p" > hosts
8502                 }
8503                 tmp_re="[       . ]"
8504                 if $test -f hosts; then
8505                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8506                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8507                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8508                                 hosts | $sort | $uniq | \
8509                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8510                         case `$echo X$dflt` in
8511                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8512                                 dflt=.
8513                                 ;;
8514                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8515                                 ;;
8516                         esac
8517                 else
8518                         echo "(I cannot locate a hosts database anywhere)"
8519                         dflt=.
8520                 fi
8521                 case "$dflt" in
8522                 .)
8523                         tans=`./loc resolv.conf X /etc /usr/etc`
8524                         if $test -f "$tans"; then
8525                                 echo "(Attempting domain name extraction from $tans)"
8526                                 dflt=.`$sed -n -e 's/   / /g' \
8527                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8528                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8529                                 case "$dflt" in
8530                                 .) dflt=.`$sed -n -e 's/        / /g' \
8531                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8532                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8533                                         ;;
8534                                 esac
8535                         fi
8536                         ;;
8537                 esac
8538                 case "$dflt" in
8539                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8540                         dflt=.`sh -c domainname 2>/dev/null`
8541                         case "$dflt" in
8542                         '') dflt='.';;
8543                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8544                         esac
8545                         ;;
8546                 esac
8547                 case "$dflt$osname" in
8548                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8549                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8550                         ;;
8551                 esac
8552                 case "$dflt" in
8553                 .) echo "(Lost all hope -- silly guess then)"
8554                         dflt='.nonet'
8555                         ;;
8556                 esac
8557                 $rm -f hosts
8558                 ;;
8559         *) dflt="$mydomain";;
8560         esac;;
8561 esac
8562 echo " "
8563 rp="What is your domain name?"
8564 . ./myread
8565 tans="$ans"
8566 case "$ans" in
8567 '') ;;
8568 .*) ;;
8569 *) tans=".$tans";;
8570 esac
8571 mydomain="$tans"
8572
8573 : translate upper to lower if necessary
8574 case "$mydomain" in
8575 *[A-Z]*)
8576         echo "(Normalizing case in your domain name)"
8577         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8578         ;;
8579 esac
8580
8581 : a little sanity check here
8582 case "$phostname" in
8583 '') ;;
8584 *)
8585         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8586         $myhostname$mydomain|$myhostname) ;;
8587         *)
8588                 case "$phostname" in
8589                 sed*)
8590                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8591                         ;;
8592                 *)
8593                         echo "(That doesn't agree with your $phostname command, by the way.)"
8594                         ;;
8595                 esac
8596         ;;
8597         esac
8598         ;;
8599 esac
8600
8601 $cat <<EOM
8602
8603 I need to get your e-mail address in Internet format if possible, i.e.
8604 something like user@host.domain. Please answer accurately since I have
8605 no easy means to double check it. The default value provided below
8606 is most probably close to reality but may not be valid from outside
8607 your organization...
8608
8609 EOM
8610 cont=x
8611 while test "$cont"; do
8612         case "$cf_email" in
8613         '') dflt="$cf_by@$myhostname$mydomain";;
8614         *) dflt="$cf_email";;
8615         esac
8616         rp='What is your e-mail address?'
8617         . ./myread
8618         cf_email="$ans"
8619         case "$cf_email" in
8620         *@*.*) cont='' ;;
8621         *)
8622                 rp='Address does not look like an Internet one.  Use it anyway?'
8623                 case "$fastread" in
8624                 yes) dflt=y ;;
8625                 *) dflt=n ;;
8626                 esac
8627                 . ./myread
8628                 case "$ans" in
8629                 y*) cont='' ;;
8630                 *) echo " " ;;
8631                 esac
8632                 ;;
8633         esac
8634 done
8635
8636 $cat <<EOM
8637
8638 If you or somebody else will be maintaining perl at your site, please
8639 fill in the correct e-mail address here so that they may be contacted
8640 if necessary. Currently, the "perlbug" program included with perl
8641 will send mail to this address in addition to perlbug@perl.org. You may
8642 enter "none" for no administrator.
8643
8644 EOM
8645 case "$perladmin" in
8646 '') dflt="$cf_email";;
8647 *) dflt="$perladmin";;
8648 esac
8649 rp='Perl administrator e-mail address'
8650 . ./myread
8651 perladmin="$ans"
8652
8653 : determine whether to only install version-specific parts.
8654 echo " "
8655 $cat <<EOM
8656 Do you want to install only the version-specific parts of the perl
8657 distribution?  Usually you do *not* want to do this.
8658 EOM
8659 case "$versiononly" in
8660 "$define"|[Yy]*|true) dflt='y' ;;
8661 *) dflt='n';
8662 esac
8663 rp="Do you want to install only the version-specific parts of perl?"
8664 . ./myread
8665 case "$ans" in
8666 [yY]*)  val="$define";;
8667 *)      val="$undef" ;;
8668 esac
8669 set versiononly
8670 eval $setvar
8671
8672 case "$versiononly" in
8673 "$define") inc_version_list=''
8674            inc_version_list_init=0
8675            ;;
8676 esac
8677
8678 : figure out how to guarantee perl startup
8679 : XXX Note that this currently takes advantage of the bug that binexp ignores
8680 :     the Configure -Dinstallprefix setting, which in turn means that under
8681 :     relocatable @INC, initialinstalllocation is what binexp started as.
8682 case "$startperl" in
8683 '')
8684         case "$sharpbang" in
8685         *!)
8686                 $cat <<EOH
8687
8688 I can use the #! construct to start perl on your system. This will
8689 make startup of perl scripts faster, but may cause problems if you
8690 want to share those scripts and perl is not in a standard place
8691 ($initialinstalllocation/perl) on all your platforms. The alternative
8692 is to force a shell by starting the script with a single ':' character.
8693
8694 EOH
8695                 case "$versiononly" in
8696                 "$define")      dflt="$initialinstalllocation/perl$version";;
8697                 *)              dflt="$initialinstalllocation/perl";;
8698                 esac
8699                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8700                 . ./myread
8701                 case "$ans" in
8702                 none)   startperl=": # use perl";;
8703                 *)      startperl="#!$ans"
8704                         if $test 30 -lt `echo "$ans" | wc -c`; then
8705                                 $cat >&4 <<EOM
8706
8707 WARNING:  Some systems limit the #! command to 32 characters.
8708 If you experience difficulty running Perl scripts with #!, try
8709 installing Perl in a directory with a shorter pathname.
8710
8711 EOM
8712                         fi ;;
8713                 esac
8714                 ;;
8715         *) startperl=": # use perl"
8716                 ;;
8717         esac
8718         ;;
8719 esac
8720 echo "I'll use $startperl to start perl scripts."
8721
8722 : figure best path for perl in scripts
8723 case "$perlpath" in
8724 '')
8725         case "$versiononly" in
8726         "$define")      perlpath="$initialinstalllocation/perl$version";;
8727         *)              perlpath="$initialinstalllocation/perl";;
8728         esac
8729         case "$startperl" in
8730         *!*) ;;
8731         *)
8732                 $cat <<EOH
8733
8734 I will use the "eval 'exec'" idiom to start Perl on your system.
8735 I can use the full path of your Perl binary for this purpose, but
8736 doing so may cause problems if you want to share those scripts and
8737 Perl is not always in a standard place ($initialinstalllocation/perl).
8738
8739 EOH
8740                 dflt="$initialinstalllocation/perl"
8741                 rp="What path shall I use in \"eval 'exec'\"?"
8742                 . ./myread
8743                 perlpath="$ans"
8744                 ;;
8745         esac
8746         ;;
8747 esac
8748 case "$startperl" in
8749 *!*)    ;;
8750 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8751 esac
8752
8753 : determine where public executable scripts go
8754 set scriptdir scriptdir
8755 eval $prefixit
8756 case "$scriptdir" in
8757 '')
8758         dflt="$bin"
8759         : guess some guesses
8760         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8761         $test -d /usr/share/bin     && dflt=/usr/share/bin
8762         $test -d /usr/local/script  && dflt=/usr/local/script
8763         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8764         $test -d $prefixexp/script  && dflt=$prefixexp/script
8765         set dflt
8766         eval $prefixup
8767         ;;
8768 *)  dflt="$scriptdir"
8769         ;;
8770 esac
8771 $cat <<EOM
8772
8773 Some installations have a separate directory just for executable scripts so
8774 that they can mount it across multiple architectures but keep the scripts in
8775 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8776 Or you might just lump your scripts in with all your other executables.
8777
8778 EOM
8779 fn=d~
8780 rp='Where do you keep publicly executable scripts?'
8781 . ./getfile
8782 if $test "X$ansexp" != "X$scriptdirexp"; then
8783         installscript=''
8784 fi
8785 installscriptdir=''
8786 prefixvar=scriptdir
8787 . ./setprefixvar
8788 : A little fix up for an irregularly named variable.
8789 installscript="$installscriptdir"
8790
8791 : determine where add-on public executables go
8792 case "$sitebin" in
8793 '')     dflt=$siteprefix/bin ;;
8794 *)      dflt=$sitebin ;;
8795 esac
8796 fn=d~
8797 rp='Pathname where the add-on public executables should be installed?'
8798 . ./getfile
8799 prefixvar=sitebin
8800 . ./setprefixvar
8801
8802 : determine where add-on html pages go
8803 : There is no standard location, so try to copy the previously-selected
8804 : directory structure for the core html pages.
8805 case "$sitehtml1dir" in
8806 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8807 *)     dflt=$sitehtml1dir ;;
8808 esac
8809 case "$dflt" in
8810 ''|' ') dflt=none ;;
8811 esac
8812 fn=dn+~
8813 rp='Pathname where the site-specific html pages should be installed?'
8814 . ./getfile
8815 prefixvar=sitehtml1dir
8816 . ./setprefixvar
8817
8818 : determine where add-on library html pages go
8819 : There is no standard location, so try to copy the previously-selected
8820 : directory structure for the core html pages.
8821 case "$sitehtml3dir" in
8822 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8823 *)     dflt=$sitehtml3dir ;;
8824 esac
8825 case "$dflt" in
8826 ''|' ') dflt=none ;;
8827 esac
8828 fn=dn+~
8829 rp='Pathname where the site-specific library html pages should be installed?'
8830 . ./getfile
8831 prefixvar=sitehtml3dir
8832 . ./setprefixvar
8833
8834 : determine where add-on manual pages go
8835 case "$siteman1dir" in
8836 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8837 *)      dflt=$siteman1dir ;;
8838 esac
8839 case "$dflt" in
8840 ''|' ') dflt=none ;;
8841 esac
8842 fn=dn+~
8843 rp='Pathname where the site-specific manual pages should be installed?'
8844 . ./getfile
8845 prefixvar=siteman1dir
8846 . ./setprefixvar
8847
8848 : determine where add-on library man pages go
8849 case "$siteman3dir" in
8850 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8851 *)      dflt=$siteman3dir ;;
8852 esac
8853 case "$dflt" in
8854 ''|' ') dflt=none ;;
8855 esac
8856 fn=dn+~
8857 rp='Pathname where the site-specific library manual pages should be installed?'
8858 . ./getfile
8859 prefixvar=siteman3dir
8860 . ./setprefixvar
8861
8862 : determine where add-on public executable scripts go
8863 case "$sitescript" in
8864 '')     dflt=$siteprefix/script
8865         $test -d $dflt || dflt=$sitebin ;;
8866 *)  dflt="$sitescript" ;;
8867 esac
8868 fn=d~+
8869 rp='Pathname where add-on public executable scripts should be installed?'
8870 . ./getfile
8871 prefixvar=sitescript
8872 . ./setprefixvar
8873
8874 case "$usefaststdio" in
8875 $define|true|[yY]*|'')
8876         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8877         case "$xversion" in
8878         [68])   dflt='y' ;;
8879         *)      dflt='n' ;;
8880         esac
8881         ;;
8882 *) dflt='n';;
8883 esac
8884 cat <<EOM
8885
8886 Perl can be built to use 'fast stdio', which means using the stdio
8887 library but also directly manipulating the stdio buffers to enable
8888 faster I/O.  Using stdio is better for backward compatibility (especially
8889 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8890 interface has been preferred instead of stdio.
8891
8892 If this doesn't make any sense to you, just accept the default '$dflt'.
8893 EOM
8894 rp='Use the "fast stdio" if available?'
8895 . ./myread
8896 case "$ans" in
8897 y|Y)    val="$define" ;;     
8898 *)      val="$undef" ;;
8899 esac
8900 set usefaststdio
8901 eval $setvar
8902
8903
8904 : define an is-a-typedef? function
8905 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8906 case "$inclist" in
8907 "") inclist="sys/types.h";;
8908 esac;
8909 eval "varval=\$$var";
8910 case "$varval" in
8911 "")
8912         $rm -f temp.c;
8913         for inc in $inclist; do
8914                 echo "#include <$inc>" >>temp.c;
8915         done;
8916         echo "#ifdef $type" >> temp.c;
8917         echo "printf(\"We have $type\");" >> temp.c;
8918         echo "#endif" >> temp.c;
8919         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8920         if $contains $type temp.E >/dev/null 2>&1; then
8921                 eval "$var=\$type";
8922         else
8923                 eval "$var=\$def";
8924         fi;
8925         $rm -f temp.?;;
8926 *) eval "$var=\$varval";;
8927 esac'
8928
8929 : define an is-a-typedef? function that prompts if the type is not available.
8930 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8931 case "$inclist" in
8932 "") inclist="sys/types.h";;
8933 esac;
8934 eval "varval=\$$var";
8935 case "$varval" in
8936 "")
8937         $rm -f temp.c;
8938         for inc in $inclist; do
8939                 echo "#include <$inc>" >>temp.c;
8940         done;
8941         echo "#ifdef $type" >> temp.c;
8942         echo "printf(\"We have $type\");" >> temp.c;
8943         echo "#endif" >> temp.c;
8944         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8945         echo " " ;
8946         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8947         if $contains $type temp.E >/dev/null 2>&1; then
8948                 echo "$type found." >&4;
8949                 eval "$var=\$type";
8950         else
8951                 echo "$type NOT found." >&4;
8952                 dflt="$def";
8953                 . ./myread ;
8954                 eval "$var=\$ans";
8955         fi;
8956         $rm -f temp.?;;
8957 *) eval "$var=\$varval";;
8958 esac'
8959
8960 : see what type lseek is declared as in the kernel
8961 rp="What is the type used for lseek's offset on this system?"
8962 set off_t lseektype long stdio.h sys/types.h
8963 eval $typedef_ask
8964
8965 echo " "
8966 echo "Checking to see how big your file offsets are..." >&4
8967 $cat >try.c <<EOCP
8968 #include <sys/types.h>
8969 #include <stdio.h>
8970 int main()
8971 {
8972     printf("%d\n", (int)sizeof($lseektype));
8973     return(0);
8974 }
8975 EOCP
8976 set try
8977 if eval $compile_ok; then
8978         lseeksize=`$run ./try`
8979         echo "Your file offsets are $lseeksize bytes long."
8980 else
8981         dflt=$longsize
8982         echo " "
8983         echo "(I can't seem to compile the test program.  Guessing...)"
8984         rp="What is the size of your file offsets (in bytes)?"
8985         . ./myread
8986         lseeksize="$ans"
8987 fi
8988 $rm_try
8989
8990 : see what type file positions are declared as in the library
8991 rp="What is the type for file position used by fsetpos()?"
8992 set fpos_t fpostype long stdio.h sys/types.h
8993 eval $typedef_ask
8994
8995 echo " "
8996 case "$fpostype" in
8997 *_t) zzz="$fpostype"    ;;
8998 *)   zzz="fpos_t"       ;;
8999 esac
9000 echo "Checking the size of $zzz..." >&4 
9001 cat > try.c <<EOCP
9002 #include <sys/types.h>
9003 #include <stdio.h>
9004 #$i_stdlib I_STDLIB
9005 #ifdef I_STDLIB
9006 #include <stdlib.h>
9007 #endif
9008 int main() {
9009     printf("%d\n", (int)sizeof($fpostype));
9010     exit(0);
9011 }
9012 EOCP
9013 set try
9014 if eval $compile_ok; then
9015         yyy=`$run ./try`
9016         case "$yyy" in
9017         '')     fpossize=4
9018                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9019                 ;;
9020         *)      fpossize=$yyy
9021                 echo "Your $zzz is $fpossize bytes long."
9022                 ;;
9023         esac
9024 else
9025         dflt="$longsize"
9026         echo " " >&4
9027         echo "(I can't compile the test program.  Guessing...)" >&4
9028         rp="What is the size of your file positions (in bytes)?"
9029         . ./myread
9030         fpossize="$ans"
9031 fi
9032
9033 # Backward compatibility (uselfs is deprecated).
9034 case "$uselfs" in
9035 "$define"|true|[yY]*)
9036         cat <<EOM >&4
9037
9038 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9039 EOM
9040         uselargefiles="$define"
9041         ;;
9042 esac
9043
9044 case "$lseeksize:$fpossize" in
9045 8:8) cat <<EOM
9046
9047 You can have files larger than 2 gigabytes.
9048 EOM
9049    val="$define" ;;
9050 *)    case "$uselargefiles" in
9051    "$undef"|false|[nN]*) dflt='n' ;;
9052    *)   dflt='y' ;;
9053    esac
9054    cat <<EOM
9055
9056 Perl can be built to understand large files (files larger than 2 gigabytes)
9057 on some systems.  To do so, Configure can be run with -Duselargefiles.
9058
9059 If this doesn't make any sense to you, just accept the default '$dflt'.
9060 EOM
9061    rp='Try to understand large files, if available?'
9062    . ./myread
9063    case "$ans" in
9064    y|Y)         val="$define" ;;
9065    *)           val="$undef"  ;;
9066    esac
9067    ;;
9068 esac
9069 set uselargefiles
9070 eval $setvar
9071 : Look for a hint-file generated 'call-back-unit'.  If the
9072 : user has specified that a large files perl is to be built,
9073 : we may need to set or change some other defaults.
9074 if $test -f uselargefiles.cbu; then
9075         echo "Your platform has some specific hints regarding large file builds, using them..."
9076         . ./uselargefiles.cbu
9077 fi
9078 case "$uselargefiles" in
9079 "$define")
9080         if $test -f uselargefiles.cbu; then
9081                 echo " "
9082                 echo "Rechecking to see how big your file offsets are..." >&4
9083                 $cat >try.c <<EOCP
9084 #include <sys/types.h>
9085 #include <stdio.h>
9086 int main()
9087 {
9088     printf("%d\n", (int)sizeof($lseektype));
9089     return(0);
9090 }
9091 EOCP
9092                 set try
9093                 if eval $compile_ok; then
9094                         lseeksize=`$run ./try`
9095                         $echo "Your file offsets are now $lseeksize bytes long."
9096                 else
9097                         dflt="$lseeksize"
9098                         echo " "
9099                         echo "(I can't seem to compile the test program.  Guessing...)"
9100                         rp="What is the size of your file offsets (in bytes)?"
9101                         . ./myread
9102                         lseeksize="$ans"
9103                 fi
9104                 case "$fpostype" in
9105                 *_t) zzz="$fpostype"    ;;
9106                 *)   zzz="fpos_t"       ;;
9107                 esac
9108                 $echo $n "Rechecking the size of $zzz...$c" >&4
9109                 $cat > try.c <<EOCP
9110 #include <sys/types.h>
9111 #include <stdio.h>
9112 #$i_stdlib I_STDLIB
9113 #ifdef I_STDLIB
9114 #include <stdlib.h>
9115 #endif
9116 int main() {
9117     printf("%d\n", (int)sizeof($fpostype));
9118     return(0);
9119 }
9120 EOCP
9121                 set try
9122                 if eval $compile_ok; then
9123                         yyy=`$run ./try`
9124                         dflt="$lseeksize"
9125                         case "$yyy" in
9126                         '')     echo " "
9127                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9128                                 ;;
9129                         *)      fpossize=$yyy
9130                                 echo " $fpossize bytes." >&4
9131                                 ;;
9132                         esac
9133                 else
9134                         dflt="$fpossize"
9135                         echo " "
9136                         echo "(I can't compile the test program.  Guessing...)" >&4
9137                         rp="What is the size of your file positions (in bytes)?"
9138                         . ./myread
9139                         fpossize="$ans"
9140                 fi
9141                 $rm_try
9142         fi
9143         ;;
9144 esac
9145
9146 case "$vendorprefix" in
9147 '')     d_vendorbin="$undef"
9148         vendorbin=''
9149         vendorbinexp=''
9150         ;;
9151 *)      d_vendorbin="$define"
9152         : determine where vendor-supplied executables go.
9153         case "$vendorbin" in
9154         '') dflt=$vendorprefix/bin ;;
9155         *)      dflt="$vendorbin" ;;
9156         esac
9157         fn=d~+
9158         rp='Pathname for the vendor-supplied executables directory?'
9159         . ./getfile
9160         vendorbin="$ans"
9161         vendorbinexp="$ansexp"
9162         ;;
9163 esac
9164 prefixvar=vendorbin
9165 . ./installprefix
9166
9167 case "$vendorprefix" in
9168 '')     vendorhtml1dir=''
9169         vendorhtml1direxp=''
9170         ;;
9171 *)      : determine where vendor-supplied html pages go.
9172         : There is no standard location, so try to copy the previously-selected
9173         : directory structure for the core html pages.
9174         : XXX Better default suggestions would be welcome.
9175         case "$vendorhtml1dir" in
9176         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9177         *)      dflt=$vendorhtml1dir ;;
9178         esac
9179         case "$dflt" in
9180         ''|' ') dflt=none ;;
9181         esac
9182         fn=dn+~
9183         rp='Pathname for the vendor-supplied html pages?'
9184         . ./getfile
9185         vendorhtml1dir="$ans"
9186         vendorhtml1direxp="$ansexp"
9187         ;;
9188 esac
9189 : Use ' ' for none so value is preserved next time through Configure
9190 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9191 prefixvar=vendorhtml1dir
9192 . ./installprefix
9193
9194 case "$vendorprefix" in
9195 '')     vendorhtml3dir=''
9196         vendorhtml3direxp=''
9197         ;;
9198 *)      : determine where vendor-supplied module html pages go.
9199         : There is no standard location, so try to copy the previously-selected
9200         : directory structure for the core html pages.
9201         : XXX Better default suggestions would be welcome.
9202         case "$vendorhtml3dir" in
9203         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9204         *)      dflt=$vendorhtml3dir ;;
9205         esac
9206         case "$dflt" in
9207         ''|' ') dflt=none ;;
9208         esac
9209         fn=dn+~
9210         rp='Pathname for the vendor-supplied html pages?'
9211         . ./getfile
9212         vendorhtml3dir="$ans"
9213         vendorhtml3direxp="$ansexp"
9214         ;;
9215 esac
9216 : Use ' ' for none so value is preserved next time through Configure
9217 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9218 prefixvar=vendorhtml3dir
9219 . ./installprefix
9220
9221 case "$vendorprefix" in
9222 '')     vendorman1dir=''
9223         vendorman1direxp=''
9224         ;;
9225 *)      : determine where vendor-supplied manual pages go.
9226         case "$vendorman1dir" in
9227         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9228         *)      dflt=$vendorman1dir ;;
9229         esac
9230         case "$dflt" in
9231         ''|' ') dflt=none ;;
9232         esac
9233         fn=nd~+
9234         rp='Pathname for the vendor-supplied manual section 1 pages?'
9235         . ./getfile
9236         vendorman1dir="$ans"
9237         vendorman1direxp="$ansexp"
9238         ;;
9239 esac
9240 : Use ' ' for none so value is preserved next time through Configure
9241 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9242 prefixvar=vendorman1dir
9243 . ./installprefix
9244
9245 case "$vendorprefix" in
9246 '')     vendorman3dir=''
9247         vendorman3direxp=''
9248         ;;
9249 *)      : determine where vendor-supplied module manual pages go.
9250         case "$vendorman3dir" in
9251         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9252         *)      dflt=$vendorman3dir ;;
9253         esac
9254         case "$dflt" in
9255         ''|' ') dflt=none ;;
9256         esac
9257         fn=nd~+
9258         rp='Pathname for the vendor-supplied manual section 3 pages?'
9259         . ./getfile
9260         vendorman3dir="$ans"
9261         vendorman3direxp="$ansexp"
9262         ;;
9263 esac
9264 : Use ' ' for none so value is preserved next time through Configure
9265 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9266 prefixvar=vendorman3dir
9267 . ./installprefix
9268
9269 case "$vendorprefix" in
9270 '')     d_vendorscript="$undef"
9271         vendorscript=''
9272         vendorscriptexp=''
9273         ;;
9274 *)      d_vendorscript="$define"
9275         : determine where vendor-supplied scripts go.
9276         case "$vendorscript" in
9277         '')     dflt=$vendorprefix/script
9278                 $test -d $dflt || dflt=$vendorbin ;;
9279         *)  dflt="$vendorscript" ;;
9280         esac
9281         $cat <<EOM
9282
9283 The installation process will create a directory for
9284 vendor-supplied scripts.
9285
9286 EOM
9287         fn=d~+
9288         rp='Pathname for the vendor-supplied scripts directory?'
9289         . ./getfile
9290         vendorscript="$ans"
9291         vendorscriptexp="$ansexp"
9292         ;;
9293 esac
9294 prefixvar=vendorscript
9295 . ./installprefix
9296
9297 : see if qgcvt exists
9298 set qgcvt d_qgcvt
9299 eval $inlibc
9300
9301 echo " "
9302
9303 if $test X"$d_longdbl" = X"$define"; then
9304
9305 echo "Checking how to print long doubles..." >&4
9306
9307 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9308         $cat >try.c <<'EOCP'
9309 #include <sys/types.h>
9310 #include <stdio.h>
9311 int main() {
9312   double d = 123.456;
9313   printf("%.3f\n", d);
9314 }
9315 EOCP
9316         set try
9317         if eval $compile; then
9318                 yyy=`$run ./try`
9319                 case "$yyy" in
9320                 123.456)
9321                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9322                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9323                         echo "We will use %f."
9324                         ;;
9325                 esac
9326         fi
9327 fi
9328
9329 if $test X"$sPRIfldbl" = X; then
9330         $cat >try.c <<'EOCP'
9331 #include <sys/types.h>
9332 #include <stdio.h>
9333 int main() {
9334   long double d = 123.456;
9335   printf("%.3Lf\n", d);
9336 }
9337 EOCP
9338         set try
9339         if eval $compile; then
9340                 yyy=`$run ./try`
9341                 case "$yyy" in
9342                 123.456)
9343                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9344                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9345                         echo "We will use %Lf."
9346                         ;;
9347                 esac
9348         fi
9349 fi
9350
9351 if $test X"$sPRIfldbl" = X; then
9352         $cat >try.c <<'EOCP'
9353 #include <sys/types.h>
9354 #include <stdio.h>
9355 int main() {
9356   long double d = 123.456;
9357   printf("%.3llf\n", d);
9358 }
9359 EOCP
9360         set try
9361         if eval $compile; then
9362                 yyy=`$run ./try`
9363                 case "$yyy" in
9364                 123.456)
9365                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9366                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9367                         echo "We will use %llf."
9368                         ;;
9369                 esac
9370         fi
9371 fi
9372
9373 if $test X"$sPRIfldbl" = X; then
9374         $cat >try.c <<'EOCP'
9375 #include <sys/types.h>
9376 #include <stdio.h>
9377 int main() {
9378   long double d = 123.456;
9379   printf("%.3lf\n", d);
9380 }
9381 EOCP
9382         set try
9383         if eval $compile; then
9384                 yyy=`$run ./try`
9385                 case "$yyy" in
9386                 123.456)
9387                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9388                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9389                         echo "We will use %lf."
9390                         ;;
9391                 esac
9392         fi
9393 fi
9394
9395 if $test X"$sPRIfldbl" = X; then
9396         echo "Cannot figure out how to print long doubles." >&4
9397 else
9398         sSCNfldbl=$sPRIfldbl    # expect consistency
9399 fi
9400
9401 $rm_try
9402
9403 fi # d_longdbl
9404
9405 case "$sPRIfldbl" in
9406 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9407         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9408         d_SCNfldbl="$undef";
9409         ;;
9410 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9411         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9412         d_SCNfldbl="$define";
9413         ;;
9414 esac
9415
9416 : Check how to convert floats to strings.
9417
9418 if test "X$d_Gconvert" = X; then
9419
9420 echo " "
9421 echo "Checking for an efficient way to convert floats to strings."
9422 echo " " > try.c
9423 case "$uselongdouble" in
9424 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9425 esac
9426 case "$d_longdbl" in
9427 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9428 esac
9429 case "$d_PRIgldbl" in
9430 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9431 esac
9432 $cat >>try.c <<EOP
9433 #ifdef TRY_gconvert
9434 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9435 char *myname = "gconvert";
9436 #endif
9437 #ifdef TRY_gcvt
9438 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9439 char *myname = "gcvt";
9440 #endif
9441 #ifdef TRY_qgcvt
9442 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9443 char *myname = "qgcvt";
9444 #define DOUBLETYPE long double
9445 #endif
9446 #ifdef TRY_sprintf
9447 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9448 #ifdef HAS_PRIgldbl
9449 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9450 #else
9451 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9452 #endif
9453 #else
9454 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9455 #endif
9456 char *myname = "sprintf";
9457 #endif
9458
9459 #ifndef DOUBLETYPE
9460 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9461 #define DOUBLETYPE long double
9462 #else
9463 #define DOUBLETYPE double
9464 #endif
9465 #endif
9466
9467 #include <stdio.h>
9468
9469 #define I_STDLIB $i_stdlib
9470 #ifdef I_STDLIB
9471 #include <stdlib.h>
9472 #endif
9473
9474 int
9475 checkit(expect, got)
9476 char *expect;
9477 char *got;
9478 {
9479     if (strcmp(expect, got)) {
9480                 printf("%s oddity:  Expected %s, got %s\n",
9481                         myname, expect, got);
9482                 exit(1);
9483         }
9484 }
9485
9486 int main()
9487 {
9488         char buf[64];
9489         buf[63] = '\0';
9490
9491         /* This must be 1st test on (which?) platform */
9492         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9493         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9494         checkit("0.1", buf);
9495
9496         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9497         checkit("0.01", buf);
9498
9499         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9500         checkit("0.001", buf);
9501
9502         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9503         checkit("0.0001", buf);
9504
9505         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9506         if (strlen(buf) > 5)
9507             checkit("9e-005", buf); /* for Microsoft ?? */
9508         else
9509             checkit("9e-05", buf);
9510
9511         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9512         checkit("1", buf);
9513
9514         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9515         checkit("1.1", buf);
9516
9517         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9518         checkit("1.01", buf);
9519
9520         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9521         checkit("1.001", buf);
9522
9523         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9524         checkit("1.0001", buf);
9525
9526         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9527         checkit("1.00001", buf);
9528
9529         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9530         checkit("1.000001", buf);
9531
9532         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9533         checkit("0", buf);
9534
9535         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9536         checkit("-1", buf);
9537
9538         /* Some Linux gcvt's give 1.e+5 here. */
9539         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9540         checkit("100000", buf);
9541
9542         /* Some Linux gcvt's give -1.e+5 here. */
9543         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9544         checkit("-100000", buf);
9545
9546         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9547         checkit("123.456", buf);
9548
9549         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9550         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9551         /* 34 should be enough to scare even long double
9552          * places into using the e notation. */
9553         if (strlen(buf) > 5)
9554             checkit("1e+034", buf); /* for Microsoft */
9555         else
9556             checkit("1e+34", buf);
9557
9558         /* For Perl, if you add additional tests here, also add them to
9559          * t/base/num.t for benefit of platforms not using Configure or
9560          * overriding d_Gconvert */
9561
9562         exit(0);
9563 }
9564 EOP
9565 : first add preferred functions to our list
9566 xxx_list=""
9567 for xxx_convert in $gconvert_preference; do
9568     case $xxx_convert in
9569     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9570     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9571     esac
9572 done
9573 : then add any others
9574 for xxx_convert in gconvert gcvt sprintf; do
9575     case "$xxx_list" in
9576     *$xxx_convert*) ;;
9577     *) xxx_list="$xxx_list $xxx_convert" ;;
9578     esac
9579 done
9580
9581 case "$d_longdbl$uselongdouble" in
9582 "$define$define")
9583     : again, add prefered functions to our list first
9584     xxx_ld_list=""
9585     for xxx_convert in $gconvert_ld_preference; do
9586         case $xxx_convert in
9587         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9588         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9589         esac
9590     done
9591     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9592     for xxx_convert in qgcvt sprintf $xxx_list; do
9593         case "$xxx_ld_list" in
9594         $xxx_convert*|*" $xxx_convert"*) ;;
9595         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9596         esac
9597     done
9598     : if sprintf cannot do long doubles, move it to the end
9599     if test "$d_PRIgldbl" != "$define"; then
9600         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9601     fi
9602     : if no qgcvt, remove it
9603     if test "$d_qgcvt" != "$define"; then
9604         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9605     fi
9606     : use the ld_list
9607     xxx_list="$xxx_ld_list"
9608     ;;
9609 esac
9610
9611 for xxx_convert in $xxx_list; do
9612         echo "Trying $xxx_convert..."
9613         $rm_try
9614         set try -DTRY_$xxx_convert
9615         if eval $compile; then
9616                 echo "$xxx_convert() found." >&4
9617                 if $run ./try; then
9618                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9619                         break;
9620                 else
9621                         echo "...But $xxx_convert didn't work as I expected."
9622                         xxx_convert=''
9623                 fi
9624         else
9625                 echo "$xxx_convert NOT found." >&4
9626         fi
9627 done
9628
9629 if test X$xxx_convert = X; then
9630     echo "*** WHOA THERE!!! ***" >&4
9631     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9632     xxx_convert=sprintf
9633 fi
9634
9635 case "$xxx_convert" in
9636 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9637 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9638 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9639 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9640    "$define$define$define")
9641       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9642    "$define$define$undef")
9643       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9644    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9645    esac
9646    ;;
9647 esac
9648
9649 fi
9650
9651 : see if _fwalk exists
9652 set fwalk d__fwalk
9653 eval $inlibc
9654
9655 : Initialize h_fcntl
9656 h_fcntl=false
9657
9658 : Initialize h_sysfile
9659 h_sysfile=false
9660
9661 : access call always available on UNIX
9662 set access d_access
9663 eval $inlibc
9664
9665 : locate the flags for 'access()'
9666 case "$d_access" in
9667 "$define")
9668         echo " "
9669         $cat >access.c <<EOCP
9670 #include <sys/types.h>
9671 #ifdef I_FCNTL
9672 #include <fcntl.h>
9673 #endif
9674 #ifdef I_SYS_FILE
9675 #include <sys/file.h>
9676 #endif
9677 #ifdef I_UNISTD
9678 #include <unistd.h>
9679 #endif
9680 #$i_stdlib I_STDLIB
9681 #ifdef I_STDLIB
9682 #include <stdlib.h>
9683 #endif
9684 int main() {
9685         exit(R_OK);
9686 }
9687 EOCP
9688         : check sys/file.h first, no particular reason here
9689         if $test `./findhdr sys/file.h` && \
9690                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9691                 h_sysfile=true;
9692                 echo "<sys/file.h> defines the *_OK access constants." >&4
9693         elif $test `./findhdr fcntl.h` && \
9694                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9695                 h_fcntl=true;
9696                 echo "<fcntl.h> defines the *_OK access constants." >&4
9697         elif $test `./findhdr unistd.h` && \
9698                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9699                 echo "<unistd.h> defines the *_OK access constants." >&4
9700         else
9701                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9702         fi
9703         ;;
9704 esac
9705 $rm -f access*
9706
9707 : see if accessx exists
9708 set accessx d_accessx
9709 eval $inlibc
9710
9711 : see if aintl exists
9712 set aintl d_aintl
9713 eval $inlibc
9714
9715 : see if alarm exists
9716 set alarm d_alarm
9717 eval $inlibc
9718
9719 : see if POSIX threads are available
9720 set pthread.h i_pthread
9721 eval $inhdr
9722
9723 : define a fucntion to check prototypes
9724 $cat > protochk <<EOSH
9725 $startsh
9726 cc="$cc"
9727 optimize="$optimize"
9728 ccflags="$ccflags"
9729 prototype="$prototype"
9730 define="$define"
9731 rm_try="$rm_try"
9732 usethreads=$usethreads
9733 i_pthread=$i_pthread
9734 pthread_h_first=$pthread_h_first
9735 EOSH
9736
9737 $cat >> protochk <<'EOSH'
9738
9739 $rm_try
9740 foo="$1"
9741 shift
9742 while test $# -ge 2; do
9743         case "$1" in
9744                 $define) echo "#include <$2>" >> try.c ;;
9745                 literal) echo "$2" >> try.c ;;
9746         esac
9747     # Extra magic for the benefit of systems that need pthread.h
9748     # to be included early to correctly detect threadsafe functions.
9749     # Such functions must guarantee themselves, though, that the usethreads
9750     # and i_pthread have been defined, before calling protochk.
9751     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9752         echo "#include <pthread.h>" >> try.c
9753         pthread_h_done=yes
9754     fi
9755     shift 2
9756 done
9757 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9758 cat >> try.c <<'EOCP'
9759 #ifdef CAN_PROTOTYPE
9760 #define _(args) args
9761 #else
9762 #define _(args) ()
9763 #endif
9764 EOCP
9765 echo "$foo" >> try.c
9766 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9767 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9768 status=$?
9769 $rm_try
9770 exit $status
9771 EOSH
9772 chmod +x protochk
9773 $eunicefix protochk
9774
9775 hasproto='varname=$1; func=$2; shift; shift;
9776 while $test $# -ge 2; do
9777         case "$1" in
9778         $define) echo "#include <$2>";;
9779         esac ;
9780     shift 2;
9781 done > try.c;
9782 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9783 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9784         echo "$func() prototype found.";
9785         val="$define";
9786 else
9787         echo "$func() prototype NOT found.";
9788         val="$undef";
9789 fi;
9790 set $varname;
9791 eval $setvar;
9792 $rm_try tryout.c'
9793
9794 : see if sys/types.h has to be included
9795 set sys/types.h i_systypes
9796 eval $inhdr
9797
9798 : see if sys/select.h has to be included
9799 set sys/select.h i_sysselct
9800 eval $inhdr
9801
9802 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9803 while $test $# -ge 2; do
9804         case "$1" in
9805         $define) echo "#include <$2>";;
9806         esac ;
9807     shift 2;
9808 done > try.c;
9809 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9810 set try;
9811 if eval $compile; then
9812         val="$define";
9813 else
9814         val="$undef";
9815 fi;
9816 set $varname;
9817 eval $setvar;
9818 $rm_try'
9819
9820 : see if we should include time.h, sys/time.h, or both
9821 echo " "
9822 if test "X$timeincl" = X; then
9823         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9824         $echo $n "I'm now running the test program...$c"
9825         $cat >try.c <<EOCP
9826 #include <sys/types.h>
9827 #ifdef I_TIME
9828 #include <time.h>
9829 #endif
9830 #ifdef I_SYSTIME
9831 #ifdef SYSTIMEKERNEL
9832 #define KERNEL
9833 #endif
9834 #include <sys/time.h>
9835 #endif
9836 #ifdef I_SYSSELECT
9837 #include <sys/select.h>
9838 #endif
9839 #$i_stdlib I_STDLIB
9840 #ifdef I_STDLIB
9841 #include <stdlib.h>
9842 #endif
9843 int main()
9844 {
9845         struct tm foo;
9846 #ifdef S_TIMEVAL
9847         struct timeval bar;
9848 #endif
9849 #ifdef S_TIMEZONE
9850         struct timezone tzp;
9851 #endif
9852         if (foo.tm_sec == foo.tm_sec)
9853                 exit(0);
9854 #ifdef S_TIMEVAL
9855         if (bar.tv_sec == bar.tv_sec)
9856                 exit(0);
9857 #endif
9858         exit(1);
9859 }
9860 EOCP
9861         flags=''
9862         for s_timezone in '-DS_TIMEZONE' ''; do
9863         sysselect=''
9864         for s_timeval in '-DS_TIMEVAL' ''; do
9865         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9866         for i_time in '' '-DI_TIME'; do
9867         for i_systime in '-DI_SYSTIME' ''; do
9868                 case "$flags" in
9869                 '') $echo $n ".$c"
9870                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9871                         if eval $compile; then
9872                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9873                                 shift
9874                                 flags="$*"
9875                                 echo " "
9876                                 $echo $n "Succeeded with $flags$c"
9877                         fi
9878                         ;;
9879                 esac
9880         done
9881         done
9882         done
9883         done
9884         done
9885         timeincl=''
9886         echo " "
9887         case "$flags" in
9888         *SYSTIMEKERNEL*) i_systimek="$define"
9889                 timeincl=`./findhdr sys/time.h`
9890                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9891         *) i_systimek="$undef";;
9892         esac
9893         case "$flags" in
9894         *I_TIME*) i_time="$define"
9895                 timeincl=`./findhdr time.h`" $timeincl"
9896                 echo "We'll include <time.h>." >&4;;
9897         *) i_time="$undef";;
9898         esac
9899         case "$flags" in
9900         *I_SYSTIME*) i_systime="$define"
9901                 timeincl=`./findhdr sys/time.h`" $timeincl"
9902                 echo "We'll include <sys/time.h>." >&4;;
9903         *) i_systime="$undef";;
9904         esac
9905         $rm_try
9906 fi
9907 : see if struct tm knows about tm_zone
9908 case "$i_systime$i_time" in
9909 *$define*)
9910         echo " "
9911         echo "Checking to see if your struct tm has tm_zone field..." >&4
9912         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9913         eval $hasfield
9914         ;;
9915 *)      val="$undef"
9916         set d_tm_tm_zone
9917         eval $setvar
9918         ;;
9919 esac
9920 case "$d_tm_tm_zone" in
9921 "$define")      echo "Yes, it does."   ;;
9922 *)              echo "No, it doesn't." ;;
9923 esac
9924 : see if struct tm knows about tm_gmtoff
9925 case "$i_systime$i_time" in
9926 *$define*)
9927         echo " "
9928         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9929         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9930         eval $hasfield
9931         ;;
9932 *)      val="$undef"
9933         set d_tm_tm_gmtoff
9934         eval $setvar
9935         ;;
9936 esac
9937 case "$d_tm_tm_gmtoff" in
9938 "$define")      echo "Yes, it does."   ;;
9939 *)              echo "No, it doesn't." ;;
9940 esac
9941
9942 : see if asctime_r exists
9943 set asctime_r d_asctime_r
9944 eval $inlibc
9945 case "$d_asctime_r" in
9946 "$define")
9947         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9948         case "$d_asctime_r_proto:$usethreads" in
9949         ":define")      d_asctime_r_proto=define
9950                 set d_asctime_r_proto asctime_r $hdrs
9951                 eval $hasproto ;;
9952         *)      ;;
9953         esac
9954         case "$d_asctime_r_proto" in
9955         define)
9956         case "$asctime_r_proto" in
9957         ''|0) try='char* asctime_r(const struct tm*, char*);'
9958         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9959         esac
9960         case "$asctime_r_proto" in
9961         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9962         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9963         esac
9964         case "$asctime_r_proto" in
9965         ''|0) try='int asctime_r(const struct tm*, char*);'
9966         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9967         esac
9968         case "$asctime_r_proto" in
9969         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9970         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9971         esac
9972         case "$asctime_r_proto" in
9973         ''|0)   d_asctime_r=undef
9974                 asctime_r_proto=0
9975                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9976         * )     case "$asctime_r_proto" in
9977                 REENTRANT_PROTO*) ;;
9978                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9979                 esac
9980                 echo "Prototype: $try" ;;
9981         esac
9982         ;;
9983         *)      case "$usethreads" in
9984                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9985                 esac
9986                 d_asctime_r=undef
9987                 asctime_r_proto=0
9988                 ;;
9989         esac
9990         ;;
9991 *)      asctime_r_proto=0
9992         ;;
9993 esac
9994
9995 : see if atolf exists
9996 set atolf d_atolf
9997 eval $inlibc
9998
9999 : see if atoll exists
10000 set atoll d_atoll
10001 eval $inlibc
10002
10003 : Look for GCC-style attribute format
10004 case "$d_attribute_format" in
10005 '')
10006 echo " "
10007 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10008 $cat >attrib.c <<'EOCP'
10009 #include <stdio.h>
10010 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10011 EOCP
10012 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10013         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10014                 echo "Your C compiler doesn't support __attribute__((format))."
10015                 val="$undef"
10016         else
10017                 echo "Your C compiler supports __attribute__((format))."
10018                 val="$define"
10019         fi
10020 else
10021         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10022         val="$undef"
10023 fi
10024 ;;
10025 *) val="$d_attribute_format" ;;
10026 esac
10027 set d_attribute_format
10028 eval $setvar
10029 $rm -f attrib*
10030
10031 : Look for GCC-style attribute format with null format allowed
10032 case "$d_printf_format_null" in
10033 '') case "$d_attribute_format" in
10034     $define)
10035         echo " "
10036         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10037 $cat >attrib.c <<EOCP
10038 #include <stdio.h>
10039 #$i_stdlib I_STDLIB
10040 #ifdef I_STDLIB
10041 #include <stdlib.h>
10042 #endif
10043 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10044 int null_printf (char* pat,...) { return (int)pat; }
10045 int main () { exit(null_printf(NULL)); }
10046 EOCP
10047         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10048             : run the executable in case it produces a run-time warning
10049             if $run ./attrib >>attrib.out 2>&1; then
10050                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10051                     echo "Your C compiler doesn't allow __printf__ format to be null."
10052                     val="$undef"
10053                 else
10054                     echo "Your C compiler allows __printf__ format to be null."
10055                     val="$define"
10056                 fi
10057             else
10058             echo "Your C compiler executable failed with __printf__ format null."
10059             val="$undef"
10060         fi
10061     else
10062         echo "Your C compiler fails with __printf__ format null."
10063         val="$undef"
10064     fi
10065     ;;
10066     *)  val="$undef" ;;
10067     esac
10068 ;;
10069 *)  val="$d_printf_format_null" ;;
10070 esac
10071 set d_printf_format_null
10072 eval $setvar
10073 $rm -f attrib*
10074
10075 : Look for GCC-style attribute malloc
10076 case "$d_attribute_malloc" in
10077 '')
10078 echo " "
10079 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10080 $cat >attrib.c <<'EOCP'
10081 #include <stdio.h>
10082 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10083 EOCP
10084 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10085         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10086                 echo "Your C compiler doesn't support __attribute__((malloc))."
10087                 val="$undef"
10088         else
10089                 echo "Your C compiler supports __attribute__((malloc))."
10090                 val="$define"
10091         fi
10092 else
10093         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10094         val="$undef"
10095 fi
10096 ;;
10097 *) val="$d_attribute_malloc" ;;
10098 esac
10099 set d_attribute_malloc
10100 eval $setvar
10101 $rm -f attrib*
10102
10103 : Look for GCC-style attribute nonnull
10104 case "$d_attribute_nonnull" in
10105 '')
10106 echo " "
10107 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10108 $cat >attrib.c <<'EOCP'
10109 #include <stdio.h>
10110 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10111 EOCP
10112 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10113         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10114                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10115                 val="$undef"
10116         else
10117                 echo "Your C compiler supports __attribute__((nonnull))."
10118                 val="$define"
10119         fi
10120 else
10121         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10122         val="$undef"
10123 fi
10124 ;;
10125 *) val="$d_attribute_nonnull" ;;
10126 esac
10127 set d_attribute_nonnull
10128 eval $setvar
10129 $rm -f attrib*
10130
10131 : Look for GCC-style attribute noreturn
10132 case "$d_attribute_noreturn" in
10133 '')
10134 echo " "
10135 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10136 $cat >attrib.c <<'EOCP'
10137 #include <stdio.h>
10138 void fall_over_dead( void ) __attribute__((noreturn));
10139 EOCP
10140 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10141         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10142                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10143                 val="$undef"
10144         else
10145                 echo "Your C compiler supports __attribute__((noreturn))."
10146                 val="$define"
10147         fi
10148 else
10149         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10150         val="$undef"
10151 fi
10152 ;;
10153 *) val="$d_attribute_noreturn" ;;
10154 esac
10155 set d_attribute_noreturn
10156 eval $setvar
10157 $rm -f attrib*
10158
10159 : Look for GCC-style attribute pure
10160 case "$d_attribute_pure" in
10161 '')
10162 echo " "
10163 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10164 $cat >attrib.c <<'EOCP'
10165 #include <stdio.h>
10166 int square( int n ) __attribute__((pure));
10167 EOCP
10168 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10169         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10170                 echo "Your C compiler doesn't support __attribute__((pure))."
10171                 val="$undef"
10172         else
10173                 echo "Your C compiler supports __attribute__((pure))."
10174                 val="$define"
10175         fi
10176 else
10177         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10178         val="$undef"
10179 fi
10180 ;;
10181 *) val="$d_attribute_pure" ;;
10182 esac
10183 set d_attribute_pure
10184 eval $setvar
10185 $rm -f attrib*
10186
10187 : Look for GCC-style attribute unused
10188 case "$d_attribute_unused" in
10189 '')
10190 echo " "
10191 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10192 $cat >attrib.c <<'EOCP'
10193 #include <stdio.h>
10194 int do_something( int dummy __attribute__((unused)), int n );
10195 EOCP
10196 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10197         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10198                 echo "Your C compiler doesn't support __attribute__((unused))."
10199                 val="$undef"
10200         else
10201                 echo "Your C compiler supports __attribute__((unused))."
10202                 val="$define"
10203         fi
10204 else
10205         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10206         val="$undef"
10207 fi
10208 ;;
10209 *) val="$d_attribute_unused" ;;
10210 esac
10211 set d_attribute_unused
10212 eval $setvar
10213 $rm -f attrib*
10214
10215 : Look for GCC-style attribute warn_unused_result
10216 case "$d_attribute_warn_unused_result" in
10217 '')
10218 echo " "
10219 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10220 $cat >attrib.c <<'EOCP'
10221 #include <stdio.h>
10222 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10223 EOCP
10224 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10225         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10226                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10227                 val="$undef"
10228         else
10229                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10230                 val="$define"
10231         fi
10232 else
10233         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10234         val="$undef"
10235 fi
10236 ;;
10237 *) val="$d_attribute_warn_unused_result" ;;
10238 esac
10239 set d_attribute_warn_unused_result
10240 eval $setvar
10241 $rm -f attrib*
10242
10243 : see if bcmp exists
10244 set bcmp d_bcmp
10245 eval $inlibc
10246
10247 : see if bcopy exists
10248 set bcopy d_bcopy
10249 eval $inlibc
10250
10251 : see if getpgrp exists
10252 set getpgrp d_getpgrp
10253 eval $inlibc
10254
10255 case "$d_getpgrp" in
10256 "$define")
10257         echo " "
10258         echo "Checking to see which flavor of getpgrp is in use..."
10259         $cat >try.c <<EOP
10260 #$i_unistd I_UNISTD
10261 #include <sys/types.h>
10262 #ifdef I_UNISTD
10263 #  include <unistd.h>
10264 #endif
10265 #$i_stdlib I_STDLIB
10266 #ifdef I_STDLIB
10267 #include <stdlib.h>
10268 #endif
10269 int main()
10270 {
10271         if (getuid() == 0) {
10272                 printf("(I see you are running Configure as super-user...)\n");
10273                 setuid(1);
10274         }
10275 #ifdef TRY_BSD_PGRP
10276         if (getpgrp(1) == 0)
10277                 exit(0);
10278 #else
10279         if (getpgrp() > 0)
10280                 exit(0);
10281 #endif
10282         exit(1);
10283 }
10284 EOP
10285         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10286                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10287                 val="$define"
10288         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10289                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10290                 val="$undef"
10291         else
10292                 echo "I can't seem to compile and run the test program."
10293                 if ./usg; then
10294                         xxx="a USG one, i.e. you use getpgrp()."
10295                 else
10296                         # SVR4 systems can appear rather BSD-ish.
10297                         case "$i_unistd" in
10298                         $undef)
10299                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10300                                 val="$define"
10301                                 ;;
10302                         $define)
10303                                 xxx="probably a USG one, i.e. you use getpgrp()."
10304                                 val="$undef"
10305                                 ;;
10306                         esac
10307                 fi
10308                 echo "Assuming your getpgrp is $xxx" >&4
10309         fi
10310         ;;
10311 *) val="$undef";;
10312 esac
10313 set d_bsdgetpgrp
10314 eval $setvar
10315 $rm_try
10316
10317 : see if setpgrp exists
10318 set setpgrp d_setpgrp
10319 eval $inlibc
10320
10321 case "$d_setpgrp" in
10322 "$define")
10323         echo " "
10324         echo "Checking to see which flavor of setpgrp is in use..."
10325         $cat >try.c <<EOP
10326 #$i_unistd I_UNISTD
10327 #include <sys/types.h>
10328 #ifdef I_UNISTD
10329 #  include <unistd.h>
10330 #endif
10331 #$i_stdlib I_STDLIB
10332 #ifdef I_STDLIB
10333 #include <stdlib.h>
10334 #endif
10335 int main()
10336 {
10337         if (getuid() == 0) {
10338                 printf("(I see you are running Configure as super-user...)\n");
10339                 setuid(1);
10340         }
10341 #ifdef TRY_BSD_PGRP
10342         if (-1 == setpgrp(1, 1))
10343                 exit(0);
10344 #else
10345         if (setpgrp() != -1)
10346                 exit(0);
10347 #endif
10348         exit(1);
10349 }
10350 EOP
10351         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10352                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10353                 val="$define"
10354         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10355                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10356                 val="$undef"
10357         else
10358                 echo "(I can't seem to compile and run the test program.)"
10359                 if ./usg; then
10360                         xxx="a USG one, i.e. you use setpgrp()."
10361                 else
10362                         # SVR4 systems can appear rather BSD-ish.
10363                         case "$i_unistd" in
10364                         $undef)
10365                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10366                                 val="$define"
10367                                 ;;
10368                         $define)
10369                                 xxx="probably a USG one, i.e. you use setpgrp()."
10370                                 val="$undef"
10371                                 ;;
10372                         esac
10373                 fi
10374                 echo "Assuming your setpgrp is $xxx" >&4
10375         fi
10376         ;;
10377 *) val="$undef";;
10378 esac
10379 set d_bsdsetpgrp
10380 eval $setvar
10381 $rm_try
10382
10383 : Look for GCC-style __builtin_choose_expr
10384 case "$d_builtin_choose_expr" in
10385 '')
10386     echo " "
10387     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10388     $cat >try.c <<'EOCP'
10389 #include <assert.h>
10390 #include <stdlib.h>
10391 #include <stdio.h>
10392
10393 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10394
10395 int main(void) {
10396     assert( SYRINX(1) == 2112 );
10397     assert( SYRINX(1) != 5150 );
10398     assert( SYRINX(0) == 5150 );
10399     assert( SYRINX(0) != 2112 );
10400     puts( "All good!" );
10401     exit(0);
10402 }
10403
10404 EOCP
10405     set try
10406     if eval $compile; then
10407         echo "Your C compiler supports __builtin_choose_expr."
10408         val="$define"
10409     else
10410         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10411         val="$undef"
10412     fi
10413 ;;
10414 *) val="$d_builtin_choose_expr" ;;
10415 esac
10416
10417 set d_builtin_choose_expr
10418 eval $setvar
10419 $rm_try
10420
10421 : Look for GCC-style __builtin_expect
10422 case "$d_builtin_expect" in
10423 '')
10424     echo " "
10425     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10426     $cat >builtin.c <<'EOCP'
10427 int main(void) {
10428     int n = 50;
10429     if ( __builtin_expect(n, 0) ) n = 1;
10430 }
10431 EOCP
10432     set try
10433     if eval $compile; then
10434         echo "Your C compiler supports __builtin_choose_expr."
10435         val="$define"
10436     else
10437         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10438         val="$undef"
10439     fi
10440     ;;
10441 *) val="$d_builtin_expect" ;;
10442 esac
10443
10444 set d_builtin_expect
10445 eval $setvar
10446 $rm_try
10447
10448 : see if bzero exists
10449 set bzero d_bzero
10450 eval $inlibc
10451
10452 : see if stdarg is available
10453 echo " "
10454 if $test `./findhdr stdarg.h`; then
10455         echo "<stdarg.h> found." >&4
10456         valstd="$define"
10457 else
10458         echo "<stdarg.h> NOT found." >&4
10459         valstd="$undef"
10460 fi
10461
10462 : see if varags is available
10463 echo " "
10464 if $test `./findhdr varargs.h`; then
10465         echo "<varargs.h> found." >&4
10466 else
10467         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10468 fi
10469
10470 : set up the varargs testing programs
10471 $cat > varargs.c <<EOP
10472 #ifdef I_STDARG
10473 #include <stdarg.h>
10474 #endif
10475 #ifdef I_VARARGS
10476 #include <varargs.h>
10477 #endif
10478
10479 #ifdef I_STDARG
10480 int f(char *p, ...)
10481 #else
10482 int f(va_alist)
10483 va_dcl
10484 #endif
10485 {
10486         va_list ap;
10487 #ifndef I_STDARG
10488         char *p;
10489 #endif
10490 #ifdef I_STDARG
10491         va_start(ap,p);
10492 #else
10493         va_start(ap);
10494         p = va_arg(ap, char *);
10495 #endif
10496         va_end(ap);
10497         return 0;
10498 }
10499 EOP
10500 $cat > varargs <<EOP
10501 $startsh
10502 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10503         echo "true"
10504 else
10505         echo "false"
10506 fi
10507 $rm -f varargs$_o
10508 EOP
10509 chmod +x varargs
10510
10511 : now check which varargs header should be included
10512 echo " "
10513 i_varhdr=''
10514 case "$valstd" in
10515 "$define")
10516         if `./varargs I_STDARG`; then
10517                 val='stdarg.h'
10518         elif `./varargs I_VARARGS`; then
10519                 val='varargs.h'
10520         fi
10521         ;;
10522 *)
10523         if `./varargs I_VARARGS`; then
10524                 val='varargs.h'
10525         fi
10526         ;;
10527 esac
10528 case "$val" in
10529 '')
10530 echo "I could not find the definition for va_dcl... You have problems..." >&4
10531         val="$undef"; set i_stdarg; eval $setvar
10532         val="$undef"; set i_varargs; eval $setvar
10533         ;;
10534 *) 
10535         set i_varhdr
10536         eval $setvar
10537         case "$i_varhdr" in
10538         stdarg.h)
10539                 val="$define"; set i_stdarg; eval $setvar
10540                 val="$undef"; set i_varargs; eval $setvar
10541                 ;;
10542         varargs.h)
10543                 val="$undef"; set i_stdarg; eval $setvar
10544                 val="$define"; set i_varargs; eval $setvar
10545                 ;;
10546         esac
10547         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10548 esac
10549 $rm -f varargs*
10550
10551 : see if the Compiler supports C99 variadic macros
10552 case "$i_stdarg$i_stdlib" in
10553     "$define$define")
10554     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10555     $cat >try.c <<EOCP
10556 #include <stdio.h>
10557 #include <stdarg.h>
10558
10559 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10560
10561 int main() {
10562   char buf[20];
10563   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10564   puts(buf);
10565   return 0;
10566 }
10567 EOCP
10568     set try
10569     if eval $compile && $run ./try 2>&1 >/dev/null; then
10570         case "`$run ./try`" in
10571             "123 456 789")
10572             echo "You have C99 variadic macros." >&4
10573             d_c99_variadic_macros="$define"
10574             ;;
10575             *)
10576             echo "You don't have functional C99 variadic macros." >&4
10577             d_c99_variadic_macros="$undef"
10578             ;;
10579         esac
10580     else
10581         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10582         d_c99_variadic_macros="$undef"
10583     fi
10584     $rm_try
10585     ;;
10586     *)
10587     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10588     d_c99_variadic_macros="$undef"
10589     ;;
10590 esac
10591
10592 : see if signal is declared as pointer to function returning int or void
10593 echo " "
10594 xxx=`./findhdr signal.h`
10595 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10596 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10597         echo "You have int (*signal())() instead of void." >&4
10598         val="$undef"
10599 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10600         echo "You have void (*signal())()." >&4
10601         val="$define"
10602 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10603         echo "You have int (*signal())() instead of void." >&4
10604         val="$undef"
10605 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10606         echo "You have void (*signal())()." >&4
10607         val="$define"
10608 else
10609         case "$d_voidsig" in
10610         '')
10611         echo "I can't determine whether signal handler returns void or int..." >&4
10612                 dflt=void
10613                 rp="What type does your signal handler return?"
10614                 . ./myread
10615                 case "$ans" in
10616                 v*) val="$define";;
10617                 *) val="$undef";;
10618                 esac;;
10619         "$define")
10620                 echo "As you already told me, signal handler returns void." >&4
10621                 val="$define"
10622                 ;;
10623         *)      echo "As you already told me, signal handler returns int." >&4
10624                 val="$undef"
10625                 ;;
10626         esac
10627 fi
10628 set d_voidsig
10629 eval $setvar
10630 case "$d_voidsig" in
10631 "$define") signal_t="void";;
10632 *) signal_t="int";;
10633 esac
10634 $rm -f $$.tmp
10635
10636 : check for ability to cast large floats to 32-bit ints.
10637 echo " "
10638 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10639 if $test "$intsize" -ge 4; then
10640         xxx=int
10641 else
10642         xxx=long
10643 fi
10644 $cat >try.c <<EOCP
10645 #include <stdio.h>
10646 #$i_stdlib I_STDLIB
10647 #ifdef I_STDLIB
10648 #include <stdlib.h>
10649 #endif
10650 #include <sys/types.h>
10651 #include <signal.h>
10652 $signal_t blech(int s) { exit(3); }
10653 int main()
10654 {
10655         $xxx i32;
10656         double f, g;
10657         int result = 0;
10658         char str[16];
10659         signal(SIGFPE, blech);
10660
10661         /* Don't let compiler optimize the test away.  Store the number
10662            in a writable string for gcc to pass to sscanf under HP/UX.
10663         */
10664         sprintf(str, "2147483647");
10665         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10666         g = 10 * f;
10667         i32  = ($xxx) g;
10668
10669         /* x86 processors will probably give 0x8000 0000, which is a
10670            sign change.  We don't want that.  We want to mimic SPARC
10671            behavior here, which is to preserve the sign and give
10672            back 0x7fff ffff.
10673         */
10674         if (i32 != ($xxx) f)
10675                 result |= 1;
10676         exit(result);
10677 }
10678 EOCP
10679 set try
10680 if eval $compile_ok; then
10681         $run ./try
10682         yyy=$?
10683 else
10684         echo "(I can't seem to compile the test program--assuming it can't)"
10685         yyy=1
10686 fi
10687 case "$yyy" in
10688 0)      val="$define"
10689         echo "Yup, it can."
10690         ;;
10691 *)      val="$undef"
10692         echo "Nope, it can't."
10693         ;;
10694 esac
10695 set d_casti32
10696 eval $setvar
10697 $rm_try
10698
10699 : check for ability to cast negative floats to unsigned
10700 echo " "
10701 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10702 $cat >try.c <<EOCP
10703 #include <stdio.h>
10704 #$i_stdlib I_STDLIB
10705 #ifdef I_STDLIB
10706 #include <stdlib.h>
10707 #endif
10708 #include <sys/types.h>
10709 #include <signal.h>
10710 $signal_t blech(int s) { exit(7); }
10711 $signal_t blech_in_list(int s) { exit(4); }
10712 unsigned long dummy_long(unsigned long p) { return p; }
10713 unsigned int dummy_int(unsigned int p) { return p; }
10714 unsigned short dummy_short(unsigned short p) { return p; }
10715 int main()
10716 {
10717         double f;
10718         unsigned long along;
10719         unsigned int aint;
10720         unsigned short ashort;
10721         int result = 0;
10722         char str[16];
10723
10724         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10725            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10726            optimized the whole file away
10727         */
10728         /* Store the number in a writable string for gcc to pass to
10729            sscanf under HP/UX.
10730         */
10731         sprintf(str, "-123");
10732         sscanf(str, "%lf", &f);  /* f = -123.; */
10733
10734         signal(SIGFPE, blech);
10735         along = (unsigned long)f;
10736         aint = (unsigned int)f;
10737         ashort = (unsigned short)f;
10738         if (along != (unsigned long)-123)
10739                 result |= 1;
10740         if (aint != (unsigned int)-123)
10741                 result |= 1;
10742         if (ashort != (unsigned short)-123)
10743                 result |= 1;
10744         sprintf(str, "1073741824.");
10745         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10746         f = f + f;
10747         along = 0;
10748         along = (unsigned long)f;
10749         if (along != 0x80000000)
10750                 result |= 2;
10751         f -= 1.;
10752         along = 0;
10753         along = (unsigned long)f;
10754         if (along != 0x7fffffff)
10755                 result |= 1;
10756         f += 2.;
10757         along = 0;
10758         along = (unsigned long)f;
10759         if (along != 0x80000001)
10760                 result |= 2;
10761         if (result)
10762                 exit(result);
10763         signal(SIGFPE, blech_in_list);
10764         sprintf(str, "123.");
10765         sscanf(str, "%lf", &f);  /* f = 123.; */
10766         along = dummy_long((unsigned long)f);
10767         aint = dummy_int((unsigned int)f);
10768         ashort = dummy_short((unsigned short)f);
10769         if (along != (unsigned long)123)
10770                 result |= 4;
10771         if (aint != (unsigned int)123)
10772                 result |= 4;
10773         if (ashort != (unsigned short)123)
10774                 result |= 4;
10775         exit(result);
10776
10777 }
10778 EOCP
10779 set try
10780 if eval $compile_ok; then
10781         $run ./try
10782         castflags=$?
10783 else
10784         echo "(I can't seem to compile the test program--assuming it can't)"
10785         castflags=7
10786 fi
10787 case "$castflags" in
10788 0)      val="$define"
10789         echo "Yup, it can."
10790         ;;
10791 *)      val="$undef"
10792         echo "Nope, it can't."
10793         ;;
10794 esac
10795 set d_castneg
10796 eval $setvar
10797 $rm_try
10798
10799 : see if vprintf exists
10800 echo " "
10801 if set vprintf val -f d_vprintf; eval $csym; $val; then
10802         echo 'vprintf() found.' >&4
10803         val="$define"
10804         $cat >try.c <<EOF
10805 #include <varargs.h>
10806 #$i_stdlib I_STDLIB
10807 #ifdef I_STDLIB
10808 #include <stdlib.h>
10809 #endif
10810
10811 int main() { xxx("foo"); }
10812
10813 xxx(va_alist)
10814 va_dcl
10815 {
10816         va_list args;
10817         char buf[10];
10818
10819         va_start(args);
10820         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10821 }
10822 EOF
10823         set try
10824         if eval $compile && $run ./try; then
10825                 echo "Your vsprintf() returns (int)." >&4
10826                 val2="$undef"
10827         else
10828                 echo "Your vsprintf() returns (char*)." >&4
10829                 val2="$define"
10830         fi
10831 else
10832         echo 'vprintf() NOT found.' >&4
10833                 val="$undef"
10834                 val2="$undef"
10835 fi
10836 $rm_try
10837 set d_vprintf
10838 eval $setvar
10839 val=$val2
10840 set d_charvspr
10841 eval $setvar
10842
10843 : see if chown exists
10844 set chown d_chown
10845 eval $inlibc
10846
10847 : see if chroot exists
10848 set chroot d_chroot
10849 eval $inlibc
10850
10851 : see if chsize exists
10852 set chsize d_chsize
10853 eval $inlibc
10854
10855 : see if class exists
10856 set class d_class
10857 eval $inlibc
10858
10859 : see if clearenv exists
10860 set clearenv d_clearenv
10861 eval $inlibc
10862
10863 hasstruct='varname=$1; struct=$2; shift; shift;
10864 while $test $# -ge 2; do
10865         case "$1" in
10866         $define) echo "#include <$2>";;
10867         esac ;
10868     shift 2;
10869 done > try.c;
10870 echo "int main () { struct $struct foo; }" >> try.c;
10871 set try;
10872 if eval $compile; then
10873         val="$define";
10874 else
10875         val="$undef";
10876 fi;
10877 set $varname;
10878 eval $setvar;
10879 $rm_try'
10880
10881 socketlib=''
10882 sockethdr=''
10883 : see whether socket exists
10884 echo " "
10885 $echo $n "Hmm... $c" >&4
10886 if set socket val -f d_socket; eval $csym; $val; then
10887         echo "Looks like you have Berkeley networking support." >&4
10888         d_socket="$define"
10889         if set setsockopt val -f; eval $csym; $val; then
10890                 d_oldsock="$undef"
10891         else
10892                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10893                 d_oldsock="$define"
10894         fi
10895 else
10896         if $contains socklib libc.list >/dev/null 2>&1; then
10897                 echo "Looks like you have Berkeley networking support." >&4
10898                 d_socket="$define"
10899                 : we will have to assume that it supports the 4.2 BSD interface
10900                 d_oldsock="$undef"
10901         else
10902                 echo "You don't have Berkeley networking in libc$_a..." >&4
10903                 if test "X$d_socket" = "X$define"; then
10904                    echo "...but you seem to believe that you have sockets." >&4
10905                 else
10906                         for net in net socket
10907                         do
10908                                 if test -f /usr/lib/lib$net$_a; then
10909                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10910                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10911                                         if $contains socket libc.list >/dev/null 2>&1; then
10912                                                 d_socket="$define"
10913                                                 socketlib="-l$net"
10914                                                 case "$net" in
10915                                                 net)
10916                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10917                                                         sockethdr="-I/usr/netinclude"
10918                                                         ;;
10919                                                 esac
10920                                                 echo "Found Berkeley sockets interface in lib$net." >&4
10921                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10922                                                         d_oldsock="$undef"
10923                                                 else
10924                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10925                                                         d_oldsock="$define"
10926                                                 fi
10927                                                 break
10928                                         fi
10929                                 fi
10930                         done
10931                         if test "X$d_socket" != "X$define"; then
10932                            echo "or anywhere else I see." >&4
10933                            d_socket="$undef"
10934                            d_oldsock="$undef"
10935                         fi
10936                 fi
10937         fi
10938 fi
10939
10940 : see if socketpair exists
10941 set socketpair d_sockpair
10942 eval $inlibc
10943
10944
10945 echo " "
10946 echo "Checking the availability of certain socket constants..." >&4
10947 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10948         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10949         $cat >try.c <<EOF
10950 #include <sys/types.h>
10951 #include <sys/socket.h>
10952 int main() {
10953     int i = $ENUM;
10954 }
10955 EOF
10956         val="$undef"
10957         set try; if eval $compile; then
10958                 val="$define"
10959         fi
10960         set d_${enum}; eval $setvar
10961         $rm_try
10962 done
10963
10964 : see if this is a sys/uio.h system
10965 set sys/uio.h i_sysuio
10966 eval $inhdr
10967
10968
10969 echo " "
10970 echo "Checking to see if your system supports struct cmsghdr..." >&4
10971 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10972 eval $hasstruct
10973 case "$d_cmsghdr_s" in
10974 "$define")      echo "Yes, it does."   ;;
10975 *)              echo "No, it doesn't." ;;
10976 esac
10977
10978
10979 : check for const keyword
10980 echo " "
10981 echo 'Checking to see if your C compiler knows about "const"...' >&4
10982 $cat >const.c <<'EOCP'
10983 typedef struct spug { int drokk; } spug;
10984 int main()
10985 {
10986         const char *foo;
10987         const spug y = { 0 };
10988 }
10989 EOCP
10990 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10991         val="$define"
10992         echo "Yup, it does."
10993 else
10994         val="$undef"
10995         echo "Nope, it doesn't."
10996 fi
10997 set d_const
10998 eval $setvar
10999
11000 : see if copysignl exists
11001 set copysignl d_copysignl
11002 eval $inlibc
11003
11004 : see if crypt exists
11005 echo " "
11006 set crypt d_crypt
11007 eval $inlibc
11008 case "$d_crypt" in
11009 $define) cryptlib='' ;;
11010 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11011                 echo 'crypt() found.' >&4
11012                 val="$define"
11013                 cryptlib=''
11014         else
11015                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11016                 if $test -z "$cryptlib"; then
11017                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11018                 else
11019                         cryptlib=-lcrypt
11020                 fi
11021                 if $test -z "$cryptlib"; then
11022                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11023                 else
11024                         cryptlib=-lcrypt
11025                 fi
11026                 if $test -z "$cryptlib"; then
11027                         cryptlib=`./loc libcrypt$_a "" $libpth`
11028                 else
11029                         cryptlib=-lcrypt
11030                 fi
11031                 if $test -z "$cryptlib"; then
11032                         echo 'crypt() NOT found.' >&4
11033                         val="$undef"
11034                 else
11035                         val="$define"
11036                 fi
11037         fi
11038         set d_crypt
11039         eval $setvar
11040         ;;
11041 esac
11042
11043 : see if this is a crypt.h system
11044 set crypt.h i_crypt
11045 eval $inhdr
11046
11047 : see if crypt_r exists
11048 set crypt_r d_crypt_r
11049 eval $inlibc
11050 case "$d_crypt_r" in
11051 "$define")
11052         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11053         case "$d_crypt_r_proto:$usethreads" in
11054         ":define")      d_crypt_r_proto=define
11055                 set d_crypt_r_proto crypt_r $hdrs
11056                 eval $hasproto ;;
11057         *)      ;;
11058         esac
11059         case "$d_crypt_r_proto" in
11060         define)
11061         case "$crypt_r_proto" in
11062         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11063         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11064         esac
11065         case "$crypt_r_proto" in
11066         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11067         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11068         esac
11069         case "$crypt_r_proto" in
11070         ''|0)   d_crypt_r=undef
11071                 crypt_r_proto=0
11072                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11073         * )     case "$crypt_r_proto" in
11074                 REENTRANT_PROTO*) ;;
11075                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11076                 esac
11077                 echo "Prototype: $try" ;;
11078         esac
11079         ;;
11080         *)      case "$usethreads" in
11081                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11082                 esac
11083                 d_crypt_r=undef
11084                 crypt_r_proto=0
11085                 ;;
11086         esac
11087         ;;
11088 *)      crypt_r_proto=0
11089         ;;
11090 esac
11091
11092 : get csh whereabouts
11093 case "$csh" in
11094 'csh') val="$undef" ;;
11095 *) val="$define" ;;
11096 esac
11097 set d_csh
11098 eval $setvar
11099 : Respect a hint or command line value for full_csh.
11100 case "$full_csh" in
11101 '') full_csh=$csh ;;
11102 esac
11103
11104 : see if ctermid exists
11105 set ctermid d_ctermid
11106 eval $inlibc
11107
11108 : see if ctermid_r exists
11109 set ctermid_r d_ctermid_r
11110 eval $inlibc
11111 case "$d_ctermid_r" in
11112 "$define")
11113         hdrs="$i_systypes sys/types.h define stdio.h "
11114         case "$d_ctermid_r_proto:$usethreads" in
11115         ":define")      d_ctermid_r_proto=define
11116                 set d_ctermid_r_proto ctermid_r $hdrs
11117                 eval $hasproto ;;
11118         *)      ;;
11119         esac
11120         case "$d_ctermid_r_proto" in
11121         define)
11122         case "$ctermid_r_proto" in
11123         ''|0) try='char* ctermid_r(char*);'
11124         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11125         esac
11126         case "$ctermid_r_proto" in
11127         ''|0)   d_ctermid_r=undef
11128                 ctermid_r_proto=0
11129                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11130         * )     case "$ctermid_r_proto" in
11131                 REENTRANT_PROTO*) ;;
11132                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11133                 esac
11134                 echo "Prototype: $try" ;;
11135         esac
11136         ;;
11137         *)      case "$usethreads" in
11138                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11139                 esac
11140                 d_ctermid_r=undef
11141                 ctermid_r_proto=0
11142                 ;;
11143         esac
11144         ;;
11145 *)      ctermid_r_proto=0
11146         ;;
11147 esac
11148
11149 : see if ctime_r exists
11150 set ctime_r d_ctime_r
11151 eval $inlibc
11152 case "$d_ctime_r" in
11153 "$define")
11154         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11155         case "$d_ctime_r_proto:$usethreads" in
11156         ":define")      d_ctime_r_proto=define
11157                 set d_ctime_r_proto ctime_r $hdrs
11158                 eval $hasproto ;;
11159         *)      ;;
11160         esac
11161         case "$d_ctime_r_proto" in
11162         define)
11163         case "$ctime_r_proto" in
11164         ''|0) try='char* ctime_r(const time_t*, char*);'
11165         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11166         esac
11167         case "$ctime_r_proto" in
11168         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11169         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11170         esac
11171         case "$ctime_r_proto" in
11172         ''|0) try='int ctime_r(const time_t*, char*);'
11173         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11174         esac
11175         case "$ctime_r_proto" in
11176         ''|0) try='int ctime_r(const time_t*, char*, int);'
11177         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11178         esac
11179         case "$ctime_r_proto" in
11180         ''|0)   d_ctime_r=undef
11181                 ctime_r_proto=0
11182                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11183         * )     case "$ctime_r_proto" in
11184                 REENTRANT_PROTO*) ;;
11185                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11186                 esac
11187                 echo "Prototype: $try" ;;
11188         esac
11189         ;;
11190         *)      case "$usethreads" in
11191                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11192                 esac
11193                 d_ctime_r=undef
11194                 ctime_r_proto=0
11195                 ;;
11196         esac
11197         ;;
11198 *)      ctime_r_proto=0
11199         ;;
11200 esac
11201
11202 : see if cuserid exists
11203 set cuserid d_cuserid
11204 eval $inlibc
11205
11206 : see if this is a limits.h system
11207 set limits.h i_limits
11208 eval $inhdr
11209
11210 : see if this is a float.h system
11211 set float.h i_float
11212 eval $inhdr
11213
11214 : See if number of significant digits in a double precision number is known
11215 echo " "
11216 $cat >dbl_dig.c <<EOM
11217 #$i_limits I_LIMITS
11218 #$i_float I_FLOAT
11219 #ifdef I_LIMITS
11220 #include <limits.h>
11221 #endif
11222 #ifdef I_FLOAT
11223 #include <float.h>
11224 #endif
11225 #ifdef DBL_DIG
11226 printf("Contains DBL_DIG");
11227 #endif
11228 EOM
11229 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11230 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11231         echo "DBL_DIG found." >&4
11232         val="$define"
11233 else
11234         echo "DBL_DIG NOT found." >&4
11235         val="$undef"
11236 fi
11237 $rm -f dbl_dig.?
11238 set d_dbl_dig
11239 eval $setvar
11240
11241 : see if dbm.h is available
11242 : see if dbmclose exists
11243 set dbmclose d_dbmclose
11244 eval $inlibc
11245
11246 case "$d_dbmclose" in
11247 $define)
11248         set dbm.h i_dbm
11249         eval $inhdr
11250         case "$i_dbm" in
11251         $define)
11252                 val="$undef"
11253                 set i_rpcsvcdbm
11254                 eval $setvar
11255                 ;;
11256         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11257                 eval $inhdr
11258                 ;;
11259         esac
11260         ;;
11261 *)      echo "We won't be including <dbm.h>"
11262         val="$undef"
11263         set i_dbm
11264         eval $setvar
11265         val="$undef"
11266         set i_rpcsvcdbm
11267         eval $setvar
11268         ;;
11269 esac
11270
11271 : see if prototype for dbminit is available
11272 echo " "
11273 set d_dbminitproto dbminit $i_dbm dbm.h
11274 eval $hasproto
11275
11276 : see if difftime exists
11277 set difftime d_difftime
11278 eval $inlibc
11279
11280 : see if this is a dirent system
11281 echo " "
11282 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11283         val="$define"
11284         echo "<dirent.h> found." >&4
11285 else
11286         val="$undef"
11287         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11288                 echo "<sys/dir.h> found." >&4
11289                 echo " "
11290         else
11291                 xinc=`./findhdr sys/ndir.h`
11292         fi
11293         echo "<dirent.h> NOT found." >&4
11294 fi
11295 set i_dirent
11296 eval $setvar
11297
11298 : Look for type of directory structure.
11299 echo " "
11300 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11301
11302 case "$direntrytype" in
11303 ''|' ')
11304         case "$i_dirent" in
11305         $define) guess1='struct dirent' ;;
11306         *) guess1='struct direct'  ;;
11307         esac
11308         ;;
11309 *)      guess1="$direntrytype"
11310         ;;
11311 esac
11312
11313 case "$guess1" in
11314 'struct dirent') guess2='struct direct' ;;
11315 *) guess2='struct dirent' ;;
11316 esac
11317
11318 if $contains "$guess1" try.c >/dev/null 2>&1; then
11319         direntrytype="$guess1"
11320         echo "Your directory entries are $direntrytype." >&4
11321 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11322         direntrytype="$guess2"
11323         echo "Your directory entries seem to be $direntrytype." >&4
11324 else
11325         echo "I don't recognize your system's directory entries." >&4
11326         rp="What type is used for directory entries on this system?"
11327         dflt="$guess1"
11328         . ./myread
11329         direntrytype="$ans"
11330 fi
11331 $rm_try
11332
11333 : see if the directory entry stores field length
11334 echo " "
11335 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11336 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11337         echo "Good, your directory entry keeps length information in d_namlen." >&4
11338         val="$define"
11339 else
11340         echo "Your directory entry does not know about the d_namlen field." >&4
11341         val="$undef"
11342 fi
11343 set d_dirnamlen
11344 eval $setvar
11345 $rm_try
11346
11347 : Look for DIR.dd_fd
11348 case "$i_dirent" in
11349 "$define")
11350     echo "Checking to see if DIR has a dd_fd member variable" >&4
11351     $cat >try.c <<EOCP
11352 #$i_stdlib I_STDLIB
11353 #ifdef I_STDLIB
11354 #include <stdlib.h>
11355 #endif
11356 #include <dirent.h>
11357
11358 int main() {
11359     DIR dir;
11360     dir.dd_fd = 1;
11361     return 0;
11362 }
11363 EOCP
11364     val=$undef
11365     set try
11366     if eval $compile; then
11367         echo "Yes, it does."
11368         val="$define"
11369     else
11370         echo "No, it does not."
11371         val="$undef"
11372     fi
11373     ;;
11374 *)
11375     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11376     val="$undef"
11377     ;;
11378 esac
11379 set d_dir_dd_fd
11380 eval $setvar
11381 $rm_try
11382
11383 : see if this is an sysdir system
11384 set sys/dir.h i_sysdir
11385 eval $inhdr
11386
11387 : see if this is an sysndir system
11388 set sys/ndir.h i_sysndir
11389 eval $inhdr
11390
11391 : Look for dirfd
11392 echo " "
11393 $cat >dirfd.c <<EOM
11394 #include <stdio.h>
11395 #$i_stdlib I_STDLIB
11396 #ifdef I_STDLIB
11397 #include <stdlib.h>
11398 #endif
11399 #$i_dirent I_DIRENT             /**/
11400 #$i_sysdir I_SYS_DIR            /**/
11401 #$i_sysndir I_SYS_NDIR          /**/
11402 #$i_systypes I_SYS_TYPES        /**/
11403 #if defined(I_SYS_TYPES)
11404 #include <sys/types.h>
11405 #endif
11406 #if defined(I_DIRENT)
11407 #include <dirent.h>
11408 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11409 #include <sys/dir.h>
11410 #endif
11411 #else
11412 #ifdef I_SYS_NDIR
11413 #include <sys/ndir.h>
11414 #else
11415 #ifdef I_SYS_DIR
11416 #ifdef hp9000s500
11417 #include <ndir.h>       /* may be wrong in the future */
11418 #else
11419 #include <sys/dir.h>
11420 #endif
11421 #endif
11422 #endif
11423 #endif 
11424 int main() {
11425         DIR *dirp = opendir(".");
11426         if (dirfd(dirp) >= 0)
11427                 exit(0);
11428         else
11429                 exit(1);
11430 }
11431 EOM
11432 val=$undef
11433 set dirfd
11434 if eval $compile; then
11435         val="$define"
11436 fi
11437 case "$val" in
11438 $define)        echo "dirfd() found." >&4       ;;
11439 *)              echo "dirfd() NOT found." >&4   ;;
11440 esac
11441 set d_dirfd
11442 eval $setvar
11443 $rm -f dirfd*
11444
11445 : see if dlerror exists
11446 xxx_runnm="$runnm"
11447 runnm=false
11448 set dlerror d_dlerror
11449 eval $inlibc
11450 runnm="$xxx_runnm"
11451
11452 : see if dlfcn is available
11453 set dlfcn.h i_dlfcn
11454 eval $inhdr
11455
11456 case "$usedl" in
11457 $define|y|true)
11458         $cat << EOM
11459
11460 On a few systems, the dynamically loaded modules that perl generates and uses
11461 will need a different extension than shared libs. The default will probably
11462 be appropriate.
11463
11464 EOM
11465         case "$dlext" in
11466         '')     dflt="$so" ;;
11467         *)      dflt="$dlext" ;;
11468         esac
11469         rp='What is the extension of dynamically loaded modules'
11470         . ./myread
11471         dlext="$ans"
11472         ;;
11473 *)
11474         dlext="none"
11475         ;;
11476 esac
11477
11478 : Check if dlsym need a leading underscore
11479 echo " "
11480 val="$undef"
11481
11482 case "$dlsrc" in
11483 dl_dlopen.xs)
11484         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11485         $cat >dyna.c <<'EOM'
11486 fred () { }
11487 EOM
11488
11489 $cat >fred.c<<EOM
11490
11491 #include <stdio.h>
11492 #$i_stdlib I_STDLIB
11493 #ifdef I_STDLIB
11494 #include <stdlib.h>
11495 #endif
11496 #$i_dlfcn I_DLFCN
11497 #ifdef I_DLFCN
11498 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11499 #else
11500 #include <sys/types.h>
11501 #include <nlist.h>
11502 #include <link.h>
11503 #endif
11504
11505 extern int fred() ;
11506
11507 int main()
11508 {
11509     void * handle ;
11510     void * symbol ;
11511 #ifndef RTLD_LAZY
11512     int mode = 1 ;
11513 #else
11514     int mode = RTLD_LAZY ;
11515 #endif
11516     handle = dlopen("./dyna.$dlext", mode) ;
11517     if (handle == NULL) {
11518         printf ("1\n") ;
11519         fflush (stdout) ;
11520         exit(0);
11521     }
11522     symbol = dlsym(handle, "fred") ;
11523     if (symbol == NULL) {
11524         /* try putting a leading underscore */
11525         symbol = dlsym(handle, "_fred") ;
11526         if (symbol == NULL) {
11527             printf ("2\n") ;
11528             fflush (stdout) ;
11529             exit(0);
11530         }
11531         printf ("3\n") ;
11532     }
11533     else
11534         printf ("4\n") ;
11535     fflush (stdout) ;
11536     exit(0);
11537 }
11538 EOM
11539         : Call the object file tmp-dyna.o in case dlext=o.
11540         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
11541                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
11542                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
11543                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11544                 xxx=`$run ./fred`
11545                 case $xxx in
11546                 1)      echo "Test program failed using dlopen." >&4
11547                         echo "Perhaps you should not use dynamic loading." >&4;;
11548                 2)      echo "Test program failed using dlsym." >&4
11549                         echo "Perhaps you should not use dynamic loading." >&4;;
11550                 3)      echo "dlsym needs a leading underscore" >&4
11551                         val="$define" ;;
11552                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11553                 esac
11554         else
11555                 echo "I can't compile and run the test program." >&4
11556                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11557         fi
11558         ;;
11559 esac
11560                 
11561 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11562
11563 set d_dlsymun
11564 eval $setvar
11565
11566 : see if drand48_r exists
11567 set drand48_r d_drand48_r
11568 eval $inlibc
11569 case "$d_drand48_r" in
11570 "$define")
11571         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11572         case "$d_drand48_r_proto:$usethreads" in
11573         ":define")      d_drand48_r_proto=define
11574                 set d_drand48_r_proto drand48_r $hdrs
11575                 eval $hasproto ;;
11576         *)      ;;
11577         esac
11578         case "$d_drand48_r_proto" in
11579         define)
11580         case "$drand48_r_proto" in
11581         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11582         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11583         esac
11584         case "$drand48_r_proto" in
11585         ''|0)   d_drand48_r=undef
11586                 drand48_r_proto=0
11587                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11588         * )     case "$drand48_r_proto" in
11589                 REENTRANT_PROTO*) ;;
11590                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11591                 esac
11592                 echo "Prototype: $try" ;;
11593         esac
11594         ;;
11595         *)      case "$usethreads" in
11596                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11597                 esac
11598                 d_drand48_r=undef
11599                 drand48_r_proto=0
11600                 ;;
11601         esac
11602         ;;
11603 *)      drand48_r_proto=0
11604         ;;
11605 esac
11606
11607 : see if prototype for drand48 is available
11608 echo " "
11609 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11610 eval $hasproto
11611
11612 : see if dup2 exists
11613 set dup2 d_dup2
11614 eval $inlibc
11615
11616 : see if eaccess exists
11617 set eaccess d_eaccess
11618 eval $inlibc
11619
11620 : see if endgrent exists
11621 set endgrent d_endgrent
11622 eval $inlibc
11623
11624 : see if this is an grp system
11625 set grp.h i_grp
11626 eval $inhdr
11627
11628 case "$i_grp" in
11629 $define)
11630         xxx=`./findhdr grp.h`
11631         $cppstdin $cppflags $cppminus < $xxx >$$.h
11632
11633         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11634                 val="$define"
11635         else
11636                 val="$undef"
11637         fi
11638         set d_grpasswd
11639         eval $setvar
11640
11641         $rm -f $$.h
11642         ;;
11643 *)
11644         val="$undef";
11645         set d_grpasswd; eval $setvar
11646         ;;
11647 esac
11648
11649 : see if endgrent_r exists
11650 set endgrent_r d_endgrent_r
11651 eval $inlibc
11652 case "$d_endgrent_r" in
11653 "$define")
11654         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11655         case "$d_endgrent_r_proto:$usethreads" in
11656         ":define")      d_endgrent_r_proto=define
11657                 set d_endgrent_r_proto endgrent_r $hdrs
11658                 eval $hasproto ;;
11659         *)      ;;
11660         esac
11661         case "$d_endgrent_r_proto" in
11662         define)
11663         case "$endgrent_r_proto" in
11664         ''|0) try='int endgrent_r(FILE**);'
11665         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11666         esac
11667         case "$endgrent_r_proto" in
11668         ''|0) try='void endgrent_r(FILE**);'
11669         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11670         esac
11671         case "$endgrent_r_proto" in
11672         ''|0)   d_endgrent_r=undef
11673                 endgrent_r_proto=0
11674                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11675         * )     case "$endgrent_r_proto" in
11676                 REENTRANT_PROTO*) ;;
11677                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11678                 esac
11679                 echo "Prototype: $try" ;;
11680         esac
11681         ;;
11682         *)      case "$usethreads" in
11683                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11684                 esac
11685                 d_endgrent_r=undef
11686                 endgrent_r_proto=0
11687                 ;;
11688         esac
11689         ;;
11690 *)      endgrent_r_proto=0
11691         ;;
11692 esac
11693
11694 : see if endhostent exists
11695 set endhostent d_endhent
11696 eval $inlibc
11697
11698 : see if this is a netdb.h system
11699 set netdb.h i_netdb
11700 eval $inhdr
11701
11702 : see if endhostent_r exists
11703 set endhostent_r d_endhostent_r
11704 eval $inlibc
11705 case "$d_endhostent_r" in
11706 "$define")
11707         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11708         case "$d_endhostent_r_proto:$usethreads" in
11709         ":define")      d_endhostent_r_proto=define
11710                 set d_endhostent_r_proto endhostent_r $hdrs
11711                 eval $hasproto ;;
11712         *)      ;;
11713         esac
11714         case "$d_endhostent_r_proto" in
11715         define)
11716         case "$endhostent_r_proto" in
11717         ''|0) try='int endhostent_r(struct hostent_data*);'
11718         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11719         esac
11720         case "$endhostent_r_proto" in
11721         ''|0) try='void endhostent_r(struct hostent_data*);'
11722         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11723         esac
11724         case "$endhostent_r_proto" in
11725         ''|0)   d_endhostent_r=undef
11726                 endhostent_r_proto=0
11727                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11728         * )     case "$endhostent_r_proto" in
11729                 REENTRANT_PROTO*) ;;
11730                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11731                 esac
11732                 echo "Prototype: $try" ;;
11733         esac
11734         ;;
11735         *)      case "$usethreads" in
11736                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11737                 esac
11738                 d_endhostent_r=undef
11739                 endhostent_r_proto=0
11740                 ;;
11741         esac
11742         ;;
11743 *)      endhostent_r_proto=0
11744         ;;
11745 esac
11746
11747 : see if endnetent exists
11748 set endnetent d_endnent
11749 eval $inlibc
11750
11751 : see if endnetent_r exists
11752 set endnetent_r d_endnetent_r
11753 eval $inlibc
11754 case "$d_endnetent_r" in
11755 "$define")
11756         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11757         case "$d_endnetent_r_proto:$usethreads" in
11758         ":define")      d_endnetent_r_proto=define
11759                 set d_endnetent_r_proto endnetent_r $hdrs
11760                 eval $hasproto ;;
11761         *)      ;;
11762         esac
11763         case "$d_endnetent_r_proto" in
11764         define)
11765         case "$endnetent_r_proto" in
11766         ''|0) try='int endnetent_r(struct netent_data*);'
11767         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11768         esac
11769         case "$endnetent_r_proto" in
11770         ''|0) try='void endnetent_r(struct netent_data*);'
11771         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11772         esac
11773         case "$endnetent_r_proto" in
11774         ''|0)   d_endnetent_r=undef
11775                 endnetent_r_proto=0
11776                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11777         * )     case "$endnetent_r_proto" in
11778                 REENTRANT_PROTO*) ;;
11779                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11780                 esac
11781                 echo "Prototype: $try" ;;
11782         esac
11783         ;;
11784         *)      case "$usethreads" in
11785                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11786                 esac
11787                 d_endnetent_r=undef
11788                 endnetent_r_proto=0
11789                 ;;
11790         esac
11791         ;;
11792 *)      endnetent_r_proto=0
11793         ;;
11794 esac
11795
11796 : see if endprotoent exists
11797 set endprotoent d_endpent
11798 eval $inlibc
11799
11800 : see if endprotoent_r exists
11801 set endprotoent_r d_endprotoent_r
11802 eval $inlibc
11803 case "$d_endprotoent_r" in
11804 "$define")
11805         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11806         case "$d_endprotoent_r_proto:$usethreads" in
11807         ":define")      d_endprotoent_r_proto=define
11808                 set d_endprotoent_r_proto endprotoent_r $hdrs
11809                 eval $hasproto ;;
11810         *)      ;;
11811         esac
11812         case "$d_endprotoent_r_proto" in
11813         define)
11814         case "$endprotoent_r_proto" in
11815         ''|0) try='int endprotoent_r(struct protoent_data*);'
11816         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11817         esac
11818         case "$endprotoent_r_proto" in
11819         ''|0) try='void endprotoent_r(struct protoent_data*);'
11820         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11821         esac
11822         case "$endprotoent_r_proto" in
11823         ''|0)   d_endprotoent_r=undef
11824                 endprotoent_r_proto=0
11825                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11826         * )     case "$endprotoent_r_proto" in
11827                 REENTRANT_PROTO*) ;;
11828                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11829                 esac
11830                 echo "Prototype: $try" ;;
11831         esac
11832         ;;
11833         *)      case "$usethreads" in
11834                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11835                 esac
11836                 d_endprotoent_r=undef
11837                 endprotoent_r_proto=0
11838                 ;;
11839         esac
11840         ;;
11841 *)      endprotoent_r_proto=0
11842         ;;
11843 esac
11844
11845 : see if endpwent exists
11846 set endpwent d_endpwent
11847 eval $inlibc
11848
11849 : see if this is a pwd.h system
11850 set pwd.h i_pwd
11851 eval $inhdr
11852
11853 case "$i_pwd" in
11854 $define)
11855         xxx=`./findhdr pwd.h`
11856         $cppstdin $cppflags $cppminus < $xxx >$$.h
11857
11858         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11859                 val="$define"
11860         else
11861                 val="$undef"
11862         fi
11863         set d_pwquota
11864         eval $setvar
11865
11866         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11867                 val="$define"
11868         else
11869                 val="$undef"
11870         fi
11871         set d_pwage
11872         eval $setvar
11873
11874         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11875                 val="$define"
11876         else
11877                 val="$undef"
11878         fi
11879         set d_pwchange
11880         eval $setvar
11881
11882         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11883                 val="$define"
11884         else
11885                 val="$undef"
11886         fi
11887         set d_pwclass
11888         eval $setvar
11889
11890         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11891                 val="$define"
11892         else
11893                 val="$undef"
11894         fi
11895         set d_pwexpire
11896         eval $setvar
11897
11898         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11899                 val="$define"
11900         else
11901                 val="$undef"
11902         fi
11903         set d_pwcomment
11904         eval $setvar
11905
11906         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11907                 val="$define"
11908         else
11909                 val="$undef"
11910         fi
11911         set d_pwgecos
11912         eval $setvar
11913
11914         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11915                 val="$define"
11916         else
11917                 val="$undef"
11918         fi
11919         set d_pwpasswd
11920         eval $setvar
11921
11922         $rm -f $$.h
11923         ;;
11924 *)
11925         val="$undef"; 
11926         set d_pwquota; eval $setvar
11927         set d_pwage; eval $setvar
11928         set d_pwchange; eval $setvar
11929         set d_pwclass; eval $setvar
11930         set d_pwexpire; eval $setvar
11931         set d_pwcomment; eval $setvar
11932         set d_pwgecos; eval $setvar
11933         set d_pwpasswd; eval $setvar
11934         ;;
11935 esac
11936
11937 : see if endpwent_r exists
11938 set endpwent_r d_endpwent_r
11939 eval $inlibc
11940 case "$d_endpwent_r" in
11941 "$define")
11942         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11943         case "$d_endpwent_r_proto:$usethreads" in
11944         ":define")      d_endpwent_r_proto=define
11945                 set d_endpwent_r_proto endpwent_r $hdrs
11946                 eval $hasproto ;;
11947         *)      ;;
11948         esac
11949         case "$d_endpwent_r_proto" in
11950         define)
11951         case "$endpwent_r_proto" in
11952         ''|0) try='int endpwent_r(FILE**);'
11953         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11954         esac
11955         case "$endpwent_r_proto" in
11956         ''|0) try='void endpwent_r(FILE**);'
11957         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11958         esac
11959         case "$endpwent_r_proto" in
11960         ''|0)   d_endpwent_r=undef
11961                 endpwent_r_proto=0
11962                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11963         * )     case "$endpwent_r_proto" in
11964                 REENTRANT_PROTO*) ;;
11965                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11966                 esac
11967                 echo "Prototype: $try" ;;
11968         esac
11969         ;;
11970         *)      case "$usethreads" in
11971                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11972                 esac
11973                 d_endpwent_r=undef
11974                 endpwent_r_proto=0
11975                 ;;
11976         esac
11977         ;;
11978 *)      endpwent_r_proto=0
11979         ;;
11980 esac
11981
11982 : see if endservent exists
11983 set endservent d_endsent
11984 eval $inlibc
11985
11986 : see if endservent_r exists
11987 set endservent_r d_endservent_r
11988 eval $inlibc
11989 case "$d_endservent_r" in
11990 "$define")
11991         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11992         case "$d_endservent_r_proto:$usethreads" in
11993         ":define")      d_endservent_r_proto=define
11994                 set d_endservent_r_proto endservent_r $hdrs
11995                 eval $hasproto ;;
11996         *)      ;;
11997         esac
11998         case "$d_endservent_r_proto" in
11999         define)
12000         case "$endservent_r_proto" in
12001         ''|0) try='int endservent_r(struct servent_data*);'
12002         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12003         esac
12004         case "$endservent_r_proto" in
12005         ''|0) try='void endservent_r(struct servent_data*);'
12006         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12007         esac
12008         case "$endservent_r_proto" in
12009         ''|0)   d_endservent_r=undef
12010                 endservent_r_proto=0
12011                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12012         * )     case "$endservent_r_proto" in
12013                 REENTRANT_PROTO*) ;;
12014                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12015                 esac
12016                 echo "Prototype: $try" ;;
12017         esac
12018         ;;
12019         *)      case "$usethreads" in
12020                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12021                 esac
12022                 d_endservent_r=undef
12023                 endservent_r_proto=0
12024                 ;;
12025         esac
12026         ;;
12027 *)      endservent_r_proto=0
12028         ;;
12029 esac
12030
12031 : Locate the flags for 'open()'
12032 echo " "
12033 $cat >try.c <<EOCP
12034 #include <sys/types.h>
12035 #ifdef I_FCNTL
12036 #include <fcntl.h>
12037 #endif
12038 #ifdef I_SYS_FILE
12039 #include <sys/file.h>
12040 #endif
12041 #$i_stdlib I_STDLIB
12042 #ifdef I_STDLIB
12043 #include <stdlib.h>
12044 #endif
12045 int main() {
12046         if(O_RDONLY);
12047 #ifdef O_TRUNC
12048         exit(0);
12049 #else
12050         exit(1);
12051 #endif
12052 }
12053 EOCP
12054 : check sys/file.h first to get FREAD on Sun
12055 if $test `./findhdr sys/file.h` && \
12056                 set try -DI_SYS_FILE && eval $compile; then
12057         h_sysfile=true;
12058         echo "<sys/file.h> defines the O_* constants..." >&4
12059         if $run ./try; then
12060                 echo "and you have the 3 argument form of open()." >&4
12061                 val="$define"
12062         else
12063                 echo "but not the 3 argument form of open().  Oh, well." >&4
12064                 val="$undef"
12065         fi
12066 elif $test `./findhdr fcntl.h` && \
12067                 set try -DI_FCNTL && eval $compile; then
12068         h_fcntl=true;
12069         echo "<fcntl.h> defines the O_* constants..." >&4
12070         if $run ./try; then
12071                 echo "and you have the 3 argument form of open()." >&4
12072                 val="$define"
12073         else
12074                 echo "but not the 3 argument form of open().  Oh, well." >&4
12075                 val="$undef"
12076         fi
12077 else
12078         val="$undef"
12079         echo "I can't find the O_* constant definitions!  You got problems." >&4
12080 fi
12081 set d_open3
12082 eval $setvar
12083 $rm_try
12084
12085 : see which of string.h or strings.h is needed
12086 echo " "
12087 strings=`./findhdr string.h`
12088 if $test "$strings" && $test -r "$strings"; then
12089         echo "Using <string.h> instead of <strings.h>." >&4
12090         val="$define"
12091 else
12092         val="$undef"
12093         strings=`./findhdr strings.h`
12094         if $test "$strings" && $test -r "$strings"; then
12095                 echo "Using <strings.h> instead of <string.h>." >&4
12096         else
12097                 echo "No string header found -- You'll surely have problems." >&4
12098         fi
12099 fi
12100 set i_string
12101 eval $setvar
12102 case "$i_string" in
12103 "$undef") strings=`./findhdr strings.h`;;
12104 *)        strings=`./findhdr string.h`;;
12105 esac
12106
12107 : see if this is a sys/file.h system
12108 val=''
12109 set sys/file.h val
12110 eval $inhdr
12111
12112 : do we need to include sys/file.h ?
12113 case "$val" in
12114 "$define")
12115         echo " "
12116         if $h_sysfile; then
12117                 val="$define"
12118                 echo "We'll be including <sys/file.h>." >&4
12119         else
12120                 val="$undef"
12121                 echo "We won't be including <sys/file.h>." >&4
12122         fi
12123         ;;
12124 *)
12125         h_sysfile=false
12126         ;;
12127 esac
12128 set i_sysfile
12129 eval $setvar
12130
12131 : see if fcntl.h is there
12132 val=''
12133 set fcntl.h val
12134 eval $inhdr
12135
12136 : see if we can include fcntl.h
12137 case "$val" in
12138 "$define")
12139         echo " "
12140         if $h_fcntl; then
12141                 val="$define"
12142                 echo "We'll be including <fcntl.h>." >&4
12143         else
12144                 val="$undef"
12145                 if $h_sysfile; then
12146         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12147                 else
12148                         echo "We won't be including <fcntl.h>." >&4
12149                 fi
12150         fi
12151         ;;
12152 *)
12153         h_fcntl=false
12154         val="$undef"
12155         ;;
12156 esac
12157 set i_fcntl
12158 eval $setvar
12159
12160 : check for non-blocking I/O stuff
12161 case "$h_sysfile" in
12162 true) echo "#include <sys/file.h>" > head.c;;
12163 *)
12164        case "$h_fcntl" in
12165        true) echo "#include <fcntl.h>" > head.c;;
12166        *) echo "#include <sys/fcntl.h>" > head.c;;
12167        esac
12168        ;;
12169 esac
12170 echo " "
12171 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12172 case "$o_nonblock" in
12173 '')
12174         $cat head.c > try.c
12175         $cat >>try.c <<EOCP
12176 #include <stdio.h>
12177 #$i_stdlib I_STDLIB
12178 #ifdef I_STDLIB
12179 #include <stdlib.h>
12180 #endif
12181 #$i_fcntl I_FCNTL
12182 #ifdef I_FCNTL
12183 #include <fcntl.h>
12184 #endif
12185 int main() {
12186 #ifdef O_NONBLOCK
12187         printf("O_NONBLOCK\n");
12188         exit(0);
12189 #endif
12190 #ifdef O_NDELAY
12191         printf("O_NDELAY\n");
12192         exit(0);
12193 #endif
12194 #ifdef FNDELAY
12195         printf("FNDELAY\n");
12196         exit(0);
12197 #endif
12198         exit(0);
12199 }
12200 EOCP
12201         set try
12202         if eval $compile_ok; then
12203                 o_nonblock=`$run ./try`
12204                 case "$o_nonblock" in
12205                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12206                 *) echo "Seems like we can use $o_nonblock.";;
12207                 esac
12208         else
12209                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12210         fi
12211         ;;
12212 *) echo "Using $hint value $o_nonblock.";;
12213 esac
12214 $rm_try
12215
12216 echo " "
12217 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12218 case "$eagain" in
12219 '')
12220         $cat head.c > try.c
12221         $cat >>try.c <<EOCP
12222 #include <errno.h>
12223 #include <sys/types.h>
12224 #include <signal.h>
12225 #include <stdio.h>
12226 #$i_stdlib I_STDLIB
12227 #ifdef I_STDLIB
12228 #include <stdlib.h>
12229 #endif
12230 #$i_fcntl I_FCNTL
12231 #ifdef I_FCNTL
12232 #include <fcntl.h>
12233 #endif
12234 #define MY_O_NONBLOCK $o_nonblock
12235 #ifndef errno  /* XXX need better Configure test */
12236 extern int errno;
12237 #endif
12238 #$i_unistd I_UNISTD
12239 #ifdef I_UNISTD
12240 #include <unistd.h>
12241 #endif
12242 #$i_string I_STRING
12243 #ifdef I_STRING
12244 #include <string.h>
12245 #else
12246 #include <strings.h>
12247 #endif
12248 $signal_t blech(int x) { exit(3); }
12249 EOCP
12250         $cat >> try.c <<'EOCP'
12251 int main()
12252 {
12253         int pd[2];
12254         int pu[2];
12255         char buf[1];
12256         char string[100];
12257
12258         pipe(pd);       /* Down: child -> parent */
12259         pipe(pu);       /* Up: parent -> child */
12260         if (0 != fork()) {
12261                 int ret;
12262                 close(pd[1]);   /* Parent reads from pd[0] */
12263                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12264 #ifdef F_SETFL
12265                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12266                         exit(1);
12267 #else
12268                 exit(4);
12269 #endif
12270                 signal(SIGALRM, blech);
12271                 alarm(5);
12272                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12273                         exit(2);
12274                 sprintf(string, "%d\n", ret);
12275                 write(2, string, strlen(string));
12276                 alarm(0);
12277 #ifdef EAGAIN
12278                 if (errno == EAGAIN) {
12279                         printf("EAGAIN\n");
12280                         goto ok;
12281                 }
12282 #endif
12283 #ifdef EWOULDBLOCK
12284                 if (errno == EWOULDBLOCK)
12285                         printf("EWOULDBLOCK\n");
12286 #endif
12287         ok:
12288                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12289                 sleep(2);                               /* Give it time to close our pipe */
12290                 alarm(5);
12291                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12292                 alarm(0);
12293                 sprintf(string, "%d\n", ret);
12294                 write(4, string, strlen(string));
12295                 exit(0);
12296         }
12297
12298         close(pd[0]);                   /* We write to pd[1] */
12299         close(pu[1]);                   /* We read from pu[0] */
12300         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12301         close(pd[1]);                   /* Pipe pd is now fully closed! */
12302         exit(0);                                /* Bye bye, thank you for playing! */
12303 }
12304 EOCP
12305         set try
12306         if eval $compile_ok; then
12307                 echo "$startsh" >mtry
12308                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12309                 chmod +x mtry
12310                 ./mtry >/dev/null 2>&1
12311                 case $? in
12312                 0) eagain=`$cat try.out`;;
12313                 1) echo "Could not perform non-blocking setting!";;
12314                 2) echo "I did a successful read() for something that was not there!";;
12315                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12316                 4) echo "Could not find F_SETFL!";;
12317                 *) echo "Something terribly wrong happened during testing.";;
12318                 esac
12319                 rd_nodata=`$cat try.ret`
12320                 echo "A read() system call with no data present returns $rd_nodata."
12321                 case "$rd_nodata" in
12322                 0|-1) ;;
12323                 *)
12324                         echo "(That's peculiar, fixing that to be -1.)"
12325                         rd_nodata=-1
12326                         ;;
12327                 esac
12328                 case "$eagain" in
12329                 '')
12330                         echo "Forcing errno EAGAIN on read() with no data available."
12331                         eagain=EAGAIN
12332                         ;;
12333                 *)
12334                         echo "Your read() sets errno to $eagain when no data is available."
12335                         ;;
12336                 esac
12337                 status=`$cat try.err`
12338                 case "$status" in
12339                 0) echo "And it correctly returns 0 to signal EOF.";;
12340                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12341                 *) echo "However, your read() returns '$status' on EOF??";;
12342                 esac
12343                 val="$define"
12344                 if test "$status" = "$rd_nodata"; then
12345                         echo "WARNING: you can't distinguish between EOF and no data!"
12346                         val="$undef"
12347                 fi
12348         else
12349                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12350                 eagain=EAGAIN
12351         fi
12352         set d_eofnblk
12353         eval $setvar
12354         ;;
12355 *)
12356         echo "Using $hint value $eagain."
12357         echo "Your read() returns $rd_nodata when no data is present."
12358         case "$d_eofnblk" in
12359         "$define") echo "And you can see EOF because read() returns 0.";;
12360         "$undef") echo "But you can't see EOF status from read() returned value.";;
12361         *)
12362                 echo "(Assuming you can't see EOF status from read anyway.)"
12363                 d_eofnblk=$undef
12364                 ;;
12365         esac
12366         ;;
12367 esac
12368 $rm_try head.c mtry
12369
12370 : see if _ptr and _cnt from stdio act std
12371 echo " "
12372
12373 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12374         echo "(Looks like you have stdio.h from BSD.)"
12375         case "$stdio_ptr" in
12376         '') stdio_ptr='((fp)->_p)'
12377                 ptr_lval=$define
12378                 ;;
12379         *)      ptr_lval=$d_stdio_ptr_lval;;
12380         esac
12381         case "$stdio_cnt" in
12382         '') stdio_cnt='((fp)->_r)'
12383                 cnt_lval=$define
12384                 ;;
12385         *)      cnt_lval=$d_stdio_cnt_lval;;
12386         esac
12387         case "$stdio_base" in
12388         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12389         esac
12390         case "$stdio_bufsiz" in
12391         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12392         esac
12393 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12394         echo "(Looks like you have stdio.h from Linux.)"
12395         case "$stdio_ptr" in
12396         '') stdio_ptr='((fp)->_IO_read_ptr)'
12397                 ptr_lval=$define
12398                 ;;
12399         *)      ptr_lval=$d_stdio_ptr_lval;;
12400         esac
12401         case "$stdio_cnt" in
12402         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12403                 cnt_lval=$undef
12404                 ;;
12405         *)      cnt_lval=$d_stdio_cnt_lval;;
12406         esac
12407         case "$stdio_base" in
12408         '') stdio_base='((fp)->_IO_read_base)';;
12409         esac
12410         case "$stdio_bufsiz" in
12411         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12412         esac
12413 else
12414         case "$stdio_ptr" in
12415         '') stdio_ptr='((fp)->_ptr)'
12416                 ptr_lval=$define
12417                 ;;
12418         *)      ptr_lval=$d_stdio_ptr_lval;;
12419         esac
12420         case "$stdio_cnt" in
12421         '') stdio_cnt='((fp)->_cnt)'
12422                 cnt_lval=$define
12423                 ;;
12424         *)      cnt_lval=$d_stdio_cnt_lval;;
12425         esac
12426         case "$stdio_base" in
12427         '') stdio_base='((fp)->_base)';;
12428         esac
12429         case "$stdio_bufsiz" in
12430         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12431         esac
12432 fi
12433
12434 : test whether _ptr and _cnt really work
12435 echo "Checking how std your stdio is..." >&4
12436 $cat >try.c <<EOP
12437 #include <stdio.h>
12438 #$i_stdlib I_STDLIB
12439 #ifdef I_STDLIB
12440 #include <stdlib.h>
12441 #endif
12442 #define FILE_ptr(fp)    $stdio_ptr
12443 #define FILE_cnt(fp)    $stdio_cnt
12444 int main() {
12445         FILE *fp = fopen("try.c", "r");
12446         char c = getc(fp);
12447         if (
12448                 18 <= FILE_cnt(fp) &&
12449                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12450         )
12451                 exit(0);
12452         exit(1);
12453 }
12454 EOP
12455 val="$undef"
12456 set try
12457 if eval $compile && $to try.c; then
12458         if $run ./try; then
12459                 echo "Your stdio acts pretty std."
12460                 val="$define"
12461         else
12462                 echo "Your stdio isn't very std."
12463         fi
12464 else
12465         echo "Your stdio doesn't appear very std."
12466 fi
12467 $rm_try
12468
12469 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12470 # direct buffer manipulation no longer works.  The Configure tests
12471 # should be changed to correctly detect this, but until then,
12472 # the following check should at least let perl compile and run.
12473 # (This quick fix should be updated before 5.8.1.)
12474 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12475 # A. Dougherty, June 3, 2002.
12476 case "$d_gnulibc" in
12477 $define)
12478         case "$gnulibc_version" in
12479         2.[01]*)  ;;
12480         2.2) ;;
12481         2.2.[0-9]) ;;
12482         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12483                 val="$undef"
12484                 ;;
12485         esac
12486         ;;
12487 esac
12488 set d_stdstdio
12489 eval $setvar
12490
12491 : Can _ptr be used as an lvalue?
12492 case "$d_stdstdio$ptr_lval" in
12493 $define$define) val=$define ;;
12494 *) val=$undef ;;
12495 esac
12496 set d_stdio_ptr_lval
12497 eval $setvar
12498
12499 : Can _cnt be used as an lvalue?
12500 case "$d_stdstdio$cnt_lval" in
12501 $define$define) val=$define ;;
12502 *) val=$undef ;;
12503 esac
12504 set d_stdio_cnt_lval
12505 eval $setvar
12506
12507
12508 : test whether setting _ptr sets _cnt as a side effect
12509 d_stdio_ptr_lval_sets_cnt="$undef"
12510 d_stdio_ptr_lval_nochange_cnt="$undef"
12511 case "$d_stdio_ptr_lval$d_stdstdio" in
12512 $define$define)
12513         echo "Checking to see what happens if we set the stdio ptr..." >&4
12514 $cat >try.c <<EOP
12515 #include <stdio.h>
12516 /* Can we scream? */
12517 /* Eat dust sed :-) */
12518 /* In the buffer space, no one can hear you scream. */
12519 #$i_stdlib I_STDLIB
12520 #ifdef I_STDLIB
12521 #include <stdlib.h>
12522 #endif
12523 #define FILE_ptr(fp)    $stdio_ptr
12524 #define FILE_cnt(fp)    $stdio_cnt
12525 #include <sys/types.h>
12526 int main() {
12527         FILE *fp = fopen("try.c", "r");
12528         int c;
12529         char *ptr;
12530         size_t cnt;
12531         if (!fp) {
12532             puts("Fail even to read");
12533             exit(1);
12534         }
12535         c = getc(fp); /* Read away the first # */
12536         if (c == EOF) {
12537             puts("Fail even to read");
12538             exit(1);
12539         }
12540         if (!(
12541                 18 <= FILE_cnt(fp) &&
12542                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12543         )) {
12544                 puts("Fail even to read");
12545                 exit (1);
12546         }
12547         ptr = (char*) FILE_ptr(fp);
12548         cnt = (size_t)FILE_cnt(fp);
12549
12550         FILE_ptr(fp) += 42;
12551
12552         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12553                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12554                 exit (1);
12555         }
12556         if (FILE_cnt(fp) <= 20) {
12557                 printf ("Fail (<20 chars to test)");
12558                 exit (1);
12559         }
12560         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12561                 puts("Fail compare");
12562                 exit (1);
12563         }
12564         if (cnt == FILE_cnt(fp)) {
12565                 puts("Pass_unchanged");
12566                 exit (0);
12567         }
12568         if (FILE_cnt(fp) == (cnt - 42)) {
12569                 puts("Pass_changed");
12570                 exit (0);
12571         }
12572         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12573         return 1;
12574
12575 }
12576 EOP
12577         set try
12578         if eval $compile && $to try.c; then
12579                 case `$run ./try` in
12580                 Pass_changed)
12581                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12582                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12583                 Pass_unchanged)
12584                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12585                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12586                 Fail*)
12587                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12588                 *)
12589                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12590         esac
12591         else
12592                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12593         fi
12594         $rm_try
12595         ;;
12596 esac
12597
12598 : see if _base is also standard
12599 val="$undef"
12600 case "$d_stdstdio" in
12601 $define)
12602         $cat >try.c <<EOP
12603 #include <stdio.h>
12604 #$i_stdlib I_STDLIB
12605 #ifdef I_STDLIB
12606 #include <stdlib.h>
12607 #endif
12608 #define FILE_base(fp)   $stdio_base
12609 #define FILE_bufsiz(fp) $stdio_bufsiz
12610 int main() {
12611         FILE *fp = fopen("try.c", "r");
12612         char c = getc(fp);
12613         if (
12614                 19 <= FILE_bufsiz(fp) &&
12615                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12616         )
12617                 exit(0);
12618         exit(1);
12619 }
12620 EOP
12621         set try
12622         if eval $compile && $to try.c; then
12623                 if $run ./try; then
12624                         echo "And its _base field acts std."
12625                         val="$define"
12626                 else
12627                         echo "But its _base field isn't std."
12628                 fi
12629         else
12630                 echo "However, it seems to be lacking the _base field."
12631         fi
12632         $rm_try
12633         ;;
12634 esac
12635 set d_stdiobase
12636 eval $setvar
12637
12638 : see if fast_stdio exists
12639 val="$undef"
12640 case "$d_stdstdio:$d_stdio_ptr_lval" in
12641 "$define:$define")
12642         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12643         *$define*)
12644                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12645                 val="$define"
12646                 ;;
12647         esac
12648         ;;
12649 esac
12650 set d_faststdio
12651 eval $setvar
12652
12653
12654
12655 : see if fchdir exists
12656 set fchdir d_fchdir
12657 eval $inlibc
12658
12659 : see if fchmod exists
12660 set fchmod d_fchmod
12661 eval $inlibc
12662
12663 : see if fchown exists
12664 set fchown d_fchown
12665 eval $inlibc
12666
12667 : see if this is an fcntl system
12668 set fcntl d_fcntl
12669 eval $inlibc
12670
12671 echo " "
12672 : See if fcntl-based locking works.
12673 $cat >try.c <<EOCP
12674 #$i_stdlib I_STDLIB
12675 #ifdef I_STDLIB
12676 #include <stdlib.h>
12677 #endif
12678 #include <unistd.h>
12679 #include <fcntl.h>
12680 #include <signal.h>
12681 $signal_t blech(int x) { exit(3); }
12682 int main() {
12683 #if defined(F_SETLK) && defined(F_SETLKW)
12684      struct flock flock;
12685      int retval, fd;
12686      fd = open("try.c", O_RDONLY);
12687      flock.l_type = F_RDLCK;
12688      flock.l_whence = SEEK_SET;
12689      flock.l_start = flock.l_len = 0;
12690      signal(SIGALRM, blech);
12691      alarm(10);
12692      retval = fcntl(fd, F_SETLK, &flock);
12693      close(fd);
12694      (retval < 0 ? exit(2) : exit(0));
12695 #else
12696      exit(2);
12697 #endif
12698 }
12699 EOCP
12700 echo "Checking if fcntl-based file locking works... "
12701 case "$d_fcntl" in
12702 "$define")
12703         set try
12704         if eval $compile_ok; then
12705                 if $run ./try; then
12706                         echo "Yes, it seems to work."
12707                         val="$define"
12708                 else
12709                         echo "Nope, it didn't work."
12710                         val="$undef"
12711                         case "$?" in
12712                         3) $cat >&4 <<EOM
12713 ***
12714 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12715 *** This is (almost) impossible.
12716 *** If your NFS lock daemons are not feeling well, something like
12717 *** this may happen, please investigate.  Cannot continue, aborting.
12718 ***
12719 EOM
12720                                 exit 1
12721                                 ;;
12722                         esac
12723                 fi
12724         else
12725                 echo "I'm unable to compile the test program, so I'll assume not."
12726                 val="$undef"
12727         fi
12728         ;;
12729 *) val="$undef";
12730         echo "Nope, since you don't even have fcntl()."
12731         ;;
12732 esac
12733 set d_fcntl_can_lock
12734 eval $setvar
12735 $rm_try
12736
12737 : check for fd_set items
12738 $cat <<EOM
12739
12740 Checking to see how well your C compiler handles fd_set and friends ...
12741 EOM
12742 $cat >try.c <<EOCP
12743 #$i_stdlib I_STDLIB
12744 #ifdef I_STDLIB
12745 #include <stdlib.h>
12746 #endif
12747 #$i_systime I_SYS_TIME
12748 #$i_sysselct I_SYS_SELECT
12749 #$d_socket HAS_SOCKET
12750 #include <sys/types.h>
12751 #ifdef HAS_SOCKET
12752 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12753 #endif
12754 #ifdef I_SYS_TIME
12755 #include <sys/time.h>
12756 #endif
12757 #ifdef I_SYS_SELECT
12758 #include <sys/select.h>
12759 #endif
12760 int main() {
12761         fd_set fds;
12762
12763 #ifdef TRYBITS
12764         if(fds.fds_bits);
12765 #endif
12766
12767 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12768         exit(0);
12769 #else
12770         exit(1);
12771 #endif
12772 }
12773 EOCP
12774 set try -DTRYBITS
12775 if eval $compile; then
12776         d_fds_bits="$define"
12777         d_fd_set="$define"
12778         echo "Well, your system knows about the normal fd_set typedef..." >&4
12779         if $run ./try; then
12780                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12781                 d_fd_macros="$define"
12782         else
12783                 $cat >&4 <<'EOM'
12784 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12785 EOM
12786                 d_fd_macros="$undef"
12787         fi
12788 else
12789         $cat <<'EOM'
12790 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12791 EOM
12792         set try
12793         if eval $compile; then
12794                 d_fds_bits="$undef"
12795                 d_fd_set="$define"
12796                 echo "Well, your system has some sort of fd_set available..." >&4
12797                 if $run ./try; then
12798                         echo "and you have the normal fd_set macros." >&4
12799                         d_fd_macros="$define"
12800                 else
12801                         $cat <<'EOM'
12802 but not the normal fd_set macros!  Gross!  More work for me...
12803 EOM
12804                         d_fd_macros="$undef"
12805                 fi
12806         else
12807         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12808                 d_fd_set="$undef"
12809                 d_fds_bits="$undef"
12810                 d_fd_macros="$undef"
12811         fi
12812 fi
12813 $rm_try
12814
12815 : see if fgetpos exists
12816 set fgetpos d_fgetpos
12817 eval $inlibc
12818
12819 : see if finite exists
12820 set finite d_finite
12821 eval $inlibc
12822
12823 : see if finitel exists
12824 set finitel d_finitel
12825 eval $inlibc
12826
12827 : see if flock exists
12828 set flock d_flock
12829 eval $inlibc
12830
12831 : see if prototype for flock is available
12832 echo " "
12833 set d_flockproto flock $i_sysfile sys/file.h
12834 eval $hasproto
12835
12836 : see if fork exists
12837 set fork d_fork
12838 eval $inlibc
12839
12840 : see if fp_class exists
12841 set fp_class d_fp_class
12842 eval $inlibc
12843
12844 : see if pathconf exists
12845 set pathconf d_pathconf
12846 eval $inlibc
12847
12848 : see if fpathconf exists
12849 set fpathconf d_fpathconf
12850 eval $inlibc
12851
12852 : see if fpclass exists
12853 set fpclass d_fpclass
12854 eval $inlibc
12855
12856 : see if fpclassify exists
12857 set fpclassify d_fpclassify
12858 eval $inlibc
12859
12860 : see if fpclassl exists
12861 set fpclassl d_fpclassl
12862 eval $inlibc
12863
12864
12865 : check for fpos64_t
12866 echo " "
12867 echo "Checking to see if you have fpos64_t..." >&4
12868 $cat >try.c <<EOCP
12869 #include <stdio.h>
12870 int main() { fpos64_t x = 7; }
12871 EOCP
12872 set try
12873 if eval $compile; then
12874         val="$define"
12875         echo "You have fpos64_t."
12876 else
12877         val="$undef"
12878         echo "You do not have fpos64_t."
12879         case "$fpossize" in
12880         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12881         esac
12882 fi
12883 $rm_try
12884 set d_fpos64_t
12885 eval $setvar
12886
12887 : see if frexpl exists
12888 set frexpl d_frexpl
12889 eval $inlibc
12890
12891 : see if this is a sys/param system
12892 set sys/param.h i_sysparam
12893 eval $inhdr
12894
12895 : see if this is a sys/mount.h system
12896 set sys/mount.h i_sysmount
12897 eval $inhdr
12898
12899
12900 echo " "
12901 echo "Checking to see if your system supports struct fs_data..." >&4
12902 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12903 eval $hasstruct
12904 case "$d_fs_data_s" in
12905 "$define")      echo "Yes, it does."   ;;
12906 *)              echo "No, it doesn't." ;;
12907 esac
12908
12909 : see if fseeko exists
12910 set fseeko d_fseeko
12911 eval $inlibc
12912 case "$longsize" in
12913 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12914 esac
12915
12916 : see if fsetpos exists
12917 set fsetpos d_fsetpos
12918 eval $inlibc
12919
12920
12921 : see if fstatfs exists
12922 set fstatfs d_fstatfs
12923 eval $inlibc
12924
12925
12926 : see if statvfs exists
12927 set statvfs d_statvfs
12928 eval $inlibc
12929
12930 : see if fstatvfs exists
12931 set fstatvfs d_fstatvfs
12932 eval $inlibc
12933
12934
12935 : see if fsync exists
12936 set fsync d_fsync
12937 eval $inlibc
12938
12939 : see if ftello exists
12940 set ftello d_ftello
12941 eval $inlibc
12942 case "$longsize" in
12943 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12944 esac
12945
12946 d_futimes="$undef"
12947 : check for a working futimes
12948 echo " "
12949 echo "Checking if you have a working futimes()" >&4
12950 $cat >try.c <<EOCP
12951 #include <stdio.h>
12952 #include <sys/time.h>
12953 #include <errno.h>
12954 #include <fcntl.h>
12955
12956 int main ()
12957 {
12958     int fd, rv;
12959     fd = open ("try.c", O_RDWR);
12960     if (-1 == fd) exit (1);
12961     rv = futimes (fd, NULL);
12962     exit (rv == -1 ? errno : 0);
12963 }
12964 EOCP
12965 set try
12966 if eval $compile; then
12967     `$run ./try`
12968     rc=$?
12969     case "$rc" in
12970         0)  echo "Yes, you have" >&4
12971             d_futimes="$define"
12972             ;;
12973         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
12974             ;;
12975     esac
12976 else
12977     echo "No, it does not (probably harmless)" >&4
12978 fi
12979 $rm_try
12980
12981 : see if getcwd exists
12982 set getcwd d_getcwd
12983 eval $inlibc
12984
12985 : see if getespwnam exists
12986 set getespwnam d_getespwnam
12987 eval $inlibc
12988
12989
12990 : see if getfsstat exists
12991 set getfsstat d_getfsstat
12992 eval $inlibc
12993
12994 : see if getgrent exists
12995 set getgrent d_getgrent
12996 eval $inlibc
12997
12998 : see if getgrent_r exists
12999 set getgrent_r d_getgrent_r
13000 eval $inlibc
13001 case "$d_getgrent_r" in
13002 "$define")
13003         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13004         case "$d_getgrent_r_proto:$usethreads" in
13005         ":define")      d_getgrent_r_proto=define
13006                 set d_getgrent_r_proto getgrent_r $hdrs
13007                 eval $hasproto ;;
13008         *)      ;;
13009         esac
13010         case "$d_getgrent_r_proto" in
13011         define)
13012         case "$getgrent_r_proto" in
13013         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13014         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13015         esac
13016         case "$getgrent_r_proto" in
13017         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13018         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13019         esac
13020         case "$getgrent_r_proto" in
13021         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13022         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13023         esac
13024         case "$getgrent_r_proto" in
13025         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13026         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13027         esac
13028         case "$getgrent_r_proto" in
13029         ''|0) try='int getgrent_r(struct group*, char*, int);'
13030         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13031         esac
13032         case "$getgrent_r_proto" in
13033         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13034         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13035         esac
13036         case "$getgrent_r_proto" in
13037         ''|0)   d_getgrent_r=undef
13038                 getgrent_r_proto=0
13039                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13040         * )     case "$getgrent_r_proto" in
13041                 REENTRANT_PROTO*) ;;
13042                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13043                 esac
13044                 echo "Prototype: $try" ;;
13045         esac
13046         ;;
13047         *)      case "$usethreads" in
13048                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13049                 esac
13050                 d_getgrent_r=undef
13051                 getgrent_r_proto=0
13052                 ;;
13053         esac
13054         ;;
13055 *)      getgrent_r_proto=0
13056         ;;
13057 esac
13058
13059 : see if getgrgid_r exists
13060 set getgrgid_r d_getgrgid_r
13061 eval $inlibc
13062 case "$d_getgrgid_r" in
13063 "$define")
13064         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13065         case "$d_getgrgid_r_proto:$usethreads" in
13066         ":define")      d_getgrgid_r_proto=define
13067                 set d_getgrgid_r_proto getgrgid_r $hdrs
13068                 eval $hasproto ;;
13069         *)      ;;
13070         esac
13071         case "$d_getgrgid_r_proto" in
13072         define)
13073         case "$getgrgid_r_proto" in
13074         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13075         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13076         esac
13077         case "$getgrgid_r_proto" in
13078         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13079         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13080         esac
13081         case "$getgrgid_r_proto" in
13082         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13083         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13084         esac
13085         case "$getgrgid_r_proto" in
13086         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13087         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13088         esac
13089         case "$getgrgid_r_proto" in
13090         ''|0)   d_getgrgid_r=undef
13091                 getgrgid_r_proto=0
13092                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13093         * )     case "$getgrgid_r_proto" in
13094                 REENTRANT_PROTO*) ;;
13095                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13096                 esac
13097                 echo "Prototype: $try" ;;
13098         esac
13099         ;;
13100         *)      case "$usethreads" in
13101                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13102                 esac
13103                 d_getgrgid_r=undef
13104                 getgrgid_r_proto=0
13105                 ;;
13106         esac
13107         ;;
13108 *)      getgrgid_r_proto=0
13109         ;;
13110 esac
13111
13112 : see if getgrnam_r exists
13113 set getgrnam_r d_getgrnam_r
13114 eval $inlibc
13115 case "$d_getgrnam_r" in
13116 "$define")
13117         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13118         case "$d_getgrnam_r_proto:$usethreads" in
13119         ":define")      d_getgrnam_r_proto=define
13120                 set d_getgrnam_r_proto getgrnam_r $hdrs
13121                 eval $hasproto ;;
13122         *)      ;;
13123         esac
13124         case "$d_getgrnam_r_proto" in
13125         define)
13126         case "$getgrnam_r_proto" in
13127         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13128         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13129         esac
13130         case "$getgrnam_r_proto" in
13131         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13132         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13133         esac
13134         case "$getgrnam_r_proto" in
13135         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13136         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13137         esac
13138         case "$getgrnam_r_proto" in
13139         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13140         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13141         esac
13142         case "$getgrnam_r_proto" in
13143         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13144         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13145         esac
13146         case "$getgrnam_r_proto" in
13147         ''|0)   d_getgrnam_r=undef
13148                 getgrnam_r_proto=0
13149                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13150         * )     case "$getgrnam_r_proto" in
13151                 REENTRANT_PROTO*) ;;
13152                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13153                 esac
13154                 echo "Prototype: $try" ;;
13155         esac
13156         ;;
13157         *)      case "$usethreads" in
13158                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13159                 esac
13160                 d_getgrnam_r=undef
13161                 getgrnam_r_proto=0
13162                 ;;
13163         esac
13164         ;;
13165 *)      getgrnam_r_proto=0
13166         ;;
13167 esac
13168
13169 : see if gethostbyaddr exists
13170 set gethostbyaddr d_gethbyaddr
13171 eval $inlibc
13172
13173 : see if gethostbyname exists
13174 set gethostbyname d_gethbyname
13175 eval $inlibc
13176
13177 : see if gethostent exists
13178 set gethostent d_gethent
13179 eval $inlibc
13180
13181 : see how we will look up host name
13182 echo " "
13183 call=''
13184 if set gethostname val -f d_gethname; eval $csym; $val; then
13185         echo 'gethostname() found.' >&4
13186         d_gethname="$define"
13187         call=gethostname
13188 fi
13189 if set uname val -f d_uname; eval $csym; $val; then
13190         if ./xenix; then
13191                 $cat <<'EOM'
13192 uname() was found, but you're running xenix, and older versions of xenix
13193 have a broken uname(). If you don't really know whether your xenix is old
13194 enough to have a broken system call, use the default answer.
13195
13196 EOM
13197                 dflt=y
13198                 case "$d_uname" in
13199                 "$define") dflt=n;;
13200                 esac
13201                 rp='Is your uname() broken?'
13202                 . ./myread
13203                 case "$ans" in
13204                 n*) d_uname="$define"; call=uname;;
13205                 esac
13206         else
13207                 echo 'uname() found.' >&4
13208                 d_uname="$define"
13209                 case "$call" in
13210                 '') call=uname ;;
13211                 esac
13212         fi
13213 fi
13214 case "$d_gethname" in
13215 '') d_gethname="$undef";;
13216 esac
13217 case "$d_uname" in
13218 '') d_uname="$undef";;
13219 esac
13220 case "$d_uname$d_gethname" in
13221 *define*)
13222         dflt=n
13223         cat <<EOM
13224  
13225 Every now and then someone has a $call() that lies about the hostname
13226 but can't be fixed for political or economic reasons.  If you wish, I can
13227 pretend $call() isn't there and maybe compute hostname at run-time
13228 thanks to the '$phostname' command.
13229
13230 EOM
13231         rp="Shall I ignore $call() from now on?"
13232         . ./myread
13233         case "$ans" in
13234         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13235         esac;;
13236 esac
13237 case "$phostname" in
13238 '') aphostname='';;
13239 *) case "$aphostname" in
13240         /*) ;;
13241         *) set X $phostname
13242                 shift
13243                 file=$1
13244                 shift
13245                 file=`./loc $file $file $pth`
13246                 aphostname=`echo $file $*`
13247                 ;;
13248         esac
13249         ;;
13250 esac
13251 case "$d_uname$d_gethname" in
13252 *define*) ;;
13253 *)
13254         case "$phostname" in
13255         '')
13256                 echo "There will be no way for $package to get your hostname." >&4;;
13257         *)
13258         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13259                 ;;
13260         esac;;
13261 esac
13262 case "$d_phostname" in
13263 '') d_phostname="$undef";;
13264 esac
13265
13266 : see if gethostbyaddr_r exists
13267 set gethostbyaddr_r d_gethostbyaddr_r
13268 eval $inlibc
13269 case "$d_gethostbyaddr_r" in
13270 "$define")
13271         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13272         case "$d_gethostbyaddr_r_proto:$usethreads" in
13273         ":define")      d_gethostbyaddr_r_proto=define
13274                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13275                 eval $hasproto ;;
13276         *)      ;;
13277         esac
13278         case "$d_gethostbyaddr_r_proto" in
13279         define)
13280         case "$gethostbyaddr_r_proto" in
13281         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13282         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13283         esac
13284         case "$gethostbyaddr_r_proto" in
13285         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13286         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13287         esac
13288         case "$gethostbyaddr_r_proto" in
13289         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13290         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13291         esac
13292         case "$gethostbyaddr_r_proto" in
13293         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13294         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13295         esac
13296         case "$gethostbyaddr_r_proto" in
13297         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13298         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13299         esac
13300         case "$gethostbyaddr_r_proto" in
13301         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13302         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13303         esac
13304         case "$gethostbyaddr_r_proto" in
13305         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13306         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13307         esac
13308         case "$gethostbyaddr_r_proto" in
13309         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13310         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13311         esac
13312         case "$gethostbyaddr_r_proto" in
13313         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13314         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13315         esac
13316         case "$gethostbyaddr_r_proto" in
13317         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13318         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13319         esac
13320         case "$gethostbyaddr_r_proto" in
13321         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13322         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13323         esac
13324         case "$gethostbyaddr_r_proto" in
13325         ''|0)   d_gethostbyaddr_r=undef
13326                 gethostbyaddr_r_proto=0
13327                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13328         * )     case "$gethostbyaddr_r_proto" in
13329                 REENTRANT_PROTO*) ;;
13330                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13331                 esac
13332                 echo "Prototype: $try" ;;
13333         esac
13334         ;;
13335         *)      case "$usethreads" in
13336                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13337                 esac
13338                 d_gethostbyaddr_r=undef
13339                 gethostbyaddr_r_proto=0
13340                 ;;
13341         esac
13342         ;;
13343 *)      gethostbyaddr_r_proto=0
13344         ;;
13345 esac
13346
13347 : see if gethostbyname_r exists
13348 set gethostbyname_r d_gethostbyname_r
13349 eval $inlibc
13350 case "$d_gethostbyname_r" in
13351 "$define")
13352         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13353         case "$d_gethostbyname_r_proto:$usethreads" in
13354         ":define")      d_gethostbyname_r_proto=define
13355                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13356                 eval $hasproto ;;
13357         *)      ;;
13358         esac
13359         case "$d_gethostbyname_r_proto" in
13360         define)
13361         case "$gethostbyname_r_proto" in
13362         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13363         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13364         esac
13365         case "$gethostbyname_r_proto" in
13366         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13367         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13368         esac
13369         case "$gethostbyname_r_proto" in
13370         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13371         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13372         esac
13373         case "$gethostbyname_r_proto" in
13374         ''|0)   d_gethostbyname_r=undef
13375                 gethostbyname_r_proto=0
13376                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13377         * )     case "$gethostbyname_r_proto" in
13378                 REENTRANT_PROTO*) ;;
13379                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13380                 esac
13381                 echo "Prototype: $try" ;;
13382         esac
13383         ;;
13384         *)      case "$usethreads" in
13385                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13386                 esac
13387                 d_gethostbyname_r=undef
13388                 gethostbyname_r_proto=0
13389                 ;;
13390         esac
13391         ;;
13392 *)      gethostbyname_r_proto=0
13393         ;;
13394 esac
13395
13396 : see if gethostent_r exists
13397 set gethostent_r d_gethostent_r
13398 eval $inlibc
13399 case "$d_gethostent_r" in
13400 "$define")
13401         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13402         case "$d_gethostent_r_proto:$usethreads" in
13403         ":define")      d_gethostent_r_proto=define
13404                 set d_gethostent_r_proto gethostent_r $hdrs
13405                 eval $hasproto ;;
13406         *)      ;;
13407         esac
13408         case "$d_gethostent_r_proto" in
13409         define)
13410         case "$gethostent_r_proto" in
13411         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13412         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13413         esac
13414         case "$gethostent_r_proto" in
13415         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13416         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13417         esac
13418         case "$gethostent_r_proto" in
13419         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13420         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13421         esac
13422         case "$gethostent_r_proto" in
13423         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13424         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13425         esac
13426         case "$gethostent_r_proto" in
13427         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13428         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13429         esac
13430         case "$gethostent_r_proto" in
13431         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13432         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13433         esac
13434         case "$gethostent_r_proto" in
13435         ''|0)   d_gethostent_r=undef
13436                 gethostent_r_proto=0
13437                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13438         * )     case "$gethostent_r_proto" in
13439                 REENTRANT_PROTO*) ;;
13440                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13441                 esac
13442                 echo "Prototype: $try" ;;
13443         esac
13444         ;;
13445         *)      case "$usethreads" in
13446                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13447                 esac
13448                 d_gethostent_r=undef
13449                 gethostent_r_proto=0
13450                 ;;
13451         esac
13452         ;;
13453 *)      gethostent_r_proto=0
13454         ;;
13455 esac
13456
13457 : see if prototypes for various gethostxxx netdb.h functions are available
13458 echo " "
13459 set d_gethostprotos gethostent $i_netdb netdb.h
13460 eval $hasproto
13461
13462 : see if getitimer exists
13463 set getitimer d_getitimer
13464 eval $inlibc
13465
13466 : see if getlogin exists
13467 set getlogin d_getlogin
13468 eval $inlibc
13469
13470 : see if getlogin_r exists
13471 set getlogin_r d_getlogin_r
13472 eval $inlibc
13473 case "$d_getlogin_r" in
13474 "$define")
13475         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13476         case "$d_getlogin_r_proto:$usethreads" in
13477         ":define")      d_getlogin_r_proto=define
13478                 set d_getlogin_r_proto getlogin_r $hdrs
13479                 eval $hasproto ;;
13480         *)      ;;
13481         esac
13482         case "$d_getlogin_r_proto" in
13483         define)
13484         case "$getlogin_r_proto" in
13485         ''|0) try='int getlogin_r(char*, size_t);'
13486         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13487         esac
13488         case "$getlogin_r_proto" in
13489         ''|0) try='int getlogin_r(char*, int);'
13490         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13491         esac
13492         case "$getlogin_r_proto" in
13493         ''|0) try='char* getlogin_r(char*, size_t);'
13494         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13495         esac
13496         case "$getlogin_r_proto" in
13497         ''|0) try='char* getlogin_r(char*, int);'
13498         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13499         esac
13500         case "$getlogin_r_proto" in
13501         ''|0)   d_getlogin_r=undef
13502                 getlogin_r_proto=0
13503                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13504         * )     case "$getlogin_r_proto" in
13505                 REENTRANT_PROTO*) ;;
13506                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13507                 esac
13508                 echo "Prototype: $try" ;;
13509         esac
13510         ;;
13511         *)      case "$usethreads" in
13512                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13513                 esac
13514                 d_getlogin_r=undef
13515                 getlogin_r_proto=0
13516                 ;;
13517         esac
13518         ;;
13519 *)      getlogin_r_proto=0
13520         ;;
13521 esac
13522
13523 : see if getmnt exists
13524 set getmnt d_getmnt
13525 eval $inlibc
13526
13527 : see if getmntent exists
13528 set getmntent d_getmntent
13529 eval $inlibc
13530
13531 : see if getnetbyaddr exists
13532 set getnetbyaddr d_getnbyaddr
13533 eval $inlibc
13534
13535 : see if getnetbyname exists
13536 set getnetbyname d_getnbyname
13537 eval $inlibc
13538
13539 : see if getnetent exists
13540 set getnetent d_getnent
13541 eval $inlibc
13542
13543 : see if getnetbyaddr_r exists
13544 set getnetbyaddr_r d_getnetbyaddr_r
13545 eval $inlibc
13546 case "$d_getnetbyaddr_r" in
13547 "$define")
13548         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13549         case "$d_getnetbyaddr_r_proto:$usethreads" in
13550         ":define")      d_getnetbyaddr_r_proto=define
13551                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13552                 eval $hasproto ;;
13553         *)      ;;
13554         esac
13555         case "$d_getnetbyaddr_r_proto" in
13556         define)
13557         case "$getnetbyaddr_r_proto" in
13558         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13559         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13560         esac
13561         case "$getnetbyaddr_r_proto" in
13562         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13563         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13564         esac
13565         case "$getnetbyaddr_r_proto" in
13566         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13567         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13568         esac
13569         case "$getnetbyaddr_r_proto" in
13570         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13571         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13572         esac
13573         case "$getnetbyaddr_r_proto" in
13574         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13575         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13576         esac
13577         case "$getnetbyaddr_r_proto" in
13578         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13579         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13580         esac
13581         case "$getnetbyaddr_r_proto" in
13582         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13583         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13584         esac
13585         case "$getnetbyaddr_r_proto" in
13586         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13587         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13588         esac
13589         case "$getnetbyaddr_r_proto" in
13590         ''|0)   d_getnetbyaddr_r=undef
13591                 getnetbyaddr_r_proto=0
13592                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13593         * )     case "$getnetbyaddr_r_proto" in
13594                 REENTRANT_PROTO*) ;;
13595                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13596                 esac
13597                 echo "Prototype: $try" ;;
13598         esac
13599         ;;
13600         *)      case "$usethreads" in
13601                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13602                 esac
13603                 d_getnetbyaddr_r=undef
13604                 getnetbyaddr_r_proto=0
13605                 ;;
13606         esac
13607         ;;
13608 *)      getnetbyaddr_r_proto=0
13609         ;;
13610 esac
13611
13612 : see if getnetbyname_r exists
13613 set getnetbyname_r d_getnetbyname_r
13614 eval $inlibc
13615 case "$d_getnetbyname_r" in
13616 "$define")
13617         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13618         case "$d_getnetbyname_r_proto:$usethreads" in
13619         ":define")      d_getnetbyname_r_proto=define
13620                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13621                 eval $hasproto ;;
13622         *)      ;;
13623         esac
13624         case "$d_getnetbyname_r_proto" in
13625         define)
13626         case "$getnetbyname_r_proto" in
13627         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13628         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13629         esac
13630         case "$getnetbyname_r_proto" in
13631         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13632         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13633         esac
13634         case "$getnetbyname_r_proto" in
13635         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13636         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13637         esac
13638         case "$getnetbyname_r_proto" in
13639         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13640         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13641         esac
13642         case "$getnetbyname_r_proto" in
13643         ''|0)   d_getnetbyname_r=undef
13644                 getnetbyname_r_proto=0
13645                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13646         * )     case "$getnetbyname_r_proto" in
13647                 REENTRANT_PROTO*) ;;
13648                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13649                 esac
13650                 echo "Prototype: $try" ;;
13651         esac
13652         ;;
13653         *)      case "$usethreads" in
13654                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13655                 esac
13656                 d_getnetbyname_r=undef
13657                 getnetbyname_r_proto=0
13658                 ;;
13659         esac
13660         ;;
13661 *)      getnetbyname_r_proto=0
13662         ;;
13663 esac
13664
13665 : see if getnetent_r exists
13666 set getnetent_r d_getnetent_r
13667 eval $inlibc
13668 case "$d_getnetent_r" in
13669 "$define")
13670         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13671         case "$d_getnetent_r_proto:$usethreads" in
13672         ":define")      d_getnetent_r_proto=define
13673                 set d_getnetent_r_proto getnetent_r $hdrs
13674                 eval $hasproto ;;
13675         *)      ;;
13676         esac
13677         case "$d_getnetent_r_proto" in
13678         define)
13679         case "$getnetent_r_proto" in
13680         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13681         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13682         esac
13683         case "$getnetent_r_proto" in
13684         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13685         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13686         esac
13687         case "$getnetent_r_proto" in
13688         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13689         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13690         esac
13691         case "$getnetent_r_proto" in
13692         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13693         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13694         esac
13695         case "$getnetent_r_proto" in
13696         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13697         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13698         esac
13699         case "$getnetent_r_proto" in
13700         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13701         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13702         esac
13703         case "$getnetent_r_proto" in
13704         ''|0)   d_getnetent_r=undef
13705                 getnetent_r_proto=0
13706                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13707         * )     case "$getnetent_r_proto" in
13708                 REENTRANT_PROTO*) ;;
13709                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13710                 esac
13711                 echo "Prototype: $try" ;;
13712         esac
13713         ;;
13714         *)      case "$usethreads" in
13715                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13716                 esac
13717                 d_getnetent_r=undef
13718                 getnetent_r_proto=0
13719                 ;;
13720         esac
13721         ;;
13722 *)      getnetent_r_proto=0
13723         ;;
13724 esac
13725
13726 : see if prototypes for various getnetxxx netdb.h functions are available
13727 echo " "
13728 set d_getnetprotos getnetent $i_netdb netdb.h
13729 eval $hasproto
13730
13731 : see if getpagesize exists
13732 set getpagesize d_getpagsz
13733 eval $inlibc
13734
13735
13736 : see if getprotobyname exists
13737 set getprotobyname d_getpbyname
13738 eval $inlibc
13739
13740 : see if getprotobynumber exists
13741 set getprotobynumber d_getpbynumber
13742 eval $inlibc
13743
13744 : see if getprotoent exists
13745 set getprotoent d_getpent
13746 eval $inlibc
13747
13748 : see if getpgid exists
13749 set getpgid d_getpgid
13750 eval $inlibc
13751
13752 : see if getpgrp2 exists
13753 set getpgrp2 d_getpgrp2
13754 eval $inlibc
13755
13756 : see if getppid exists
13757 set getppid d_getppid
13758 eval $inlibc
13759
13760 : see if getpriority exists
13761 set getpriority d_getprior
13762 eval $inlibc
13763
13764 : see if getprotobyname_r exists
13765 set getprotobyname_r d_getprotobyname_r
13766 eval $inlibc
13767 case "$d_getprotobyname_r" in
13768 "$define")
13769         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13770         case "$d_getprotobyname_r_proto:$usethreads" in
13771         ":define")      d_getprotobyname_r_proto=define
13772                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13773                 eval $hasproto ;;
13774         *)      ;;
13775         esac
13776         case "$d_getprotobyname_r_proto" in
13777         define)
13778         case "$getprotobyname_r_proto" in
13779         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13780         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13781         esac
13782         case "$getprotobyname_r_proto" in
13783         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13784         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13785         esac
13786         case "$getprotobyname_r_proto" in
13787         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13788         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13789         esac
13790         case "$getprotobyname_r_proto" in
13791         ''|0)   d_getprotobyname_r=undef
13792                 getprotobyname_r_proto=0
13793                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13794         * )     case "$getprotobyname_r_proto" in
13795                 REENTRANT_PROTO*) ;;
13796                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13797                 esac
13798                 echo "Prototype: $try" ;;
13799         esac
13800         ;;
13801         *)      case "$usethreads" in
13802                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13803                 esac
13804                 d_getprotobyname_r=undef
13805                 getprotobyname_r_proto=0
13806                 ;;
13807         esac
13808         ;;
13809 *)      getprotobyname_r_proto=0
13810         ;;
13811 esac
13812
13813 : see if getprotobynumber_r exists
13814 set getprotobynumber_r d_getprotobynumber_r
13815 eval $inlibc
13816 case "$d_getprotobynumber_r" in
13817 "$define")
13818         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13819         case "$d_getprotobynumber_r_proto:$usethreads" in
13820         ":define")      d_getprotobynumber_r_proto=define
13821                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13822                 eval $hasproto ;;
13823         *)      ;;
13824         esac
13825         case "$d_getprotobynumber_r_proto" in
13826         define)
13827         case "$getprotobynumber_r_proto" in
13828         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13829         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13830         esac
13831         case "$getprotobynumber_r_proto" in
13832         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13833         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13834         esac
13835         case "$getprotobynumber_r_proto" in
13836         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13837         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13838         esac
13839         case "$getprotobynumber_r_proto" in
13840         ''|0)   d_getprotobynumber_r=undef
13841                 getprotobynumber_r_proto=0
13842                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13843         * )     case "$getprotobynumber_r_proto" in
13844                 REENTRANT_PROTO*) ;;
13845                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13846                 esac
13847                 echo "Prototype: $try" ;;
13848         esac
13849         ;;
13850         *)      case "$usethreads" in
13851                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13852                 esac
13853                 d_getprotobynumber_r=undef
13854                 getprotobynumber_r_proto=0
13855                 ;;
13856         esac
13857         ;;
13858 *)      getprotobynumber_r_proto=0
13859         ;;
13860 esac
13861
13862 : see if getprotoent_r exists
13863 set getprotoent_r d_getprotoent_r
13864 eval $inlibc
13865 case "$d_getprotoent_r" in
13866 "$define")
13867         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13868         case "$d_getprotoent_r_proto:$usethreads" in
13869         ":define")      d_getprotoent_r_proto=define
13870                 set d_getprotoent_r_proto getprotoent_r $hdrs
13871                 eval $hasproto ;;
13872         *)      ;;
13873         esac
13874         case "$d_getprotoent_r_proto" in
13875         define)
13876         case "$getprotoent_r_proto" in
13877         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13878         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13879         esac
13880         case "$getprotoent_r_proto" in
13881         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13882         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13883         esac
13884         case "$getprotoent_r_proto" in
13885         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13886         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13887         esac
13888         case "$getprotoent_r_proto" in
13889         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13890         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13891         esac
13892         case "$getprotoent_r_proto" in
13893         ''|0)   d_getprotoent_r=undef
13894                 getprotoent_r_proto=0
13895                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13896         * )     case "$getprotoent_r_proto" in
13897                 REENTRANT_PROTO*) ;;
13898                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13899                 esac
13900                 echo "Prototype: $try" ;;
13901         esac
13902         ;;
13903         *)      case "$usethreads" in
13904                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13905                 esac
13906                 d_getprotoent_r=undef
13907                 getprotoent_r_proto=0
13908                 ;;
13909         esac
13910         ;;
13911 *)      getprotoent_r_proto=0
13912         ;;
13913 esac
13914
13915 : see if prototypes for various getprotoxxx netdb.h functions are available
13916 echo " "
13917 set d_getprotoprotos getprotoent $i_netdb netdb.h
13918 eval $hasproto
13919
13920 : see if getprpwnam exists
13921 set getprpwnam d_getprpwnam
13922 eval $inlibc
13923
13924 : see if getpwent exists
13925 set getpwent d_getpwent
13926 eval $inlibc
13927
13928 : see if getpwent_r exists
13929 set getpwent_r d_getpwent_r
13930 eval $inlibc
13931 case "$d_getpwent_r" in
13932 "$define")
13933         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13934         case "$d_getpwent_r_proto:$usethreads" in
13935         ":define")      d_getpwent_r_proto=define
13936                 set d_getpwent_r_proto getpwent_r $hdrs
13937                 eval $hasproto ;;
13938         *)      ;;
13939         esac
13940         case "$d_getpwent_r_proto" in
13941         define)
13942         case "$getpwent_r_proto" in
13943         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13944         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13945         esac
13946         case "$getpwent_r_proto" in
13947         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13948         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13949         esac
13950         case "$getpwent_r_proto" in
13951         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13952         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13953         esac
13954         case "$getpwent_r_proto" in
13955         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13956         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13957         esac
13958         case "$getpwent_r_proto" in
13959         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13960         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13961         esac
13962         case "$getpwent_r_proto" in
13963         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13964         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13965         esac
13966         case "$getpwent_r_proto" in
13967         ''|0)   d_getpwent_r=undef
13968                 getpwent_r_proto=0
13969                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13970         * )     case "$getpwent_r_proto" in
13971                 REENTRANT_PROTO*) ;;
13972                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13973                 esac
13974                 echo "Prototype: $try" ;;
13975         esac
13976         ;;
13977         *)      case "$usethreads" in
13978                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13979                 esac
13980                 d_getpwent_r=undef
13981                 getpwent_r_proto=0
13982                 ;;
13983         esac
13984         ;;
13985 *)      getpwent_r_proto=0
13986         ;;
13987 esac
13988
13989 : see if getpwnam_r exists
13990 set getpwnam_r d_getpwnam_r
13991 eval $inlibc
13992 case "$d_getpwnam_r" in
13993 "$define")
13994         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13995         case "$d_getpwnam_r_proto:$usethreads" in
13996         ":define")      d_getpwnam_r_proto=define
13997                 set d_getpwnam_r_proto getpwnam_r $hdrs
13998                 eval $hasproto ;;
13999         *)      ;;
14000         esac
14001         case "$d_getpwnam_r_proto" in
14002         define)
14003         case "$getpwnam_r_proto" in
14004         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14005         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14006         esac
14007         case "$getpwnam_r_proto" in
14008         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14009         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14010         esac
14011         case "$getpwnam_r_proto" in
14012         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14013         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14014         esac
14015         case "$getpwnam_r_proto" in
14016         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14017         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14018         esac
14019         case "$getpwnam_r_proto" in
14020         ''|0)   d_getpwnam_r=undef
14021                 getpwnam_r_proto=0
14022                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14023         * )     case "$getpwnam_r_proto" in
14024                 REENTRANT_PROTO*) ;;
14025                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14026                 esac
14027                 echo "Prototype: $try" ;;
14028         esac
14029         ;;
14030         *)      case "$usethreads" in
14031                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14032                 esac
14033                 d_getpwnam_r=undef
14034                 getpwnam_r_proto=0
14035                 ;;
14036         esac
14037         ;;
14038 *)      getpwnam_r_proto=0
14039         ;;
14040 esac
14041
14042 : see if getpwuid_r exists
14043 set getpwuid_r d_getpwuid_r
14044 eval $inlibc
14045 case "$d_getpwuid_r" in
14046 "$define")
14047         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14048         case "$d_getpwuid_r_proto:$usethreads" in
14049         ":define")      d_getpwuid_r_proto=define
14050                 set d_getpwuid_r_proto getpwuid_r $hdrs
14051                 eval $hasproto ;;
14052         *)      ;;
14053         esac
14054         case "$d_getpwuid_r_proto" in
14055         define)
14056         case "$getpwuid_r_proto" in
14057         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14058         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14059         esac
14060         case "$getpwuid_r_proto" in
14061         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14062         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14063         esac
14064         case "$getpwuid_r_proto" in
14065         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14066         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14067         esac
14068         case "$getpwuid_r_proto" in
14069         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14070         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14071         esac
14072         case "$getpwuid_r_proto" in
14073         ''|0)   d_getpwuid_r=undef
14074                 getpwuid_r_proto=0
14075                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14076         * )     case "$getpwuid_r_proto" in
14077                 REENTRANT_PROTO*) ;;
14078                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14079                 esac
14080                 echo "Prototype: $try" ;;
14081         esac
14082         ;;
14083         *)      case "$usethreads" in
14084                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14085                 esac
14086                 d_getpwuid_r=undef
14087                 getpwuid_r_proto=0
14088                 ;;
14089         esac
14090         ;;
14091 *)      getpwuid_r_proto=0
14092         ;;
14093 esac
14094
14095
14096 : see if getservbyname exists
14097 set getservbyname d_getsbyname
14098 eval $inlibc
14099
14100 : see if getservbyport exists
14101 set getservbyport d_getsbyport
14102 eval $inlibc
14103
14104 : see if getservent exists
14105 set getservent d_getsent
14106 eval $inlibc
14107
14108 : see if getservbyname_r exists
14109 set getservbyname_r d_getservbyname_r
14110 eval $inlibc
14111 case "$d_getservbyname_r" in
14112 "$define")
14113         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14114         case "$d_getservbyname_r_proto:$usethreads" in
14115         ":define")      d_getservbyname_r_proto=define
14116                 set d_getservbyname_r_proto getservbyname_r $hdrs
14117                 eval $hasproto ;;
14118         *)      ;;
14119         esac
14120         case "$d_getservbyname_r_proto" in
14121         define)
14122         case "$getservbyname_r_proto" in
14123         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14124         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14125         esac
14126         case "$getservbyname_r_proto" in
14127         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14128         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14129         esac
14130         case "$getservbyname_r_proto" in
14131         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14132         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14133         esac
14134         case "$getservbyname_r_proto" in
14135         ''|0)   d_getservbyname_r=undef
14136                 getservbyname_r_proto=0
14137                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14138         * )     case "$getservbyname_r_proto" in
14139                 REENTRANT_PROTO*) ;;
14140                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14141                 esac
14142                 echo "Prototype: $try" ;;
14143         esac
14144         ;;
14145         *)      case "$usethreads" in
14146                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14147                 esac
14148                 d_getservbyname_r=undef
14149                 getservbyname_r_proto=0
14150                 ;;
14151         esac
14152         ;;
14153 *)      getservbyname_r_proto=0
14154         ;;
14155 esac
14156
14157 : see if getservbyport_r exists
14158 set getservbyport_r d_getservbyport_r
14159 eval $inlibc
14160 case "$d_getservbyport_r" in
14161 "$define")
14162         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14163         case "$d_getservbyport_r_proto:$usethreads" in
14164         ":define")      d_getservbyport_r_proto=define
14165                 set d_getservbyport_r_proto getservbyport_r $hdrs
14166                 eval $hasproto ;;
14167         *)      ;;
14168         esac
14169         case "$d_getservbyport_r_proto" in
14170         define)
14171         case "$getservbyport_r_proto" in
14172         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14173         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14174         esac
14175         case "$getservbyport_r_proto" in
14176         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14177         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14178         esac
14179         case "$getservbyport_r_proto" in
14180         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14181         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14182         esac
14183         case "$getservbyport_r_proto" in
14184         ''|0)   d_getservbyport_r=undef
14185                 getservbyport_r_proto=0
14186                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14187         * )     case "$getservbyport_r_proto" in
14188                 REENTRANT_PROTO*) ;;
14189                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14190                 esac
14191                 echo "Prototype: $try" ;;
14192         esac
14193         ;;
14194         *)      case "$usethreads" in
14195                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14196                 esac
14197                 d_getservbyport_r=undef
14198                 getservbyport_r_proto=0
14199                 ;;
14200         esac
14201         ;;
14202 *)      getservbyport_r_proto=0
14203         ;;
14204 esac
14205
14206 : see if getservent_r exists
14207 set getservent_r d_getservent_r
14208 eval $inlibc
14209 case "$d_getservent_r" in
14210 "$define")
14211         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14212         case "$d_getservent_r_proto:$usethreads" in
14213         ":define")      d_getservent_r_proto=define
14214                 set d_getservent_r_proto getservent_r $hdrs
14215                 eval $hasproto ;;
14216         *)      ;;
14217         esac
14218         case "$d_getservent_r_proto" in
14219         define)
14220         case "$getservent_r_proto" in
14221         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14222         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14223         esac
14224         case "$getservent_r_proto" in
14225         ''|0) try='int getservent_r(struct servent*, char*, int);'
14226         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14227         esac
14228         case "$getservent_r_proto" in
14229         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14230         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14231         esac
14232         case "$getservent_r_proto" in
14233         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14234         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14235         esac
14236         case "$getservent_r_proto" in
14237         ''|0)   d_getservent_r=undef
14238                 getservent_r_proto=0
14239                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14240         * )     case "$getservent_r_proto" in
14241                 REENTRANT_PROTO*) ;;
14242                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14243                 esac
14244                 echo "Prototype: $try" ;;
14245         esac
14246         ;;
14247         *)      case "$usethreads" in
14248                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14249                 esac
14250                 d_getservent_r=undef
14251                 getservent_r_proto=0
14252                 ;;
14253         esac
14254         ;;
14255 *)      getservent_r_proto=0
14256         ;;
14257 esac
14258
14259 : see if prototypes for various getservxxx netdb.h functions are available
14260 echo " "
14261 set d_getservprotos getservent $i_netdb netdb.h
14262 eval $hasproto
14263
14264 : see if getspnam exists
14265 set getspnam d_getspnam
14266 eval $inlibc
14267
14268 : see if this is a shadow.h system
14269 set shadow.h i_shadow
14270 eval $inhdr
14271
14272 : see if getspnam_r exists
14273 set getspnam_r d_getspnam_r
14274 eval $inlibc
14275 case "$d_getspnam_r" in
14276 "$define")
14277         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14278         case "$d_getspnam_r_proto:$usethreads" in
14279         ":define")      d_getspnam_r_proto=define
14280                 set d_getspnam_r_proto getspnam_r $hdrs
14281                 eval $hasproto ;;
14282         *)      ;;
14283         esac
14284         case "$d_getspnam_r_proto" in
14285         define)
14286         case "$getspnam_r_proto" in
14287         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14288         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14289         esac
14290         case "$getspnam_r_proto" in
14291         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14292         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14293         esac
14294         case "$getspnam_r_proto" in
14295         ''|0)   d_getspnam_r=undef
14296                 getspnam_r_proto=0
14297                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14298         * )     case "$getspnam_r_proto" in
14299                 REENTRANT_PROTO*) ;;
14300                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14301                 esac
14302                 echo "Prototype: $try" ;;
14303         esac
14304         ;;
14305         *)      case "$usethreads" in
14306                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14307                 esac
14308                 d_getspnam_r=undef
14309                 getspnam_r_proto=0
14310                 ;;
14311         esac
14312         ;;
14313 *)      getspnam_r_proto=0
14314         ;;
14315 esac
14316
14317 : see if gettimeofday or ftime exists
14318 set gettimeofday d_gettimeod
14319 eval $inlibc
14320 case "$d_gettimeod" in
14321 "$undef")
14322         set ftime d_ftime 
14323         eval $inlibc
14324         ;;
14325 *)
14326         val="$undef"; set d_ftime; eval $setvar
14327         ;;
14328 esac
14329 case "$d_gettimeod$d_ftime" in
14330 "$undef$undef")
14331         echo " "
14332         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14333         ;;
14334 esac
14335
14336 : see if gmtime_r exists
14337 set gmtime_r d_gmtime_r
14338 eval $inlibc
14339 case "$d_gmtime_r" in
14340 "$define")
14341         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14342         case "$d_gmtime_r_proto:$usethreads" in
14343         ":define")      d_gmtime_r_proto=define
14344                 set d_gmtime_r_proto gmtime_r $hdrs
14345                 eval $hasproto ;;
14346         *)      ;;
14347         esac
14348         case "$d_gmtime_r_proto" in
14349         define)
14350         case "$gmtime_r_proto" in
14351         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14352         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14353         esac
14354         case "$gmtime_r_proto" in
14355         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14356         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14357         esac
14358         case "$gmtime_r_proto" in
14359         ''|0)   d_gmtime_r=undef
14360                 gmtime_r_proto=0
14361                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14362         * )     case "$gmtime_r_proto" in
14363                 REENTRANT_PROTO*) ;;
14364                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14365                 esac
14366                 echo "Prototype: $try" ;;
14367         esac
14368         ;;
14369         *)      case "$usethreads" in
14370                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14371                 esac
14372                 d_gmtime_r=undef
14373                 gmtime_r_proto=0
14374                 ;;
14375         esac
14376         ;;
14377 *)      gmtime_r_proto=0
14378         ;;
14379 esac
14380
14381 : see if hasmntopt exists
14382 set hasmntopt d_hasmntopt
14383 eval $inlibc
14384
14385 : see if this is a netinet/in.h or sys/in.h system
14386 set netinet/in.h i_niin sys/in.h i_sysin
14387 eval $inhdr
14388
14389 : see if arpa/inet.h has to be included
14390 set arpa/inet.h i_arpainet
14391 eval $inhdr
14392
14393 : see if htonl --and friends-- exists
14394 val=''
14395 set htonl val
14396 eval $inlibc
14397
14398 : Maybe they are macros.
14399 case "$val" in
14400 $undef)
14401         $cat >htonl.c <<EOM
14402 #include <stdio.h>
14403 #include <sys/types.h>
14404 #$i_niin I_NETINET_IN
14405 #$i_sysin I_SYS_IN
14406 #$i_arpainet I_ARPA_INET
14407 #ifdef I_NETINET_IN
14408 #include <netinet/in.h>
14409 #endif
14410 #ifdef I_SYS_IN
14411 #include <sys/in.h>
14412 #endif
14413 #ifdef I_ARPA_INET
14414 #include <arpa/inet.h>
14415 #endif
14416 #ifdef htonl
14417 printf("Defined as a macro.");
14418 #endif
14419 EOM
14420         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14421         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14422                 val="$define"
14423                 echo "But it seems to be defined as a macro." >&4
14424         fi
14425         $rm -f htonl.?
14426         ;;
14427 esac
14428 set d_htonl
14429 eval $setvar
14430
14431 : see if ilogbl exists
14432 set ilogbl d_ilogbl
14433 eval $inlibc
14434
14435 : index or strchr
14436 echo " "
14437 if set index val -f; eval $csym; $val; then
14438         if set strchr val -f d_strchr; eval $csym; $val; then
14439                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14440                         val="$define"
14441                         vali="$undef"
14442                         echo "strchr() found." >&4
14443                 else
14444                         val="$undef"
14445                         vali="$define"
14446                         echo "index() found." >&4
14447                 fi
14448         else
14449                 val="$undef"
14450                 vali="$define"
14451                 echo "index() found." >&4
14452         fi
14453 else
14454         if set strchr val -f d_strchr; eval $csym; $val; then
14455                 val="$define"
14456                 vali="$undef"
14457                 echo "strchr() found." >&4
14458         else
14459                 echo "No index() or strchr() found!" >&4
14460                 val="$undef"
14461                 vali="$undef"
14462         fi
14463 fi
14464 set d_strchr; eval $setvar
14465 val="$vali"
14466 set d_index; eval $setvar
14467
14468 : check whether inet_aton exists
14469 set inet_aton d_inetaton
14470 eval $inlibc
14471
14472 : Look for isascii
14473 echo " "
14474 $cat >isascii.c <<EOCP
14475 #include <stdio.h>
14476 #include <ctype.h>
14477 #$i_stdlib I_STDLIB
14478 #ifdef I_STDLIB
14479 #include <stdlib.h>
14480 #endif
14481 int main() {
14482         int c = 'A';
14483         if (isascii(c))
14484                 exit(0);
14485         else
14486                 exit(1);
14487 }
14488 EOCP
14489 set isascii
14490 if eval $compile; then
14491         echo "isascii() found." >&4
14492         val="$define"
14493 else
14494         echo "isascii() NOT found." >&4
14495         val="$undef"
14496 fi
14497 set d_isascii
14498 eval $setvar
14499 $rm -f isascii*
14500
14501 : see if isfinite exists
14502 set isfinite d_isfinite
14503 eval $inlibc
14504
14505 : see if isinf exists
14506 set isinf d_isinf
14507 eval $inlibc
14508
14509 : see if isnan exists
14510 set isnan d_isnan
14511 eval $inlibc
14512
14513 : see if isnanl exists
14514 set isnanl d_isnanl
14515 eval $inlibc
14516
14517 : see if killpg exists
14518 set killpg d_killpg
14519 eval $inlibc
14520
14521 : see if lchown exists
14522 echo " "
14523 $cat > try.c <<'EOCP'
14524 /* System header to define __stub macros and hopefully few prototypes,
14525     which can conflict with char lchown(); below.  */
14526 #include <assert.h>
14527 /* Override any gcc2 internal prototype to avoid an error.  */
14528 /* We use char because int might match the return type of a gcc2
14529    builtin and then its argument prototype would still apply.  */
14530 char lchown();
14531 int main() {
14532     /*  The GNU C library defines this for functions which it implements
14533         to always fail with ENOSYS.  Some functions are actually named
14534         something starting with __ and the normal name is an alias.  */
14535 #if defined (__stub_lchown) || defined (__stub___lchown)
14536 choke me
14537 #else
14538 lchown();
14539 #endif
14540 ; return 0; }
14541 EOCP
14542 set try
14543 if eval $compile; then
14544     $echo "lchown() found." >&4
14545     val="$define"
14546 else
14547     $echo "lchown() NOT found." >&4
14548     val="$undef"
14549 fi
14550 set d_lchown
14551 eval $setvar
14552
14553 : See if number of significant digits in a double precision number is known
14554 echo " "
14555 $cat >ldbl_dig.c <<EOM
14556 #$i_limits I_LIMITS
14557 #$i_float I_FLOAT
14558 #ifdef I_LIMITS
14559 #include <limits.h>
14560 #endif
14561 #ifdef I_FLOAT
14562 #include <float.h>
14563 #endif
14564 #ifdef LDBL_DIG
14565 printf("Contains LDBL_DIG");
14566 #endif
14567 EOM
14568 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14569 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14570         echo "LDBL_DIG found." >&4
14571         val="$define"
14572 else
14573         echo "LDBL_DIG NOT found." >&4
14574         val="$undef"
14575 fi
14576 $rm -f ldbl_dig.?
14577 set d_ldbl_dig
14578 eval $setvar
14579
14580 : see if this is a math.h system
14581 set math.h i_math
14582 eval $inhdr
14583
14584 d_libm_lib_version="$undef"
14585 case $i_math in
14586     $define)
14587         : check to see if math.h defines _LIB_VERSION
14588         echo " "
14589         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14590         $cat >try.c <<EOCP
14591 #include <unistd.h>
14592 #include <math.h>
14593 int main (int argc, char *argv[])
14594 {
14595     printf ("%d\n", _LIB_VERSION);
14596     return (0);
14597     } /* main */
14598 EOCP
14599         set try
14600         if eval $compile; then
14601             foo=`$run ./try`
14602             echo "Yes, it does ($foo)" >&4
14603             d_libm_lib_version="$define"
14604         else
14605             echo "No, it does not (probably harmless)\n" >&4
14606             fi
14607         $rm_try
14608         ;;
14609
14610     esac
14611
14612 : see if link exists
14613 set link d_link
14614 eval $inlibc
14615
14616 : see if localtime_r exists
14617 set localtime_r d_localtime_r
14618 eval $inlibc
14619 case "$d_localtime_r" in
14620 "$define")
14621         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14622         case "$d_localtime_r_proto:$usethreads" in
14623         ":define")      d_localtime_r_proto=define
14624                 set d_localtime_r_proto localtime_r $hdrs
14625                 eval $hasproto ;;
14626         *)      ;;
14627         esac
14628         case "$d_localtime_r_proto" in
14629         define)
14630         case "$localtime_r_proto" in
14631         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14632         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14633         esac
14634         case "$localtime_r_proto" in
14635         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14636         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14637         esac
14638         case "$localtime_r_proto" in
14639         ''|0)   d_localtime_r=undef
14640                 localtime_r_proto=0
14641                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14642         * )     case "$localtime_r_proto" in
14643                 REENTRANT_PROTO*) ;;
14644                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14645                 esac
14646                 echo "Prototype: $try" ;;
14647         esac
14648         ;;
14649         *)      case "$usethreads" in
14650                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14651                 esac
14652                 d_localtime_r=undef
14653                 localtime_r_proto=0
14654                 ;;
14655         esac
14656         ;;
14657 *)      localtime_r_proto=0
14658         ;;
14659 esac
14660
14661 : see if localtime_r calls tzset
14662 case "$localtime_r_proto" in
14663 REENTRANT_PROTO*)
14664         $cat >try.c <<EOCP
14665 /*  Does our libc's localtime_r call tzset ?
14666  *  return 0 if so, 1 otherwise.
14667  */
14668 #include <sys/types.h>
14669 #include <unistd.h>
14670 #include <time.h>
14671 #include <string.h>
14672 #include <malloc.h>
14673 int main()
14674 {
14675     time_t t = time(0L);
14676     char w_tz[]="TZ" "=GMT+5",
14677          e_tz[]="TZ" "=GMT-5",
14678         *tz_e = (char*)malloc(16),
14679         *tz_w = (char*)malloc(16);
14680     struct tm tm_e, tm_w;
14681     memset(&tm_e,'\0',sizeof(struct tm));
14682     memset(&tm_w,'\0',sizeof(struct tm));
14683     strcpy(tz_e,e_tz);
14684     strcpy(tz_w,w_tz);
14685
14686     putenv(tz_e);
14687     localtime_r(&t, &tm_e);
14688
14689     putenv(tz_w);
14690     localtime_r(&t, &tm_w);
14691
14692     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14693         return 1;
14694     return 0;
14695 }
14696 EOCP
14697         set try
14698         if eval $compile; then
14699             if $run ./try; then
14700                 d_localtime_r_needs_tzset=undef;
14701             else
14702                 d_localtime_r_needs_tzset=define;
14703             fi;
14704         else
14705             d_localtime_r_needs_tzset=undef;
14706         fi;
14707      ;;
14708   *)
14709      d_localtime_r_needs_tzset=undef;
14710      ;;
14711 esac
14712 $rm_try
14713
14714 : see if localeconv exists
14715 set localeconv d_locconv
14716 eval $inlibc
14717
14718 : see if lockf exists
14719 set lockf d_lockf
14720 eval $inlibc
14721
14722 : see if prototype for lseek is available
14723 echo " "
14724 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14725 eval $hasproto
14726
14727 : see if lstat exists
14728 set lstat d_lstat
14729 eval $inlibc
14730
14731 : see if madvise exists
14732 set madvise d_madvise
14733 eval $inlibc
14734
14735 : see if malloc_size exists
14736 set malloc_size d_malloc_size
14737 eval $inlibc
14738
14739 : see if malloc_size_good exists
14740 set malloc_good_size d_malloc_good_size
14741 eval $inlibc
14742
14743 : see if mblen exists
14744 set mblen d_mblen
14745 eval $inlibc
14746
14747 : see if mbstowcs exists
14748 set mbstowcs d_mbstowcs
14749 eval $inlibc
14750
14751 : see if mbtowc exists
14752 set mbtowc d_mbtowc
14753 eval $inlibc
14754
14755 : see if memchr exists
14756 set memchr d_memchr
14757 eval $inlibc
14758
14759 : see if memcmp exists
14760 set memcmp d_memcmp
14761 eval $inlibc
14762
14763 : see if memcpy exists
14764 set memcpy d_memcpy
14765 eval $inlibc
14766
14767 : see if memmove exists
14768 set memmove d_memmove
14769 eval $inlibc
14770
14771 : see if memset exists
14772 set memset d_memset
14773 eval $inlibc
14774
14775 : see if mkdir exists
14776 set mkdir d_mkdir
14777 eval $inlibc
14778
14779 : see if mkdtemp exists
14780 set mkdtemp d_mkdtemp
14781 eval $inlibc
14782
14783 : see if mkfifo exists
14784 set mkfifo d_mkfifo
14785 eval $inlibc
14786
14787 : see if mkstemp exists
14788 set mkstemp d_mkstemp
14789 eval $inlibc
14790
14791 : see if mkstemps exists
14792 set mkstemps d_mkstemps
14793 eval $inlibc
14794
14795 : see if mktime exists
14796 set mktime d_mktime
14797 eval $inlibc
14798
14799 : see if this is a sys/mman.h system
14800 set sys/mman.h i_sysmman
14801 eval $inhdr
14802
14803 : see if mmap exists
14804 set mmap d_mmap
14805 eval $inlibc
14806 : see what shmat returns
14807 : default to something harmless
14808 mmaptype='void *'
14809 case "$i_sysmman$d_mmap" in
14810 "$define$define")
14811         $cat >mmap.c <<'END'
14812 #include <sys/mman.h>
14813 void *mmap();
14814 END
14815         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14816                 mmaptype='void *'
14817         else
14818                 mmaptype='caddr_t'
14819         fi
14820         echo "and it returns ($mmaptype)." >&4
14821         ;;
14822 esac
14823
14824
14825
14826 : see if sqrtl exists
14827 set sqrtl d_sqrtl
14828 eval $inlibc
14829
14830 : see if scalbnl exists
14831 set scalbnl d_scalbnl
14832 eval $inlibc
14833
14834 : see if modfl exists
14835 set modfl d_modfl
14836 eval $inlibc
14837
14838 : see if prototype for modfl is available
14839 echo " "
14840 set d_modflproto modfl $i_math math.h
14841 eval $hasproto
14842
14843 d_modfl_pow32_bug="$undef"
14844
14845 case "$d_longdbl$d_modfl" in
14846 $define$define)
14847         $cat <<EOM
14848 Checking to see whether your modfl() is okay for large values...
14849 EOM
14850 $cat >try.c <<EOCP
14851 #include <math.h>
14852 #include <stdio.h>
14853 EOCP
14854 if $test "X$d_modflproto" != "X$define"; then
14855         $cat >>try.c <<EOCP
14856 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14857 long double modfl (long double, long double *);
14858 EOCP
14859 fi
14860 $cat >>try.c <<EOCP
14861 int main() {
14862     long double nv = 4294967303.15;
14863     long double v, w;
14864     v = modfl(nv, &w);
14865 #ifdef __GLIBC__
14866     printf("glibc");
14867 #endif
14868     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14869     return 0;
14870 }
14871 EOCP
14872         case "$osname:$gccversion" in
14873         aix:)   saveccflags="$ccflags"
14874                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14875         esac
14876         set try
14877         if eval $compile; then
14878                 foo=`$run ./try`
14879                 case "$foo" in
14880                 *" 4294967303.150000 1.150000 4294967302.000000")
14881                         echo >&4 "Your modfl() is broken for large values."
14882                         d_modfl_pow32_bug="$define"
14883                         case "$foo" in
14884                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14885                         ;;
14886                         esac
14887                         ;;
14888                 *" 4294967303.150000 0.150000 4294967303.000000")
14889                         echo >&4 "Your modfl() seems okay for large values."
14890                         ;;
14891                 *)      echo >&4 "I don't understand your modfl() at all."
14892                         d_modfl="$undef"
14893                         ;;
14894                 esac
14895                 $rm_try
14896         else
14897                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14898                 d_modfl="$undef"
14899         fi
14900         case "$osname:$gccversion" in
14901         aix:)   ccflags="$saveccflags" ;; # restore
14902         esac
14903         ;;
14904 esac
14905
14906 if $test "$uselongdouble" = "$define"; then
14907     message=""
14908     if $test "$d_sqrtl" != "$define"; then
14909         message="$message sqrtl"
14910     fi
14911     if $test "$d_modfl" != "$define"; then
14912         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14913             echo "You have both aintl and copysignl, so I can emulate modfl."
14914         else
14915             message="$message modfl"
14916         fi
14917     fi
14918     if $test "$d_frexpl" != "$define"; then
14919         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14920             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14921         else
14922             message="$message frexpl"
14923         fi
14924     fi
14925
14926     if $test "$message" != ""; then
14927         $cat <<EOM >&4
14928
14929 *** You requested the use of long doubles but you do not seem to have
14930 *** the following mathematical functions needed for long double support:
14931 ***    $message
14932 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14933 *** Cannot continue, aborting.
14934
14935 EOM
14936
14937         exit 1
14938     fi
14939 fi
14940
14941 : see if mprotect exists
14942 set mprotect d_mprotect
14943 eval $inlibc
14944
14945 : see if msgctl exists
14946 set msgctl d_msgctl
14947 eval $inlibc
14948
14949 : see if msgget exists
14950 set msgget d_msgget
14951 eval $inlibc
14952
14953 : see if msgsnd exists
14954 set msgsnd d_msgsnd
14955 eval $inlibc
14956
14957 : see if msgrcv exists
14958 set msgrcv d_msgrcv
14959 eval $inlibc
14960
14961 : see how much of the 'msg*(2)' library is present.
14962 h_msg=true
14963 echo " "
14964 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14965 *"$undef"*) h_msg=false;;
14966 esac
14967 case "$osname" in
14968 freebsd)
14969     case "`ipcs 2>&1`" in
14970     "SVID messages"*"not configured"*)
14971         echo "Your $osname does not have the msg*(2) configured." >&4
14972         h_msg=false
14973         val="$undef"
14974         set msgctl d_msgctl
14975         eval $setvar
14976         set msgget d_msgget
14977         eval $setvar
14978         set msgsnd d_msgsnd
14979         eval $setvar
14980         set msgrcv d_msgrcv
14981         eval $setvar
14982         ;;
14983     esac
14984     ;;
14985 esac
14986 : we could also check for sys/ipc.h ...
14987 if $h_msg && $test `./findhdr sys/msg.h`; then
14988         echo "You have the full msg*(2) library." >&4
14989         val="$define"
14990 else
14991         echo "You don't have the full msg*(2) library." >&4
14992         val="$undef"
14993 fi
14994 set d_msg
14995 eval $setvar
14996
14997
14998 echo " "
14999 echo "Checking to see if your system supports struct msghdr..." >&4
15000 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15001 eval $hasstruct
15002 case "$d_msghdr_s" in
15003 "$define")      echo "Yes, it does."   ;;
15004 *)              echo "No, it doesn't." ;;
15005 esac
15006
15007
15008 : see if msync exists
15009 set msync d_msync
15010 eval $inlibc
15011
15012 : see if munmap exists
15013 set munmap d_munmap
15014 eval $inlibc
15015
15016 : see if nice exists
15017 set nice d_nice
15018 eval $inlibc
15019
15020 : see if this is a langinfo.h system
15021 set langinfo.h i_langinfo
15022 eval $inhdr
15023
15024 : see if nl_langinfo exists
15025 set nl_langinfo d_nl_langinfo
15026 eval $inlibc
15027
15028 : check for length of character
15029 echo " "
15030 case "$charsize" in
15031 '')
15032         echo "Checking to see how big your characters are (hey, you never know)..." >&4
15033         $cat >try.c <<EOCP
15034 #include <stdio.h>
15035 #$i_stdlib I_STDLIB
15036 #ifdef I_STDLIB
15037 #include <stdlib.h>
15038 #endif
15039 int main()
15040 {
15041     printf("%d\n", (int)sizeof(char));
15042     exit(0);
15043 }
15044 EOCP
15045         set try
15046         if eval $compile_ok; then
15047                 dflt=`$run ./try`
15048         else
15049                 dflt='1'
15050                 echo "(I can't seem to compile the test program.  Guessing...)"
15051         fi
15052         ;;
15053 *)
15054         dflt="$charsize"
15055         ;;
15056 esac
15057 rp="What is the size of a character (in bytes)?"
15058 . ./myread
15059 charsize="$ans"
15060 $rm_try
15061
15062 : check for volatile keyword
15063 echo " "
15064 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15065 $cat >try.c <<'EOCP'
15066 int main()
15067 {
15068         typedef struct _goo_struct goo_struct;
15069         goo_struct * volatile goo = ((goo_struct *)0);
15070         struct _goo_struct {
15071                 long long_int;
15072                 int reg_int;
15073                 char char_var;
15074         };
15075         typedef unsigned short foo_t;
15076         char *volatile foo;
15077         volatile int bar;
15078         volatile foo_t blech;
15079         foo = foo;
15080 }
15081 EOCP
15082 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15083         val="$define"
15084         echo "Yup, it does."
15085 else
15086         val="$undef"
15087         echo "Nope, it doesn't."
15088 fi
15089 set d_volatile
15090 eval $setvar
15091 $rm_try
15092
15093
15094 echo " "
15095 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15096
15097 case "$use64bitint:$d_quad:$quadtype" in
15098 define:define:?*)
15099         ivtype="$quadtype"
15100         uvtype="$uquadtype"
15101         ivsize=8
15102         uvsize=8
15103         ;;
15104 *)      ivtype="long"
15105         uvtype="unsigned long"
15106         ivsize=$longsize
15107         uvsize=$longsize
15108         ;;
15109 esac
15110
15111 case "$uselongdouble:$d_longdbl" in
15112 define:define)
15113         nvtype="long double"
15114         nvsize=$longdblsize
15115         ;;
15116 *)      nvtype=double
15117         nvsize=$doublesize
15118         ;;
15119 esac
15120
15121 $echo "(IV will be "$ivtype", $ivsize bytes)"
15122 $echo "(UV will be "$uvtype", $uvsize bytes)"
15123 $echo "(NV will be "$nvtype", $nvsize bytes)"
15124
15125 $cat >try.c <<EOCP
15126 #$i_inttypes I_INTTYPES
15127 #ifdef I_INTTYPES
15128 #include <inttypes.h>
15129 #endif
15130 #include <stdio.h>
15131 int main() {
15132 #ifdef INT8
15133    int8_t i =  INT8_MAX;
15134   uint8_t u = UINT8_MAX;
15135   printf("int8_t\n");
15136 #endif
15137 #ifdef INT16
15138    int16_t i =  INT16_MAX;
15139   uint16_t i = UINT16_MAX;
15140   printf("int16_t\n");
15141 #endif
15142 #ifdef INT32
15143    int32_t i =  INT32_MAX;
15144   uint32_t u = UINT32_MAX;
15145   printf("int32_t\n");
15146 #endif
15147 }
15148 EOCP
15149
15150 case "$i8type" in
15151 '')     case "$charsize" in
15152         1)      i8type=char
15153                 u8type="unsigned char"
15154                 i8size=$charsize
15155                 u8size=$charsize
15156                 ;;
15157         esac
15158         ;;
15159 esac
15160 case "$i8type" in
15161 '')     set try -DINT8
15162         if eval $compile; then
15163                 case "`$run ./try`" in
15164                 int8_t) i8type=int8_t
15165                         u8type=uint8_t
15166                         i8size=1
15167                         u8size=1
15168                         ;;
15169                 esac
15170         fi
15171         ;;
15172 esac
15173 case "$i8type" in
15174 '')     if $test $charsize -ge 1; then
15175                 i8type=char
15176                 u8type="unsigned char"
15177                 i8size=$charsize
15178                 u8size=$charsize
15179         fi
15180         ;;
15181 esac
15182
15183 case "$i16type" in
15184 '')     case "$shortsize" in
15185         2)      i16type=short
15186                 u16type="unsigned short"
15187                 i16size=$shortsize
15188                 u16size=$shortsize
15189                 ;;
15190         esac
15191         ;;
15192 esac
15193 case "$i16type" in
15194 '')     set try -DINT16
15195         if eval $compile; then
15196                 case "`$run ./try`" in
15197                 int16_t)
15198                         i16type=int16_t
15199                         u16type=uint16_t
15200                         i16size=2
15201                         u16size=2
15202                         ;;
15203                 esac
15204         fi
15205         ;;
15206 esac
15207 case "$i16type" in
15208 '')     if $test $shortsize -ge 2; then
15209                 i16type=short
15210                 u16type="unsigned short"
15211                 i16size=$shortsize
15212                 u16size=$shortsize
15213         fi
15214         ;;
15215 esac
15216
15217 case "$i32type" in
15218 '')     case "$longsize" in
15219         4)      i32type=long
15220                 u32type="unsigned long"
15221                 i32size=$longsize
15222                 u32size=$longsize
15223                 ;;
15224         *)      case "$intsize" in
15225                 4)      i32type=int
15226                         u32type="unsigned int"
15227                         i32size=$intsize
15228                         u32size=$intsize
15229                         ;;
15230                 esac
15231                 ;;
15232         esac
15233         ;;
15234 esac
15235 case "$i32type" in
15236 '')     set try -DINT32
15237         if eval $compile; then
15238                 case "`$run ./try`" in
15239                 int32_t)
15240                         i32type=int32_t
15241                         u32type=uint32_t
15242                         i32size=4
15243                         u32size=4
15244                         ;;
15245                 esac
15246         fi
15247         ;;
15248 esac
15249 case "$i32type" in
15250 '')     if $test $intsize -ge 4; then
15251                 i32type=int
15252                 u32type="unsigned int"
15253                 i32size=$intsize
15254                 u32size=$intsize
15255         fi
15256         ;;
15257 esac
15258
15259 case "$i64type" in
15260 '')     case "$d_quad:$quadtype" in
15261         define:?*)
15262                 i64type="$quadtype"
15263                 u64type="$uquadtype"
15264                 i64size=8
15265                 u64size=8
15266                 ;;
15267         esac
15268         ;;
15269 esac
15270
15271 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15272 : volatile so that the compiler has to store it out to memory.
15273 if test X"$d_volatile" = X"$define"; then
15274         volatile=volatile
15275 fi
15276 $cat <<EOP >try.c
15277 #include <stdio.h>
15278 #$i_stdlib I_STDLIB
15279 #ifdef I_STDLIB
15280 #include <stdlib.h>
15281 #endif
15282 #include <sys/types.h>
15283 #include <signal.h>
15284 #ifdef SIGFPE
15285 $volatile int bletched = 0;
15286 $signal_t blech(int s) { bletched = 1; }
15287 #endif
15288 int main() {
15289     $uvtype u = 0;
15290     $nvtype d;
15291     int     n = 8 * $uvsize;
15292     int     i;
15293 #ifdef SIGFPE
15294     signal(SIGFPE, blech);
15295 #endif
15296
15297     for (i = 0; i < n; i++) {
15298       u = u << 1 | ($uvtype)1;
15299       d = ($nvtype)u;
15300       if (($uvtype)d != u)
15301         break;
15302       if (d <= 0)
15303         break;
15304       d = ($nvtype)(u - 1);
15305       if (($uvtype)d != (u - 1))
15306         break;
15307 #ifdef SIGFPE
15308       if (bletched)
15309         break;
15310 #endif
15311     }
15312     printf("%d\n", ((i == n) ? -n : i));
15313     exit(0);
15314 }
15315 EOP
15316 set try
15317
15318 d_nv_preserves_uv="$undef"
15319 if eval $compile; then
15320         nv_preserves_uv_bits="`$run ./try`"
15321 fi
15322 case "$nv_preserves_uv_bits" in
15323 \-[1-9]*)
15324         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15325         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15326         d_nv_preserves_uv="$define"
15327         ;;
15328 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15329         d_nv_preserves_uv="$undef" ;;
15330 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15331         nv_preserves_uv_bits="0" ;;
15332 esac
15333 $rm_try
15334
15335 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15336 : volatile so that the compiler has to store it out to memory.
15337 if test X"$d_volatile" = X"$define"; then
15338         volatile=volatile
15339 fi
15340 $cat <<EOP >try.c
15341 #include <stdio.h>
15342 #$i_stdlib I_STDLIB
15343 #ifdef I_STDLIB
15344 #include <stdlib.h>
15345 #endif
15346 #$i_string I_STRING
15347 #ifdef I_STRING
15348 #  include <string.h>
15349 #else
15350 #  include <strings.h>
15351 #endif
15352 #include <sys/types.h>
15353 #include <signal.h>
15354 #ifdef SIGFPE
15355 $volatile int bletched = 0;
15356 $signal_t blech(int s) { bletched = 1; }
15357 #endif
15358
15359 int checkit($nvtype d, char *where) {
15360     unsigned char *p = (char *)&d;
15361     unsigned char *end = p + sizeof(d);
15362     int fail = 0;
15363
15364     while (p < end)
15365         fail += *p++;
15366
15367     if (!fail)
15368         return 0;
15369
15370     p = (char *)&d;
15371     printf("No - %s: 0x", where);
15372     while (p < end)
15373         printf ("%02X", *p++);
15374     printf("\n");
15375     return 1;
15376 }
15377
15378 int main(int argc, char **argv) {
15379     $nvtype d = 0.0;
15380     int fail = 0;
15381     fail += checkit(d, "0.0");
15382
15383     /* The compiler shouldn't be assuming that bletched is 0  */
15384     d = bletched;
15385
15386     fail += checkit(d, "bleched");
15387
15388 #ifdef SIGFPE
15389     signal(SIGFPE, blech);
15390 #endif
15391
15392     /* Paranoia - the compiler should have no way of knowing that ANSI says
15393        that argv[argc] will always be NULL.  Actually, if it did assume this it
15394        would be buggy, as this is C and main() can be called from elsewhere in
15395        the program.  */
15396     d = argv[argc] ? 1 : 0;
15397
15398     if (d) {
15399         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15400     }
15401
15402     fail += checkit(d, "ternary");
15403
15404     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15405
15406     if (d != 0.0) {
15407         printf("No - memset doesn't give 0.0\n");
15408         /* This might just blow up:  */
15409         printf("(gives %g)\n", d);
15410         return 1;
15411     }
15412
15413 #ifdef SIGFPE
15414     if (bletched) {
15415         printf("No - something bleched\n");
15416         return 1;
15417     }
15418 #endif
15419     if (fail) {
15420       printf("No - %d fail(s)\n", fail);
15421       return 1;
15422     }
15423     printf("Yes\n");
15424     return 0;
15425 }
15426 EOP
15427 set try
15428
15429 d_nv_zero_is_allbits_zero="$undef"
15430 if eval $compile; then
15431     xxx="`$run ./try`"
15432     case "$?" in
15433         0)
15434             case "$xxx" in
15435                 Yes)  cat >&4 <<EOM
15436 0.0 is represented as all bits zero in memory
15437 EOM
15438                     d_nv_zero_is_allbits_zero="$define"
15439                     ;;
15440                 *)  cat >&4 <<EOM
15441 0.0 is not represented as all bits zero in memory
15442 EOM
15443                     d_nv_zero_is_allbits_zero="$undef"
15444                     ;;
15445             esac
15446             ;;
15447         *)  cat >&4 <<EOM
15448 0.0 is not represented as all bits zero in memory
15449 EOM
15450             d_nv_zero_is_allbits_zero="$undef"
15451             ;;
15452     esac
15453 fi
15454 $rm_try
15455
15456 : check for off64_t
15457 echo " "
15458 echo "Checking to see if you have off64_t..." >&4
15459 $cat >try.c <<EOCP
15460 #include <sys/types.h>
15461 #include <unistd.h>
15462 int main() { off64_t x = 7; }
15463 EOCP
15464 set try
15465 if eval $compile; then
15466         val="$define"
15467         echo "You have off64_t."
15468 else
15469         val="$undef"
15470         echo "You do not have off64_t."
15471         case "$lseeksize" in
15472         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15473         esac
15474 fi
15475 $rm_try
15476 set d_off64_t
15477 eval $setvar
15478
15479 : how to create joinable pthreads
15480 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15481         echo " "
15482         echo "Checking what constant to use for creating joinable pthreads..." >&4
15483         $cat >try.c <<'EOCP'
15484 #include <pthread.h>
15485 int main() {
15486     int detachstate = JOINABLE;
15487 }
15488 EOCP
15489         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15490         if eval $compile; then
15491                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15492                 val="$undef" # Yes, undef.
15493                 set d_old_pthread_create_joinable
15494                 eval $setvar
15495                 val=""
15496                 set old_pthread_create_joinable
15497                 eval $setvar
15498         else
15499                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15500                 if eval $compile; then
15501                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15502                         val="$define"
15503                         set d_old_pthread_create_joinable
15504                         eval $setvar
15505                         val=PTHREAD_CREATE_UNDETACHED
15506                         set old_pthread_create_joinable
15507                         eval $setvar
15508                 else
15509                         set try -DJOINABLE=__UNDETACHED
15510                         if eval $compile; then
15511                                 echo "You seem to use __UNDETACHED." >&4
15512                                 val="$define"
15513                                 set d_old_pthread_create_joinable
15514                                 eval $setvar
15515                                 val=__UNDETACHED
15516                                 set old_pthread_create_joinable
15517                                 eval $setvar
15518                         else
15519                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15520                                 val="$define"
15521                                 set d_old_pthread_create_joinable
15522                                 eval $setvar
15523                                 val=0
15524                                 set old_pthread_create_joinable
15525                                 eval $setvar
15526                         fi
15527                 fi
15528         fi
15529         $rm_try
15530 else
15531     d_old_pthread_create_joinable="$undef"
15532     old_pthread_create_joinable=""
15533 fi
15534
15535 : see if pause exists
15536 set pause d_pause
15537 eval $inlibc
15538
15539 : see if pipe exists
15540 set pipe d_pipe
15541 eval $inlibc
15542
15543 : see if poll exists
15544 set poll d_poll
15545 eval $inlibc
15546
15547 : see if readlink exists
15548 set readlink d_readlink
15549 eval $inlibc
15550
15551 echo " "
15552 procselfexe=''
15553 val="$undef"
15554 case "$d_readlink" in
15555 "$define")
15556         if $issymlink /proc/self/exe ; then
15557                 $ls -l /proc/self/exe > reflect
15558                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15559                         echo "You have Linux-like /proc/self/exe."
15560                         procselfexe='"/proc/self/exe"'
15561                         val="$define"
15562                 fi
15563         fi
15564         if $issymlink /proc/curproc/file ; then
15565                 $ls -l /proc/curproc/file > reflect
15566                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15567                         echo "You have BSD-like /proc/curproc/file."
15568                         procselfexe='"/proc/curproc/file"'
15569                         val="$define"
15570                 fi
15571         fi
15572         ;;
15573 esac
15574 $rm -f reflect
15575 set d_procselfexe
15576 eval $setvar
15577
15578 : backward compatibility for d_hvfork
15579 if test X$d_hvfork != X; then
15580         d_vfork="$d_hvfork"
15581         d_hvfork=''
15582 fi
15583 : see if there is a vfork
15584 val=''
15585 set vfork val
15586 eval $inlibc
15587
15588 d_pseudofork=$undef
15589
15590 : Ok, but do we want to use it. vfork is reportedly unreliable in
15591 : perl on Solaris 2.x, and probably elsewhere.
15592 case "$val" in
15593 $define)
15594         echo " "
15595         case "$usevfork" in
15596         false) dflt='n';;
15597         *) dflt='y';;
15598         esac
15599         cat <<'EOM'
15600
15601 Perl can only use a vfork() that doesn't suffer from strict
15602 restrictions on calling functions or modifying global data in
15603 the child.  For example, glibc-2.1 contains such a vfork()
15604 that is unsuitable.  If your system provides a proper fork()
15605 call, chances are that you do NOT want perl to use vfork().
15606
15607 EOM
15608         rp="Do you still want to use vfork()?"
15609         . ./myread
15610         case "$ans" in
15611         y|Y) ;;
15612         *)
15613                 echo "Ok, we won't use vfork()."
15614                 val="$undef"
15615                 ;;
15616         esac
15617         ;;
15618 esac
15619 set d_vfork
15620 eval $setvar
15621 case "$d_vfork" in
15622 $define) usevfork='true';;
15623 *) usevfork='false';;
15624 esac
15625
15626 : see whether the pthread_atfork exists
15627 $cat >try.c <<EOP
15628 #include <pthread.h>
15629 #include <stdio.h>
15630 int main() {
15631 #ifdef  PTHREAD_ATFORK
15632         pthread_atfork(NULL,NULL,NULL);
15633 #endif
15634 }
15635 EOP
15636
15637 : see if pthread_atfork exists
15638 set try -DPTHREAD_ATFORK
15639 if eval $compile; then
15640     val="$define"
15641 else
15642     val="$undef"
15643 fi
15644 case "$usethreads" in
15645 $define)
15646         case "$val" in
15647         $define) echo 'pthread_atfork found.' >&4        ;;
15648         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15649         esac
15650 esac
15651 set d_pthread_atfork
15652 eval $setvar
15653
15654 : see if pthread_attr_setscope exists
15655 set pthread_attr_setscope d_pthread_attr_setscope
15656 eval $inlibc
15657
15658
15659 : see whether the various POSIXish _yields exist
15660 $cat >try.c <<EOP
15661 #include <pthread.h>
15662 #include <stdio.h>
15663 int main() {
15664 #ifdef SCHED_YIELD
15665         sched_yield();
15666 #else
15667 #ifdef PTHREAD_YIELD
15668         pthread_yield();
15669 #else
15670 #ifdef PTHREAD_YIELD_NULL
15671         pthread_yield(NULL);
15672 #endif
15673 #endif
15674 #endif
15675 }
15676 EOP
15677 : see if sched_yield exists
15678 set try -DSCHED_YIELD
15679 if eval $compile; then
15680     val="$define"
15681     sched_yield='sched_yield()'
15682 else
15683     val="$undef"
15684 fi
15685 case "$usethreads" in
15686 $define)
15687         case "$val" in
15688         $define) echo 'sched_yield() found.' >&4        ;;
15689         *)       echo 'sched_yield() NOT found.' >&4    ;;
15690         esac
15691 esac
15692 set d_sched_yield
15693 eval $setvar
15694
15695 : see if pthread_yield exists
15696 set try -DPTHREAD_YIELD
15697 if eval $compile; then
15698     val="$define"
15699     case "$sched_yield" in
15700     '') sched_yield='pthread_yield()' ;;
15701     esac
15702 else
15703     set try -DPTHREAD_YIELD_NULL
15704     if eval $compile; then
15705         val="$define"
15706         case "$sched_yield" in
15707         '') sched_yield='pthread_yield(NULL)' ;;
15708         esac
15709     else
15710         val="$undef"
15711     fi
15712 fi
15713 case "$usethreads" in
15714 $define)
15715         case "$val" in
15716         $define) echo 'pthread_yield() found.' >&4      ;;
15717         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15718         esac
15719         ;;
15720 esac
15721 set d_pthread_yield
15722 eval $setvar
15723 case "$sched_yield" in
15724 '') sched_yield=undef ;;
15725 esac
15726 $rm_try
15727
15728 : see if random_r exists
15729 set random_r d_random_r
15730 eval $inlibc
15731 case "$d_random_r" in
15732 "$define")
15733         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15734         case "$d_random_r_proto:$usethreads" in
15735         ":define")      d_random_r_proto=define
15736                 set d_random_r_proto random_r $hdrs
15737                 eval $hasproto ;;
15738         *)      ;;
15739         esac
15740         case "$d_random_r_proto" in
15741         define)
15742         case "$random_r_proto" in
15743         ''|0) try='int random_r(int*, struct random_data*);'
15744         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15745         esac
15746         case "$random_r_proto" in
15747         ''|0) try='int random_r(long*, struct random_data*);'
15748         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15749         esac
15750         case "$random_r_proto" in
15751         ''|0) try='int random_r(struct random_data*, int32_t*);'
15752         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15753         esac
15754         case "$random_r_proto" in
15755         ''|0)   d_random_r=undef
15756                 random_r_proto=0
15757                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15758         * )     case "$random_r_proto" in
15759                 REENTRANT_PROTO*) ;;
15760                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15761                 esac
15762                 echo "Prototype: $try" ;;
15763         esac
15764         ;;
15765         *)      case "$usethreads" in
15766                 define) echo "random_r has no prototype, not using it." >&4 ;;
15767                 esac
15768                 d_random_r=undef
15769                 random_r_proto=0
15770                 ;;
15771         esac
15772         ;;
15773 *)      random_r_proto=0
15774         ;;
15775 esac
15776
15777 : see if readdir and friends exist
15778 set readdir d_readdir
15779 eval $inlibc
15780 set seekdir d_seekdir
15781 eval $inlibc
15782 set telldir d_telldir
15783 eval $inlibc
15784 set rewinddir d_rewinddir
15785 eval $inlibc
15786
15787 : see if readdir64_r exists
15788 set readdir64_r d_readdir64_r
15789 eval $inlibc
15790 case "$d_readdir64_r" in
15791 "$define")
15792         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15793         case "$d_readdir64_r_proto:$usethreads" in
15794         ":define")      d_readdir64_r_proto=define
15795                 set d_readdir64_r_proto readdir64_r $hdrs
15796                 eval $hasproto ;;
15797         *)      ;;
15798         esac
15799         case "$d_readdir64_r_proto" in
15800         define)
15801         case "$readdir64_r_proto" in
15802         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15803         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15804         esac
15805         case "$readdir64_r_proto" in
15806         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15807         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15808         esac
15809         case "$readdir64_r_proto" in
15810         ''|0)   d_readdir64_r=undef
15811                 readdir64_r_proto=0
15812                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15813         * )     case "$readdir64_r_proto" in
15814                 REENTRANT_PROTO*) ;;
15815                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15816                 esac
15817                 echo "Prototype: $try" ;;
15818         esac
15819         ;;
15820         *)      case "$usethreads" in
15821                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15822                 esac
15823                 d_readdir64_r=undef
15824                 readdir64_r_proto=0
15825                 ;;
15826         esac
15827         ;;
15828 *)      readdir64_r_proto=0
15829         ;;
15830 esac
15831
15832 : see if readdir_r exists
15833 set readdir_r d_readdir_r
15834 eval $inlibc
15835 case "$d_readdir_r" in
15836 "$define")
15837         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15838         case "$d_readdir_r_proto:$usethreads" in
15839         ":define")      d_readdir_r_proto=define
15840                 set d_readdir_r_proto readdir_r $hdrs
15841                 eval $hasproto ;;
15842         *)      ;;
15843         esac
15844         case "$d_readdir_r_proto" in
15845         define)
15846         case "$readdir_r_proto" in
15847         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15848         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15849         esac
15850         case "$readdir_r_proto" in
15851         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15852         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15853         esac
15854         case "$readdir_r_proto" in
15855         ''|0)   d_readdir_r=undef
15856                 readdir_r_proto=0
15857                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15858         * )     case "$readdir_r_proto" in
15859                 REENTRANT_PROTO*) ;;
15860                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15861                 esac
15862                 echo "Prototype: $try" ;;
15863         esac
15864         ;;
15865         *)      case "$usethreads" in
15866                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15867                 esac
15868                 d_readdir_r=undef
15869                 readdir_r_proto=0
15870                 ;;
15871         esac
15872         ;;
15873 *)      readdir_r_proto=0
15874         ;;
15875 esac
15876
15877 : see if readv exists
15878 set readv d_readv
15879 eval $inlibc
15880
15881 : see if recvmsg exists
15882 set recvmsg d_recvmsg
15883 eval $inlibc
15884
15885 : see if rename exists
15886 set rename d_rename
15887 eval $inlibc
15888
15889 : see if rmdir exists
15890 set rmdir d_rmdir
15891 eval $inlibc
15892
15893 : see if memory.h is available.
15894 val=''
15895 set memory.h val
15896 eval $inhdr
15897
15898 : See if it conflicts with string.h
15899 case "$val" in
15900 $define)
15901         case "$strings" in
15902         '') ;;
15903         *)
15904                 $cppstdin $cppflags $cppminus < $strings > mem.h
15905                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15906                         echo " "
15907                         echo "We won't be including <memory.h>."
15908                         val="$undef"
15909                 fi
15910                 $rm -f mem.h
15911                 ;;
15912         esac
15913 esac
15914 set i_memory
15915 eval $setvar
15916
15917 : can bcopy handle overlapping blocks?
15918 echo " "
15919 val="$undef"
15920 case "$d_memmove" in
15921 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15922 *)      case "$d_bcopy" in
15923         "$define")
15924                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15925                 $cat >try.c <<EOCP
15926 #$i_memory I_MEMORY
15927 #$i_stdlib I_STDLIB
15928 #$i_string I_STRING
15929 #$i_unistd I_UNISTD
15930 EOCP
15931         $cat >>try.c <<'EOCP'
15932 #include <stdio.h>
15933 #ifdef I_MEMORY
15934 #  include <memory.h>
15935 #endif
15936 #ifdef I_STDLIB
15937 #  include <stdlib.h>
15938 #endif
15939 #ifdef I_STRING
15940 #  include <string.h>
15941 #else
15942 #  include <strings.h>
15943 #endif
15944 #ifdef I_UNISTD
15945 #  include <unistd.h>  /* Needed for NetBSD */
15946 #endif
15947 int main()
15948 {
15949 char buf[128], abc[128];
15950 char *b;
15951 int len;
15952 int off;
15953 int align;
15954
15955 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15956    try to store the string in read-only memory. */
15957 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15958
15959 for (align = 7; align >= 0; align--) {
15960         for (len = 36; len; len--) {
15961                 b = buf+align;
15962                 bcopy(abc, b, len);
15963                 for (off = 1; off <= len; off++) {
15964                         bcopy(b, b+off, len);
15965                         bcopy(b+off, b, len);
15966                         if (bcmp(b, abc, len))
15967                                 exit(1);
15968                 }
15969         }
15970 }
15971 exit(0);
15972 }
15973 EOCP
15974                 set try
15975                 if eval $compile_ok; then
15976                         if $run ./try 2>/dev/null; then
15977                                 echo "Yes, it can."
15978                                 val="$define"
15979                         else
15980                                 echo "It can't, sorry."
15981                         fi
15982                 else
15983                         echo "(I can't compile the test program, so we'll assume not...)"
15984                 fi
15985                 ;;
15986         esac
15987         $rm_try
15988         ;;
15989 esac
15990 set d_safebcpy
15991 eval $setvar
15992
15993 : can memcpy handle overlapping blocks?
15994 echo " "
15995 val="$undef"
15996 case "$d_memmove" in
15997 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15998 *)      case "$d_memcpy" in
15999         "$define")
16000                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16001                 $cat >try.c <<EOCP
16002 #$i_memory I_MEMORY
16003 #$i_stdlib I_STDLIB
16004 #$i_string I_STRING
16005 #$i_unistd I_UNISTD
16006 EOCP
16007         $cat >>try.c <<'EOCP'
16008 #include <stdio.h>
16009 #ifdef I_MEMORY
16010 #  include <memory.h>
16011 #endif
16012 #ifdef I_STDLIB
16013 #  include <stdlib.h>
16014 #endif
16015 #ifdef I_STRING
16016 #  include <string.h>
16017 #else
16018 #  include <strings.h>
16019 #endif
16020 #ifdef I_UNISTD
16021 #  include <unistd.h>  /* Needed for NetBSD */
16022 #endif
16023 int main()
16024 {
16025 char buf[128], abc[128];
16026 char *b;
16027 int len;
16028 int off;
16029 int align;
16030
16031 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16032    try to store the string in read-only memory. */
16033 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16034
16035 for (align = 7; align >= 0; align--) {
16036         for (len = 36; len; len--) {
16037                 b = buf+align;
16038                 memcpy(b, abc, len);
16039                 for (off = 1; off <= len; off++) {
16040                         memcpy(b+off, b, len);
16041                         memcpy(b, b+off, len);
16042                         if (memcmp(b, abc, len))
16043                                 exit(1);
16044                 }
16045         }
16046 }
16047 exit(0);
16048 }
16049 EOCP
16050                 set try
16051                 if eval $compile_ok; then
16052                         if $run ./try 2>/dev/null; then
16053                                 echo "Yes, it can."
16054                                 val="$define"
16055                         else
16056                                 echo "It can't, sorry."
16057                         fi
16058                 else
16059                         echo "(I can't compile the test program, so we'll assume not...)"
16060                 fi
16061                 ;;
16062         esac
16063         $rm_try
16064         ;;
16065 esac
16066 set d_safemcpy
16067 eval $setvar
16068
16069 : can memcmp be trusted to compare relative magnitude?
16070 val="$undef"
16071 case "$d_memcmp" in
16072 "$define")
16073         echo " "
16074         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16075         $cat >try.c <<EOCP
16076 #$i_memory I_MEMORY
16077 #$i_stdlib I_STDLIB
16078 #$i_string I_STRING
16079 #$i_unistd I_UNISTD
16080 EOCP
16081         $cat >>try.c <<'EOCP'
16082 #include <stdio.h>
16083 #ifdef I_MEMORY
16084 #  include <memory.h>
16085 #endif
16086 #ifdef I_STDLIB
16087 #  include <stdlib.h>
16088 #endif
16089 #ifdef I_STRING
16090 #  include <string.h>
16091 #else
16092 #  include <strings.h>
16093 #endif
16094 #ifdef I_UNISTD
16095 #  include <unistd.h>  /* Needed for NetBSD */
16096 #endif
16097 int main()
16098 {
16099 char a = -1;
16100 char b = 0;
16101 if ((a < b) && memcmp(&a, &b, 1) < 0)
16102         exit(1);
16103 exit(0);
16104 }
16105 EOCP
16106         set try
16107         if eval $compile_ok; then
16108                 if $run ./try 2>/dev/null; then
16109                         echo "Yes, it can."
16110                         val="$define"
16111                 else
16112                         echo "No, it can't (it uses signed chars)."
16113                 fi
16114         else
16115                 echo "(I can't compile the test program, so we'll assume not...)"
16116         fi
16117         ;;
16118 esac
16119 $rm_try
16120 set d_sanemcmp
16121 eval $setvar
16122
16123 : see if prototype for sbrk is available
16124 echo " "
16125 set d_sbrkproto sbrk $i_unistd unistd.h
16126 eval $hasproto
16127
16128 : see if select exists
16129 set select d_select
16130 eval $inlibc
16131
16132 : see if semctl exists
16133 set semctl d_semctl
16134 eval $inlibc
16135
16136 : see if semget exists
16137 set semget d_semget
16138 eval $inlibc
16139
16140 : see if semop exists
16141 set semop d_semop
16142 eval $inlibc
16143
16144 : see how much of the 'sem*(2)' library is present.
16145 h_sem=true
16146 echo " "
16147 case "$d_semctl$d_semget$d_semop" in
16148 *"$undef"*) h_sem=false;;
16149 esac
16150 case "$osname" in
16151 freebsd)
16152     case "`ipcs 2>&1`" in
16153     "SVID messages"*"not configured"*)
16154         echo "Your $osname does not have the sem*(2) configured." >&4
16155         h_sem=false
16156         val="$undef"
16157         set semctl d_semctl
16158         eval $setvar
16159         set semget d_semget
16160         eval $setvar
16161         set semop d_semop
16162         eval $setvar
16163         ;;
16164     esac
16165     ;;
16166 esac
16167 : we could also check for sys/ipc.h ...
16168 if $h_sem && $test `./findhdr sys/sem.h`; then
16169         echo "You have the full sem*(2) library." >&4
16170         val="$define"
16171 else
16172         echo "You don't have the full sem*(2) library." >&4
16173         val="$undef"
16174 fi
16175 set d_sem
16176 eval $setvar
16177
16178 : see whether sys/sem.h defines union semun
16179 echo " "
16180 $cat > try.c <<'END'
16181 #include <sys/types.h>
16182 #include <sys/ipc.h>
16183 #include <sys/sem.h>
16184 int main () { union semun semun; semun.buf = 0; }
16185 END
16186 set try
16187 if eval $compile; then
16188     echo "You have union semun in <sys/sem.h>." >&4
16189     val="$define"
16190 else
16191     echo "You do not have union semun in <sys/sem.h>." >&4
16192     val="$undef"
16193 fi
16194 $rm_try
16195 set d_union_semun
16196 eval $setvar
16197
16198 : see how to do semctl IPC_STAT
16199 case "$d_sem" in
16200 $define)
16201     echo " "
16202     $cat > try.h <<END
16203 #ifndef S_IRUSR
16204 #   ifdef S_IREAD
16205 #       define S_IRUSR S_IREAD
16206 #       define S_IWUSR S_IWRITE
16207 #       define S_IXUSR S_IEXEC
16208 #   else
16209 #       define S_IRUSR 0400
16210 #       define S_IWUSR 0200
16211 #       define S_IXUSR 0100
16212 #   endif
16213 #   define S_IRGRP (S_IRUSR>>3)
16214 #   define S_IWGRP (S_IWUSR>>3)
16215 #   define S_IXGRP (S_IXUSR>>3)
16216 #   define S_IROTH (S_IRUSR>>6)
16217 #   define S_IWOTH (S_IWUSR>>6)
16218 #   define S_IXOTH (S_IXUSR>>6)
16219 #endif
16220 #ifndef S_IRWXU
16221 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16222 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16223 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16224 #endif
16225 END
16226     : see whether semctl IPC_STAT can use union semun
16227     case "$d_semctl_semun" in
16228     '')
16229       val="$undef"
16230       $cat > try.c <<END
16231 #include <sys/types.h>
16232 #include <sys/ipc.h>
16233 #include <sys/sem.h>
16234 #include <sys/stat.h>
16235 #include <stdio.h>
16236 #include <errno.h>
16237 #include "try.h"
16238 #ifndef errno
16239 extern int errno;
16240 #endif
16241 #$d_union_semun HAS_UNION_SEMUN
16242 int main() {
16243     union semun
16244 #ifndef HAS_UNION_SEMUN
16245     {
16246         int val;
16247         struct semid_ds *buf;
16248         unsigned short *array;
16249     }
16250 #endif
16251     arg;
16252     int sem, st;
16253
16254 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16255     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16256     if (sem > -1) {
16257         struct semid_ds argbuf;
16258         arg.buf = &argbuf;
16259 #       ifdef IPC_STAT
16260         st = semctl(sem, 0, IPC_STAT, arg);
16261         if (st == 0)
16262             printf("semun\n");
16263         else
16264 #       endif /* IPC_STAT */
16265             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16266 #       ifdef IPC_RMID
16267         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16268 #       endif /* IPC_RMID */
16269             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16270     } else
16271 #endif /* IPC_PRIVATE && ... */
16272         printf("semget failed: errno = %d\n", errno);
16273   return 0;
16274 }
16275 END
16276       set try
16277       if eval $compile; then
16278           xxx=`$run ./try`
16279           case "$xxx" in
16280           semun) val="$define" ;;
16281           esac
16282       fi
16283       $rm_try
16284       set d_semctl_semun
16285       eval $setvar
16286       ;;
16287     esac
16288     case "$d_semctl_semun" in
16289     $define)
16290         echo "You can use union semun for semctl IPC_STAT." >&4
16291         also='also'
16292         ;;
16293     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16294         also=''
16295         ;;
16296     esac
16297
16298     : see whether semctl IPC_STAT can use struct semid_ds pointer
16299     case "$d_semctl_semid_ds" in
16300     '')
16301       val="$undef"
16302       $cat > try.c <<'END'
16303 #include <sys/types.h>
16304 #include <sys/ipc.h>
16305 #include <sys/sem.h>
16306 #include <sys/stat.h>
16307 #include "try.h"
16308 #include <stdio.h>
16309 #include <errno.h>
16310 #ifndef errno
16311 extern int errno;
16312 #endif
16313 int main() {
16314     struct semid_ds arg;
16315     int sem, st;
16316
16317 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16318     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16319     if (sem > -1) {
16320 #       ifdef IPC_STAT
16321         st = semctl(sem, 0, IPC_STAT, &arg);
16322         if (st == 0)
16323             printf("semid_ds\n");
16324         else
16325 #       endif /* IPC_STAT */
16326             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16327 #       ifdef IPC_RMID
16328         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16329 #       endif /* IPC_RMID */
16330             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16331     } else
16332 #endif /* IPC_PRIVATE && ... */
16333         printf("semget failed: errno = %d\n", errno);
16334
16335     return 0;
16336 }
16337 END
16338       set try
16339       if eval $compile; then
16340           xxx=`$run ./try`
16341           case "$xxx" in
16342           semid_ds) val="$define" ;;
16343           esac
16344       fi
16345       $rm_try
16346       set d_semctl_semid_ds
16347       eval $setvar
16348       ;;
16349     esac
16350     case "$d_semctl_semid_ds" in
16351     $define)
16352         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16353         ;;
16354     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16355         ;;
16356     esac
16357     $rm_try
16358     ;;
16359 *)  val="$undef"
16360
16361     # We do not have the full sem*(2) library, so assume we can not
16362     # use either.
16363
16364     set d_semctl_semun
16365     eval $setvar
16366
16367     set d_semctl_semid_ds
16368     eval $setvar
16369     ;;
16370 esac
16371
16372 : see if sendmsg exists
16373 set sendmsg d_sendmsg
16374 eval $inlibc
16375
16376 : see if setegid exists
16377 set setegid d_setegid
16378 eval $inlibc
16379
16380 : see if seteuid exists
16381 set seteuid d_seteuid
16382 eval $inlibc
16383
16384 : see if setgrent exists
16385 set setgrent d_setgrent
16386 eval $inlibc
16387
16388 : see if setgrent_r exists
16389 set setgrent_r d_setgrent_r
16390 eval $inlibc
16391 case "$d_setgrent_r" in
16392 "$define")
16393         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16394         case "$d_setgrent_r_proto:$usethreads" in
16395         ":define")      d_setgrent_r_proto=define
16396                 set d_setgrent_r_proto setgrent_r $hdrs
16397                 eval $hasproto ;;
16398         *)      ;;
16399         esac
16400         case "$d_setgrent_r_proto" in
16401         define)
16402         case "$setgrent_r_proto" in
16403         ''|0) try='int setgrent_r(FILE**);'
16404         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16405         esac
16406         case "$setgrent_r_proto" in
16407         ''|0) try='void setgrent_r(FILE**);'
16408         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16409         esac
16410         case "$setgrent_r_proto" in
16411         ''|0)   d_setgrent_r=undef
16412                 setgrent_r_proto=0
16413                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16414         * )     case "$setgrent_r_proto" in
16415                 REENTRANT_PROTO*) ;;
16416                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16417                 esac
16418                 echo "Prototype: $try" ;;
16419         esac
16420         ;;
16421         *)      case "$usethreads" in
16422                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16423                 esac
16424                 d_setgrent_r=undef
16425                 setgrent_r_proto=0
16426                 ;;
16427         esac
16428         ;;
16429 *)      setgrent_r_proto=0
16430         ;;
16431 esac
16432
16433 : see if sethostent exists
16434 set sethostent d_sethent
16435 eval $inlibc
16436
16437 : see if sethostent_r exists
16438 set sethostent_r d_sethostent_r
16439 eval $inlibc
16440 case "$d_sethostent_r" in
16441 "$define")
16442         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16443         case "$d_sethostent_r_proto:$usethreads" in
16444         ":define")      d_sethostent_r_proto=define
16445                 set d_sethostent_r_proto sethostent_r $hdrs
16446                 eval $hasproto ;;
16447         *)      ;;
16448         esac
16449         case "$d_sethostent_r_proto" in
16450         define)
16451         case "$sethostent_r_proto" in
16452         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16453         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16454         esac
16455         case "$sethostent_r_proto" in
16456         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16457         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16458         esac
16459         case "$sethostent_r_proto" in
16460         ''|0)   d_sethostent_r=undef
16461                 sethostent_r_proto=0
16462                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16463         * )     case "$sethostent_r_proto" in
16464                 REENTRANT_PROTO*) ;;
16465                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16466                 esac
16467                 echo "Prototype: $try" ;;
16468         esac
16469         ;;
16470         *)      case "$usethreads" in
16471                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16472                 esac
16473                 d_sethostent_r=undef
16474                 sethostent_r_proto=0
16475                 ;;
16476         esac
16477         ;;
16478 *)      sethostent_r_proto=0
16479         ;;
16480 esac
16481
16482 : see if setitimer exists
16483 set setitimer d_setitimer
16484 eval $inlibc
16485
16486 : see if setlinebuf exists
16487 set setlinebuf d_setlinebuf
16488 eval $inlibc
16489
16490 : see if setlocale exists
16491 set setlocale d_setlocale
16492 eval $inlibc
16493
16494 : see if locale.h is available
16495 set locale.h i_locale
16496 eval $inhdr
16497
16498 : see if setlocale_r exists
16499 set setlocale_r d_setlocale_r
16500 eval $inlibc
16501 case "$d_setlocale_r" in
16502 "$define")
16503         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16504         case "$d_setlocale_r_proto:$usethreads" in
16505         ":define")      d_setlocale_r_proto=define
16506                 set d_setlocale_r_proto setlocale_r $hdrs
16507                 eval $hasproto ;;
16508         *)      ;;
16509         esac
16510         case "$d_setlocale_r_proto" in
16511         define)
16512         case "$setlocale_r_proto" in
16513         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16514         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16515         esac
16516         case "$setlocale_r_proto" in
16517         ''|0)   d_setlocale_r=undef
16518                 setlocale_r_proto=0
16519                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16520         * )     case "$setlocale_r_proto" in
16521                 REENTRANT_PROTO*) ;;
16522                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16523                 esac
16524                 echo "Prototype: $try" ;;
16525         esac
16526         ;;
16527         *)      case "$usethreads" in
16528                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16529                 esac
16530                 d_setlocale_r=undef
16531                 setlocale_r_proto=0
16532                 ;;
16533         esac
16534         ;;
16535 *)      setlocale_r_proto=0
16536         ;;
16537 esac
16538
16539 : see if setnetent exists
16540 set setnetent d_setnent
16541 eval $inlibc
16542
16543 : see if setnetent_r exists
16544 set setnetent_r d_setnetent_r
16545 eval $inlibc
16546 case "$d_setnetent_r" in
16547 "$define")
16548         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16549         case "$d_setnetent_r_proto:$usethreads" in
16550         ":define")      d_setnetent_r_proto=define
16551                 set d_setnetent_r_proto setnetent_r $hdrs
16552                 eval $hasproto ;;
16553         *)      ;;
16554         esac
16555         case "$d_setnetent_r_proto" in
16556         define)
16557         case "$setnetent_r_proto" in
16558         ''|0) try='int setnetent_r(int, struct netent_data*);'
16559         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16560         esac
16561         case "$setnetent_r_proto" in
16562         ''|0) try='void setnetent_r(int, struct netent_data*);'
16563         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16564         esac
16565         case "$setnetent_r_proto" in
16566         ''|0)   d_setnetent_r=undef
16567                 setnetent_r_proto=0
16568                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16569         * )     case "$setnetent_r_proto" in
16570                 REENTRANT_PROTO*) ;;
16571                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16572                 esac
16573                 echo "Prototype: $try" ;;
16574         esac
16575         ;;
16576         *)      case "$usethreads" in
16577                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16578                 esac
16579                 d_setnetent_r=undef
16580                 setnetent_r_proto=0
16581                 ;;
16582         esac
16583         ;;
16584 *)      setnetent_r_proto=0
16585         ;;
16586 esac
16587
16588 : see if setprotoent exists
16589 set setprotoent d_setpent
16590 eval $inlibc
16591
16592 : see if setpgid exists
16593 set setpgid d_setpgid
16594 eval $inlibc
16595
16596 : see if setpgrp2 exists
16597 set setpgrp2 d_setpgrp2
16598 eval $inlibc
16599
16600 : see if setpriority exists
16601 set setpriority d_setprior
16602 eval $inlibc
16603
16604 : see if setproctitle exists
16605 set setproctitle d_setproctitle
16606 eval $inlibc
16607
16608 : see if setprotoent_r exists
16609 set setprotoent_r d_setprotoent_r
16610 eval $inlibc
16611 case "$d_setprotoent_r" in
16612 "$define")
16613         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16614         case "$d_setprotoent_r_proto:$usethreads" in
16615         ":define")      d_setprotoent_r_proto=define
16616                 set d_setprotoent_r_proto setprotoent_r $hdrs
16617                 eval $hasproto ;;
16618         *)      ;;
16619         esac
16620         case "$d_setprotoent_r_proto" in
16621         define)
16622         case "$setprotoent_r_proto" in
16623         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16624         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16625         esac
16626         case "$setprotoent_r_proto" in
16627         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16628         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16629         esac
16630         case "$setprotoent_r_proto" in
16631         ''|0)   d_setprotoent_r=undef
16632                 setprotoent_r_proto=0
16633                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16634         * )     case "$setprotoent_r_proto" in
16635                 REENTRANT_PROTO*) ;;
16636                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16637                 esac
16638                 echo "Prototype: $try" ;;
16639         esac
16640         ;;
16641         *)      case "$usethreads" in
16642                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16643                 esac
16644                 d_setprotoent_r=undef
16645                 setprotoent_r_proto=0
16646                 ;;
16647         esac
16648         ;;
16649 *)      setprotoent_r_proto=0
16650         ;;
16651 esac
16652
16653 : see if setpwent exists
16654 set setpwent d_setpwent
16655 eval $inlibc
16656
16657 : see if setpwent_r exists
16658 set setpwent_r d_setpwent_r
16659 eval $inlibc
16660 case "$d_setpwent_r" in
16661 "$define")
16662         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16663         case "$d_setpwent_r_proto:$usethreads" in
16664         ":define")      d_setpwent_r_proto=define
16665                 set d_setpwent_r_proto setpwent_r $hdrs
16666                 eval $hasproto ;;
16667         *)      ;;
16668         esac
16669         case "$d_setpwent_r_proto" in
16670         define)
16671         case "$setpwent_r_proto" in
16672         ''|0) try='int setpwent_r(FILE**);'
16673         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16674         esac
16675         case "$setpwent_r_proto" in
16676         ''|0) try='void setpwent_r(FILE**);'
16677         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16678         esac
16679         case "$setpwent_r_proto" in
16680         ''|0)   d_setpwent_r=undef
16681                 setpwent_r_proto=0
16682                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16683         * )     case "$setpwent_r_proto" in
16684                 REENTRANT_PROTO*) ;;
16685                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16686                 esac
16687                 echo "Prototype: $try" ;;
16688         esac
16689         ;;
16690         *)      case "$usethreads" in
16691                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16692                 esac
16693                 d_setpwent_r=undef
16694                 setpwent_r_proto=0
16695                 ;;
16696         esac
16697         ;;
16698 *)      setpwent_r_proto=0
16699         ;;
16700 esac
16701
16702 : see if setregid exists
16703 set setregid d_setregid
16704 eval $inlibc
16705 set setresgid d_setresgid
16706 eval $inlibc
16707
16708 : see if setreuid exists
16709 set setreuid d_setreuid
16710 eval $inlibc
16711 set setresuid d_setresuid
16712 eval $inlibc
16713
16714 : see if setrgid exists
16715 set setrgid d_setrgid
16716 eval $inlibc
16717
16718 : see if setruid exists
16719 set setruid d_setruid
16720 eval $inlibc
16721
16722 : see if setservent exists
16723 set setservent d_setsent
16724 eval $inlibc
16725
16726 : see if setservent_r exists
16727 set setservent_r d_setservent_r
16728 eval $inlibc
16729 case "$d_setservent_r" in
16730 "$define")
16731         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16732         case "$d_setservent_r_proto:$usethreads" in
16733         ":define")      d_setservent_r_proto=define
16734                 set d_setservent_r_proto setservent_r $hdrs
16735                 eval $hasproto ;;
16736         *)      ;;
16737         esac
16738         case "$d_setservent_r_proto" in
16739         define)
16740         case "$setservent_r_proto" in
16741         ''|0) try='int setservent_r(int, struct servent_data*);'
16742         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16743         esac
16744         case "$setservent_r_proto" in
16745         ''|0) try='void setservent_r(int, struct servent_data*);'
16746         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16747         esac
16748         case "$setservent_r_proto" in
16749         ''|0)   d_setservent_r=undef
16750                 setservent_r_proto=0
16751                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16752         * )     case "$setservent_r_proto" in
16753                 REENTRANT_PROTO*) ;;
16754                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16755                 esac
16756                 echo "Prototype: $try" ;;
16757         esac
16758         ;;
16759         *)      case "$usethreads" in
16760                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16761                 esac
16762                 d_setservent_r=undef
16763                 setservent_r_proto=0
16764                 ;;
16765         esac
16766         ;;
16767 *)      setservent_r_proto=0
16768         ;;
16769 esac
16770
16771 : see if setsid exists
16772 set setsid d_setsid
16773 eval $inlibc
16774
16775 : see if setvbuf exists
16776 set setvbuf d_setvbuf
16777 eval $inlibc
16778
16779 : see if sfio.h is available
16780 set sfio.h i_sfio
16781 eval $inhdr
16782
16783
16784 : see if sfio library is available
16785 case "$i_sfio" in
16786 $define)
16787         val=''
16788         set sfreserve val
16789         eval $inlibc
16790         ;;
16791 *)
16792         val="$undef"
16793         ;;
16794 esac
16795 : Ok, but do we want to use it.
16796 case "$val" in
16797 $define)
16798         case "$usesfio" in
16799         true|$define|[yY]*) dflt='y';;
16800         *) dflt='n';;
16801         esac
16802         echo "$package can use the sfio library, but it is experimental."
16803         case "$useperlio" in
16804         "$undef")
16805             echo "For sfio also the PerlIO abstraction layer is needed."
16806             echo "Earlier you said you wouldn't want that."
16807             ;;
16808         esac
16809         rp="You seem to have sfio available, do you want to try using it?"
16810         . ./myread
16811         case "$ans" in
16812         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16813                 useperlio="$define"
16814                 val="$define"
16815                 ;;
16816         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16817                 val="$undef"
16818                 ;;
16819         esac
16820         ;;
16821 *)      case "$usesfio" in
16822         true|$define|[yY]*)
16823                 echo "Sorry, cannot find sfio on this machine." >&4
16824                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16825                 val="$undef"
16826                 ;;
16827         esac
16828         ;;
16829 esac
16830 set d_sfio
16831 eval $setvar
16832 case "$d_sfio" in
16833 $define) usesfio='true';;
16834 *) usesfio='false';;
16835 esac
16836 case "$d_sfio" in
16837 $define) ;;
16838 *)      : Remove sfio from list of libraries to use
16839         case "$libs" in
16840         *-lsfio*)
16841                 echo "Removing unneeded -lsfio from library list" >&4
16842                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16843                 shift
16844                 libs="$*"
16845                 echo "libs = $libs" >&4
16846                 ;;
16847         esac
16848 ;;
16849 esac
16850
16851
16852 : see if shmctl exists
16853 set shmctl d_shmctl
16854 eval $inlibc
16855
16856 : see if shmget exists
16857 set shmget d_shmget
16858 eval $inlibc
16859
16860 : see if shmat exists
16861 set shmat d_shmat
16862 eval $inlibc
16863 : see what shmat returns
16864 case "$d_shmat" in
16865 "$define")
16866         $cat >shmat.c <<'END'
16867 #include <sys/shm.h>
16868 void *shmat();
16869 END
16870         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16871                 shmattype='void *'
16872         else
16873                 shmattype='char *'
16874         fi
16875         echo "and it returns ($shmattype)." >&4
16876         : see if a prototype for shmat is available
16877         xxx=`./findhdr sys/shm.h`
16878         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16879         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16880                 val="$define"
16881         else
16882                 val="$undef"
16883         fi
16884         $rm -f shmat.[co]
16885         ;;
16886 *)
16887         val="$undef"
16888         ;;
16889 esac
16890 set d_shmatprototype
16891 eval $setvar
16892
16893 : see if shmdt exists
16894 set shmdt d_shmdt
16895 eval $inlibc
16896
16897 : see how much of the 'shm*(2)' library is present.
16898 h_shm=true
16899 echo " "
16900 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16901 *"$undef"*) h_shm=false;;
16902 esac
16903 case "$osname" in
16904 freebsd)
16905     case "`ipcs 2>&1`" in
16906     "SVID shared memory"*"not configured"*)
16907         echo "Your $osname does not have the shm*(2) configured." >&4
16908         h_shm=false
16909         val="$undef"
16910         set shmctl d_shmctl
16911         evat $setvar
16912         set shmget d_shmget
16913         evat $setvar
16914         set shmat d_shmat
16915         evat $setvar
16916         set shmdt d_shmdt
16917         evat $setvar
16918         ;;
16919     esac
16920     ;;
16921 esac
16922 : we could also check for sys/ipc.h ...
16923 if $h_shm && $test `./findhdr sys/shm.h`; then
16924         echo "You have the full shm*(2) library." >&4
16925         val="$define"
16926 else
16927         echo "You don't have the full shm*(2) library." >&4
16928         val="$undef"
16929 fi
16930 set d_shm
16931 eval $setvar
16932
16933 echo " "
16934 : see if we have sigaction
16935 if set sigaction val -f d_sigaction; eval $csym; $val; then
16936         echo 'sigaction() found.' >&4
16937         $cat > try.c <<EOP
16938 #include <stdio.h>
16939 #include <sys/types.h>
16940 #include <signal.h>
16941 #$i_stdlib I_STDLIB
16942 #ifdef I_STDLIB
16943 #include <stdlib.h>
16944 #endif
16945 int main()
16946 {
16947     struct sigaction act, oact;
16948     act.sa_flags = 0;
16949     oact.sa_handler = 0;
16950     /* so that act and oact are used */
16951     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16952 }
16953 EOP
16954         set try
16955         if eval $compile_ok; then
16956                 val="$define"
16957         else
16958                 echo "But you don't seem to have a useable struct sigaction." >&4
16959                 val="$undef"
16960         fi
16961 else
16962         echo 'sigaction NOT found.' >&4
16963         val="$undef"
16964 fi
16965 set d_sigaction; eval $setvar
16966 $rm_try
16967
16968 : see if this is a sunmath.h system
16969 set sunmath.h i_sunmath
16970 eval $inhdr
16971
16972 : see if signbit exists
16973 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
16974 $cat >try.c <<EOCP
16975 #$i_math I_MATH
16976 #$i_sunmath I_SUNMATH
16977 #ifdef I_MATH
16978 #  include <math.h>
16979 #endif
16980 #ifdef I_SUNMATH  /* Solaris special math library */
16981 #  include <sunmath.h>
16982 #endif
16983 #define NV $nvtype
16984 int main(int argc, char **argv)
16985 {
16986     NV x = 0.0;
16987     NV y = -0.0;
16988     if ((signbit(x) == 0) && (signbit(y) != 0))
16989         return 0;
16990     else
16991         return 1;
16992 }
16993 EOCP
16994 val="$undef"
16995 set try
16996 if eval $compile; then
16997     if $run ./try; then
16998         $echo "Yes." >&4
16999         val="$define"
17000     else
17001         $echo "Signbit seems to be available, but doesn't work as I expected."
17002         $echo "I won't use it." >&4
17003         val="$undef"
17004     fi
17005 else
17006     $echo "Nope." >&4
17007     dflt="$undef"
17008 fi
17009 set d_signbit
17010 eval $setvar
17011 $rm_try
17012
17013 : see if sigprocmask exists
17014 set sigprocmask d_sigprocmask
17015 eval $inlibc
17016
17017 : see if sigsetjmp exists
17018 echo " "
17019 case "$d_sigsetjmp" in
17020 '')
17021         $cat >try.c <<EOP
17022 #include <setjmp.h>
17023 #$i_stdlib I_STDLIB
17024 #ifdef I_STDLIB
17025 #include <stdlib.h>
17026 #endif
17027 sigjmp_buf env;
17028 int set = 1;
17029 int main()
17030 {
17031         if (sigsetjmp(env,1))
17032                 exit(set);
17033         set = 0;
17034         siglongjmp(env, 1);
17035         exit(1);
17036 }
17037 EOP
17038         set try
17039         if eval $compile; then
17040                 if $run ./try >/dev/null 2>&1; then
17041                         echo "POSIX sigsetjmp found." >&4
17042                         val="$define"
17043                 else
17044                         $cat >&4 <<EOM
17045 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17046 I'll ignore them.
17047 EOM
17048                         val="$undef"
17049                 fi
17050         else
17051                 echo "sigsetjmp not found." >&4
17052                 val="$undef"
17053         fi
17054         ;;
17055 *) val="$d_sigsetjmp"
17056         case "$d_sigsetjmp" in
17057         $define) echo "POSIX sigsetjmp found." >&4;;
17058         $undef) echo "sigsetjmp not found." >&4;;
17059         esac
17060         ;;
17061 esac
17062 set d_sigsetjmp
17063 eval $setvar
17064 $rm_try
17065
17066 : see if snprintf exists
17067 set snprintf d_snprintf
17068 eval $inlibc
17069
17070 : see if vsnprintf exists
17071 set vsnprintf d_vsnprintf
17072 eval $inlibc
17073
17074 case "$d_snprintf-$d_vsnprintf" in
17075 "$define-$define")
17076     $cat <<EOM
17077 Checking whether your snprintf() and vsnprintf() work okay...
17078 EOM
17079     $cat >try.c <<'EOCP'
17080 /* v?snprintf testing logic courtesy of Russ Allbery.
17081  * According to C99:
17082  * - if the buffer is too short it still must be \0-terminated
17083  * - if the buffer is too short the potentially required length
17084  *   must be returned and not -1
17085  * - if the buffer is NULL the potentially required length
17086  *   must be returned and not -1 or core dump
17087  */
17088 #include <stdio.h>
17089 #include <stdarg.h>
17090
17091 char buf[2];
17092
17093 int test (char *format, ...)
17094 {
17095     va_list args;
17096     int count;
17097
17098     va_start (args, format);
17099     count = vsnprintf (buf, sizeof buf, format, args);
17100     va_end (args);
17101     return count;
17102 }
17103
17104 int main ()
17105 {
17106     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17107              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17108 }
17109 EOCP
17110     set try
17111     if eval $compile; then
17112         `$run ./try`
17113         case "$?" in
17114         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17115         *) cat <<EOM >&4
17116 Your snprintf() and snprintf() don't seem to be working okay.
17117 EOM
17118            d_snprintf="$undef"
17119            d_vsnprintf="$undef"
17120            ;;
17121         esac
17122     else
17123         echo "(I can't seem to compile the test program--assuming they don't)"
17124         d_snprintf="$undef"
17125         d_vsnprintf="$undef"
17126     fi
17127     $rm_try
17128     ;;
17129 esac
17130
17131 : see if sockatmark exists
17132 set sockatmark d_sockatmark
17133 eval $inlibc
17134
17135 : see if prototype for sockatmark is available
17136 echo " "
17137 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17138 eval $hasproto
17139
17140 : see if socks5_init exists
17141 set socks5_init d_socks5_init
17142 eval $inlibc
17143
17144 : see if sprintf returns the length of the string in the buffer as per ANSI
17145 $echo "Checking whether sprintf returns the length of the string..." >&4
17146 $cat <<EOP >try.c
17147 #include <stdio.h>
17148 #$i_stdlib I_STDLIB
17149 #ifdef I_STDLIB
17150 #include <stdlib.h>
17151 #endif
17152 #$i_string I_STRING
17153 #ifdef I_STRING
17154 #  include <string.h>
17155 #else
17156 #  include <strings.h>
17157 #endif
17158 #$i_math I_MATH
17159 #ifdef I_MATH
17160 #include <math.h>
17161 #endif
17162
17163 char buffer[256];
17164
17165 int check (size_t expect, int test) {
17166   size_t got = strlen(buffer);
17167   if (expect == got)
17168     return 0;
17169
17170   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17171        test, buffer);
17172   exit (test);
17173 }
17174
17175 int main(int argc, char **argv) {
17176   int test = 0;
17177
17178   check(sprintf(buffer, ""), ++test);
17179   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17180   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17181
17182   return 0;
17183 }
17184 EOP
17185 set try
17186
17187 d_sprintf_returns_strlen="$undef"
17188 if eval $compile; then
17189     xxx="`$run ./try`"
17190     case "$?" in
17191         0) cat >&4 <<EOM
17192 sprintf returns the length of the string (as ANSI says it should)
17193 EOM
17194         d_sprintf_returns_strlen="$define"
17195         ;;
17196         *) cat >&4 <<EOM
17197 sprintf does not return the length of the string (how old is this system?)
17198 EOM
17199         d_sprintf_returns_strlen="$undef"
17200         ;;
17201     esac
17202 fi
17203 $rm_try
17204
17205 : see if srand48_r exists
17206 set srand48_r d_srand48_r
17207 eval $inlibc
17208 case "$d_srand48_r" in
17209 "$define")
17210         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17211         case "$d_srand48_r_proto:$usethreads" in
17212         ":define")      d_srand48_r_proto=define
17213                 set d_srand48_r_proto srand48_r $hdrs
17214                 eval $hasproto ;;
17215         *)      ;;
17216         esac
17217         case "$d_srand48_r_proto" in
17218         define)
17219         case "$srand48_r_proto" in
17220         ''|0) try='int srand48_r(long, struct drand48_data*);'
17221         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17222         esac
17223         case "$srand48_r_proto" in
17224         ''|0)   d_srand48_r=undef
17225                 srand48_r_proto=0
17226                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17227         * )     case "$srand48_r_proto" in
17228                 REENTRANT_PROTO*) ;;
17229                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17230                 esac
17231                 echo "Prototype: $try" ;;
17232         esac
17233         ;;
17234         *)      case "$usethreads" in
17235                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17236                 esac
17237                 d_srand48_r=undef
17238                 srand48_r_proto=0
17239                 ;;
17240         esac
17241         ;;
17242 *)      srand48_r_proto=0
17243         ;;
17244 esac
17245
17246 : see if srandom_r exists
17247 set srandom_r d_srandom_r
17248 eval $inlibc
17249 case "$d_srandom_r" in
17250 "$define")
17251         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17252         case "$d_srandom_r_proto:$usethreads" in
17253         ":define")      d_srandom_r_proto=define
17254                 set d_srandom_r_proto srandom_r $hdrs
17255                 eval $hasproto ;;
17256         *)      ;;
17257         esac
17258         case "$d_srandom_r_proto" in
17259         define)
17260         case "$srandom_r_proto" in
17261         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17262         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17263         esac
17264         case "$srandom_r_proto" in
17265         ''|0)   d_srandom_r=undef
17266                 srandom_r_proto=0
17267                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17268         * )     case "$srandom_r_proto" in
17269                 REENTRANT_PROTO*) ;;
17270                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17271                 esac
17272                 echo "Prototype: $try" ;;
17273         esac
17274         ;;
17275         *)      case "$usethreads" in
17276                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17277                 esac
17278                 d_srandom_r=undef
17279                 srandom_r_proto=0
17280                 ;;
17281         esac
17282         ;;
17283 *)      srandom_r_proto=0
17284         ;;
17285 esac
17286
17287 : see if prototype for setresgid is available
17288 echo " "
17289 set d_sresgproto setresgid $i_unistd unistd.h
17290 eval $hasproto
17291
17292 : see if prototype for setresuid is available
17293 echo " "
17294 set d_sresuproto setresuid $i_unistd unistd.h
17295 eval $hasproto
17296
17297 : see if sys/stat.h is available
17298 set sys/stat.h i_sysstat
17299 eval $inhdr
17300
17301
17302 : see if stat knows about block sizes
17303 echo " "
17304 echo "Checking to see if your struct stat has st_blocks field..." >&4
17305 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17306 eval $hasfield
17307
17308
17309 : see if this is a sys/vfs.h system
17310 set sys/vfs.h i_sysvfs
17311 eval $inhdr
17312
17313
17314 : see if this is a sys/statfs.h system
17315 set sys/statfs.h i_sysstatfs
17316 eval $inhdr
17317
17318
17319 echo " "
17320 echo "Checking to see if your system supports struct statfs..." >&4
17321 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
17322 eval $hasstruct
17323 case "$d_statfs_s" in
17324 "$define")      echo "Yes, it does."   ;;
17325 *)              echo "No, it doesn't." ;;
17326 esac
17327
17328
17329
17330 : see if struct statfs knows about f_flags
17331 case "$d_statfs_s" in
17332 define) 
17333         echo " "
17334         echo "Checking to see if your struct statfs has f_flags field..." >&4
17335         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
17336         eval $hasfield
17337         ;;
17338 *)      val="$undef"
17339         set d_statfs_f_flags
17340         eval $setvar
17341         ;;
17342 esac
17343 case "$d_statfs_f_flags" in
17344 "$define")      echo "Yes, it does."   ;;
17345 *)              echo "No, it doesn't." ;;
17346 esac
17347
17348 $cat >&4 <<EOM
17349 Checking how to access stdio streams by file descriptor number...
17350 EOM
17351 case "$stdio_stream_array" in
17352 '')     $cat >try.c <<EOCP
17353 #include <stdio.h>
17354 int main() {
17355   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17356     printf("yes\n");
17357 }
17358 EOCP
17359         for s in _iob __iob __sF
17360         do
17361                 set try -DSTDIO_STREAM_ARRAY=$s
17362                 if eval $compile; then
17363                         case "`$run ./try`" in
17364                         yes)    stdio_stream_array=$s; break ;;
17365                         esac
17366                 fi
17367         done
17368         $rm_try
17369 esac
17370 case "$stdio_stream_array" in
17371 '')     $cat >&4 <<EOM
17372 I can't figure out how to access stdio streams by file descriptor number.
17373 EOM
17374         d_stdio_stream_array="$undef"
17375         ;;
17376 *)      $cat >&4 <<EOM
17377 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17378 EOM
17379         d_stdio_stream_array="$define"
17380         ;;
17381 esac
17382
17383 : see if strcoll exists
17384 set strcoll d_strcoll
17385 eval $inlibc
17386
17387 : check for structure copying
17388 echo " "
17389 echo "Checking to see if your C compiler can copy structs..." >&4
17390 $cat >try.c <<'EOCP'
17391 int main()
17392 {
17393         struct blurfl {
17394                 int dyick;
17395         } foo, bar;
17396
17397         foo = bar;
17398 }
17399 EOCP
17400 if $cc -c try.c >/dev/null 2>&1 ; then
17401         val="$define"
17402         echo "Yup, it can."
17403 else
17404         val="$undef"
17405         echo "Nope, it can't."
17406 fi
17407 set d_strctcpy
17408 eval $setvar
17409 $rm_try
17410
17411 : see if strerror and/or sys_errlist[] exist
17412 echo " "
17413 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17414     if set strerror val -f d_strerror; eval $csym; $val; then
17415                 echo 'strerror() found.' >&4
17416                 d_strerror="$define"
17417                 d_strerrm='strerror(e)'
17418                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17419                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17420                         d_syserrlst="$define"
17421                 else
17422                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17423                         d_syserrlst="$undef"
17424                 fi
17425     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17426                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17427                 echo 'strerror() found in string header.' >&4
17428                 d_strerror="$define"
17429                 d_strerrm='strerror(e)'
17430                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17431                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17432                                 d_syserrlst="$define"
17433                 else
17434                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17435                         d_syserrlst="$undef"
17436                 fi
17437     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17438                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17439                 d_strerror="$undef"
17440                 d_syserrlst="$define"
17441                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17442     else
17443                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17444                 d_strerror="$undef"
17445                 d_syserrlst="$undef"
17446                 d_strerrm='"unknown"'
17447     fi
17448 fi
17449
17450 : see if strerror_r exists
17451 set strerror_r d_strerror_r
17452 eval $inlibc
17453 case "$d_strerror_r" in
17454 "$define")
17455         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17456         case "$d_strerror_r_proto:$usethreads" in
17457         ":define")      d_strerror_r_proto=define
17458                 set d_strerror_r_proto strerror_r $hdrs
17459                 eval $hasproto ;;
17460         *)      ;;
17461         esac
17462         case "$d_strerror_r_proto" in
17463         define)
17464         case "$strerror_r_proto" in
17465         ''|0) try='int strerror_r(int, char*, size_t);'
17466         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17467         esac
17468         case "$strerror_r_proto" in
17469         ''|0) try='int strerror_r(int, char*, int);'
17470         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17471         esac
17472         case "$strerror_r_proto" in
17473         ''|0) try='char* strerror_r(int, char*, size_t);'
17474         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17475         esac
17476         case "$strerror_r_proto" in
17477         ''|0)   d_strerror_r=undef
17478                 strerror_r_proto=0
17479                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17480         * )     case "$strerror_r_proto" in
17481                 REENTRANT_PROTO*) ;;
17482                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17483                 esac
17484                 echo "Prototype: $try" ;;
17485         esac
17486         ;;
17487         *)      case "$usethreads" in
17488                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17489                 esac
17490                 d_strerror_r=undef
17491                 strerror_r_proto=0
17492                 ;;
17493         esac
17494         ;;
17495 *)      strerror_r_proto=0
17496         ;;
17497 esac
17498
17499 : see if strftime exists
17500 set strftime d_strftime
17501 eval $inlibc
17502
17503 : see if strlcat exists
17504 set strlcat d_strlcat
17505 eval $inlibc
17506
17507 : see if strlcpy exists
17508 set strlcpy d_strlcpy
17509 eval $inlibc
17510
17511 : see if strtod exists
17512 set strtod d_strtod
17513 eval $inlibc
17514
17515 : see if strtol exists
17516 set strtol d_strtol
17517 eval $inlibc
17518
17519 : see if strtold exists
17520 set strtold d_strtold
17521 eval $inlibc
17522
17523 : see if strtoll exists
17524 set strtoll d_strtoll
17525 eval $inlibc
17526
17527 case "$d_longlong-$d_strtoll" in
17528 "$define-$define")
17529         $cat <<EOM
17530 Checking whether your strtoll() works okay...
17531 EOM
17532         $cat >try.c <<'EOCP'
17533 #include <errno.h>
17534 #ifdef __hpux
17535 #define strtoll __strtoll
17536 #endif
17537 #ifdef __EMX__
17538 #define strtoll _strtoll
17539 #endif
17540 #include <stdio.h>
17541 extern long long int strtoll(char *s, char **, int); 
17542 static int bad = 0;
17543 int check(char *s, long long ell, int een) {
17544         long long gll;
17545         errno = 0;
17546         gll = strtoll(s, 0, 10);
17547         if (!((gll == ell) && (errno == een)))
17548                 bad++;
17549 }
17550 int main() {
17551         check(" 1",                                      1LL, 0);
17552         check(" 0",                                      0LL, 0);
17553         check("-1",                                     -1LL, 0);
17554         check("-9223372036854775808", -9223372036854775808LL, 0);
17555         check("-9223372036854775808", -9223372036854775808LL, 0);
17556         check(" 9223372036854775807",  9223372036854775807LL, 0);
17557         check("-9223372036854775808", -9223372036854775808LL, 0);
17558         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17559         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17560         if (!bad)
17561                 printf("ok\n");
17562 }
17563 EOCP
17564         set try
17565         if eval $compile; then
17566                 yyy=`$run ./try`
17567                 case "$yyy" in
17568                 ok) echo "Your strtoll() seems to be working okay." ;;
17569                 *) cat <<EOM >&4
17570 Your strtoll() doesn't seem to be working okay.
17571 EOM
17572                    d_strtoll="$undef"
17573                    ;;
17574                 esac
17575         else
17576                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17577                 d_strtoll="$undef"
17578         fi
17579         ;;
17580 esac
17581
17582 : see if strtoq exists
17583 set strtoq d_strtoq
17584 eval $inlibc
17585
17586 : see if strtoul exists
17587 set strtoul d_strtoul
17588 eval $inlibc
17589
17590 case "$d_strtoul" in
17591 "$define")
17592         $cat <<EOM
17593 Checking whether your strtoul() works okay...
17594 EOM
17595         $cat >try.c <<'EOCP'
17596 #include <errno.h>
17597 #include <stdio.h>
17598 extern unsigned long int strtoul(char *s, char **, int); 
17599 static int bad = 0;
17600 void check(char *s, unsigned long eul, int een) {
17601         unsigned long gul;
17602         errno = 0;
17603         gul = strtoul(s, 0, 10);
17604         if (!((gul == eul) && (errno == een)))
17605                 bad++;
17606 }
17607 int main() {
17608         check(" 1", 1L, 0);
17609         check(" 0", 0L, 0);
17610 EOCP
17611         case "$longsize" in
17612         8)
17613             $cat >>try.c <<'EOCP'
17614         check("18446744073709551615", 18446744073709551615UL, 0);
17615         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17616 #if 0 /* strtoul() for /^-/ strings is undefined. */
17617         check("-1", 18446744073709551615UL, 0);
17618         check("-18446744073709551614", 2, 0);
17619         check("-18446744073709551615", 1, 0);
17620         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17621         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17622 #endif
17623 EOCP
17624                 ;;
17625         4)
17626                     $cat >>try.c <<'EOCP'
17627         check("4294967295", 4294967295UL, 0);
17628         check("4294967296", 4294967295UL, ERANGE);
17629 #if 0 /* strtoul() for /^-/ strings is undefined. */
17630         check("-1", 4294967295UL, 0);
17631         check("-4294967294", 2, 0);
17632         check("-4294967295", 1, 0);
17633         check("-4294967296", 4294967295UL, ERANGE);
17634         check("-4294967297", 4294967295UL, ERANGE);
17635 #endif
17636 EOCP
17637                 ;;
17638         *)
17639 : Should we write these tests to be more portable by sprintf-ing
17640 : ~0 and then manipulating that char string as input for strtol?
17641                 ;;
17642         esac
17643         $cat >>try.c <<'EOCP'
17644         if (!bad)
17645                 printf("ok\n");
17646         return 0;
17647 }
17648 EOCP
17649         set try
17650         if eval $compile; then
17651                 case "`$run ./try`" in
17652                 ok) echo "Your strtoul() seems to be working okay." ;;
17653                 *) cat <<EOM >&4
17654 Your strtoul() doesn't seem to be working okay.
17655 EOM
17656                    d_strtoul="$undef"
17657                    ;;
17658                 esac
17659         else
17660                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17661                 d_strtoul="$undef"
17662         fi
17663         ;;
17664 esac
17665
17666 : see if strtoull exists
17667 set strtoull d_strtoull
17668 eval $inlibc
17669
17670 case "$d_longlong-$d_strtoull" in
17671 "$define-$define")
17672         $cat <<EOM
17673 Checking whether your strtoull() works okay...
17674 EOM
17675         $cat >try.c <<'EOCP'
17676 #include <errno.h>
17677 #ifdef __hpux
17678 #define strtoull __strtoull
17679 #endif
17680 #include <stdio.h>
17681 extern unsigned long long int strtoull(char *s, char **, int); 
17682 static int bad = 0;
17683 int check(char *s, long long eull, int een) {
17684         long long gull;
17685         errno = 0;
17686         gull = strtoull(s, 0, 10);
17687         if (!((gull == eull) && (errno == een)))
17688                 bad++;
17689 }
17690 int main() {
17691         check(" 1",                                        1LL, 0);
17692         check(" 0",                                        0LL, 0);
17693         check("18446744073709551615",  18446744073709551615ULL, 0);
17694         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17695 #if 0 /* strtoull() for /^-/ strings is undefined. */
17696         check("-1",                    18446744073709551615ULL, 0);
17697         check("-18446744073709551614",                     2LL, 0);
17698         check("-18446744073709551615",                     1LL, 0);
17699         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17700         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17701 #endif
17702         if (!bad)
17703                 printf("ok\n");
17704 }
17705 EOCP
17706         set try
17707         if eval $compile; then
17708                 case "`$run ./try`" in
17709                 ok) echo "Your strtoull() seems to be working okay." ;;
17710                 *) cat <<EOM >&4
17711 Your strtoull() doesn't seem to be working okay.
17712 EOM
17713                    d_strtoull="$undef"
17714                    ;;
17715                 esac
17716         else
17717                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17718                 d_strtoull="$undef"
17719         fi
17720         ;;
17721 esac
17722
17723 : see if strtouq exists
17724 set strtouq d_strtouq
17725 eval $inlibc
17726
17727 case "$d_strtouq" in
17728 "$define")
17729         $cat <<EOM
17730 Checking whether your strtouq() works okay...
17731 EOM
17732         $cat >try.c <<'EOCP'
17733 #include <errno.h>
17734 #include <stdio.h>
17735 extern unsigned long long int strtouq(char *s, char **, int); 
17736 static int bad = 0;
17737 void check(char *s, unsigned long long eull, int een) {
17738         unsigned long long gull;
17739         errno = 0;
17740         gull = strtouq(s, 0, 10);
17741         if (!((gull == eull) && (errno == een)))
17742                 bad++;
17743 }
17744 int main() {
17745         check(" 1",                                        1LL, 0);
17746         check(" 0",                                        0LL, 0);
17747         check("18446744073709551615",  18446744073709551615ULL, 0);
17748         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17749 #if 0 /* strtouq() for /^-/ strings is undefined. */
17750         check("-1",                    18446744073709551615ULL, 0);
17751         check("-18446744073709551614",                     2LL, 0);
17752         check("-18446744073709551615",                     1LL, 0);
17753         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17754         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17755 #endif
17756         if (!bad)
17757                 printf("ok\n");
17758         return 0;
17759 }
17760 EOCP
17761         set try
17762         if eval $compile; then
17763                 case "`$run ./try`" in
17764                 ok) echo "Your strtouq() seems to be working okay." ;;
17765                 *) cat <<EOM >&4
17766 Your strtouq() doesn't seem to be working okay.
17767 EOM
17768                    d_strtouq="$undef"
17769                    ;;
17770                 esac
17771         else
17772                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17773                 d_strtouq="$undef"
17774         fi
17775         ;;
17776 esac
17777
17778 : see if strxfrm exists
17779 set strxfrm d_strxfrm
17780 eval $inlibc
17781
17782 : see if symlink exists
17783 set symlink d_symlink
17784 eval $inlibc
17785
17786 : see if syscall exists
17787 set syscall d_syscall
17788 eval $inlibc
17789
17790 : see if prototype for syscall is available
17791 echo " "
17792 set d_syscallproto syscall $i_unistd unistd.h
17793 eval $hasproto
17794
17795 : see if sysconf exists
17796 set sysconf d_sysconf
17797 eval $inlibc
17798
17799 : see if system exists
17800 set system d_system
17801 eval $inlibc
17802
17803 : see if tcgetpgrp exists
17804 set tcgetpgrp d_tcgetpgrp
17805 eval $inlibc
17806
17807 : see if tcsetpgrp exists
17808 set tcsetpgrp d_tcsetpgrp
17809 eval $inlibc
17810
17811 : see if prototype for telldir is available
17812 echo " "
17813 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17814 eval $hasproto
17815
17816 : see if time exists
17817 echo " "
17818 if test "X$d_time" = X -o X"$timetype" = X; then
17819     if set time val -f d_time; eval $csym; $val; then
17820                 echo 'time() found.' >&4
17821                 val="$define"
17822                 rp="What is the type returned by time() on this system?"
17823                 set time_t timetype long stdio.h sys/types.h
17824                 eval $typedef_ask
17825     else
17826                 echo 'time() not found, hope that will do.' >&4
17827                 val="$undef"
17828                 timetype='int';
17829     fi
17830     set d_time
17831     eval $setvar
17832 fi
17833
17834 : see if this is a sys/times.h system
17835 set sys/times.h i_systimes
17836 eval $inhdr
17837
17838 : see if times exists
17839 echo " "
17840 if set times val -f d_times; eval $csym; $val; then
17841         echo 'times() found.' >&4
17842         d_times="$define"
17843         inc=''
17844         case "$i_systimes" in
17845         "$define") inc='sys/times.h';;
17846         esac
17847         rp="What is the type returned by times() on this system?"
17848         set clock_t clocktype long stdio.h sys/types.h $inc
17849         eval $typedef_ask
17850 else
17851         echo 'times() NOT found, hope that will do.' >&4
17852         d_times="$undef"
17853         clocktype='int'
17854 fi
17855
17856 : see if tmpnam_r exists
17857 set tmpnam_r d_tmpnam_r
17858 eval $inlibc
17859 case "$d_tmpnam_r" in
17860 "$define")
17861         hdrs="$i_systypes sys/types.h define stdio.h "
17862         case "$d_tmpnam_r_proto:$usethreads" in
17863         ":define")      d_tmpnam_r_proto=define
17864                 set d_tmpnam_r_proto tmpnam_r $hdrs
17865                 eval $hasproto ;;
17866         *)      ;;
17867         esac
17868         case "$d_tmpnam_r_proto" in
17869         define)
17870         case "$tmpnam_r_proto" in
17871         ''|0) try='char* tmpnam_r(char*);'
17872         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17873         esac
17874         case "$tmpnam_r_proto" in
17875         ''|0)   d_tmpnam_r=undef
17876                 tmpnam_r_proto=0
17877                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17878         * )     case "$tmpnam_r_proto" in
17879                 REENTRANT_PROTO*) ;;
17880                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17881                 esac
17882                 echo "Prototype: $try" ;;
17883         esac
17884         ;;
17885         *)      case "$usethreads" in
17886                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17887                 esac
17888                 d_tmpnam_r=undef
17889                 tmpnam_r_proto=0
17890                 ;;
17891         esac
17892         ;;
17893 *)      tmpnam_r_proto=0
17894         ;;
17895 esac
17896
17897 : see if truncate exists
17898 set truncate d_truncate
17899 eval $inlibc
17900
17901 : see if ttyname_r exists
17902 set ttyname_r d_ttyname_r
17903 eval $inlibc
17904 case "$d_ttyname_r" in
17905 "$define")
17906         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17907         case "$d_ttyname_r_proto:$usethreads" in
17908         ":define")      d_ttyname_r_proto=define
17909                 set d_ttyname_r_proto ttyname_r $hdrs
17910                 eval $hasproto ;;
17911         *)      ;;
17912         esac
17913         case "$d_ttyname_r_proto" in
17914         define)
17915         case "$ttyname_r_proto" in
17916         ''|0) try='int ttyname_r(int, char*, size_t);'
17917         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17918         esac
17919         case "$ttyname_r_proto" in
17920         ''|0) try='int ttyname_r(int, char*, int);'
17921         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17922         esac
17923         case "$ttyname_r_proto" in
17924         ''|0) try='char* ttyname_r(int, char*, int);'
17925         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17926         esac
17927         case "$ttyname_r_proto" in
17928         ''|0)   d_ttyname_r=undef
17929                 ttyname_r_proto=0
17930                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17931         * )     case "$ttyname_r_proto" in
17932                 REENTRANT_PROTO*) ;;
17933                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17934                 esac
17935                 echo "Prototype: $try" ;;
17936         esac
17937         ;;
17938         *)      case "$usethreads" in
17939                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17940                 esac
17941                 d_ttyname_r=undef
17942                 ttyname_r_proto=0
17943                 ;;
17944         esac
17945         ;;
17946 *)      ttyname_r_proto=0
17947         ;;
17948 esac
17949
17950 : see if tzname[] exists
17951 echo " "
17952 if set tzname val -a d_tzname; eval $csym; $val; then
17953         val="$define"
17954         echo 'tzname[] found.' >&4
17955 else
17956         val="$undef"
17957         echo 'tzname[] NOT found.' >&4
17958 fi
17959 set d_tzname
17960 eval $setvar
17961
17962 case "$osname" in
17963 next|rhapsody|darwin) multiarch="$define" ;;
17964 esac
17965 case "$multiarch" in
17966 ''|[nN]*) multiarch="$undef" ;;
17967 esac
17968
17969 : check for ordering of bytes in a UV
17970 echo " "
17971 case "$usecrosscompile$multiarch" in
17972 *$define*)
17973         $cat <<EOM
17974 You seem to be either cross-compiling or doing a multiarchitecture build,
17975 skipping the byteorder check.
17976
17977 EOM
17978         byteorder='ffff'
17979         ;;
17980 *)
17981         case "$byteorder" in
17982         '')
17983                 $cat <<'EOM'
17984 In the following, larger digits indicate more significance.  A big-endian
17985 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17986 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17987 machines may have weird orders like 3412.  A Cray will report 87654321,
17988 an Alpha will report 12345678. If the test program works the default is
17989 probably right.
17990 I'm now running the test program...
17991 EOM
17992                 $cat >try.c <<EOCP
17993 #include <stdio.h>
17994 #$i_stdlib I_STDLIB
17995 #ifdef I_STDLIB
17996 #include <stdlib.h>
17997 #endif
17998 #include <sys/types.h>
17999 typedef $uvtype UV;
18000 int main()
18001 {
18002         int i;
18003         union {
18004                 UV l;
18005                 char c[$uvsize];
18006         } u;
18007
18008         if ($uvsize > 4)
18009                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18010         else
18011                 u.l = (UV)0x04030201;
18012         for (i = 0; i < $uvsize; i++)
18013                 printf("%c", u.c[i]+'0');
18014         printf("\n");
18015         exit(0);
18016 }
18017 EOCP
18018                 xxx_prompt=y
18019                 set try
18020                 if eval $compile && $run ./try > /dev/null; then
18021                         dflt=`$run ./try`
18022                         case "$dflt" in
18023                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18024                                 echo "(The test program ran ok.)"
18025                                 echo "byteorder=$dflt"
18026                                 xxx_prompt=n
18027                         ;;
18028                         ????|????????) echo "(The test program ran ok.)" ;;
18029                         *) echo "(The test program didn't run right for some reason.)" ;;
18030                         esac
18031                 else
18032                         dflt='4321'
18033                         cat <<'EOM'
18034 (I can't seem to compile the test program.  Guessing big-endian...)
18035 EOM
18036                 fi
18037                 case "$xxx_prompt" in
18038                 y)
18039                         rp="What is the order of bytes in $uvtype?"
18040                         . ./myread
18041                         byteorder="$ans"
18042                         ;;
18043                 *)      byteorder=$dflt
18044                         ;;
18045                 esac
18046                 ;;
18047         esac
18048         $rm_try
18049         ;;
18050 esac
18051
18052 $cat <<EOM
18053
18054 Checking to see whether you can access character data unalignedly...
18055 EOM
18056 case "$d_u32align" in
18057 '')   $cat >try.c <<EOCP
18058 #include <stdio.h>
18059 #$i_stdlib I_STDLIB
18060 #ifdef I_STDLIB
18061 #include <stdlib.h>
18062 #endif
18063 #define U32 $u32type
18064 #define BYTEORDER 0x$byteorder
18065 #define U8 $u8type
18066 #include <signal.h>
18067 #ifdef SIGBUS
18068 $signal_t bletch(int s) { exit(4); }
18069 #endif
18070 int main() {
18071 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18072     U8 buf[8];
18073     U32 *up;
18074     int i;
18075
18076     if (sizeof(U32) != 4) {
18077         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18078         exit(1);
18079     }
18080
18081     fflush(stdout);
18082
18083 #ifdef SIGBUS
18084     signal(SIGBUS, bletch);
18085 #endif
18086
18087     buf[0] = 0;
18088     buf[1] = 0;
18089     buf[2] = 0;
18090     buf[3] = 1;
18091     buf[4] = 0;
18092     buf[5] = 0;
18093     buf[6] = 0;
18094     buf[7] = 1;
18095
18096     for (i = 0; i < 4; i++) {
18097         up = (U32*)(buf + i);
18098         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18099                (*up == 1 << (8*(3-i)))  /* little-endian */
18100               )
18101            )
18102         {
18103             printf("read failed (%x)\n", *up);
18104             exit(2);
18105         }
18106     }
18107
18108     /* write test */
18109     for (i = 0; i < 4; i++) {
18110         up = (U32*)(buf + i);
18111         *up = 0xBeef;
18112         if (*up != 0xBeef) {
18113             printf("write failed (%x)\n", *up);
18114             exit(3);
18115         }
18116     }
18117
18118     exit(0);
18119 #else
18120     printf("1\n");
18121     exit(1);
18122 #endif
18123     return 0;
18124 }
18125 EOCP
18126 set try
18127 if eval $compile_ok; then
18128         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18129         $run ./try 2>&1 >/dev/null
18130         case "$?" in
18131         0)      cat >&4 <<EOM
18132 You can access character data pretty unalignedly.
18133 EOM
18134                 d_u32align="$undef"
18135                 ;;
18136         *)      cat >&4 <<EOM
18137 It seems that you must access character data in an aligned manner.
18138 EOM
18139                 d_u32align="$define"
18140                 ;;
18141         esac
18142 else
18143         rp='Can you access character data at unaligned addresses?'
18144         dflt='n'
18145         . ./myread
18146         case "$ans" in
18147         [yY]*)  d_u32align="$undef"  ;;
18148         *)      d_u32align="$define" ;;
18149         esac
18150 fi
18151 $rm_try
18152 ;;
18153 esac
18154
18155 : see if ualarm exists
18156 set ualarm d_ualarm
18157 eval $inlibc
18158
18159 : see if umask exists
18160 set umask d_umask
18161 eval $inlibc
18162
18163 : see if unordered exists
18164 set unordered d_unordered
18165 eval $inlibc
18166
18167 : see if unsetenv exists
18168 set unsetenv d_unsetenv
18169 eval $inlibc
18170
18171 : see if usleep exists
18172 set usleep d_usleep
18173 eval $inlibc
18174
18175 : see if prototype for usleep is available
18176 echo " "
18177 set d_usleepproto usleep $i_unistd unistd.h
18178 eval $hasproto
18179
18180 : see if ustat exists
18181 set ustat d_ustat
18182 eval $inlibc
18183
18184 : see if closedir exists
18185 set closedir d_closedir
18186 eval $inlibc
18187
18188 case "$d_closedir" in
18189 "$define")
18190         echo " "
18191         echo "Checking whether closedir() returns a status..." >&4
18192         cat > try.c <<EOM
18193 #$i_dirent I_DIRENT             /**/
18194 #$i_sysdir I_SYS_DIR            /**/
18195 #$i_sysndir I_SYS_NDIR          /**/
18196 #$i_systypes I_SYS_TYPES        /**/
18197
18198 #if defined(I_SYS_TYPES)
18199 #include <sys/types.h>
18200 #endif
18201 #if defined(I_DIRENT)
18202 #include <dirent.h>
18203 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18204 #include <sys/dir.h>
18205 #endif
18206 #else
18207 #ifdef I_SYS_NDIR
18208 #include <sys/ndir.h>
18209 #else
18210 #ifdef I_SYS_DIR
18211 #ifdef hp9000s500
18212 #include <ndir.h>       /* may be wrong in the future */
18213 #else
18214 #include <sys/dir.h>
18215 #endif
18216 #endif
18217 #endif
18218 #endif
18219 int main() { return closedir(opendir(".")); }
18220 EOM
18221         set try
18222         if eval $compile_ok; then
18223                 if $run ./try > /dev/null 2>&1 ; then
18224                         echo "Yes, it does."
18225                         val="$undef"
18226                 else
18227                         echo "No, it doesn't."
18228                         val="$define"
18229                 fi
18230         else
18231                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18232                 val="$define"
18233         fi
18234         ;;
18235 *)
18236         val="$undef";
18237         ;;
18238 esac
18239 set d_void_closedir
18240 eval $setvar
18241 $rm_try
18242
18243 : see if there is a wait4
18244 set wait4 d_wait4
18245 eval $inlibc
18246
18247 : see if waitpid exists
18248 set waitpid d_waitpid
18249 eval $inlibc
18250
18251 : see if wcstombs exists
18252 set wcstombs d_wcstombs
18253 eval $inlibc
18254
18255 : see if wctomb exists
18256 set wctomb d_wctomb
18257 eval $inlibc
18258
18259 : see if writev exists
18260 set writev d_writev
18261 eval $inlibc
18262
18263 : preserve RCS keywords in files with variable substitution, grrr
18264 Date='$Date'
18265 Id='$Id'
18266 Log='$Log'
18267 RCSfile='$RCSfile'
18268 Revision='$Revision'
18269
18270 : check for alignment requirements
18271 echo " "
18272 case "$usecrosscompile$multiarch" in
18273 *$define*)
18274         $cat <<EOM
18275 You seem to be either cross-compiling or doing a multiarchitecture build,
18276 skipping the memory alignment check.
18277
18278 EOM
18279         case "$alignbytes" in
18280         '') alignbytes=8 ;;
18281         esac
18282         ;;
18283 *)
18284         case "$alignbytes" in
18285         '') echo "Checking alignment constraints..." >&4
18286                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18287                         $cat >try.c <<'EOCP'
18288 typedef long double NV;
18289 EOCP
18290                 else
18291                         $cat >try.c <<'EOCP'
18292 typedef double NV;
18293 EOCP
18294                 fi
18295                 $cat >>try.c <<'EOCP'
18296 #include <stdio.h>
18297 struct foobar {
18298         char foo;
18299         NV bar;
18300 } try_algn;
18301 int main()
18302 {
18303     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18304     return(0);
18305 }
18306 EOCP
18307                 set try
18308                 if eval $compile_ok; then
18309                         dflt=`$run ./try`
18310                 else
18311                         dflt='8'
18312                         echo "(I can't seem to compile the test program...)"
18313                 fi
18314                 ;;
18315         *) dflt="$alignbytes"
18316                 ;;
18317         esac
18318         rp="Doubles must be aligned on a how-many-byte boundary?"
18319         . ./myread
18320         alignbytes="$ans"
18321         $rm_try
18322         ;;
18323 esac
18324
18325
18326 : set the base revision
18327 baserev=5.0
18328
18329 : how do we concatenate cpp tokens here?
18330 echo " "
18331 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18332 $cat >cpp_stuff.c <<'EOCP'
18333 #define RCAT(a,b)a/**/b
18334 #define ACAT(a,b)a ## b
18335 RCAT(Rei,ser)
18336 ACAT(Cir,cus)
18337 EOCP
18338 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18339 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18340         echo "Oh!  Smells like ANSI's been here." >&4
18341         echo "We can catify or stringify, separately or together!"
18342         cpp_stuff=42
18343 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18344         echo "Ah, yes!  The good old days!" >&4
18345         echo "However, in the good old days we don't know how to stringify and"
18346         echo "catify at the same time."
18347         cpp_stuff=1
18348 else
18349         $cat >&4 <<EOM
18350 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18351 You're going to have to edit the values of CAT[2-5] in config.h...
18352 EOM
18353         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18354 fi
18355 $rm -f cpp_stuff.*
18356
18357 : see if this is a db.h system
18358 set db.h i_db
18359 eval $inhdr
18360
18361 case "$i_db" in
18362 $define)
18363         : Check db version.
18364         echo " "
18365         echo "Checking Berkeley DB version ..." >&4
18366         $cat >try.c <<EOCP
18367 #$d_const HASCONST
18368 #ifndef HASCONST
18369 #define const
18370 #endif
18371 #include <sys/types.h>
18372 #include <stdio.h>
18373 #$i_stdlib I_STDLIB
18374 #ifdef I_STDLIB
18375 #include <stdlib.h>
18376 #endif
18377 #include <db.h>
18378 int main(int argc, char *argv[])
18379 {
18380 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18381     int Major, Minor, Patch ;
18382     unsigned long Version ;
18383     (void)db_version(&Major, &Minor, &Patch) ;
18384     if (argc == 2) {
18385         printf("%d %d %d %d %d %d\n",
18386                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18387                Major, Minor, Patch);
18388         exit(0);
18389     }
18390     printf("You have Berkeley DB Version 2 or greater.\n");
18391
18392     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18393                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18394     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18395                 Major, Minor, Patch) ;
18396
18397     /* check that db.h & libdb are compatible */
18398     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18399         printf("db.h and libdb are incompatible.\n") ;
18400         exit(3);
18401     }
18402
18403     printf("db.h and libdb are compatible.\n") ;
18404
18405     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18406                 + DB_VERSION_PATCH ;
18407
18408     /* needs to be >= 2.3.4 */
18409     if (Version < 2003004) {
18410     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18411         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18412         exit(2);
18413     }
18414
18415     exit(0);
18416 #else
18417 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18418     if (argc == 2) {
18419         printf("1 0 0\n");
18420         exit(0);
18421     }
18422     printf("You have Berkeley DB Version 1.\n");
18423     exit(0);    /* DB version < 2: the coast is clear. */
18424 #else
18425     exit(1);    /* <db.h> not Berkeley DB? */
18426 #endif
18427 #endif
18428 }
18429 EOCP
18430         set try
18431         if eval $compile_ok && $run ./try; then
18432                 echo 'Looks OK.' >&4
18433                 set `$run ./try 1`
18434                 db_version_major=$1
18435                 db_version_minor=$2
18436                 db_version_patch=$3
18437         else
18438                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18439                 i_db=$undef
18440                 case " $libs " in
18441                 *"-ldb "*)
18442                         : Remove db from list of libraries to use
18443                         echo "Removing unusable -ldb from library list" >&4
18444                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18445                         shift
18446                         libs="$*"
18447                         echo "libs = $libs" >&4
18448                         ;;
18449                 esac
18450         fi
18451         $rm_try
18452         ;;
18453 esac
18454
18455 case "$i_db" in
18456 define)
18457         : Check the return type needed for hash
18458         echo " "
18459         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18460         $cat >try.c <<EOCP
18461 #$d_const HASCONST
18462 #ifndef HASCONST
18463 #define const
18464 #endif
18465 #include <sys/types.h>
18466 #include <db.h>
18467
18468 #ifndef DB_VERSION_MAJOR
18469 u_int32_t hash_cb (ptr, size)
18470 const void *ptr;
18471 size_t size;
18472 {
18473 }
18474 HASHINFO info;
18475 int main()
18476 {
18477         info.hash = hash_cb;
18478 }
18479 #endif
18480 EOCP
18481         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18482                 if $contains warning try.out >>/dev/null 2>&1 ; then
18483                         db_hashtype='int'
18484                 else
18485                         db_hashtype='u_int32_t'
18486                 fi
18487         else
18488                 : XXX Maybe we should just give up here.
18489                 db_hashtype=u_int32_t
18490                 $cat try.out >&4
18491                 echo "Help:  I can't seem to compile the db test program." >&4
18492                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18493         fi
18494         $rm_try
18495         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18496         ;;
18497 *)      db_hashtype=u_int32_t
18498         ;;
18499 esac
18500 case "$i_db" in
18501 define)
18502         : Check the return type needed for prefix
18503         echo " "
18504         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18505         cat >try.c <<EOCP
18506 #$d_const HASCONST
18507 #ifndef HASCONST
18508 #define const
18509 #endif
18510 #include <sys/types.h>
18511 #include <db.h>
18512
18513 #ifndef DB_VERSION_MAJOR
18514 size_t prefix_cb (key1, key2)
18515 const DBT *key1;
18516 const DBT *key2;
18517 {
18518 }
18519 BTREEINFO info;
18520 int main()
18521 {
18522         info.prefix = prefix_cb;
18523 }
18524 #endif
18525 EOCP
18526         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18527                 if $contains warning try.out >>/dev/null 2>&1 ; then
18528                         db_prefixtype='int'
18529                 else
18530                         db_prefixtype='size_t'
18531                 fi
18532         else
18533                 db_prefixtype='size_t'
18534                 : XXX Maybe we should just give up here.
18535                 $cat try.out >&4
18536                 echo "Help:  I can't seem to compile the db test program." >&4
18537                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18538         fi
18539         $rm_try
18540         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18541         ;;
18542 *)      db_prefixtype='size_t'
18543         ;;
18544 esac
18545
18546 : How can we generate normalized random numbers ?
18547 echo " "
18548 echo "Looking for a random number function..." >&4
18549 case "$randfunc" in
18550 '')
18551         if set drand48 val -f; eval $csym; $val; then
18552                 dflt="drand48"
18553                 echo "Good, found drand48()." >&4
18554         elif set random val -f; eval $csym; $val; then
18555                 dflt="random"
18556                 echo "OK, found random()." >&4
18557         else
18558                 dflt="rand"
18559                 echo "Yick, looks like I have to use rand()." >&4
18560         fi
18561         echo " "
18562         ;;
18563 *)
18564         dflt="$randfunc"
18565         ;;
18566 esac
18567 cont=true
18568
18569 case "$ccflags" in
18570 *-Dmy_rand=*|*-Dmy_srand=*)
18571         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18572         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18573         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18574         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18575         ;;
18576 esac
18577
18578 while $test "$cont"; do
18579         rp="Use which function to generate random numbers?"
18580         . ./myread
18581         if $test "$ans" = "$dflt"; then
18582                 : null
18583         else
18584                 randbits=''
18585         fi
18586         randfunc="$ans"
18587         if set $ans val -f; eval $csym; $val; then
18588                 cont=''
18589         else
18590                 dflt=y
18591                 rp="I cannot find function $ans. Use that name anyway?"
18592                 . ./myread
18593                 dflt=rand
18594                 case "$ans" in
18595                         [yY]*) cont='';;
18596                 esac
18597         fi
18598         case "$cont" in
18599         '')
18600                 case "$randfunc" in
18601                 drand48)
18602                         drand01="drand48()"
18603                         seedfunc="srand48"
18604                         randbits=48
18605                         randseedtype=long
18606                         ;;
18607                 rand|random)
18608                         case "$randbits" in
18609                         '')
18610 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18611                                 $cat >try.c <<EOCP
18612 #$i_unistd I_UNISTD
18613 #$i_stdlib I_STDLIB
18614 #include <stdio.h>
18615 #ifdef I_UNISTD
18616 #  include <unistd.h>
18617 #endif
18618 #ifdef I_STDLIB
18619 #  include <stdlib.h>
18620 #endif
18621 int main()
18622 {
18623         register int i;
18624         register unsigned long tmp;
18625         register unsigned long max = 0L;
18626
18627         for (i = 1000; i; i--) {
18628                 tmp = (unsigned long) $randfunc();
18629                 if (tmp > max) max = tmp;
18630         }
18631         for (i = 0; max; i++)
18632                 max /= 2;
18633         printf("%d\n",i);
18634 }
18635 EOCP
18636                                 set try
18637                                 if eval $compile_ok; then
18638                                         dflt=`try`
18639                                 else
18640                                         dflt='?'
18641                                         echo "(I can't seem to compile the test program...)"
18642                                 fi
18643                                 ;;
18644                         *)
18645                                 dflt="$randbits"
18646                                 ;;
18647                         esac
18648                         rp="How many bits does your $randfunc() function produce?"
18649                         . ./myread
18650                         randbits="$ans"
18651                         $rm_try
18652                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18653                         seedfunc="s$randfunc"
18654                         randseedtype=unsigned
18655                         ;;
18656                 *)
18657                         dflt="31"
18658                         rp="How many bits does your $randfunc() function produce?"
18659                         . ./myread
18660                         randbits="$ans"
18661                         seedfunc="s$randfunc"
18662                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18663                         if set $seedfunc val -f; eval $csym; $val; then
18664                                 echo "(Using $seedfunc() to seed random generator)"
18665                         else
18666                                 echo "(Warning: no $seedfunc() to seed random generator)"
18667                                 seedfunc=rand
18668                         fi
18669                         randseedtype=unsigned
18670                         ;;
18671                 esac
18672                 ;;
18673         esac
18674 done
18675
18676 echo " "
18677 echo "Determining whether or not we are on an EBCDIC system..." >&4
18678 $cat >try.c <<'EOM'
18679 int main()
18680 {
18681   if ('M'==0xd4) return 0;
18682   return 1;
18683 }
18684 EOM
18685
18686 val=$undef
18687 set try
18688 if eval $compile_ok; then
18689         if $run ./try; then
18690                 echo "You seem to speak EBCDIC." >&4
18691                 val="$define"
18692         else
18693                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18694         fi
18695 else
18696         echo "I'm unable to compile the test program." >&4
18697         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18698 fi
18699 $rm_try
18700 set ebcdic
18701 eval $setvar
18702
18703 echo " "
18704 $cat >&4 <<EOM
18705 Checking how to flush all pending stdio output...
18706 EOM
18707 # I only know how to find the first 32 possibly open files on SunOS.
18708 # See also hints/sunos_4_1.sh and util.c  --AD
18709 case "$osname" in
18710 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18711 esac
18712 $cat >>try.c <<EOCP
18713 #include <stdio.h>
18714 #$i_stdlib I_STDLIB
18715 #ifdef I_STDLIB
18716 #include <stdlib.h>
18717 #endif
18718 #$i_unistd I_UNISTD
18719 #ifdef I_UNISTD
18720 # include <unistd.h>
18721 #endif
18722 #$d_sysconf HAS_SYSCONF
18723 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18724 #ifdef HAS_STDIO_STREAM_ARRAY
18725 # define STDIO_STREAM_ARRAY $stdio_stream_array
18726 #endif
18727 int main() {
18728   FILE* p;
18729   unlink("try.out");
18730   p = fopen("try.out", "w");
18731 #ifdef TRY_FPUTC
18732   fputc('x', p);
18733 #else
18734 # ifdef TRY_FPRINTF
18735   fprintf(p, "x");
18736 # endif
18737 #endif
18738 #ifdef TRY_FFLUSH_NULL
18739   fflush(NULL);
18740 #endif
18741 #ifdef TRY_FFLUSH_ALL
18742   {
18743     long open_max = -1;
18744 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18745     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18746 # else
18747 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18748     open_max = sysconf(_SC_OPEN_MAX);
18749 #  else
18750 #   ifdef FOPEN_MAX
18751     open_max = FOPEN_MAX;
18752 #   else
18753 #    ifdef OPEN_MAX
18754     open_max = OPEN_MAX;
18755 #    else
18756 #     ifdef _NFILE
18757     open_max = _NFILE;
18758 #     endif
18759 #    endif
18760 #   endif
18761 #  endif
18762 # endif
18763 # ifdef HAS_STDIO_STREAM_ARRAY
18764     if (open_max > 0) {
18765       long i;
18766       for (i = 0; i < open_max; i++)
18767             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18768                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18769                 STDIO_STREAM_ARRAY[i]._flag)
18770                 fflush(&STDIO_STREAM_ARRAY[i]);
18771     }
18772   }
18773 # endif
18774 #endif
18775   _exit(42);
18776 }
18777 EOCP
18778 : first we have to find out how _not_ to flush
18779 $to try.c
18780 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18781     output=''
18782     set try -DTRY_FPUTC
18783     if eval $compile; then
18784             $run ./try 2>/dev/null
18785             code="$?"
18786             $from try.out
18787             if $test ! -s try.out -a "X$code" = X42; then
18788                 output=-DTRY_FPUTC
18789             fi
18790     fi
18791     case "$output" in
18792     '')
18793             set try -DTRY_FPRINTF
18794             if eval $compile; then
18795                     $run ./try 2>/dev/null
18796                     code="$?"
18797                     $from try.out
18798                     if $test ! -s try.out -a "X$code" = X42; then
18799                         output=-DTRY_FPRINTF
18800                     fi
18801             fi
18802         ;;
18803     esac
18804 fi
18805 : check for fflush NULL behaviour
18806 case "$fflushNULL" in
18807 '')     set try -DTRY_FFLUSH_NULL $output
18808         if eval $compile; then
18809                 $run ./try 2>/dev/null
18810                 code="$?"
18811                 $from try.out
18812                 if $test -s try.out -a "X$code" = X42; then
18813                         fflushNULL="`$cat try.out`"
18814                 else
18815                         if $test "X$code" != X42; then
18816                                 $cat >&4 <<EOM
18817 (If this test failed, don't worry, we'll try another method shortly.)
18818 EOM
18819                         fi
18820                 fi
18821         fi
18822         $rm_try
18823         case "$fflushNULL" in
18824         x)      $cat >&4 <<EOM
18825 Your fflush(NULL) works okay for output streams.
18826 Let's see if it clobbers input pipes...
18827 EOM
18828 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18829 # bug that improperly flushes the input end of pipes.  So we avoid the
18830 # autoflush on fork/system/exec support for now. :-(
18831 $cat >tryp.c <<EOCP
18832 #include <stdio.h>
18833 int
18834 main(int argc, char **argv)
18835 {
18836     char buf[1024];
18837     int i;
18838     char *bp = buf;
18839     while (1) {
18840         while ((i = getc(stdin)) != -1
18841                && (*bp++ = i) != '\n'
18842                && bp < &buf[1024])
18843         /* DO NOTHING */ ;
18844         *bp = '\0';
18845         fprintf(stdout, "%s", buf);
18846         fflush(NULL);
18847         if (i == -1)
18848             return 0;
18849         bp = buf;
18850     }
18851 }
18852 EOCP
18853                 fflushNULL="$define"
18854                 set tryp
18855                 if eval $compile; then
18856                     $rm -f tryp.out
18857                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18858                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18859                        $cat >&4 <<EOM
18860 fflush(NULL) seems to behave okay with input streams.
18861 EOM
18862                         fflushNULL="$define"
18863                     else
18864                         $cat >&4 <<EOM
18865 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18866 EOM
18867                         fflushNULL="$undef"
18868                     fi
18869                 fi
18870                 $rm -f core tryp.c tryp.core core.tryp.*
18871                 ;;
18872         '')     $cat >&4 <<EOM
18873 Your fflush(NULL) isn't working (contrary to ANSI C).
18874 EOM
18875                 fflushNULL="$undef"
18876                 ;;
18877         *)      $cat >&4 <<EOM
18878 Cannot figure out whether your fflush(NULL) works or not.
18879 I'm assuming it doesn't (contrary to ANSI C).
18880 EOM
18881                 fflushNULL="$undef"
18882                 ;;
18883         esac
18884         ;;
18885 $define|true|[yY]*)
18886         fflushNULL="$define"
18887         ;;
18888 *)
18889         fflushNULL="$undef"
18890         ;;
18891 esac
18892 : check explicit looping only if NULL did not work, and if the pipe
18893 : bug does not show up on an explicit flush too
18894 case "$fflushNULL" in
18895 "$undef")
18896         $cat >tryp.c <<EOCP
18897 #include <stdio.h>
18898 int
18899 main(int argc, char **argv)
18900 {
18901     char buf[1024];
18902     int i;
18903     char *bp = buf;
18904     while (1) {
18905         while ((i = getc(stdin)) != -1
18906                && (*bp++ = i) != '\n'
18907                && bp < &buf[1024])
18908         /* DO NOTHING */ ;
18909         *bp = '\0';
18910         fprintf(stdout, "%s", buf);
18911         fflush(stdin);
18912         if (i == -1)
18913             return 0;
18914         bp = buf;
18915     }
18916 }
18917 EOCP
18918         set tryp
18919         if eval $compile; then
18920             $rm -f tryp.out
18921             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18922             if cmp tryp.c tryp.out >/dev/null 2>&1; then
18923                $cat >&4 <<EOM
18924 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18925 EOM
18926                 : now check for fflushall behaviour
18927                 case "$fflushall" in
18928                 '')     set try -DTRY_FFLUSH_ALL $output
18929                         if eval $compile; then
18930                                 $cat >&4 <<EOM
18931 (Now testing the other method--but note that this also may fail.)
18932 EOM
18933                                 $run ./try 2>/dev/null
18934                                 code=$?
18935                                 $from try.out
18936                                 if $test -s try.out -a "X$code" = X42; then
18937                                         fflushall="`$cat try.out`"
18938                                 fi
18939                         fi
18940                         $rm_try
18941                         case "$fflushall" in
18942                         x)      $cat >&4 <<EOM
18943 Whew. Flushing explicitly all the stdio streams works.
18944 EOM
18945                                 fflushall="$define"
18946                                 ;;
18947                         '')     $cat >&4 <<EOM
18948 Sigh. Flushing explicitly all the stdio streams doesn't work.
18949 EOM
18950                                 fflushall="$undef"
18951                                 ;;
18952                         *)      $cat >&4 <<EOM
18953 Cannot figure out whether flushing stdio streams explicitly works or not.
18954 I'm assuming it doesn't.
18955 EOM
18956                                 fflushall="$undef"
18957                                 ;;
18958                         esac
18959                         ;;
18960                 "$define"|true|[yY]*)
18961                         fflushall="$define"
18962                         ;;
18963                 *)
18964                         fflushall="$undef"
18965                         ;;
18966                 esac
18967             else
18968                 $cat >&4 <<EOM
18969 All is futile.  Even fflush(stdin) clobbers input pipes!
18970 EOM
18971                 fflushall="$undef"
18972             fi
18973         else
18974             fflushall="$undef"
18975         fi
18976         $rm -f core tryp.c tryp.core core.tryp.*
18977         ;;
18978 *)      fflushall="$undef"
18979         ;;
18980 esac
18981
18982 case "$fflushNULL$fflushall" in
18983 undefundef)
18984         $cat <<EOM
18985 OK, I give up.  I cannot figure out how to flush pending stdio output.
18986 We won't be flushing handles at all before fork/exec/popen.
18987 EOM
18988         ;;
18989 esac
18990 $rm_try
18991
18992 : Store the full pathname to the ar program for use in the C program
18993 : Respect a hint or command line value for full_ar.
18994 case "$full_ar" in
18995 '') full_ar=$ar ;;
18996 esac
18997
18998 : Store the full pathname to the sed program for use in the C program
18999 full_sed=$sed
19000
19001 : see what type gids are declared as in the kernel
19002 echo " "
19003 echo "Looking for the type for group ids returned by getgid()."
19004 set gid_t gidtype xxx stdio.h sys/types.h
19005 eval $typedef
19006 case "$gidtype" in
19007 xxx)
19008         xxx=`./findhdr sys/user.h`
19009         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19010         case $1 in
19011         unsigned) dflt="$1 $2" ;;
19012         *) dflt="$1" ;;
19013         esac
19014         ;;
19015 *) dflt="$gidtype";;
19016 esac
19017 case "$gidtype" in
19018 gid_t) echo "gid_t found." ;;
19019 *)      rp="What is the type for group ids returned by getgid()?"
19020         . ./myread
19021         gidtype="$ans"
19022         ;;
19023 esac
19024
19025 echo " "
19026 case "$gidtype" in
19027 *_t) zzz="$gidtype"     ;;
19028 *)   zzz="gid"          ;;
19029 esac
19030 echo "Checking the size of $zzz..." >&4 
19031 cat > try.c <<EOCP
19032 #include <sys/types.h>
19033 #include <stdio.h>
19034 #$i_stdlib I_STDLIB
19035 #ifdef I_STDLIB
19036 #include <stdlib.h>
19037 #endif
19038 int main() {
19039     printf("%d\n", (int)sizeof($gidtype));
19040     exit(0);
19041 }
19042 EOCP
19043 set try
19044 if eval $compile_ok; then
19045         yyy=`$run ./try`
19046         case "$yyy" in
19047         '')     gidsize=4
19048                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19049                 ;;
19050         *)      gidsize=$yyy
19051                 echo "Your $zzz is $gidsize bytes long."
19052                 ;;
19053         esac
19054 else
19055         gidsize=4
19056         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19057 fi
19058
19059
19060 echo " "
19061 case "$gidtype" in
19062 *_t) zzz="$gidtype"     ;;
19063 *)   zzz="gid"          ;;
19064 esac
19065 echo "Checking the sign of $zzz..." >&4 
19066 cat > try.c <<EOCP
19067 #include <sys/types.h>
19068 #include <stdio.h>
19069 int main() {
19070         $gidtype foo = -1;
19071         if (foo < 0)
19072                 printf("-1\n");
19073         else
19074                 printf("1\n");
19075 }
19076 EOCP
19077 set try
19078 if eval $compile; then
19079         yyy=`$run ./try`
19080         case "$yyy" in
19081         '')     gidsign=1
19082                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19083                 ;;
19084         *)      gidsign=$yyy
19085                 case "$gidsign" in
19086                  1) echo "Your $zzz is unsigned." ;;
19087                 -1) echo "Your $zzz is signed."   ;;
19088                 esac
19089                 ;;
19090         esac
19091 else
19092         gidsign=1
19093         echo "(I can't compile the test program--guessing unsigned.)" >&4
19094 fi
19095
19096
19097 echo " "
19098
19099 if $test X"$quadtype" != X; then
19100
19101 echo "Checking how to print 64-bit integers..." >&4
19102
19103 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19104         $cat >try.c <<'EOCP'
19105 #include <sys/types.h>
19106 #include <stdio.h>
19107 int main() {
19108   int q = 12345678901;
19109   printf("%ld\n", q);
19110 }
19111 EOCP
19112         set try
19113         if eval $compile; then
19114                 yyy=`$run ./try`
19115                 case "$yyy" in
19116                 12345678901)
19117                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19118                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19119                         echo "We will use %d."
19120                         ;;
19121                 esac
19122         fi
19123 fi
19124
19125 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19126         $cat >try.c <<'EOCP'
19127 #include <sys/types.h>
19128 #include <stdio.h>
19129 int main() {
19130   long q = 12345678901;
19131   printf("%ld\n", q);
19132 }
19133 EOCP
19134         set try
19135         if eval $compile; then
19136                 yyy=`$run ./try`
19137                 case "$yyy" in
19138                 12345678901)
19139                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19140                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19141                         echo "We will use %ld."
19142                         ;;
19143                 esac
19144         fi
19145 fi
19146
19147 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19148         $cat >try.c <<'EOCP'
19149 #include <sys/types.h>
19150 #include <inttypes.h>
19151 #include <stdio.h>
19152 int main() {
19153   int64_t q = 12345678901;
19154   printf("%" PRId64 "\n", q);
19155 }
19156 EOCP
19157         set try
19158         if eval $compile; then
19159                 yyy=`$run ./try`
19160                 case "$yyy" in
19161                 12345678901)
19162                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19163                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19164                         echo "We will use the C9X style."
19165                         ;;
19166                 esac
19167         fi
19168 fi
19169
19170 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19171         $cat >try.c <<EOCP
19172 #include <sys/types.h>
19173 #include <stdio.h>
19174 int main() {
19175   $quadtype q = 12345678901;
19176   printf("%Ld\n", q);
19177 }
19178 EOCP
19179         set try
19180         if eval $compile; then
19181                 yyy=`$run ./try`
19182                 case "$yyy" in
19183                 12345678901)
19184                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19185                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19186                         echo "We will use %Ld."
19187                         ;;
19188                 esac
19189         fi
19190 fi
19191
19192 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19193         $cat >try.c <<'EOCP'
19194 #include <sys/types.h>
19195 #include <stdio.h>
19196 int main() {
19197   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19198   printf("%lld\n", q);
19199 }
19200 EOCP
19201         set try
19202         if eval $compile; then
19203                 yyy=`$run ./try`
19204                 case "$yyy" in
19205                 12345678901)
19206                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19207                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19208                         echo "We will use the %lld style."
19209                         ;;
19210                 esac
19211         fi
19212 fi
19213
19214 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19215         $cat >try.c <<EOCP
19216 #include <sys/types.h>
19217 #include <stdio.h>
19218 int main() {
19219   $quadtype q = 12345678901;
19220   printf("%qd\n", q);
19221 }
19222 EOCP
19223         set try
19224         if eval $compile; then
19225                 yyy=`$run ./try`
19226                 case "$yyy" in
19227                 12345678901)
19228                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19229                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19230                         echo "We will use %qd."
19231                         ;;
19232                 esac
19233         fi
19234 fi
19235
19236 if $test X"$sPRId64" = X; then
19237         echo "Cannot figure out how to print 64-bit integers." >&4
19238 fi
19239 $rm_try
19240
19241 fi
19242
19243 case "$sPRId64" in
19244 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19245         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19246         ;;
19247 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19248         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19249         ;;
19250 esac
19251
19252
19253 echo " "
19254 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19255
19256 if $test X"$ivsize" = X8; then
19257         ivdformat="$sPRId64"
19258         uvuformat="$sPRIu64"
19259         uvoformat="$sPRIo64"
19260         uvxformat="$sPRIx64"
19261         uvXUformat="$sPRIXU64"
19262 else
19263         if $test X"$ivsize" = X"$longsize"; then
19264                 ivdformat='"ld"'
19265                 uvuformat='"lu"'
19266                 uvoformat='"lo"'
19267                 uvxformat='"lx"'
19268                 uvXUformat='"lX"'
19269         else
19270                 if $test X"$ivsize" = X"$intsize"; then
19271                         ivdformat='"d"'
19272                         uvuformat='"u"'
19273                         uvoformat='"o"'
19274                         uvxformat='"x"'
19275                         uvXUformat='"X"'
19276                 else
19277                         : far out
19278                         if $test X"$ivsize" = X"$shortsize"; then
19279                                 ivdformat='"hd"'
19280                                 uvuformat='"hu"'
19281                                 uvoformat='"ho"'
19282                                 uvxformat='"hx"'
19283                                 uvXUformat='"hX"'
19284                         fi
19285                 fi
19286         fi
19287 fi
19288
19289 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19290         nveformat="$sPRIeldbl"
19291         nvfformat="$sPRIfldbl"
19292         nvgformat="$sPRIgldbl"
19293         nvEUformat="$sPRIEUldbl"
19294         nvFUformat="$sPRIFUldbl"
19295         nvGUformat="$sPRIGUldbl"
19296 else
19297         nveformat='"e"'
19298         nvfformat='"f"'
19299         nvgformat='"g"'
19300         nvEUformat='"E"'
19301         nvFUformat='"F"'
19302         nvGUformat='"G"'
19303 fi
19304
19305 case "$ivdformat" in
19306 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19307     exit 1
19308     ;;
19309 esac
19310
19311
19312 echo " "
19313 $echo "Checking the format string to be used for gids..." >&4
19314
19315 case "$gidsign" in
19316 -1)     if $test X"$gidsize" = X"$ivsize"; then
19317                 gidformat="$ivdformat"
19318         else
19319                 if $test X"$gidsize" = X"$longsize"; then
19320                         gidformat='"ld"'
19321                 else
19322                         if $test X"$gidsize" = X"$intsize"; then
19323                                 gidformat='"d"'
19324                         else
19325                                 if $test X"$gidsize" = X"$shortsize"; then
19326                                         gidformat='"hd"'
19327                                 fi
19328                         fi
19329                 fi
19330         fi
19331         ;;
19332 *)      if $test X"$gidsize" = X"$uvsize"; then
19333                 gidformat="$uvuformat"
19334         else
19335                 if $test X"$gidsize" = X"$longsize"; then
19336                         gidformat='"lu"'
19337                 else
19338                         if $test X"$gidsize" = X"$intsize"; then
19339                                 gidformat='"u"'
19340                         else
19341                                 if $test X"$gidsize" = X"$shortsize"; then
19342                                         gidformat='"hu"'
19343                                 fi
19344                         fi
19345                 fi
19346         fi
19347         ;;
19348 esac
19349
19350 : see if getgroups exists
19351 set getgroups d_getgrps
19352 eval $inlibc
19353
19354 : see if setgroups exists
19355 set setgroups d_setgrps
19356 eval $inlibc
19357
19358
19359 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19360 echo " "
19361 case "$d_getgrps$d_setgrps" in
19362 *define*)
19363         case "$groupstype" in
19364         '') dflt="$gidtype" ;;
19365         *)  dflt="$groupstype" ;;
19366         esac
19367         $cat <<EOM
19368 What type of pointer is the second argument to getgroups() and setgroups()?
19369 Usually this is the same as group ids, $gidtype, but not always.
19370
19371 EOM
19372         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19373         . ./myread
19374         groupstype="$ans"
19375         ;;
19376 *)  groupstype="$gidtype";;
19377 esac
19378
19379
19380 if $test $patchlevel -lt 9; then
19381 : MAD is not available in 5.8.x or earlier.
19382     ans=n;
19383 else
19384     case "$mad" in
19385     $define|true|[yY]*) dflt='y' ;;
19386     *)                  dflt='n' ;;
19387     esac
19388     cat <<EOM
19389
19390 Would you like to build with Misc Attribute Decoration? This is development
19391 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19392 overhead on the interpreter.
19393
19394 If this doesn't make any sense to you, just accept the default '$dflt'.
19395 EOM
19396     rp='Build Perl with MAD?'
19397     . ./myread
19398 fi
19399 case "$ans" in
19400 y|Y)    val="$define"
19401         madlyh='madly.h madly.act madly.tab'
19402         madlysrc='madly.c'
19403         madlyobj="madly$_o" ;;
19404 *)      val="$undef"
19405         madlyh=''
19406         madlysrc=''
19407         madlyobj='' ;;
19408 esac
19409 set mad
19410 eval $setvar
19411
19412 echo " "
19413 echo "Checking if your $make program sets \$(MAKE)..." >&4
19414 case "$make_set_make" in
19415 '')
19416         $sed 's/^X //' > testmake.mak << 'EOF'
19417 Xall:
19418 X       @echo 'maketemp="$(MAKE)"'
19419 EOF
19420         case "`$make -f testmake.mak 2>/dev/null`" in
19421         *maketemp=*) make_set_make='#' ;;
19422         *)      make_set_make="MAKE=$make" ;;
19423         esac
19424         $rm -f testmake.mak
19425         ;;
19426 esac
19427 case "$make_set_make" in
19428 '#') echo "Yup, it does.";;
19429 *) echo "Nope, it doesn't.";;
19430 esac
19431
19432 : see what type is used for mode_t
19433 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19434 set mode_t modetype int stdio.h sys/types.h
19435 eval $typedef_ask
19436
19437 : see if we need va_copy
19438 echo " "
19439 case "$i_stdarg" in
19440 "$define")
19441         $cat >try.c <<EOCP
19442 #include <stdarg.h>
19443 #include <stdio.h>
19444 #$i_stdlib I_STDLIB
19445 #ifdef I_STDLIB
19446 #include <stdlib.h>
19447 #endif
19448 #include <signal.h>
19449
19450 int
19451 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19452 {
19453   return vfprintf(f, fmt, *valp);
19454 }
19455
19456 int
19457 myvfprintf(FILE *f, const  char *fmt, va_list val)
19458 {
19459   return ivfprintf(f, fmt, &val);
19460 }
19461
19462 int
19463 myprintf(char *fmt, ...)
19464 {
19465   va_list val;
19466   va_start(val, fmt);
19467   return myvfprintf(stdout, fmt, val);
19468 }
19469
19470 int
19471 main(int ac, char **av)
19472 {
19473   signal(SIGSEGV, exit);
19474
19475   myprintf("%s%cs all right, then\n", "that", '\'');
19476   exit(0);
19477 }
19478 EOCP
19479         set try
19480         if eval $compile && $run ./try 2>&1 >/dev/null; then
19481                 case "`$run ./try`" in
19482                 "that's all right, then")
19483                         okay=yes
19484                         ;;
19485                 esac
19486         fi
19487         case "$okay" in
19488         yes)    echo "It seems that you don't need va_copy()." >&4
19489                 need_va_copy="$undef"
19490                 ;;
19491         *)      echo "It seems that va_copy() or similar will be needed." >&4
19492                 need_va_copy="$define"
19493                 ;;
19494         esac
19495         $rm_try
19496         ;;
19497 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19498         ;;
19499 esac
19500
19501 : see what type is used for size_t
19502 rp="What is the type used for the length parameter for string functions?"
19503 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19504 eval $typedef_ask
19505
19506 : check for type of arguments to gethostbyaddr. 
19507 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19508         case "$d_gethbyaddr" in
19509         $define)
19510                 $cat <<EOM
19511
19512 Checking to see what type of arguments are accepted by gethostbyaddr().
19513 EOM
19514                 hdrs="$define sys/types.h
19515                         $d_socket sys/socket.h 
19516                         $i_niin netinet/in.h 
19517                         $i_netdb netdb.h
19518                         $i_unistd unistd.h"
19519                 : The first arg can 'char *' or 'void *'
19520                 : The second arg is some of integral type
19521                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19522                         for yyy in size_t long int; do
19523                                 case "$netdb_host_type" in
19524                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19525                                         if ./protochk "$try" $hdrs; then
19526                                                 echo "Your system accepts $xxx for the first arg."
19527                                                 echo "...and $yyy for the second arg."
19528                                                 netdb_host_type="$xxx"
19529                                                 netdb_hlen_type="$yyy"
19530                                         fi
19531                                         ;;
19532                                 esac
19533                         done
19534                 done
19535                 : In case none of those worked, prompt the user.
19536                 case "$netdb_host_type" in
19537                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19538                         dflt='char *'
19539                         . ./myread
19540                         netdb_host_type=$ans
19541                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19542                         dflt="$sizetype"
19543                         . ./myread
19544                         netdb_hlen_type=$ans
19545                         ;;
19546                 esac
19547                 ;;
19548         *)      : no gethostbyaddr, so pick harmless defaults
19549                 netdb_host_type='char *'
19550                 netdb_hlen_type="$sizetype"
19551                 ;;
19552         esac
19553         # Remove the "const" if needed. -- but then we'll have a 
19554         # prototype clash!
19555         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19556 fi
19557
19558 : check for type of argument to gethostbyname. 
19559 if test "X$netdb_name_type" = X ; then
19560         case "$d_gethbyname" in
19561         $define)
19562                 $cat <<EOM
19563
19564 Checking to see what type of argument is accepted by gethostbyname().
19565 EOM
19566                 hdrs="$define sys/types.h
19567                         $d_socket sys/socket.h 
19568                         $i_niin netinet/in.h 
19569                         $i_netdb netdb.h
19570                         $i_unistd unistd.h"
19571                 for xxx in "const char *" "char *"; do
19572                         case "$netdb_name_type" in
19573                         '')     try="extern struct hostent *gethostbyname($xxx);"
19574                                 if ./protochk "$try" $hdrs; then
19575                                         echo "Your system accepts $xxx."
19576                                         netdb_name_type="$xxx"
19577                                 fi
19578                                 ;;
19579                         esac
19580                 done
19581                 : In case none of those worked, prompt the user.
19582                 case "$netdb_name_type" in
19583                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19584                         dflt='char *'
19585                         . ./myread
19586                         netdb_name_type=$ans
19587                         ;;
19588                 esac
19589                 ;;
19590         *)      : no gethostbyname, so pick harmless default
19591                 netdb_name_type='char *'
19592                 ;;
19593         esac
19594 fi
19595
19596 : check for type of 1st argument to getnetbyaddr. 
19597 if test "X$netdb_net_type" = X ; then
19598         case "$d_getnbyaddr" in
19599         $define)
19600                 $cat <<EOM
19601
19602 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19603 EOM
19604                 hdrs="$define sys/types.h
19605                         $d_socket sys/socket.h 
19606                         $i_niin netinet/in.h 
19607                         $i_netdb netdb.h
19608                         $i_unistd unistd.h"
19609                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19610                         case "$netdb_net_type" in
19611                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19612                                 if ./protochk "$try" $hdrs; then
19613                                         echo "Your system accepts $xxx."
19614                                         netdb_net_type="$xxx"
19615                                 fi
19616                                 ;;
19617                         esac
19618                 done
19619                 : In case none of those worked, prompt the user.
19620                 case "$netdb_net_type" in
19621                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19622                         dflt='long'
19623                         . ./myread
19624                         netdb_net_type=$ans
19625                         ;;
19626                 esac
19627                 ;;
19628         *)      : no getnetbyaddr, so pick harmless default
19629                 netdb_net_type='long'
19630                 ;;
19631         esac
19632 fi
19633 : locate the preferred pager for this system
19634 fn=f/
19635 case "$pager" in
19636 '')
19637         dflt=''
19638         case "$pg" in
19639         /*) dflt=$pg;;
19640         [a-zA-Z]:/*) dflt=$pg;;
19641         esac
19642         case "$more" in
19643         /*) dflt=$more;;
19644         [a-zA-Z]:/*) dflt=$more;;
19645         esac
19646         case "$less" in
19647         /*) dflt=$less;;
19648         [a-zA-Z]:/*) dflt=$less;;
19649         esac
19650         case "$dflt" in
19651         '') dflt=/usr/ucb/more;;
19652         esac
19653         ;;
19654 *)      dflt="$pager"
19655         : Instruct ./getfile to trust the hinted or previous pager value,
19656         : even if it does not begin with a slash.  For example, on os2,
19657         : pager might be cmd /c more.  See comments in UU/getfile.
19658         fn="f/($pager)"
19659         ;;
19660 esac
19661 echo " "
19662 rp='What pager is used on your system?'
19663 . ./getfile
19664 pager="$ans"
19665
19666 : see what type pids are declared as in the kernel
19667 rp="What is the type of process ids on this system?"
19668 set pid_t pidtype int stdio.h sys/types.h
19669 eval $typedef_ask
19670
19671 : see if ar generates random libraries by itself
19672 echo " "
19673 echo "Checking how to generate random libraries on your machine..." >&4
19674 echo 'int bar1() { return bar2(); }' > bar1.c
19675 echo 'int bar2() { return 2; }' > bar2.c
19676 $cat > foo.c <<EOP
19677 #$i_stdlib I_STDLIB
19678 #ifdef I_STDLIB
19679 #include <stdlib.h>
19680 #endif
19681 int main() { printf("%d\n", bar1()); exit(0); }
19682 EOP
19683 $cc $ccflags -c bar1.c >/dev/null 2>&1
19684 $cc $ccflags -c bar2.c >/dev/null 2>&1
19685 $cc $ccflags -c foo.c >/dev/null 2>&1
19686 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19687 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19688         $run ./foobar >/dev/null 2>&1; then
19689         echo "$ar appears to generate random libraries itself."
19690         orderlib=false
19691         if [ "X$ranlib" = "X" ]; then
19692             ranlib=":"
19693         fi
19694 elif $ar s bar$_a >/dev/null 2>&1 &&
19695         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19696         $run ./foobar >/dev/null 2>&1; then
19697                 echo "a table of contents needs to be added with '$ar s'."
19698                 orderlib=false
19699                 ranlib="$ar s"
19700 elif $ar ts bar$_a >/dev/null 2>&1 &&
19701         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19702         $run ./foobar >/dev/null 2>&1; then
19703                 echo "a table of contents needs to be added with '$ar ts'."
19704                 orderlib=false
19705                 ranlib="$ar ts"
19706 else
19707         case "$ranlib" in
19708         :) ranlib='';;
19709         '')
19710                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19711                 $test -f $ranlib || ranlib=''
19712                 ;;
19713         esac
19714         if $test -n "$ranlib"; then
19715                 echo "your system has '$ranlib'; we'll use that."
19716                 orderlib=false
19717         else
19718                 echo "your system doesn't seem to support random libraries"
19719                 echo "so we'll use lorder and tsort to order the libraries."
19720                 orderlib=true
19721                 ranlib=":"
19722         fi
19723 fi
19724 $rm -f foo* bar*
19725
19726 : check for type of arguments to select. 
19727 case "$selecttype" in
19728 '') case "$d_select" in
19729         $define)
19730                 echo " "
19731                 $cat <<EOM
19732 Checking to see what type of arguments are accepted by select().
19733 EOM
19734                 hdrs="$define sys/types.h
19735                         $i_systime sys/time.h 
19736                         $i_sysselct sys/select.h
19737                         $d_socket sys/socket.h"
19738                 : The first arg can be int, unsigned, or size_t
19739                 : The last arg may or may not be 'const'
19740                 val=''
19741                 : void pointer has been seen but using that
19742                 : breaks the selectminbits test
19743                 for xxx in 'fd_set *' 'int *'; do
19744                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19745                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19746                                         case "$val" in
19747                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19748                                                 if ./protochk "$try" $hdrs; then
19749                                                         echo "Your system accepts $xxx."
19750                                                         val="$xxx"
19751                                                 fi
19752                                                 ;;
19753                                         esac
19754                                 done
19755                         done
19756                 done
19757                 case "$val" in
19758                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19759                         case "$d_fd_set" in
19760                                 $define) dflt="fd_set *" ;;
19761                                 *)              dflt="int *" ;;
19762                         esac
19763                         . ./myread
19764                         val=$ans
19765                         ;;
19766                 esac
19767                 selecttype="$val"
19768                 ;;
19769         *)      : no select, so pick a harmless default
19770                 selecttype='int *'
19771                 ;;
19772         esac
19773         ;;
19774 esac
19775
19776 : check for the select 'width'
19777 case "$selectminbits" in
19778 '') safebits=`expr $ptrsize \* 8`
19779     case "$d_select" in
19780         $define)
19781                 $cat <<EOM
19782
19783 Checking to see on how many bits at a time your select() operates...
19784 EOM
19785                 $cat >try.c <<EOCP
19786 #include <sys/types.h>
19787 #$i_time I_TIME
19788 #$i_systime I_SYS_TIME
19789 #$i_systimek I_SYS_TIME_KERNEL
19790 #ifdef I_TIME
19791 #   include <time.h>
19792 #endif
19793 #ifdef I_SYS_TIME
19794 #   ifdef I_SYS_TIME_KERNEL
19795 #       define KERNEL
19796 #   endif
19797 #   include <sys/time.h>
19798 #   ifdef I_SYS_TIME_KERNEL
19799 #       undef KERNEL
19800 #   endif
19801 #endif
19802 #$i_sysselct I_SYS_SELECT
19803 #ifdef I_SYS_SELECT
19804 #include <sys/select.h>
19805 #endif
19806 #$d_socket HAS_SOCKET
19807 #ifdef HAS_SOCKET
19808 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19809 #endif
19810 #include <stdio.h>
19811 #$i_stdlib I_STDLIB
19812 #ifdef I_STDLIB
19813 #include <stdlib.h>
19814 #endif
19815 $selecttype b;
19816 #define S sizeof(*(b))
19817 #define MINBITS 64
19818 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19819 #define NBITS  (NBYTES * 8)
19820 int main() {
19821     char *s = (char *)malloc(NBYTES);
19822     struct timeval t;
19823     int i;
19824     FILE* fp;
19825     int fd;
19826
19827     if (!s)
19828         exit(1);
19829     fclose(stdin);
19830     fp = fopen("try.c", "r");
19831     if (fp == 0)
19832       exit(2);
19833     fd = fileno(fp);
19834     if (fd < 0)
19835       exit(3);
19836     b = ($selecttype)s;
19837     for (i = 0; i < NBITS; i++)
19838         FD_SET(i, b);
19839     t.tv_sec  = 0;
19840     t.tv_usec = 0;
19841     select(fd + 1, b, 0, 0, &t);
19842     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19843     free(s);
19844     printf("%d\n", i + 1);
19845     return 0;
19846 }
19847 EOCP
19848                 set try
19849                 if eval $compile_ok; then
19850                         selectminbits=`$run ./try`
19851                         case "$selectminbits" in
19852                         '')     cat >&4 <<EOM
19853 Cannot figure out on how many bits at a time your select() operates.
19854 I'll play safe and guess it is $safebits bits.
19855 EOM
19856                                 selectminbits=$safebits
19857                                 bits="$safebits bits"
19858                                 ;;
19859                         1)      bits="1 bit" ;;
19860                         *)      bits="$selectminbits bits" ;;
19861                         esac
19862                         echo "Your select() operates on $bits at a time." >&4
19863                 else
19864                         rp='What is the minimum number of bits your select() operates on?'
19865                         case "$byteorder" in
19866                         12345678)       dflt=64 ;;
19867                         1234)           dflt=32 ;;
19868                         *)              dflt=1  ;;
19869                         esac
19870                         . ./myread
19871                         val=$ans
19872                         selectminbits="$val"
19873                 fi
19874                 $rm_try
19875                 ;;
19876         *)      : no select, so pick a harmless default
19877                 selectminbits=$safebits
19878                 ;;
19879         esac
19880         ;;
19881 esac
19882
19883 : Trace out the files included by signal.h, then look for SIGxxx names.
19884 : Remove SIGARRAYSIZE used by HPUX.
19885 : Remove SIGSTKSIZE used by Linux.
19886 : Remove SIGSTKSZ used by Posix.
19887 : Remove SIGTYP void lines used by OS2.
19888 : Some cpps, like os390, dont give the file name anywhere
19889 if [ "X$fieldn" = X ]; then
19890         : Just make some guesses.  We check them later.
19891         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19892 else
19893         xxx=`echo '#include <signal.h>' |
19894         $cppstdin $cppminus $cppflags 2>/dev/null |
19895         $grep '^[       ]*#.*include' | 
19896         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19897 fi
19898 : Check this list of files to be sure we have parsed the cpp output ok.
19899 : This will also avoid potentially non-existent files, such 
19900 : as ../foo/bar.h
19901 xxxfiles=''
19902 for xx in $xxx /dev/null ; do
19903         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19904 done
19905 : If we have found no files, at least try signal.h
19906 case "$xxxfiles" in
19907 '')     xxxfiles=`./findhdr signal.h` ;;
19908 esac
19909 xxx=`awk '
19910 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19911         print substr($2, 4, 20)
19912 }
19913 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19914         print substr($3, 4, 20)
19915 }' $xxxfiles`
19916 : Append some common names just in case the awk scan failed.
19917 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19918 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19919 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19920 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19921 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19922
19923 : generate a few handy files for later
19924 $cat > signal.c <<EOCP
19925 #include <sys/types.h>
19926 #include <signal.h>
19927 #$i_stdlib I_STDLIB
19928 #ifdef I_STDLIB
19929 #include <stdlib.h>
19930 #endif
19931 #include <stdio.h>
19932 int main() {
19933
19934 /* Strange style to avoid deeply-nested #if/#else/#endif */
19935 #ifndef NSIG
19936 #  ifdef _NSIG
19937 #    define NSIG (_NSIG)
19938 #  endif
19939 #endif
19940
19941 #ifndef NSIG
19942 #  ifdef SIGMAX
19943 #    define NSIG (SIGMAX+1)
19944 #  endif
19945 #endif
19946
19947 #ifndef NSIG
19948 #  ifdef SIG_MAX
19949 #    define NSIG (SIG_MAX+1)
19950 #  endif
19951 #endif
19952
19953 #ifndef NSIG
19954 #  ifdef _SIG_MAX
19955 #    define NSIG (_SIG_MAX+1)
19956 #  endif
19957 #endif
19958
19959 #ifndef NSIG
19960 #  ifdef MAXSIG
19961 #    define NSIG (MAXSIG+1)
19962 #  endif
19963 #endif
19964
19965 #ifndef NSIG
19966 #  ifdef MAX_SIG
19967 #    define NSIG (MAX_SIG+1)
19968 #  endif
19969 #endif
19970
19971 #ifndef NSIG
19972 #  ifdef SIGARRAYSIZE
19973 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19974 #  endif
19975 #endif
19976
19977 #ifndef NSIG
19978 #  ifdef _sys_nsig
19979 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19980 #  endif
19981 #endif
19982
19983 /* Default to some arbitrary number that's big enough to get most
19984    of the common signals.
19985 */
19986 #ifndef NSIG
19987 #    define NSIG 50
19988 #endif
19989
19990 printf("NSIG %d\n", NSIG);
19991
19992 #ifndef JUST_NSIG
19993
19994 EOCP
19995
19996 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19997 {
19998         printf "#ifdef SIG"; printf $1; printf "\n"
19999         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20000         printf $1; printf ");\n"
20001         printf "#endif\n"
20002 }
20003 END {
20004         printf "#endif /* JUST_NSIG */\n";
20005         printf "exit(0);\n}\n";
20006 }
20007 ' >>signal.c
20008 $cat >signal.awk <<'EOP'
20009 BEGIN { ndups = 0 }
20010 $1 ~ /^NSIG$/ { nsig = $2 }
20011 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20012     if ($2 > maxsig) { maxsig = $2 }
20013     if (sig_name[$2]) {
20014         dup_name[ndups] = $1
20015         dup_num[ndups] = $2
20016         ndups++ 
20017     }
20018     else {
20019         sig_name[$2] = $1
20020         sig_num[$2] = $2
20021     }
20022 }
20023 END { 
20024     if (nsig == 0) {
20025         nsig = maxsig + 1
20026     }
20027     printf("NSIG %d\n", nsig);
20028     for (n = 1; n < nsig; n++) {
20029         if (sig_name[n]) {
20030             printf("%s %d\n", sig_name[n], sig_num[n])
20031         }
20032         else {
20033             printf("NUM%d %d\n", n, n) 
20034         }
20035     }
20036     for (n = 0; n < ndups; n++) {
20037         printf("%s %d\n", dup_name[n], dup_num[n])
20038     }
20039 }
20040 EOP
20041 $cat >signal_cmd <<EOS
20042 $startsh
20043 if $test -s signal.lst; then
20044     echo "Using your existing signal.lst file"
20045         exit 0
20046 fi
20047 xxx="$xxx"
20048 EOS
20049 $cat >>signal_cmd <<'EOS'
20050
20051 set signal
20052 if eval $compile_ok; then
20053         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20054 else
20055         echo "(I can't seem be able to compile the whole test program)" >&4
20056         echo "(I'll try it in little pieces.)" >&4
20057         set signal -DJUST_NSIG
20058         if eval $compile_ok; then
20059                 $run ./signal$_exe > signal.nsg
20060                 $cat signal.nsg
20061         else
20062                 echo "I can't seem to figure out how many signals you have." >&4
20063                 echo "Guessing 50." >&4
20064                 echo 'NSIG 50' > signal.nsg
20065         fi
20066         : Now look at all the signal names, one at a time.
20067         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20068                 $cat > signal.c <<EOCP
20069 #include <sys/types.h>
20070 #include <signal.h>
20071 #include <stdio.h>
20072 int main() {
20073 printf("$xx %d\n", SIG${xx});
20074 return 0;
20075 }
20076 EOCP
20077                 set signal
20078                 if eval $compile; then
20079                         echo "SIG${xx} found."
20080                         $run ./signal$_exe  >> signal.ls1
20081                 else
20082                         echo "SIG${xx} NOT found."
20083                 fi
20084         done
20085         if $test -s signal.ls1; then
20086                 $cat signal.nsg signal.ls1 |
20087                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20088         fi
20089
20090 fi
20091 if $test -s signal.lst; then
20092         :
20093 else
20094         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20095         echo 'kill -l' >signal
20096         set X `csh -f <signal`
20097         $rm -f signal
20098         shift
20099         case $# in
20100         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20101         esac
20102         echo $@ | $tr ' ' $trnl | \
20103             $awk '{ printf "%s %d\n", $1, ++s; }
20104                   END { printf "NSIG %d\n", ++s }' >signal.lst
20105 fi
20106 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20107 EOS
20108 chmod a+x signal_cmd
20109 $eunicefix signal_cmd
20110
20111 : generate list of signal names
20112 echo " "
20113 case "$sig_name_init" in
20114 '') doinit=yes ;;
20115 *)  case "$sig_num_init" in
20116     ''|*,*) doinit=yes ;;
20117     esac ;;
20118 esac
20119 case "$doinit" in
20120 yes)
20121         echo "Generating a list of signal names and numbers..." >&4
20122         . ./signal_cmd
20123         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20124         sig_name=`$awk 'BEGIN { printf "ZERO " }
20125                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20126         sig_num=`$awk  'BEGIN { printf "0 " }
20127                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20128         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20129                              !/^NSIG/   { printf "\"%s\", ", $1 }
20130                              END        { printf "0\n" }' signal.lst`
20131         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20132                              !/^NSIG/   { printf "%d, ", $2}
20133                              END        { printf "0\n"}' signal.lst`
20134         ;;
20135 esac
20136 echo "The following $sig_count signals are available:"
20137 echo " "
20138 echo $sig_name | $awk \
20139 'BEGIN { linelen = 0 }
20140 {
20141         for (i = 1; i <= NF; i++) {
20142                 name = "SIG" $i " "
20143                 linelen = linelen + length(name)
20144                 if (linelen > 70) {
20145                         printf "\n"
20146                         linelen = length(name)
20147                 }
20148                 printf "%s", name
20149         }
20150         printf "\n"
20151 }'
20152 sig_size=`echo $sig_name | awk '{print NF}'`
20153 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
20154
20155 echo " "
20156 case "$sizetype" in
20157 *_t) zzz="$sizetype"    ;;
20158 *)   zzz="filesize"     ;;
20159 esac
20160 echo "Checking the size of $zzz..." >&4 
20161 cat > try.c <<EOCP
20162 #include <sys/types.h>
20163 #include <stdio.h>
20164 #$i_stdlib I_STDLIB
20165 #ifdef I_STDLIB
20166 #include <stdlib.h>
20167 #endif
20168 int main() {
20169     printf("%d\n", (int)sizeof($sizetype));
20170     exit(0);
20171 }
20172 EOCP
20173 set try
20174 if eval $compile_ok; then
20175         yyy=`$run ./try`
20176         case "$yyy" in
20177         '')     sizesize=4
20178                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20179                 ;;
20180         *)      sizesize=$yyy
20181                 echo "Your $zzz size is $sizesize bytes."
20182                 ;;
20183         esac
20184 else
20185         sizesize=4
20186         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20187 fi
20188
20189
20190 : check for socklen_t
20191 echo " "
20192 echo "Checking to see if you have socklen_t..." >&4
20193 $cat >try.c <<EOCP
20194 #include <sys/types.h>
20195 #$d_socket HAS_SOCKET
20196 #ifdef HAS_SOCKET
20197 #include <sys/socket.h>
20198 #endif
20199 int main() { socklen_t x = 16; }
20200 EOCP
20201 set try
20202 if eval $compile; then
20203         val="$define"
20204         echo "You have socklen_t."
20205 else
20206         val="$undef"
20207         echo "You do not have socklen_t."
20208         case "$sizetype" in
20209         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20210         esac
20211 fi
20212 $rm_try
20213 set d_socklen_t
20214 eval $setvar
20215
20216 : see if this is a socks.h system
20217 set socks.h i_socks
20218 eval $inhdr
20219
20220 : check for type of the size argument to socket calls
20221 case "$d_socket" in
20222 "$define")
20223         $cat <<EOM
20224
20225 Checking to see what type is the last argument of accept().
20226 EOM
20227         yyy=''
20228         case "$d_socklen_t" in
20229         "$define") yyy="$yyy socklen_t"
20230         esac
20231         yyy="$yyy $sizetype int long unsigned"
20232         for xxx in $yyy; do
20233                 case "$socksizetype" in
20234                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20235                         case "$usesocks" in
20236                         "$define")
20237                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20238                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20239                                         socksizetype="$xxx"
20240                                 fi
20241                                 ;;
20242                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20243                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20244                                         socksizetype="$xxx"
20245                                 fi
20246                                 ;;
20247                         esac
20248                         ;;
20249                 esac
20250         done
20251 : In case none of those worked, prompt the user.
20252         case "$socksizetype" in
20253         '')     rp='What is the type for socket address structure sizes?'
20254                 dflt='int'
20255                 . ./myread
20256                 socksizetype=$ans
20257                 ;;
20258         esac
20259         ;;
20260 *)      : no sockets, so pick relatively harmless default
20261         socksizetype='int'
20262         ;;
20263 esac
20264
20265 : see what type is used for signed size_t
20266 set ssize_t ssizetype int stdio.h sys/types.h
20267 eval $typedef
20268 dflt="$ssizetype"
20269 $cat > try.c <<EOM
20270 #include <stdio.h>
20271 #$i_stdlib I_STDLIB
20272 #ifdef I_STDLIB
20273 #include <stdlib.h>
20274 #endif
20275 #include <sys/types.h>
20276 #define Size_t $sizetype
20277 #define SSize_t $dflt
20278 int main()
20279 {
20280         if (sizeof(Size_t) == sizeof(SSize_t))
20281                 printf("$dflt\n");
20282         else if (sizeof(Size_t) == sizeof(int))
20283                 printf("int\n");
20284         else
20285                 printf("long\n");
20286         exit(0);
20287 }
20288 EOM
20289 echo " "
20290 set try
20291 if eval $compile_ok && $run ./try > /dev/null; then
20292         ssizetype=`$run ./try`
20293         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20294 else
20295         $cat >&4 <<EOM
20296 Help! I can't compile and run the ssize_t test program: please enlighten me!
20297 (This is probably a misconfiguration in your system or libraries, and
20298 you really ought to fix it.  Still, I'll try anyway.)
20299
20300 I need a type that is the same size as $sizetype, but is guaranteed to
20301 be signed.  Common values are ssize_t, int and long.
20302
20303 EOM
20304         rp="What signed type is the same size as $sizetype?"
20305         . ./myread
20306         ssizetype="$ans"
20307 fi
20308 $rm_try
20309
20310 : see what type of char stdio uses.
20311 echo " "
20312 echo '#include <stdio.h>' > stdio.c
20313 $cppstdin $cppminus < stdio.c > stdioh
20314 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20315         echo "Your stdio uses unsigned chars." >&4
20316         stdchar="unsigned char"
20317 else
20318         echo "Your stdio uses signed chars." >&4
20319         stdchar="char"
20320 fi
20321 $rm -f stdio.* stdioh
20322
20323 : see what type uids are declared as in the kernel
20324 echo " "
20325 echo "Looking for the type for user ids returned by getuid()."
20326 set uid_t uidtype xxx stdio.h sys/types.h
20327 eval $typedef
20328 case "$uidtype" in
20329 xxx)
20330         xxx=`./findhdr sys/user.h`
20331         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20332         case $1 in
20333         unsigned) dflt="$1 $2" ;;
20334         *) dflt="$1" ;;
20335         esac
20336         ;;
20337 *) dflt="$uidtype";;
20338 esac
20339 case "$uidtype" in
20340 uid_t)  echo "uid_t found." ;;
20341 *)      rp="What is the type for user ids returned by getuid()?"
20342         . ./myread
20343         uidtype="$ans"
20344         ;;
20345 esac
20346
20347 echo " "
20348 case "$uidtype" in
20349 *_t) zzz="$uidtype"     ;;
20350 *)   zzz="uid"          ;;
20351 esac
20352 echo "Checking the size of $zzz..." >&4 
20353 cat > try.c <<EOCP
20354 #include <sys/types.h>
20355 #include <stdio.h>
20356 #$i_stdlib I_STDLIB
20357 #ifdef I_STDLIB
20358 #include <stdlib.h>
20359 #endif
20360 int main() {
20361     printf("%d\n", (int)sizeof($uidtype));
20362     exit(0);
20363 }
20364 EOCP
20365 set try
20366 if eval $compile_ok; then
20367         yyy=`$run ./try`
20368         case "$yyy" in
20369         '')     uidsize=4
20370                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20371                 ;;
20372         *)      uidsize=$yyy
20373                 echo "Your $zzz is $uidsize bytes long."
20374                 ;;
20375         esac
20376 else
20377         uidsize=4
20378         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20379 fi
20380
20381 echo " "
20382 case "$uidtype" in
20383 *_t) zzz="$uidtype"     ;;
20384 *)   zzz="uid"          ;;
20385 esac
20386 echo "Checking the sign of $zzz..." >&4
20387 cat > try.c <<EOCP
20388 #include <sys/types.h>
20389 #include <stdio.h>
20390 int main() {
20391         $uidtype foo = -1;
20392         if (foo < 0)
20393                 printf("-1\n");
20394         else
20395                 printf("1\n");
20396 }
20397 EOCP
20398 set try
20399 if eval $compile; then
20400         yyy=`$run ./try`
20401         case "$yyy" in
20402         '')     uidsign=1
20403                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20404                 ;;
20405         *)      uidsign=$yyy
20406                 case "$uidsign" in
20407                  1) echo "Your $zzz is unsigned." ;;
20408                 -1) echo "Your $zzz is signed."   ;;
20409                 esac
20410                 ;;
20411         esac
20412 else
20413         uidsign=1
20414         echo "(I can't compile the test program--guessing unsigned.)" >&4
20415 fi
20416
20417
20418
20419 echo " "
20420 $echo "Checking the format string to be used for uids..." >&4
20421
20422 case "$uidsign" in
20423 -1)     if $test X"$uidsize" = X"$ivsize"; then
20424                 uidformat="$ivdformat"
20425         else
20426                 if $test X"$uidsize" = X"$longsize"; then
20427                         uidformat='"ld"'
20428                 else
20429                         if $test X"$uidsize" = X"$intsize"; then
20430                                 uidformat='"d"'
20431                         else
20432                                 if $test X"$uidsize" = X"$shortsize"; then
20433                                         uidformat='"hd"'
20434                                 fi
20435                         fi
20436                 fi
20437         fi
20438         ;;
20439 *)      if $test X"$uidsize" = X"$uvsize"; then
20440                 uidformat="$uvuformat"
20441         else
20442                 if $test X"$uidsize" = X"$longsize"; then
20443                         uidformat='"lu"'
20444                 else
20445                         if $test X"$uidsize" = X"$intsize"; then
20446                                 uidformat='"u"'
20447                         else
20448                                 if $test X"$uidsize" = X"$shortsize"; then
20449                                         uidformat='"hu"'
20450                                 fi
20451                         fi
20452                 fi
20453         fi
20454         ;;
20455 esac
20456
20457
20458 case "$usesitecustomize" in
20459     $define|true|[Yy]*)
20460         usesitecustomize="$define"
20461         ;;
20462     *)
20463         usesitecustomize="$undef"
20464         ;;
20465     esac
20466
20467 : determine compiler compiler
20468 case "$yacc" in
20469 '')
20470         dflt=yacc;;
20471 *)
20472         dflt="$yacc";;
20473 esac
20474 echo " "
20475 comp='yacc'
20476 if $test -f "$byacc$_exe"; then
20477         dflt="$byacc"
20478         comp="byacc or $comp"
20479 fi
20480 if $test -f "$bison$_exe"; then
20481         comp="$comp or bison -y"
20482 fi
20483 rp="Which compiler compiler ($comp) shall I use?"
20484 . ./myread
20485 yacc="$ans"
20486 case "$yacc" in
20487 *bis*)
20488         case "$yacc" in
20489         *-y*) ;;
20490         *)
20491                 yacc="$yacc -y"
20492                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20493                 ;;
20494         esac
20495         ;;
20496 esac
20497
20498 : see if this is a fp.h system
20499 set fp.h i_fp
20500 eval $inhdr
20501
20502 : see if this is a fp_class.h system
20503 set fp_class.h i_fp_class
20504 eval $inhdr
20505
20506 : see if gdbm.h is available
20507 set gdbm.h t_gdbm
20508 eval $inhdr
20509 case "$t_gdbm" in
20510 $define)
20511         : see if gdbm_open exists
20512         set gdbm_open d_gdbm_open
20513         eval $inlibc
20514         case "$d_gdbm_open" in
20515         $undef)
20516                 t_gdbm="$undef"
20517                 echo "We won't be including <gdbm.h>"
20518                 ;;
20519         esac
20520         ;;
20521 esac
20522 val="$t_gdbm"
20523 set i_gdbm
20524 eval $setvar
20525
20526 : see if this is a ieeefp.h system
20527 case "$i_ieeefp" in
20528 '' ) set ieeefp.h i_ieeefp
20529      eval $inhdr
20530      ;;
20531 esac
20532
20533 : see if this is a libutil.h system
20534 set libutil.h i_libutil
20535 eval $inhdr
20536
20537 : see if mach cthreads are available
20538 if test "X$usethreads" = "X$define"; then
20539         set mach/cthreads.h i_machcthr
20540         eval $inhdr
20541 else
20542         i_machcthr="$undef"
20543 fi
20544
20545
20546
20547 : see if this is a mntent.h system
20548 set mntent.h i_mntent
20549 eval $inhdr
20550
20551 : see if ndbm.h is available
20552 set ndbm.h t_ndbm
20553 eval $inhdr
20554
20555 case "$t_ndbm" in
20556 $undef)
20557     # Some Linux distributions such as RedHat 7.1 put the
20558     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20559     if $test -f /usr/include/gdbm/ndbm.h; then
20560         echo '<gdbm/ndbm.h> found.'
20561         ccflags="$ccflags -I/usr/include/gdbm"
20562         cppflags="$cppflags -I/usr/include/gdbm"
20563         t_ndbm=$define
20564     fi
20565     ;;
20566 esac
20567
20568 case "$t_ndbm" in
20569 $define)
20570         : see if dbm_open exists
20571         set dbm_open d_dbm_open
20572         eval $inlibc
20573         case "$d_dbm_open" in
20574         $undef)
20575                 t_ndbm="$undef"
20576                 echo "We won't be including <ndbm.h>"
20577                 ;;
20578         esac
20579         ;;
20580 esac
20581 val="$t_ndbm"
20582 set i_ndbm
20583 eval $setvar
20584
20585 : see if net/errno.h is available
20586 val=''
20587 set net/errno.h val
20588 eval $inhdr
20589
20590 : Unfortunately, it causes problems on some systems.  Arrgh.
20591 case "$val" in
20592 $define)
20593         cat > try.c <<'EOM'
20594 #include <stdio.h>
20595 #include <errno.h>
20596 #include <net/errno.h>
20597 int func()
20598 {
20599         return ENOTSOCK;
20600 }
20601 EOM
20602         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20603                 echo "We'll be including <net/errno.h>." >&4
20604         else
20605                 echo "We won't be including <net/errno.h>." >&4
20606                 val="$undef"
20607         fi
20608         $rm_try
20609         ;;
20610 esac
20611 set i_neterrno
20612 eval $setvar
20613
20614 : see if netinet/tcp.h is available
20615 set netinet/tcp.h i_netinettcp
20616 eval $inhdr
20617
20618 : see if this is a poll.h system
20619 set poll.h i_poll
20620 eval $inhdr
20621
20622 : see if this is a prot.h system
20623 set prot.h i_prot
20624 eval $inhdr
20625
20626 echo " "
20627 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20628 $cat <<'EOSH' > Cppsym.know
20629 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20630 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20631 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20632 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20633 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20634 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20635 bull c cadmus clipper CMU COFF COMPILER_VERSION
20636 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20637 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20638 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20639 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20640 GLIBC GLIBC_MINOR
20641 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20642 H3050R H3050RX hbullx20 hcx host_mips
20643 hp200 hp300 hp700 HP700 hp800 hp9000
20644 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20645 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20646 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20647 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20648 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20649 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20650 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20651 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20652 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20653 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20654 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20655 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20656 MATH_HAS_NO_SIDE_EFFECTS
20657 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20658 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20659 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20660 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20661 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20662 NetBSD news1500 news1700 news1800 news1900 news3700
20663 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20664 ns32016 ns32332 ns32k nsc32000
20665 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20666 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20667 pc532 pdp11 PGC PIC plexus PORTAR posix
20668 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20669 POSIX_C_SOURCE POSIX_SOURCE POWER
20670 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20671 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20672 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20673 sony sony_news sonyrisc sparc sparclite spectrum
20674 stardent stdc STDC_EXT stratos sun sun3 sun386
20675 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20676 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20677 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20678 sysV68 sysV88 Tek4132 Tek4300 titan
20679 TM3200 TM5400 TM5600
20680 tower tower32 tower32_200 tower32_600 tower32_700
20681 tower32_800 tower32_850 tss
20682 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20683 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20684 unix UNIX95 UNIX99 unixpc unos
20685 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20686 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20687 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20688 USGr4 USGr4_2
20689 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20690 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20691 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20692 z8000
20693 EOSH
20694 # Maybe put other stuff here too.
20695 cat <<EOSH >>Cppsym.know
20696 $osname
20697 EOSH
20698 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20699 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20700 $cat Cppsym.know > Cppsym.c
20701 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20702 $rm -f Cppsym.a Cppsym.b Cppsym.c
20703 cat <<EOSH > Cppsym
20704 $startsh
20705 if $test \$# -gt 0; then
20706     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20707     if $test -s Cppsym.got; then
20708         $rm -f Cppsym.got
20709         exit 0
20710     fi
20711     $rm -f Cppsym.got
20712     exit 1
20713 else
20714     $tr " " "$trnl" | ./Cppsym.try
20715     exit 0
20716 fi
20717 EOSH
20718 chmod +x Cppsym
20719 $eunicefix Cppsym
20720 cat <<EOSH > Cppsym.try
20721 $startsh
20722 cat <<'EOCP' > try.c
20723 #include <stdio.h>
20724 #if cpp_stuff == 1
20725 #define STRINGIFY(a)    "a"
20726 #endif
20727 #if cpp_stuff == 42
20728 #define StGiFy(a)  #a
20729 #define STRINGIFY(a)    StGiFy(a)
20730 #endif
20731 #if $cpp_stuff != 1 && $cpp_stuff != 42
20732 #   include "Bletch: How does this C preprocessor stringify macros?"
20733 #endif
20734 int main() {
20735 EOCP
20736 $awk \\
20737 EOSH
20738 cat <<'EOSH' >> Cppsym.try
20739 'length($1) > 0 {
20740     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20741     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20742     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20743     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20744 }'       >> try.c
20745 echo 'return 0;}' >> try.c
20746 EOSH
20747 cat <<EOSH >> Cppsym.try
20748 ccflags="$ccflags"
20749 case "$osname-$gccversion" in
20750 irix-) ccflags="\$ccflags -woff 1178" ;;
20751 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20752 esac
20753 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20754 EOSH
20755 chmod +x Cppsym.try
20756 $eunicefix Cppsym.try
20757 ./Cppsym < Cppsym.know > Cppsym.true
20758 : Add in any linux cpp "predefined macros":
20759 case "$osname::$gccversion" in
20760   *linux*::*.*)
20761     tHdrH=_tmpHdr
20762     rm -f $tHdrH'.h' $tHdrH
20763     touch $tHdrH'.h'
20764     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20765        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20766        if [ -s $tHdrH'_cppsym.real' ]; then
20767           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20768        fi
20769     fi
20770     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20771   ;;
20772 esac
20773 : now check the C compiler for additional symbols
20774 postprocess_cc_v=''
20775 case "$osname" in
20776 aix) postprocess_cc_v="|$tr , ' '" ;;
20777 esac
20778 $cat >ccsym <<EOS
20779 $startsh
20780 $cat >tmp.c <<EOF
20781 extern int foo;
20782 EOF
20783 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20784 do
20785         case "\$i" in
20786         -D*) echo "\$i" | $sed 's/^-D//';;
20787         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20788         esac
20789 done
20790 $rm_try
20791 EOS
20792 postprocess_cc_v=''
20793 chmod +x ccsym
20794 $eunicefix ccsym
20795 ./ccsym > ccsym1.raw
20796 if $test -s ccsym1.raw; then
20797        $sort ccsym1.raw | $uniq >ccsym.raw
20798 else
20799        mv ccsym1.raw ccsym.raw
20800 fi
20801
20802 $awk '/\=/ { print $0; next }
20803         { print $0"=1" }' ccsym.raw >ccsym.list
20804 $comm -13 Cppsym.true ccsym.list >ccsym.own
20805 $comm -12 Cppsym.true ccsym.list >ccsym.com
20806 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20807 also=''
20808 if $test -z ccsym.raw; then
20809         echo "Your C compiler doesn't seem to define any symbols!" >&4
20810         echo " "
20811         echo "However, your C preprocessor defines the following symbols:"
20812         $cat Cppsym.true
20813         ccsymbols=''
20814         cppsymbols=`$cat Cppsym.true`
20815         cppsymbols=`echo $cppsymbols`
20816         cppccsymbols="$cppsymbols"
20817 else
20818         if $test -s ccsym.com; then
20819                 echo "Your C compiler and pre-processor define these symbols:"
20820                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20821                 also='also '
20822                 symbols='ones'
20823                 cppccsymbols=`$cat ccsym.com`
20824                 cppccsymbols=`echo $cppccsymbols`
20825                 $test "$silent" || sleep 1
20826         fi
20827         if $test -s ccsym.cpp; then
20828                 $test "$also" && echo " "
20829                 echo "Your C pre-processor ${also}defines the following symbols:"
20830                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20831                 also='further '
20832                 cppsymbols=`$cat ccsym.cpp`
20833                 cppsymbols=`echo $cppsymbols`
20834                 $test "$silent" || sleep 1
20835         fi
20836         if $test -s ccsym.own; then
20837                 $test "$also" && echo " "
20838                 echo "Your C compiler ${also}defines the following cpp symbols:"
20839                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20840                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20841                 ccsymbols=`$cat ccsym.own`
20842                 ccsymbols=`echo $ccsymbols`
20843                 $test "$silent" || sleep 1
20844         fi
20845 fi
20846
20847 : see if this is a termio system
20848 val="$undef"
20849 val2="$undef"
20850 val3="$undef"
20851 if $test `./findhdr termios.h`; then
20852         set tcsetattr i_termios
20853         eval $inlibc
20854         val3="$i_termios"
20855 fi
20856 echo " "
20857 case "$val3" in
20858 "$define") echo "You have POSIX termios.h... good!" >&4;;
20859 *) if ./Cppsym pyr; then
20860                 case "`/bin/universe`" in
20861                 ucb) if $test `./findhdr sgtty.h`; then
20862                                 val2="$define"
20863                                 echo "<sgtty.h> found." >&4
20864                         else
20865                                 echo "System is pyramid with BSD universe."
20866                                 echo "<sgtty.h> not found--you could have problems." >&4
20867                         fi;;
20868                 *) if $test `./findhdr termio.h`; then
20869                                 val="$define"
20870                                 echo "<termio.h> found." >&4
20871                         else
20872                                 echo "System is pyramid with USG universe."
20873                                 echo "<termio.h> not found--you could have problems." >&4
20874                         fi;;
20875                 esac
20876         elif ./usg; then
20877                 if $test `./findhdr termio.h`; then
20878                         echo "<termio.h> found." >&4
20879                         val="$define"
20880                 elif $test `./findhdr sgtty.h`; then
20881                         echo "<sgtty.h> found." >&4
20882                         val2="$define"
20883                 else
20884 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20885                 fi
20886         else
20887                 if $test `./findhdr sgtty.h`; then
20888                         echo "<sgtty.h> found." >&4
20889                         val2="$define"
20890                 elif $test `./findhdr termio.h`; then
20891                         echo "<termio.h> found." >&4
20892                         val="$define"
20893                 else
20894 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20895                 fi
20896         fi;;
20897 esac
20898 set i_termio; eval $setvar
20899 val=$val2; set i_sgtty; eval $setvar
20900 val=$val3; set i_termios; eval $setvar
20901
20902 : see if stddef is available
20903 set stddef.h i_stddef
20904 eval $inhdr
20905
20906 : see if sys/access.h is available
20907 set sys/access.h i_sysaccess
20908 eval $inhdr
20909
20910 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20911 set sys/filio.h i_sysfilio
20912 eval $inhdr
20913 echo " "
20914 if $test `./findhdr sys/ioctl.h`; then
20915         val="$define"
20916         echo '<sys/ioctl.h> found.' >&4
20917 else
20918         val="$undef"
20919         if $test $i_sysfilio = "$define"; then
20920             echo '<sys/ioctl.h> NOT found.' >&4
20921         else
20922                 $test $i_sgtty = "$define" && xxx="sgtty.h"
20923                 $test $i_termio = "$define" && xxx="termio.h"
20924                 $test $i_termios = "$define" && xxx="termios.h"
20925 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20926         fi
20927 fi
20928 set i_sysioctl
20929 eval $setvar
20930
20931 : see if socket ioctl defs are in sys/sockio.h
20932 echo " "
20933 xxx=`./findhdr sys/sockio.h`
20934 if $test "$xxx"; then
20935         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20936                 val="$define"
20937                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20938         else
20939                 val="$undef"
20940                 echo "No socket ioctls found in <sys/sockio.h>." >&4
20941         fi
20942 else
20943         val="$undef"
20944         $cat <<EOM
20945 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20946 EOM
20947 fi
20948 set i_syssockio
20949 eval $setvar
20950
20951
20952 : see if this is a syslog.h system
20953 set syslog.h i_syslog
20954 eval $inhdr
20955
20956
20957 : see if this is a sys/mode.h system
20958 set sys/mode.h i_sysmode
20959 eval $inhdr
20960
20961 : see if sys/resource.h has to be included
20962 set sys/resource.h i_sysresrc
20963 eval $inhdr
20964
20965 : see if sys/security.h is available
20966 set sys/security.h i_syssecrt
20967 eval $inhdr
20968
20969 : see if this is a sys/statvfs.h system
20970 set sys/statvfs.h i_sysstatvfs
20971 eval $inhdr
20972
20973 : see if this is a sys/un.h system
20974 set sys/un.h i_sysun
20975 eval $inhdr
20976
20977
20978 : see if this is a sys/utsname.h system
20979 set sys/utsname.h i_sysutsname
20980 eval $inhdr
20981
20982 : see if this is a syswait system
20983 set sys/wait.h i_syswait
20984 eval $inhdr
20985
20986 : see if this is a ustat.h system
20987 set ustat.h i_ustat
20988 eval $inhdr
20989
20990 : see if this is an utime system
20991 set utime.h i_utime
20992 eval $inhdr
20993
20994 : see if this is a values.h system
20995 set values.h i_values
20996 eval $inhdr
20997
20998 : see if this is a vfork system
20999 case "$d_vfork" in
21000 "$define")
21001         set vfork.h i_vfork
21002         eval $inhdr
21003         ;;
21004 *)
21005         i_vfork="$undef"
21006         ;;
21007 esac
21008
21009 echo " "
21010 echo "Looking for extensions..." >&4
21011 : If we are using the old config.sh, known_extensions may contain
21012 : old or inaccurate or duplicate values.
21013 known_extensions=''
21014 nonxs_extensions=''
21015 : We do not use find because it might not be available.
21016 : We do not just use MANIFEST because the user may have dropped
21017 : some additional extensions into the source tree and expect them
21018 : to be built.
21019
21020 : Function to recursively find available extensions, ignoring DynaLoader
21021 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21022 find_extensions='
21023     for xxx in *; do
21024         case "$xxx" in
21025             DynaLoader|dynaload) ;;
21026             *)
21027             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21028                 known_extensions="$known_extensions $1$xxx";
21029             elif $test -f $xxx/Makefile.PL; then
21030                 nonxs_extensions="$nonxs_extensions $1$xxx";
21031             else
21032                 if $test -d $xxx -a $# -lt 10; then
21033                     set $1$xxx/ $*;
21034                     cd "$xxx";
21035                     eval $find_extensions;
21036                     cd ..;
21037                     shift;
21038                 fi;
21039             fi
21040             ;;
21041         esac;
21042     done'
21043 tdir=`pwd`
21044 cd "$rsrc/ext"
21045 set X
21046 shift
21047 eval $find_extensions
21048 # Special case:  Add in threads/shared since it is not picked up by the
21049 # recursive find above (and adding in general recursive finding breaks
21050 # SDBM_File/sdbm).  A.D.  10/25/2001.
21051 known_extensions="$known_extensions threads/shared"
21052 set X $known_extensions
21053 shift
21054 known_extensions="$*"
21055 #  Ditto for IO/Compress/Base and IO/Compress/Zlib
21056 nonxs_extensions="$nonxs_extensions IO/Compress/Base IO/Compress/Zlib"
21057 set X $nonxs_extensions
21058 shift
21059 nonxs_extensions="$*"
21060 cd "$tdir"
21061
21062 : Now see which are supported on this system.
21063 avail_ext=''
21064 for xxx in $known_extensions ; do
21065         case "$xxx" in
21066         DB_File|db_file)
21067                 case "$i_db" in
21068                 $define) avail_ext="$avail_ext $xxx" ;;
21069                 esac
21070                 ;;
21071         GDBM_File|gdbm_fil)
21072                 case "$i_gdbm" in
21073                 $define) avail_ext="$avail_ext $xxx" ;;
21074                 esac
21075                 ;;
21076         I18N/Langinfo|i18n_lan)
21077                 case "$i_langinfo$d_nl_langinfo" in
21078                 $define$define) avail_ext="$avail_ext $xxx" ;;
21079                 esac
21080                 ;;
21081         NDBM_File|ndbm_fil)
21082                 case "$i_ndbm" in
21083                 $define)
21084                     case "$osname-$use64bitint" in
21085                     hpux-define)
21086                         case "$libs" in
21087                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21088                         esac
21089                         ;;
21090                     *) avail_ext="$avail_ext $xxx" ;;
21091                     esac
21092                     ;;
21093                 esac
21094                 ;;
21095         ODBM_File|odbm_fil)
21096                 case "${i_dbm}${i_rpcsvcdbm}" in
21097                 *"${define}"*)
21098                     case "$osname-$use64bitint" in
21099                     hpux-define)
21100                         case "$libs" in
21101                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21102                         esac
21103                         ;;
21104                     *) avail_ext="$avail_ext $xxx" ;;
21105                     esac
21106                     ;;
21107                 esac
21108                 ;;
21109         POSIX|posix)
21110                 case "$useposix" in
21111                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21112                 esac
21113                 ;;
21114         Opcode|opcode)
21115                 case "$useopcode" in
21116                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21117                 esac
21118                 ;;
21119         Socket|socket)
21120                 case "$d_socket" in
21121                 true|$define|y)
21122                     case "$osname" in
21123                     beos) ;; # not unless BONE
21124                     *) avail_ext="$avail_ext $xxx" ;;
21125                     esac
21126                     ;;
21127                 esac
21128                 ;;
21129         Sys/Syslog|sys/syslog)
21130                 : XXX syslog requires socket
21131                 case "$d_socket" in
21132                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21133                 esac
21134                 ;;
21135         Thread|thread)
21136                 case "$usethreads" in
21137                 true|$define|y)
21138                         case "$useithreads" in
21139                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
21140                         esac
21141                 esac
21142                 ;;
21143         Win32*)
21144                 case "$osname" in
21145                 cygwin) avail_ext="$avail_ext $xxx" ;;
21146                 esac
21147                 ;;
21148         XS/APItest|xs/apitest)
21149                 # This is just for testing.  Skip it unless we have dynamic loading.
21150
21151                 case "$usedl" in
21152                 $define) avail_ext="$avail_ext $xxx" ;;
21153                 esac
21154                 ;;
21155         XS/Typemap|xs/typemap)
21156                 # This is just for testing.  Skip it unless we have dynamic loading.
21157                 case "$usedl" in
21158                 $define) avail_ext="$avail_ext $xxx" ;;
21159                 esac
21160                 ;;
21161         threads|threads/shared)
21162                 # threads and threads::shared are special cases.
21163                 # To stop people from asking "Perl 5.8.0 was supposed
21164                 # to have this new fancy threads implementation but my
21165                 # perl doesn't have it" and from people trying to
21166                 # (re)install the threads module using CPAN.pm and
21167                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21168                 # the threads.pm and threads/shared.pm will always be
21169                 # there, croaking informatively ("you need to rebuild
21170                 # all of Perl with threads, sorry") when threads haven't
21171                 # been compiled in.
21172                 # --jhi
21173                 avail_ext="$avail_ext $xxx"
21174                 ;;
21175         IPC/SysV|ipc/sysv)
21176                 : XXX Do we need a useipcsysv variable here
21177                 case "${d_msg}${d_sem}${d_shm}" in
21178                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21179                 esac
21180                 ;;
21181         *)      avail_ext="$avail_ext $xxx"
21182                 ;;
21183         esac
21184 done
21185
21186 set X $avail_ext
21187 shift
21188 avail_ext="$*"
21189
21190 case "$onlyextensions" in
21191 '') ;;
21192 *)  keepextensions=''
21193     echo "You have requested that only certains extensions be included..." >&4
21194     for i in $onlyextensions; do
21195         case " $avail_ext " in
21196         *" $i "*)
21197             echo "Keeping extension $i."
21198             keepextensions="$keepextensions $i"
21199             ;;
21200         *) echo "Ignoring extension $i." ;;
21201         esac
21202     done
21203     avail_ext="$keepextensions"
21204     ;;
21205 esac
21206
21207 case "$noextensions" in
21208 '') ;;
21209 *)  keepextensions=''
21210     echo "You have requested that certain extensions be ignored..." >&4
21211     for i in $avail_ext; do
21212         case " $noextensions " in
21213         *" $i "*) echo "Ignoring extension $i." ;;
21214         *) echo "Keeping extension $i.";
21215            keepextensions="$keepextensions $i"
21216            ;;
21217         esac
21218     done
21219     avail_ext="$keepextensions"
21220     ;;
21221 esac
21222
21223 : Now see which nonxs extensions are supported on this system.
21224 : For now assume all are.
21225 nonxs_ext=''
21226 for xxx in $nonxs_extensions ; do
21227         case "$xxx" in
21228         *)      nonxs_ext="$nonxs_ext $xxx"
21229                 ;;
21230         esac
21231 done
21232
21233 set X $nonxs_ext
21234 shift
21235 nonxs_ext="$*"
21236
21237 case $usedl in
21238 $define)
21239         $cat <<EOM
21240 A number of extensions are supplied with $package.  You may choose to
21241 compile these extensions for dynamic loading (the default), compile
21242 them into the $package executable (static loading), or not include
21243 them at all.  Answer "none" to include no extensions.
21244 Note that DynaLoader is always built and need not be mentioned here.
21245
21246 EOM
21247         case "$dynamic_ext" in
21248         '')
21249                 : Exclude those listed in static_ext
21250                 dflt=''
21251                 for xxx in $avail_ext; do
21252                         case " $static_ext " in
21253                         *" $xxx "*) ;;
21254                         *) dflt="$dflt $xxx" ;;
21255                         esac
21256                 done
21257                 set X $dflt
21258                 shift
21259                 dflt="$*"
21260                 ;;
21261         *)      dflt="$dynamic_ext"
21262                 # Perhaps we are reusing an old out-of-date config.sh.
21263                 case "$hint" in
21264                 previous)
21265                         if test X"$dynamic_ext" != X"$avail_ext"; then
21266                                 $cat <<EOM
21267 NOTICE:  Your previous config.sh list may be incorrect.
21268 The extensions now available to you are
21269         ${avail_ext}
21270 but the default list from your previous config.sh is
21271         ${dynamic_ext}
21272
21273 EOM
21274                         fi
21275                         ;;
21276                 esac
21277                 ;;
21278         esac
21279         case "$dflt" in
21280         '')     dflt=none;;
21281         esac
21282         rp="What extensions do you wish to load dynamically?"
21283         . ./myread
21284         case "$ans" in
21285         none) dynamic_ext=' ' ;;
21286         *) dynamic_ext="$ans" ;;
21287         esac
21288
21289         case "$static_ext" in
21290         '')
21291                 : Exclude those already listed in dynamic linking
21292                 dflt=''
21293                 for xxx in $avail_ext; do
21294                         case " $dynamic_ext " in
21295                         *" $xxx "*) ;;
21296                         *) dflt="$dflt $xxx" ;;
21297                         esac
21298                 done
21299                 set X $dflt
21300                 shift
21301                 dflt="$*"
21302                 ;;
21303         *)  dflt="$static_ext"
21304                 ;;
21305         esac
21306
21307         case "$dflt" in
21308         '')     dflt=none;;
21309         esac
21310         rp="What extensions do you wish to load statically?"
21311         . ./myread
21312         case "$ans" in
21313         none) static_ext=' ' ;;
21314         *) static_ext="$ans" ;;
21315         esac
21316         ;;
21317 *)
21318         $cat <<EOM
21319 A number of extensions are supplied with $package.  Answer "none"
21320 to include no extensions.
21321 Note that DynaLoader is always built and need not be mentioned here.
21322
21323 EOM
21324         case "$static_ext" in
21325         '') dflt="$avail_ext" ;;
21326         *)      dflt="$static_ext"
21327                 # Perhaps we are reusing an old out-of-date config.sh.
21328                 case "$hint" in
21329                 previous)
21330                         if test X"$static_ext" != X"$avail_ext"; then
21331                                 $cat <<EOM
21332 NOTICE:  Your previous config.sh list may be incorrect.
21333 The extensions now available to you are
21334         ${avail_ext}
21335 but the default list from your previous config.sh is
21336         ${static_ext}
21337
21338 EOM
21339                         fi
21340                         ;;
21341                 esac
21342                 ;;
21343         esac
21344         : Exclude those that are not xs extensions
21345         case "$dflt" in
21346         '')     dflt=none;;
21347         esac
21348         rp="What extensions do you wish to include?"
21349         . ./myread
21350         case "$ans" in
21351         none) static_ext=' ' ;;
21352         *) static_ext="$ans" ;;
21353         esac
21354         ;;
21355 esac
21356 #
21357 # Encode is a special case.  If we are building Encode as a static
21358 # extension, we need to explicitly list its subextensions as well.
21359 # For other nested extensions, this is handled automatically by
21360 # the appropriate Makefile.PL.
21361 case " $static_ext " in
21362         *" Encode "*) # Add the subextensions of Encode
21363         cd "$rsrc/ext"
21364         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21365                 static_ext="$static_ext Encode/$xxx"
21366         done
21367         cd "$tdir"
21368         ;;
21369 esac
21370
21371 set X $dynamic_ext $static_ext $nonxs_ext
21372 shift
21373 extensions="$*"
21374
21375 # Sanity check:  We require an extension suitable for use with
21376 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21377 # should show up as failures in the test suite, but it's helpful to
21378 # catch them now.) The 'extensions' list is normally sorted
21379 # alphabetically, so we need to accept either
21380 #    DB_File ... Fcntl ... IO  ....
21381 # or something like
21382 #    Fcntl ... NDBM_File ... IO  ....
21383 case " $extensions"  in
21384 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21385 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21386 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21387 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21388    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21389    ;;
21390 esac
21391
21392 : Remove libraries needed only for extensions
21393 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21394 : The exception is SunOS 4.x, which needs them.
21395 case "${osname}X${osvers}" in
21396 sunos*X4*)
21397     perllibs="$libs"
21398     ;;
21399 *) case "$usedl" in
21400     $define|true|[yY]*)
21401             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21402             shift
21403             perllibs="$*"
21404             ;;
21405     *)  perllibs="$libs"
21406             ;;
21407     esac
21408     ;;
21409 esac
21410
21411 : Remove build directory name from cppstdin so it can be used from
21412 : either the present location or the final installed location.
21413 echo " "
21414 : Get out of the UU directory to get correct path name.
21415 cd ..
21416 case "$cppstdin" in
21417 `pwd`/cppstdin)
21418         echo "Stripping down cppstdin path name"
21419         cppstdin=cppstdin
21420         ;;
21421 esac
21422 cd UU
21423
21424 : end of configuration questions
21425 echo " "
21426 echo "End of configuration questions."
21427 echo " "
21428
21429 : back to where it started
21430 if test -d ../UU; then
21431         cd ..
21432 fi
21433
21434 : configuration may be patched via a 'config.arch' file
21435 if $test -f config.arch; then
21436         echo "I see a config.arch file, loading it."
21437         . ./config.arch
21438 fi
21439
21440 : configuration may be patched via a 'config.over' file
21441 if $test -f config.over; then
21442         echo " "
21443         dflt=y
21444         rp='I see a config.over file.  Do you wish to load it?'
21445         . UU/myread
21446         case "$ans" in
21447         n*) echo "OK, I'll ignore it.";;
21448         *)      . ./config.over
21449                 echo "Configuration override changes have been loaded."
21450                 ;;
21451         esac
21452 fi
21453
21454 : in case they want portability, strip down executable paths
21455 case "$d_portable" in
21456 "$define")
21457         echo " "
21458         echo "Stripping down executable paths..." >&4
21459         for file in $loclist $trylist; do
21460                 eval temp=\$$file
21461                 eval $file=`basename $temp`
21462         done
21463         ;;
21464 esac
21465
21466 : create config.sh file
21467 echo " "
21468 echo "Creating config.sh..." >&4
21469 $spitshell <<EOT >config.sh
21470 $startsh
21471 #
21472 # This file was produced by running the Configure script. It holds all the
21473 # definitions figured out by Configure. Should you modify one of these values,
21474 # do not forget to propagate your changes by running "Configure -der". You may
21475 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21476 #
21477
21478 # Package name      : $package
21479 # Source directory  : $src
21480 # Configuration time: $cf_time
21481 # Configured by     : $cf_by
21482 # Target system     : $myuname
21483
21484 Author='$Author'
21485 Date='$Date'
21486 Header='$Header'
21487 Id='$Id'
21488 Locker='$Locker'
21489 Log='$Log'
21490 Mcc='$Mcc'
21491 RCSfile='$RCSfile'
21492 Revision='$Revision'
21493 Source='$Source'
21494 State='$State'
21495 _a='$_a'
21496 _exe='$_exe'
21497 _o='$_o'
21498 afs='$afs'
21499 afsroot='$afsroot'
21500 alignbytes='$alignbytes'
21501 ansi2knr='$ansi2knr'
21502 aphostname='$aphostname'
21503 api_revision='$api_revision'
21504 api_subversion='$api_subversion'
21505 api_version='$api_version'
21506 api_versionstring='$api_versionstring'
21507 ar='$ar'
21508 archlib='$archlib'
21509 archlibexp='$archlibexp'
21510 archname64='$archname64'
21511 archname='$archname'
21512 archobjs='$archobjs'
21513 asctime_r_proto='$asctime_r_proto'
21514 awk='$awk'
21515 baserev='$baserev'
21516 bash='$bash'
21517 bin='$bin'
21518 binexp='$binexp'
21519 bison='$bison'
21520 byacc='$byacc'
21521 byteorder='$byteorder'
21522 c='$c'
21523 castflags='$castflags'
21524 cat='$cat'
21525 cc='$cc'
21526 cccdlflags='$cccdlflags'
21527 ccdlflags='$ccdlflags'
21528 ccflags='$ccflags'
21529 ccflags_uselargefiles='$ccflags_uselargefiles'
21530 ccname='$ccname'
21531 ccsymbols='$ccsymbols'
21532 ccversion='$ccversion'
21533 cf_by='$cf_by'
21534 cf_email='$cf_email'
21535 cf_time='$cf_time'
21536 charsize='$charsize'
21537 chgrp='$chgrp'
21538 chmod='$chmod'
21539 chown='$chown'
21540 clocktype='$clocktype'
21541 comm='$comm'
21542 compress='$compress'
21543 contains='$contains'
21544 cp='$cp'
21545 cpio='$cpio'
21546 cpp='$cpp'
21547 cpp_stuff='$cpp_stuff'
21548 cppccsymbols='$cppccsymbols'
21549 cppflags='$cppflags'
21550 cpplast='$cpplast'
21551 cppminus='$cppminus'
21552 cpprun='$cpprun'
21553 cppstdin='$cppstdin'
21554 cppsymbols='$cppsymbols'
21555 crypt_r_proto='$crypt_r_proto'
21556 cryptlib='$cryptlib'
21557 csh='$csh'
21558 ctermid_r_proto='$ctermid_r_proto'
21559 ctime_r_proto='$ctime_r_proto'
21560 d_Gconvert='$d_Gconvert'
21561 d_PRIEUldbl='$d_PRIEUldbl'
21562 d_PRIFUldbl='$d_PRIFUldbl'
21563 d_PRIGUldbl='$d_PRIGUldbl'
21564 d_PRIXU64='$d_PRIXU64'
21565 d_PRId64='$d_PRId64'
21566 d_PRIeldbl='$d_PRIeldbl'
21567 d_PRIfldbl='$d_PRIfldbl'
21568 d_PRIgldbl='$d_PRIgldbl'
21569 d_PRIi64='$d_PRIi64'
21570 d_PRIo64='$d_PRIo64'
21571 d_PRIu64='$d_PRIu64'
21572 d_PRIx64='$d_PRIx64'
21573 d_SCNfldbl='$d_SCNfldbl'
21574 d__fwalk='$d__fwalk'
21575 d_access='$d_access'
21576 d_accessx='$d_accessx'
21577 d_aintl='$d_aintl'
21578 d_alarm='$d_alarm'
21579 d_archlib='$d_archlib'
21580 d_asctime_r='$d_asctime_r'
21581 d_atolf='$d_atolf'
21582 d_atoll='$d_atoll'
21583 d_attribute_format='$d_attribute_format'
21584 d_attribute_malloc='$d_attribute_malloc'
21585 d_attribute_nonnull='$d_attribute_nonnull'
21586 d_attribute_noreturn='$d_attribute_noreturn'
21587 d_attribute_pure='$d_attribute_pure'
21588 d_attribute_unused='$d_attribute_unused'
21589 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21590 d_bcmp='$d_bcmp'
21591 d_bcopy='$d_bcopy'
21592 d_bsd='$d_bsd'
21593 d_bsdgetpgrp='$d_bsdgetpgrp'
21594 d_bsdsetpgrp='$d_bsdsetpgrp'
21595 d_builtin_choose_expr='$d_builtin_choose_expr'
21596 d_builtin_expect='$d_builtin_expect'
21597 d_bzero='$d_bzero'
21598 d_c99_variadic_macros='$d_c99_variadic_macros'
21599 d_casti32='$d_casti32'
21600 d_castneg='$d_castneg'
21601 d_charvspr='$d_charvspr'
21602 d_chown='$d_chown'
21603 d_chroot='$d_chroot'
21604 d_chsize='$d_chsize'
21605 d_class='$d_class'
21606 d_clearenv='$d_clearenv'
21607 d_closedir='$d_closedir'
21608 d_cmsghdr_s='$d_cmsghdr_s'
21609 d_const='$d_const'
21610 d_copysignl='$d_copysignl'
21611 d_cplusplus='$d_cplusplus'
21612 d_crypt='$d_crypt'
21613 d_crypt_r='$d_crypt_r'
21614 d_csh='$d_csh'
21615 d_ctermid='$d_ctermid'
21616 d_ctermid_r='$d_ctermid_r'
21617 d_ctime_r='$d_ctime_r'
21618 d_cuserid='$d_cuserid'
21619 d_dbl_dig='$d_dbl_dig'
21620 d_dbminitproto='$d_dbminitproto'
21621 d_difftime='$d_difftime'
21622 d_dir_dd_fd='$d_dir_dd_fd'
21623 d_dirfd='$d_dirfd'
21624 d_dirnamlen='$d_dirnamlen'
21625 d_dlerror='$d_dlerror'
21626 d_dlopen='$d_dlopen'
21627 d_dlsymun='$d_dlsymun'
21628 d_dosuid='$d_dosuid'
21629 d_drand48_r='$d_drand48_r'
21630 d_drand48proto='$d_drand48proto'
21631 d_dup2='$d_dup2'
21632 d_eaccess='$d_eaccess'
21633 d_endgrent='$d_endgrent'
21634 d_endgrent_r='$d_endgrent_r'
21635 d_endhent='$d_endhent'
21636 d_endhostent_r='$d_endhostent_r'
21637 d_endnent='$d_endnent'
21638 d_endnetent_r='$d_endnetent_r'
21639 d_endpent='$d_endpent'
21640 d_endprotoent_r='$d_endprotoent_r'
21641 d_endpwent='$d_endpwent'
21642 d_endpwent_r='$d_endpwent_r'
21643 d_endsent='$d_endsent'
21644 d_endservent_r='$d_endservent_r'
21645 d_eofnblk='$d_eofnblk'
21646 d_eunice='$d_eunice'
21647 d_faststdio='$d_faststdio'
21648 d_fchdir='$d_fchdir'
21649 d_fchmod='$d_fchmod'
21650 d_fchown='$d_fchown'
21651 d_fcntl='$d_fcntl'
21652 d_fcntl_can_lock='$d_fcntl_can_lock'
21653 d_fd_macros='$d_fd_macros'
21654 d_fd_set='$d_fd_set'
21655 d_fds_bits='$d_fds_bits'
21656 d_fgetpos='$d_fgetpos'
21657 d_finite='$d_finite'
21658 d_finitel='$d_finitel'
21659 d_flexfnam='$d_flexfnam'
21660 d_flock='$d_flock'
21661 d_flockproto='$d_flockproto'
21662 d_fork='$d_fork'
21663 d_fp_class='$d_fp_class'
21664 d_fpathconf='$d_fpathconf'
21665 d_fpclass='$d_fpclass'
21666 d_fpclassify='$d_fpclassify'
21667 d_fpclassl='$d_fpclassl'
21668 d_fpos64_t='$d_fpos64_t'
21669 d_frexpl='$d_frexpl'
21670 d_fs_data_s='$d_fs_data_s'
21671 d_fseeko='$d_fseeko'
21672 d_fsetpos='$d_fsetpos'
21673 d_fstatfs='$d_fstatfs'
21674 d_fstatvfs='$d_fstatvfs'
21675 d_fsync='$d_fsync'
21676 d_ftello='$d_ftello'
21677 d_ftime='$d_ftime'
21678 d_futimes='$d_futimes'
21679 d_getcwd='$d_getcwd'
21680 d_getespwnam='$d_getespwnam'
21681 d_getfsstat='$d_getfsstat'
21682 d_getgrent='$d_getgrent'
21683 d_getgrent_r='$d_getgrent_r'
21684 d_getgrgid_r='$d_getgrgid_r'
21685 d_getgrnam_r='$d_getgrnam_r'
21686 d_getgrps='$d_getgrps'
21687 d_gethbyaddr='$d_gethbyaddr'
21688 d_gethbyname='$d_gethbyname'
21689 d_gethent='$d_gethent'
21690 d_gethname='$d_gethname'
21691 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21692 d_gethostbyname_r='$d_gethostbyname_r'
21693 d_gethostent_r='$d_gethostent_r'
21694 d_gethostprotos='$d_gethostprotos'
21695 d_getitimer='$d_getitimer'
21696 d_getlogin='$d_getlogin'
21697 d_getlogin_r='$d_getlogin_r'
21698 d_getmnt='$d_getmnt'
21699 d_getmntent='$d_getmntent'
21700 d_getnbyaddr='$d_getnbyaddr'
21701 d_getnbyname='$d_getnbyname'
21702 d_getnent='$d_getnent'
21703 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21704 d_getnetbyname_r='$d_getnetbyname_r'
21705 d_getnetent_r='$d_getnetent_r'
21706 d_getnetprotos='$d_getnetprotos'
21707 d_getpagsz='$d_getpagsz'
21708 d_getpbyname='$d_getpbyname'
21709 d_getpbynumber='$d_getpbynumber'
21710 d_getpent='$d_getpent'
21711 d_getpgid='$d_getpgid'
21712 d_getpgrp2='$d_getpgrp2'
21713 d_getpgrp='$d_getpgrp'
21714 d_getppid='$d_getppid'
21715 d_getprior='$d_getprior'
21716 d_getprotobyname_r='$d_getprotobyname_r'
21717 d_getprotobynumber_r='$d_getprotobynumber_r'
21718 d_getprotoent_r='$d_getprotoent_r'
21719 d_getprotoprotos='$d_getprotoprotos'
21720 d_getprpwnam='$d_getprpwnam'
21721 d_getpwent='$d_getpwent'
21722 d_getpwent_r='$d_getpwent_r'
21723 d_getpwnam_r='$d_getpwnam_r'
21724 d_getpwuid_r='$d_getpwuid_r'
21725 d_getsbyname='$d_getsbyname'
21726 d_getsbyport='$d_getsbyport'
21727 d_getsent='$d_getsent'
21728 d_getservbyname_r='$d_getservbyname_r'
21729 d_getservbyport_r='$d_getservbyport_r'
21730 d_getservent_r='$d_getservent_r'
21731 d_getservprotos='$d_getservprotos'
21732 d_getspnam='$d_getspnam'
21733 d_getspnam_r='$d_getspnam_r'
21734 d_gettimeod='$d_gettimeod'
21735 d_gmtime_r='$d_gmtime_r'
21736 d_gnulibc='$d_gnulibc'
21737 d_grpasswd='$d_grpasswd'
21738 d_hasmntopt='$d_hasmntopt'
21739 d_htonl='$d_htonl'
21740 d_ilogbl='$d_ilogbl'
21741 d_inc_version_list='$d_inc_version_list'
21742 d_index='$d_index'
21743 d_inetaton='$d_inetaton'
21744 d_int64_t='$d_int64_t'
21745 d_isascii='$d_isascii'
21746 d_isfinite='$d_isfinite'
21747 d_isinf='$d_isinf'
21748 d_isnan='$d_isnan'
21749 d_isnanl='$d_isnanl'
21750 d_killpg='$d_killpg'
21751 d_lchown='$d_lchown'
21752 d_ldbl_dig='$d_ldbl_dig'
21753 d_libm_lib_version='$d_libm_lib_version'
21754 d_link='$d_link'
21755 d_localtime_r='$d_localtime_r'
21756 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21757 d_locconv='$d_locconv'
21758 d_lockf='$d_lockf'
21759 d_longdbl='$d_longdbl'
21760 d_longlong='$d_longlong'
21761 d_lseekproto='$d_lseekproto'
21762 d_lstat='$d_lstat'
21763 d_madvise='$d_madvise'
21764 d_malloc_good_size='$d_malloc_good_size'
21765 d_malloc_size='$d_malloc_size'
21766 d_mblen='$d_mblen'
21767 d_mbstowcs='$d_mbstowcs'
21768 d_mbtowc='$d_mbtowc'
21769 d_memchr='$d_memchr'
21770 d_memcmp='$d_memcmp'
21771 d_memcpy='$d_memcpy'
21772 d_memmove='$d_memmove'
21773 d_memset='$d_memset'
21774 d_mkdir='$d_mkdir'
21775 d_mkdtemp='$d_mkdtemp'
21776 d_mkfifo='$d_mkfifo'
21777 d_mkstemp='$d_mkstemp'
21778 d_mkstemps='$d_mkstemps'
21779 d_mktime='$d_mktime'
21780 d_mmap='$d_mmap'
21781 d_modfl='$d_modfl'
21782 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21783 d_modflproto='$d_modflproto'
21784 d_mprotect='$d_mprotect'
21785 d_msg='$d_msg'
21786 d_msg_ctrunc='$d_msg_ctrunc'
21787 d_msg_dontroute='$d_msg_dontroute'
21788 d_msg_oob='$d_msg_oob'
21789 d_msg_peek='$d_msg_peek'
21790 d_msg_proxy='$d_msg_proxy'
21791 d_msgctl='$d_msgctl'
21792 d_msgget='$d_msgget'
21793 d_msghdr_s='$d_msghdr_s'
21794 d_msgrcv='$d_msgrcv'
21795 d_msgsnd='$d_msgsnd'
21796 d_msync='$d_msync'
21797 d_munmap='$d_munmap'
21798 d_mymalloc='$d_mymalloc'
21799 d_nice='$d_nice'
21800 d_nl_langinfo='$d_nl_langinfo'
21801 d_nv_preserves_uv='$d_nv_preserves_uv'
21802 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21803 d_off64_t='$d_off64_t'
21804 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21805 d_oldpthreads='$d_oldpthreads'
21806 d_oldsock='$d_oldsock'
21807 d_open3='$d_open3'
21808 d_pathconf='$d_pathconf'
21809 d_pause='$d_pause'
21810 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21811 d_phostname='$d_phostname'
21812 d_pipe='$d_pipe'
21813 d_poll='$d_poll'
21814 d_portable='$d_portable'
21815 d_printf_format_null='$d_printf_format_null'
21816 d_procselfexe='$d_procselfexe'
21817 d_pseudofork='$d_pseudofork'
21818 d_pthread_atfork='$d_pthread_atfork'
21819 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21820 d_pthread_yield='$d_pthread_yield'
21821 d_pwage='$d_pwage'
21822 d_pwchange='$d_pwchange'
21823 d_pwclass='$d_pwclass'
21824 d_pwcomment='$d_pwcomment'
21825 d_pwexpire='$d_pwexpire'
21826 d_pwgecos='$d_pwgecos'
21827 d_pwpasswd='$d_pwpasswd'
21828 d_pwquota='$d_pwquota'
21829 d_qgcvt='$d_qgcvt'
21830 d_quad='$d_quad'
21831 d_random_r='$d_random_r'
21832 d_readdir64_r='$d_readdir64_r'
21833 d_readdir='$d_readdir'
21834 d_readdir_r='$d_readdir_r'
21835 d_readlink='$d_readlink'
21836 d_readv='$d_readv'
21837 d_recvmsg='$d_recvmsg'
21838 d_rename='$d_rename'
21839 d_rewinddir='$d_rewinddir'
21840 d_rmdir='$d_rmdir'
21841 d_safebcpy='$d_safebcpy'
21842 d_safemcpy='$d_safemcpy'
21843 d_sanemcmp='$d_sanemcmp'
21844 d_sbrkproto='$d_sbrkproto'
21845 d_scalbnl='$d_scalbnl'
21846 d_sched_yield='$d_sched_yield'
21847 d_scm_rights='$d_scm_rights'
21848 d_seekdir='$d_seekdir'
21849 d_select='$d_select'
21850 d_sem='$d_sem'
21851 d_semctl='$d_semctl'
21852 d_semctl_semid_ds='$d_semctl_semid_ds'
21853 d_semctl_semun='$d_semctl_semun'
21854 d_semget='$d_semget'
21855 d_semop='$d_semop'
21856 d_sendmsg='$d_sendmsg'
21857 d_setegid='$d_setegid'
21858 d_seteuid='$d_seteuid'
21859 d_setgrent='$d_setgrent'
21860 d_setgrent_r='$d_setgrent_r'
21861 d_setgrps='$d_setgrps'
21862 d_sethent='$d_sethent'
21863 d_sethostent_r='$d_sethostent_r'
21864 d_setitimer='$d_setitimer'
21865 d_setlinebuf='$d_setlinebuf'
21866 d_setlocale='$d_setlocale'
21867 d_setlocale_r='$d_setlocale_r'
21868 d_setnent='$d_setnent'
21869 d_setnetent_r='$d_setnetent_r'
21870 d_setpent='$d_setpent'
21871 d_setpgid='$d_setpgid'
21872 d_setpgrp2='$d_setpgrp2'
21873 d_setpgrp='$d_setpgrp'
21874 d_setprior='$d_setprior'
21875 d_setproctitle='$d_setproctitle'
21876 d_setprotoent_r='$d_setprotoent_r'
21877 d_setpwent='$d_setpwent'
21878 d_setpwent_r='$d_setpwent_r'
21879 d_setregid='$d_setregid'
21880 d_setresgid='$d_setresgid'
21881 d_setresuid='$d_setresuid'
21882 d_setreuid='$d_setreuid'
21883 d_setrgid='$d_setrgid'
21884 d_setruid='$d_setruid'
21885 d_setsent='$d_setsent'
21886 d_setservent_r='$d_setservent_r'
21887 d_setsid='$d_setsid'
21888 d_setvbuf='$d_setvbuf'
21889 d_sfio='$d_sfio'
21890 d_shm='$d_shm'
21891 d_shmat='$d_shmat'
21892 d_shmatprototype='$d_shmatprototype'
21893 d_shmctl='$d_shmctl'
21894 d_shmdt='$d_shmdt'
21895 d_shmget='$d_shmget'
21896 d_sigaction='$d_sigaction'
21897 d_signbit='$d_signbit'
21898 d_sigprocmask='$d_sigprocmask'
21899 d_sigsetjmp='$d_sigsetjmp'
21900 d_sitearch='$d_sitearch'
21901 d_snprintf='$d_snprintf'
21902 d_sockatmark='$d_sockatmark'
21903 d_sockatmarkproto='$d_sockatmarkproto'
21904 d_socket='$d_socket'
21905 d_socklen_t='$d_socklen_t'
21906 d_sockpair='$d_sockpair'
21907 d_socks5_init='$d_socks5_init'
21908 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21909 d_sqrtl='$d_sqrtl'
21910 d_srand48_r='$d_srand48_r'
21911 d_srandom_r='$d_srandom_r'
21912 d_sresgproto='$d_sresgproto'
21913 d_sresuproto='$d_sresuproto'
21914 d_statblks='$d_statblks'
21915 d_statfs_f_flags='$d_statfs_f_flags'
21916 d_statfs_s='$d_statfs_s'
21917 d_statvfs='$d_statvfs'
21918 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21919 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21920 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21921 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21922 d_stdio_stream_array='$d_stdio_stream_array'
21923 d_stdiobase='$d_stdiobase'
21924 d_stdstdio='$d_stdstdio'
21925 d_strchr='$d_strchr'
21926 d_strcoll='$d_strcoll'
21927 d_strctcpy='$d_strctcpy'
21928 d_strerrm='$d_strerrm'
21929 d_strerror='$d_strerror'
21930 d_strerror_r='$d_strerror_r'
21931 d_strftime='$d_strftime'
21932 d_strlcat='$d_strlcat'
21933 d_strlcpy='$d_strlcpy'
21934 d_strtod='$d_strtod'
21935 d_strtol='$d_strtol'
21936 d_strtold='$d_strtold'
21937 d_strtoll='$d_strtoll'
21938 d_strtoq='$d_strtoq'
21939 d_strtoul='$d_strtoul'
21940 d_strtoull='$d_strtoull'
21941 d_strtouq='$d_strtouq'
21942 d_strxfrm='$d_strxfrm'
21943 d_suidsafe='$d_suidsafe'
21944 d_symlink='$d_symlink'
21945 d_syscall='$d_syscall'
21946 d_syscallproto='$d_syscallproto'
21947 d_sysconf='$d_sysconf'
21948 d_sysernlst='$d_sysernlst'
21949 d_syserrlst='$d_syserrlst'
21950 d_system='$d_system'
21951 d_tcgetpgrp='$d_tcgetpgrp'
21952 d_tcsetpgrp='$d_tcsetpgrp'
21953 d_telldir='$d_telldir'
21954 d_telldirproto='$d_telldirproto'
21955 d_time='$d_time'
21956 d_times='$d_times'
21957 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21958 d_tm_tm_zone='$d_tm_tm_zone'
21959 d_tmpnam_r='$d_tmpnam_r'
21960 d_truncate='$d_truncate'
21961 d_ttyname_r='$d_ttyname_r'
21962 d_tzname='$d_tzname'
21963 d_u32align='$d_u32align'
21964 d_ualarm='$d_ualarm'
21965 d_umask='$d_umask'
21966 d_uname='$d_uname'
21967 d_union_semun='$d_union_semun'
21968 d_unordered='$d_unordered'
21969 d_unsetenv='$d_unsetenv'
21970 d_usleep='$d_usleep'
21971 d_usleepproto='$d_usleepproto'
21972 d_ustat='$d_ustat'
21973 d_vendorarch='$d_vendorarch'
21974 d_vendorbin='$d_vendorbin'
21975 d_vendorlib='$d_vendorlib'
21976 d_vendorscript='$d_vendorscript'
21977 d_vfork='$d_vfork'
21978 d_void_closedir='$d_void_closedir'
21979 d_voidsig='$d_voidsig'
21980 d_voidtty='$d_voidtty'
21981 d_volatile='$d_volatile'
21982 d_vprintf='$d_vprintf'
21983 d_vsnprintf='$d_vsnprintf'
21984 d_wait4='$d_wait4'
21985 d_waitpid='$d_waitpid'
21986 d_wcstombs='$d_wcstombs'
21987 d_wctomb='$d_wctomb'
21988 d_writev='$d_writev'
21989 d_xenix='$d_xenix'
21990 date='$date'
21991 db_hashtype='$db_hashtype'
21992 db_prefixtype='$db_prefixtype'
21993 db_version_major='$db_version_major'
21994 db_version_minor='$db_version_minor'
21995 db_version_patch='$db_version_patch'
21996 defvoidused='$defvoidused'
21997 direntrytype='$direntrytype'
21998 dlext='$dlext'
21999 dlsrc='$dlsrc'
22000 doublesize='$doublesize'
22001 drand01='$drand01'
22002 drand48_r_proto='$drand48_r_proto'
22003 dynamic_ext='$dynamic_ext'
22004 eagain='$eagain'
22005 ebcdic='$ebcdic'
22006 echo='$echo'
22007 egrep='$egrep'
22008 emacs='$emacs'
22009 endgrent_r_proto='$endgrent_r_proto'
22010 endhostent_r_proto='$endhostent_r_proto'
22011 endnetent_r_proto='$endnetent_r_proto'
22012 endprotoent_r_proto='$endprotoent_r_proto'
22013 endpwent_r_proto='$endpwent_r_proto'
22014 endservent_r_proto='$endservent_r_proto'
22015 eunicefix='$eunicefix'
22016 exe_ext='$exe_ext'
22017 expr='$expr'
22018 extensions='$extensions'
22019 extras='$extras'
22020 fflushNULL='$fflushNULL'
22021 fflushall='$fflushall'
22022 find='$find'
22023 firstmakefile='$firstmakefile'
22024 flex='$flex'
22025 fpossize='$fpossize'
22026 fpostype='$fpostype'
22027 freetype='$freetype'
22028 from='$from'
22029 full_ar='$full_ar'
22030 full_csh='$full_csh'
22031 full_sed='$full_sed'
22032 gccansipedantic='$gccansipedantic'
22033 gccosandvers='$gccosandvers'
22034 gccversion='$gccversion'
22035 getgrent_r_proto='$getgrent_r_proto'
22036 getgrgid_r_proto='$getgrgid_r_proto'
22037 getgrnam_r_proto='$getgrnam_r_proto'
22038 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22039 gethostbyname_r_proto='$gethostbyname_r_proto'
22040 gethostent_r_proto='$gethostent_r_proto'
22041 getlogin_r_proto='$getlogin_r_proto'
22042 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22043 getnetbyname_r_proto='$getnetbyname_r_proto'
22044 getnetent_r_proto='$getnetent_r_proto'
22045 getprotobyname_r_proto='$getprotobyname_r_proto'
22046 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22047 getprotoent_r_proto='$getprotoent_r_proto'
22048 getpwent_r_proto='$getpwent_r_proto'
22049 getpwnam_r_proto='$getpwnam_r_proto'
22050 getpwuid_r_proto='$getpwuid_r_proto'
22051 getservbyname_r_proto='$getservbyname_r_proto'
22052 getservbyport_r_proto='$getservbyport_r_proto'
22053 getservent_r_proto='$getservent_r_proto'
22054 getspnam_r_proto='$getspnam_r_proto'
22055 gidformat='$gidformat'
22056 gidsign='$gidsign'
22057 gidsize='$gidsize'
22058 gidtype='$gidtype'
22059 glibpth='$glibpth'
22060 gmake='$gmake'
22061 gmtime_r_proto='$gmtime_r_proto'
22062 gnulibc_version='$gnulibc_version'
22063 grep='$grep'
22064 groupcat='$groupcat'
22065 groupstype='$groupstype'
22066 gzip='$gzip'
22067 h_fcntl='$h_fcntl'
22068 h_sysfile='$h_sysfile'
22069 hint='$hint'
22070 hostcat='$hostcat'
22071 html1dir='$html1dir'
22072 html1direxp='$html1direxp'
22073 html3dir='$html3dir'
22074 html3direxp='$html3direxp'
22075 i16size='$i16size'
22076 i16type='$i16type'
22077 i32size='$i32size'
22078 i32type='$i32type'
22079 i64size='$i64size'
22080 i64type='$i64type'
22081 i8size='$i8size'
22082 i8type='$i8type'
22083 i_arpainet='$i_arpainet'
22084 i_bsdioctl='$i_bsdioctl'
22085 i_crypt='$i_crypt'
22086 i_db='$i_db'
22087 i_dbm='$i_dbm'
22088 i_dirent='$i_dirent'
22089 i_dld='$i_dld'
22090 i_dlfcn='$i_dlfcn'
22091 i_fcntl='$i_fcntl'
22092 i_float='$i_float'
22093 i_fp='$i_fp'
22094 i_fp_class='$i_fp_class'
22095 i_gdbm='$i_gdbm'
22096 i_grp='$i_grp'
22097 i_ieeefp='$i_ieeefp'
22098 i_inttypes='$i_inttypes'
22099 i_langinfo='$i_langinfo'
22100 i_libutil='$i_libutil'
22101 i_limits='$i_limits'
22102 i_locale='$i_locale'
22103 i_machcthr='$i_machcthr'
22104 i_malloc='$i_malloc'
22105 i_math='$i_math'
22106 i_memory='$i_memory'
22107 i_mntent='$i_mntent'
22108 i_ndbm='$i_ndbm'
22109 i_netdb='$i_netdb'
22110 i_neterrno='$i_neterrno'
22111 i_netinettcp='$i_netinettcp'
22112 i_niin='$i_niin'
22113 i_poll='$i_poll'
22114 i_prot='$i_prot'
22115 i_pthread='$i_pthread'
22116 i_pwd='$i_pwd'
22117 i_rpcsvcdbm='$i_rpcsvcdbm'
22118 i_sfio='$i_sfio'
22119 i_sgtty='$i_sgtty'
22120 i_shadow='$i_shadow'
22121 i_socks='$i_socks'
22122 i_stdarg='$i_stdarg'
22123 i_stddef='$i_stddef'
22124 i_stdlib='$i_stdlib'
22125 i_string='$i_string'
22126 i_sunmath='$i_sunmath'
22127 i_sysaccess='$i_sysaccess'
22128 i_sysdir='$i_sysdir'
22129 i_sysfile='$i_sysfile'
22130 i_sysfilio='$i_sysfilio'
22131 i_sysin='$i_sysin'
22132 i_sysioctl='$i_sysioctl'
22133 i_syslog='$i_syslog'
22134 i_sysmman='$i_sysmman'
22135 i_sysmode='$i_sysmode'
22136 i_sysmount='$i_sysmount'
22137 i_sysndir='$i_sysndir'
22138 i_sysparam='$i_sysparam'
22139 i_sysresrc='$i_sysresrc'
22140 i_syssecrt='$i_syssecrt'
22141 i_sysselct='$i_sysselct'
22142 i_syssockio='$i_syssockio'
22143 i_sysstat='$i_sysstat'
22144 i_sysstatfs='$i_sysstatfs'
22145 i_sysstatvfs='$i_sysstatvfs'
22146 i_systime='$i_systime'
22147 i_systimek='$i_systimek'
22148 i_systimes='$i_systimes'
22149 i_systypes='$i_systypes'
22150 i_sysuio='$i_sysuio'
22151 i_sysun='$i_sysun'
22152 i_sysutsname='$i_sysutsname'
22153 i_sysvfs='$i_sysvfs'
22154 i_syswait='$i_syswait'
22155 i_termio='$i_termio'
22156 i_termios='$i_termios'
22157 i_time='$i_time'
22158 i_unistd='$i_unistd'
22159 i_ustat='$i_ustat'
22160 i_utime='$i_utime'
22161 i_values='$i_values'
22162 i_varargs='$i_varargs'
22163 i_varhdr='$i_varhdr'
22164 i_vfork='$i_vfork'
22165 ignore_versioned_solibs='$ignore_versioned_solibs'
22166 inc_version_list='$inc_version_list'
22167 inc_version_list_init='$inc_version_list_init'
22168 incpath='$incpath'
22169 inews='$inews'
22170 initialinstalllocation='$initialinstalllocation'
22171 installarchlib='$installarchlib'
22172 installbin='$installbin'
22173 installhtml1dir='$installhtml1dir'
22174 installhtml3dir='$installhtml3dir'
22175 installman1dir='$installman1dir'
22176 installman3dir='$installman3dir'
22177 installprefix='$installprefix'
22178 installprefixexp='$installprefixexp'
22179 installprivlib='$installprivlib'
22180 installscript='$installscript'
22181 installsitearch='$installsitearch'
22182 installsitebin='$installsitebin'
22183 installsitehtml1dir='$installsitehtml1dir'
22184 installsitehtml3dir='$installsitehtml3dir'
22185 installsitelib='$installsitelib'
22186 installsiteman1dir='$installsiteman1dir'
22187 installsiteman3dir='$installsiteman3dir'
22188 installsitescript='$installsitescript'
22189 installstyle='$installstyle'
22190 installusrbinperl='$installusrbinperl'
22191 installvendorarch='$installvendorarch'
22192 installvendorbin='$installvendorbin'
22193 installvendorhtml1dir='$installvendorhtml1dir'
22194 installvendorhtml3dir='$installvendorhtml3dir'
22195 installvendorlib='$installvendorlib'
22196 installvendorman1dir='$installvendorman1dir'
22197 installvendorman3dir='$installvendorman3dir'
22198 installvendorscript='$installvendorscript'
22199 intsize='$intsize'
22200 issymlink='$issymlink'
22201 ivdformat='$ivdformat'
22202 ivsize='$ivsize'
22203 ivtype='$ivtype'
22204 known_extensions='$known_extensions'
22205 ksh='$ksh'
22206 ld='$ld'
22207 lddlflags='$lddlflags'
22208 ldflags='$ldflags'
22209 ldflags_uselargefiles='$ldflags_uselargefiles'
22210 ldlibpthname='$ldlibpthname'
22211 less='$less'
22212 lib_ext='$lib_ext'
22213 libc='$libc'
22214 libperl='$libperl'
22215 libpth='$libpth'
22216 libs='$libs'
22217 libsdirs='$libsdirs'
22218 libsfiles='$libsfiles'
22219 libsfound='$libsfound'
22220 libspath='$libspath'
22221 libswanted='$libswanted'
22222 libswanted_uselargefiles='$libswanted_uselargefiles'
22223 line='$line'
22224 lint='$lint'
22225 lkflags='$lkflags'
22226 ln='$ln'
22227 lns='$lns'
22228 localtime_r_proto='$localtime_r_proto'
22229 locincpth='$locincpth'
22230 loclibpth='$loclibpth'
22231 longdblsize='$longdblsize'
22232 longlongsize='$longlongsize'
22233 longsize='$longsize'
22234 lp='$lp'
22235 lpr='$lpr'
22236 ls='$ls'
22237 lseeksize='$lseeksize'
22238 lseektype='$lseektype'
22239 mad='$mad'
22240 madlyh='$madlyh'
22241 madlyobj='$madlyobj'
22242 madlysrc='$madlysrc'
22243 mail='$mail'
22244 mailx='$mailx'
22245 make='$make'
22246 make_set_make='$make_set_make'
22247 mallocobj='$mallocobj'
22248 mallocsrc='$mallocsrc'
22249 malloctype='$malloctype'
22250 man1dir='$man1dir'
22251 man1direxp='$man1direxp'
22252 man1ext='$man1ext'
22253 man3dir='$man3dir'
22254 man3direxp='$man3direxp'
22255 man3ext='$man3ext'
22256 mips_type='$mips_type'
22257 mistrustnm='$mistrustnm'
22258 mkdir='$mkdir'
22259 mmaptype='$mmaptype'
22260 modetype='$modetype'
22261 more='$more'
22262 multiarch='$multiarch'
22263 mv='$mv'
22264 myarchname='$myarchname'
22265 mydomain='$mydomain'
22266 myhostname='$myhostname'
22267 myuname='$myuname'
22268 n='$n'
22269 need_va_copy='$need_va_copy'
22270 netdb_hlen_type='$netdb_hlen_type'
22271 netdb_host_type='$netdb_host_type'
22272 netdb_name_type='$netdb_name_type'
22273 netdb_net_type='$netdb_net_type'
22274 nm='$nm'
22275 nm_opt='$nm_opt'
22276 nm_so_opt='$nm_so_opt'
22277 nonxs_ext='$nonxs_ext'
22278 nroff='$nroff'
22279 nvEUformat='$nvEUformat'
22280 nvFUformat='$nvFUformat'
22281 nvGUformat='$nvGUformat'
22282 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22283 nveformat='$nveformat'
22284 nvfformat='$nvfformat'
22285 nvgformat='$nvgformat'
22286 nvsize='$nvsize'
22287 nvtype='$nvtype'
22288 o_nonblock='$o_nonblock'
22289 obj_ext='$obj_ext'
22290 old_pthread_create_joinable='$old_pthread_create_joinable'
22291 optimize='$optimize'
22292 orderlib='$orderlib'
22293 osname='$osname'
22294 osvers='$osvers'
22295 otherlibdirs='$otherlibdirs'
22296 package='$package'
22297 pager='$pager'
22298 passcat='$passcat'
22299 patchlevel='$patchlevel'
22300 path_sep='$path_sep'
22301 perl5='$perl5'
22302 perl='$perl'
22303 perl_patchlevel='$perl_patchlevel'
22304 perladmin='$perladmin'
22305 perllibs='$perllibs'
22306 perlpath='$perlpath'
22307 pg='$pg'
22308 phostname='$phostname'
22309 pidtype='$pidtype'
22310 plibpth='$plibpth'
22311 pmake='$pmake'
22312 pr='$pr'
22313 prefix='$prefix'
22314 prefixexp='$prefixexp'
22315 privlib='$privlib'
22316 privlibexp='$privlibexp'
22317 procselfexe='$procselfexe'
22318 prototype='$prototype'
22319 ptrsize='$ptrsize'
22320 quadkind='$quadkind'
22321 quadtype='$quadtype'
22322 randbits='$randbits'
22323 randfunc='$randfunc'
22324 random_r_proto='$random_r_proto'
22325 randseedtype='$randseedtype'
22326 ranlib='$ranlib'
22327 rd_nodata='$rd_nodata'
22328 readdir64_r_proto='$readdir64_r_proto'
22329 readdir_r_proto='$readdir_r_proto'
22330 revision='$revision'
22331 rm='$rm'
22332 rm_try='$rm_try'
22333 rmail='$rmail'
22334 run='$run'
22335 runnm='$runnm'
22336 sPRIEUldbl='$sPRIEUldbl'
22337 sPRIFUldbl='$sPRIFUldbl'
22338 sPRIGUldbl='$sPRIGUldbl'
22339 sPRIXU64='$sPRIXU64'
22340 sPRId64='$sPRId64'
22341 sPRIeldbl='$sPRIeldbl'
22342 sPRIfldbl='$sPRIfldbl'
22343 sPRIgldbl='$sPRIgldbl'
22344 sPRIi64='$sPRIi64'
22345 sPRIo64='$sPRIo64'
22346 sPRIu64='$sPRIu64'
22347 sPRIx64='$sPRIx64'
22348 sSCNfldbl='$sSCNfldbl'
22349 sched_yield='$sched_yield'
22350 scriptdir='$scriptdir'
22351 scriptdirexp='$scriptdirexp'
22352 sed='$sed'
22353 seedfunc='$seedfunc'
22354 selectminbits='$selectminbits'
22355 selecttype='$selecttype'
22356 sendmail='$sendmail'
22357 setgrent_r_proto='$setgrent_r_proto'
22358 sethostent_r_proto='$sethostent_r_proto'
22359 setlocale_r_proto='$setlocale_r_proto'
22360 setnetent_r_proto='$setnetent_r_proto'
22361 setprotoent_r_proto='$setprotoent_r_proto'
22362 setpwent_r_proto='$setpwent_r_proto'
22363 setservent_r_proto='$setservent_r_proto'
22364 sh='$sh'
22365 shar='$shar'
22366 sharpbang='$sharpbang'
22367 shmattype='$shmattype'
22368 shortsize='$shortsize'
22369 shrpenv='$shrpenv'
22370 shsharp='$shsharp'
22371 sig_count='$sig_count'
22372 sig_name='$sig_name'
22373 sig_name_init='$sig_name_init'
22374 sig_num='$sig_num'
22375 sig_num_init='$sig_num_init'
22376 sig_size='$sig_size'
22377 signal_t='$signal_t'
22378 sitearch='$sitearch'
22379 sitearchexp='$sitearchexp'
22380 sitebin='$sitebin'
22381 sitebinexp='$sitebinexp'
22382 sitehtml1dir='$sitehtml1dir'
22383 sitehtml1direxp='$sitehtml1direxp'
22384 sitehtml3dir='$sitehtml3dir'
22385 sitehtml3direxp='$sitehtml3direxp'
22386 sitelib='$sitelib'
22387 sitelib_stem='$sitelib_stem'
22388 sitelibexp='$sitelibexp'
22389 siteman1dir='$siteman1dir'
22390 siteman1direxp='$siteman1direxp'
22391 siteman3dir='$siteman3dir'
22392 siteman3direxp='$siteman3direxp'
22393 siteprefix='$siteprefix'
22394 siteprefixexp='$siteprefixexp'
22395 sitescript='$sitescript'
22396 sitescriptexp='$sitescriptexp'
22397 sizesize='$sizesize'
22398 sizetype='$sizetype'
22399 sleep='$sleep'
22400 smail='$smail'
22401 so='$so'
22402 sockethdr='$sockethdr'
22403 socketlib='$socketlib'
22404 socksizetype='$socksizetype'
22405 sort='$sort'
22406 spackage='$spackage'
22407 spitshell='$spitshell'
22408 srand48_r_proto='$srand48_r_proto'
22409 srandom_r_proto='$srandom_r_proto'
22410 src='$src'
22411 ssizetype='$ssizetype'
22412 startperl='$startperl'
22413 startsh='$startsh'
22414 static_ext='$static_ext'
22415 stdchar='$stdchar'
22416 stdio_base='$stdio_base'
22417 stdio_bufsiz='$stdio_bufsiz'
22418 stdio_cnt='$stdio_cnt'
22419 stdio_filbuf='$stdio_filbuf'
22420 stdio_ptr='$stdio_ptr'
22421 stdio_stream_array='$stdio_stream_array'
22422 strerror_r_proto='$strerror_r_proto'
22423 strings='$strings'
22424 submit='$submit'
22425 subversion='$subversion'
22426 sysman='$sysman'
22427 tail='$tail'
22428 tar='$tar'
22429 targetarch='$targetarch'
22430 tbl='$tbl'
22431 tee='$tee'
22432 test='$test'
22433 timeincl='$timeincl'
22434 timetype='$timetype'
22435 tmpnam_r_proto='$tmpnam_r_proto'
22436 to='$to'
22437 touch='$touch'
22438 tr='$tr'
22439 trnl='$trnl'
22440 troff='$troff'
22441 ttyname_r_proto='$ttyname_r_proto'
22442 u16size='$u16size'
22443 u16type='$u16type'
22444 u32size='$u32size'
22445 u32type='$u32type'
22446 u64size='$u64size'
22447 u64type='$u64type'
22448 u8size='$u8size'
22449 u8type='$u8type'
22450 uidformat='$uidformat'
22451 uidsign='$uidsign'
22452 uidsize='$uidsize'
22453 uidtype='$uidtype'
22454 uname='$uname'
22455 uniq='$uniq'
22456 uquadtype='$uquadtype'
22457 use5005threads='$use5005threads'
22458 use64bitall='$use64bitall'
22459 use64bitint='$use64bitint'
22460 usecrosscompile='$usecrosscompile'
22461 usedl='$usedl'
22462 usefaststdio='$usefaststdio'
22463 useithreads='$useithreads'
22464 uselargefiles='$uselargefiles'
22465 uselongdouble='$uselongdouble'
22466 usemallocwrap='$usemallocwrap'
22467 usemorebits='$usemorebits'
22468 usemultiplicity='$usemultiplicity'
22469 usemymalloc='$usemymalloc'
22470 usenm='$usenm'
22471 useopcode='$useopcode'
22472 useperlio='$useperlio'
22473 useposix='$useposix'
22474 usereentrant='$usereentrant'
22475 userelocatableinc='$userelocatableinc'
22476 usesfio='$usesfio'
22477 useshrplib='$useshrplib'
22478 usesitecustomize='$usesitecustomize'
22479 usesocks='$usesocks'
22480 usethreads='$usethreads'
22481 usevendorprefix='$usevendorprefix'
22482 usevfork='$usevfork'
22483 usrinc='$usrinc'
22484 uuname='$uuname'
22485 uvXUformat='$uvXUformat'
22486 uvoformat='$uvoformat'
22487 uvsize='$uvsize'
22488 uvtype='$uvtype'
22489 uvuformat='$uvuformat'
22490 uvxformat='$uvxformat'
22491 vendorarch='$vendorarch'
22492 vendorarchexp='$vendorarchexp'
22493 vendorbin='$vendorbin'
22494 vendorbinexp='$vendorbinexp'
22495 vendorhtml1dir='$vendorhtml1dir'
22496 vendorhtml1direxp='$vendorhtml1direxp'
22497 vendorhtml3dir='$vendorhtml3dir'
22498 vendorhtml3direxp='$vendorhtml3direxp'
22499 vendorlib='$vendorlib'
22500 vendorlib_stem='$vendorlib_stem'
22501 vendorlibexp='$vendorlibexp'
22502 vendorman1dir='$vendorman1dir'
22503 vendorman1direxp='$vendorman1direxp'
22504 vendorman3dir='$vendorman3dir'
22505 vendorman3direxp='$vendorman3direxp'
22506 vendorprefix='$vendorprefix'
22507 vendorprefixexp='$vendorprefixexp'
22508 vendorscript='$vendorscript'
22509 vendorscriptexp='$vendorscriptexp'
22510 version='$version'
22511 version_patchlevel_string='$version_patchlevel_string'
22512 versiononly='$versiononly'
22513 vi='$vi'
22514 voidflags='$voidflags'
22515 xlibpth='$xlibpth'
22516 yacc='$yacc'
22517 yaccflags='$yaccflags'
22518 zcat='$zcat'
22519 zip='$zip'
22520 EOT
22521
22522 : Add in command line options if available
22523 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22524
22525 : add special variables
22526 $test -f $src/patchlevel.h && \
22527 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22528 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22529 echo "PERL_CONFIG_SH=true" >>config.sh
22530
22531 : propagate old symbols
22532 if $test -f UU/config.sh; then
22533         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22534         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22535         $sort | $uniq -u >UU/oldsyms
22536         set X `cat UU/oldsyms`
22537         shift
22538         case $# in
22539         0) ;;
22540         *)
22541                 cat <<EOM
22542 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22543 EOM
22544                 echo "# Variables propagated from previous config.sh file." >>config.sh
22545                 for sym in `cat UU/oldsyms`; do
22546                         echo "    Propagating $hint variable "'$'"$sym..."
22547                         eval 'tmp="$'"${sym}"'"'
22548                         echo "$tmp" | \
22549                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22550                 done
22551                 ;;
22552         esac
22553 fi
22554
22555 : Finish up by extracting the .SH files
22556 case "$alldone" in
22557 exit)
22558         $rm -rf UU
22559         echo "Extraction done."
22560         exit 0
22561         ;;
22562 cont)
22563         ;;
22564 '')
22565         dflt=''
22566         nostick=true
22567         $cat <<EOM
22568
22569 If you'd like to make any changes to the config.sh file before I begin
22570 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22571
22572 EOM
22573         rp="Press return or use a shell escape to edit config.sh:"
22574         . UU/myread
22575         nostick=''
22576         case "$ans" in
22577         '') ;;
22578         *) : in case they cannot read
22579                 sh 1>&4 -c "$ans";;
22580         esac
22581         ;;
22582 esac
22583
22584 : if this fails, just run all the .SH files by hand
22585 . ./config.sh
22586
22587 echo " "
22588 exec 1>&4
22589 pwd=`pwd`
22590 . ./UU/extract
22591 cd "$pwd"
22592
22593 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22594         dflt=y
22595         case "$silent" in
22596         true) ;;
22597         *)
22598                 $cat <<EOM
22599
22600 Now you need to generate make dependencies by running "$make depend".
22601 You might prefer to run it in background: "$make depend > makedepend.out &"
22602 It can take a while, so you might not want to run it right now.
22603
22604 EOM
22605                 ;;
22606         esac
22607         rp="Run $make depend now?"
22608         . UU/myread
22609         case "$ans" in
22610         y*)
22611                 $make depend && echo "Now you must run '$make'."
22612                 ;;
22613         *)
22614                 echo "You must run '$make depend' then '$make'."
22615                 ;;
22616         esac
22617 elif test -f [Mm]akefile; then
22618         echo " "
22619         echo "Now you must run a $make."
22620 else
22621         echo "Configure done."
22622 fi
22623
22624 if $test -f Policy.sh; then
22625     $cat <<EOM
22626
22627 If you compile $package on a different machine or from a different object
22628 directory, copy the Policy.sh file from this object directory to the
22629 new one before you run Configure -- this will help you with most of
22630 the policy defaults.
22631
22632 EOM
22633 fi
22634 if $test -f config.msg; then
22635     echo "Hmm.  I also noted the following information while running:"
22636     echo " "
22637     $cat config.msg >&4
22638     $rm -f config.msg
22639 fi
22640 $rm -f kit*isdone ark*isdone
22641 $rm -rf UU
22642
22643 : End of Configure
22644