New data for Unicode on older versions, thanks to Nicholas
[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 Thu May 10 00:08:36 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         --help|\
1570         -h) shift; error=true;;
1571         -r) shift; reuseval=true;;
1572         -s) shift; silent=true; realsilent=true;;
1573         -E) shift; alldone=exit;;
1574         -K) shift; knowitall=true;;
1575         -O) shift; override=true;;
1576         -S) shift; silent=true; extractsh=true;;
1577         -D)
1578                 shift
1579                 case "$1" in
1580                 *=)
1581                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1582                         echo "$me: ignoring -D $1" >&2
1583                         ;;
1584                 *=*) echo "$1" | \
1585                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1586                 *) echo "$1='define'" >> optdef.sh;;
1587                 esac
1588                 shift
1589                 ;;
1590         -U)
1591                 shift
1592                 case "$1" in
1593                 *=) echo "$1" >> optdef.sh;;
1594                 *=*)
1595                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1596                         echo "$me: ignoring -U $1" >&2
1597                         ;;
1598                 *) echo "$1='undef'" >> optdef.sh;;
1599                 esac
1600                 shift
1601                 ;;
1602         -A)
1603             shift
1604             xxx=''
1605             yyy="$1"
1606             zzz=''
1607             uuu=undef
1608             case "$yyy" in
1609             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1610                  case "$zzz" in
1611                  *:*) zzz='' ;;
1612                  *)   xxx=append
1613                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1614                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1615                  esac
1616                  ;;
1617             esac
1618             case "$xxx" in
1619             '')  case "$yyy" in
1620                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1621                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1622                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1623                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1624                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1625                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1626                  esac
1627                  ;;       
1628             esac
1629             case "$xxx" in
1630             append)
1631                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1632             clear)
1633                 echo "$yyy=''"                  >> posthint.sh ;;
1634             define)
1635                 case "$zzz" in
1636                 '') zzz=define ;;
1637                 esac
1638                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1639             eval)
1640                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1641             prepend)
1642                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1643             undef)
1644                 case "$zzz" in
1645                 '') zzz="$uuu" ;;
1646                 esac
1647                 echo "$yyy=$zzz"                >> posthint.sh ;;
1648             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1649             esac
1650             shift
1651             ;;
1652         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1653             exit 0;;
1654         --) break;;
1655         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1656         *) break;;
1657         esac
1658 done
1659
1660 case "$error" in
1661 true)
1662         cat >&2 <<EOM
1663 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1664                  [-U symbol] [-U symbol=] [-A command:symbol...]
1665   -d : use defaults for all answers.
1666   -e : go on without questioning past the production of config.sh.
1667   -f : specify an alternate default configuration file.
1668   -h : print this help message and exit (with an error status).
1669   -r : reuse C symbols value if possible (skips costly nm extraction).
1670   -s : silent mode, only echoes questions and essential information.
1671   -D : define symbol to have some value:
1672          -D symbol         symbol gets the value 'define'
1673          -D symbol=value   symbol gets the value 'value'
1674        common used examples (see INSTALL for more info):
1675          -Duse64bitint            use 64bit integers
1676          -Duse64bitall            use 64bit integers and pointers
1677          -Dusethreads             use thread support
1678          -Dinc_version_list=none  do not include older perl trees in @INC
1679          -DEBUGGING=none          DEBUGGING options
1680          -Dcc=gcc                 choose your compiler
1681          -Dprefix=/opt/perl5      choose your destination
1682   -E : stop at the end of questions, after having produced config.sh.
1683   -K : do not use unless you know what you are doing.
1684   -O : let -D and -U override definitions from loaded configuration file.
1685   -S : perform variable substitutions on all .SH files (can mix with -f)
1686   -U : undefine symbol:
1687          -U symbol    symbol gets the value 'undef'
1688          -U symbol=   symbol gets completely empty
1689        e.g.:  -Uversiononly
1690   -A : manipulate symbol after the platform specific hints have been applied:
1691          -A symbol=value                append " "value to symbol
1692          -A append:symbol=value         append value to symbol
1693          -A define:symbol=value         define symbol to have value
1694          -A clear:symbol                define symbol to be ''
1695          -A define:symbol               define symbol to be 'define'
1696          -A eval:symbol=value           define symbol to be eval of value
1697          -A prepend:symbol=value        prepend value to symbol
1698          -A undef:symbol                define symbol to be 'undef'
1699          -A undef:symbol=               define symbol to be ''
1700        e.g.:  -A prepend:libswanted='cl pthread '
1701   -V : print version number and exit (with a zero status).
1702 EOM
1703         exit 1
1704         ;;
1705 esac
1706
1707 : Sanity checks
1708 case "$fastread$alldone" in
1709 yescont|yesexit) ;;
1710 *)
1711         case "$extractsh" in
1712         true) ;;
1713         *)
1714                 if test ! -t 0; then
1715                         echo "Say 'sh Configure', not 'sh <Configure'"
1716                         exit 1
1717                 fi
1718                 ;;
1719         esac
1720         ;;
1721 esac
1722
1723 exec 4>&1
1724 case "$silent" in
1725 true) exec 1>/dev/null;;
1726 esac
1727
1728 : run the defines and the undefines, if any, but leave the file out there...
1729 touch optdef.sh
1730 . ./optdef.sh
1731 : create the posthint manipulation script and leave the file out there...
1732 touch posthint.sh
1733
1734 : set package name
1735 package=perl5
1736 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1737 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1738 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1739 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1740 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1741 esac
1742
1743 : Some greps do not return status, grrr.
1744 echo "grimblepritz" >grimble
1745 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1746         contains=contains
1747 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1748         contains=grep
1749 else
1750         contains=contains
1751 fi
1752 rm -f grimble
1753 : the following should work in any shell
1754 case "$contains" in
1755 contains*)
1756         echo " "
1757         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1758         cat >contains <<'EOSS'
1759 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1760 EOSS
1761 chmod +x contains
1762 esac
1763
1764 : Find the path to the source tree
1765 case "$src" in
1766 '') case "$0" in
1767     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1768          case "$src" in
1769          /*)    ;;
1770          .)     ;;
1771          *)     src=`cd ../$src && pwd` ;;
1772          esac
1773          ;;
1774     *)   src='.';;
1775     esac;;
1776 esac
1777 case "$src" in
1778 '')     src=/
1779         rsrc=/
1780         ;;
1781 /*) rsrc="$src";;
1782 *) rsrc="../$src";;
1783 esac
1784 if test -f $rsrc/Configure && \
1785         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1786 then
1787    : found it, so we are ok.
1788 else
1789         rsrc=''
1790         for src in . .. ../.. ../../.. ../../../..; do
1791                 if test -f ../$src/Configure && \
1792                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1793                 then
1794                         rsrc=../$src
1795                         break
1796                 fi
1797         done
1798 fi
1799 case "$rsrc" in
1800 '')
1801         cat <<EOM >&4
1802
1803 Sorry, I can't seem to locate the source dir for $package.  Please start
1804 Configure with an explicit path -- i.e. /some/path/Configure.
1805
1806 EOM
1807         exit 1
1808         ;;
1809 ../.)   rsrc='..';;
1810 *)
1811         echo " "
1812         echo "Sources for $package found in \"$src\"." >&4
1813         ;;
1814 esac
1815
1816 : script used to extract .SH files with variable substitutions
1817 cat >extract <<'EOS'
1818 PERL_CONFIG_SH=true
1819 echo "Doing variable substitutions on .SH files..."
1820 if test -f MANIFEST; then
1821         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1822 else
1823         echo "(Looking for .SH files under the source directory.)"
1824         set x `(cd "$src"; find . -name "*.SH" -print)`
1825 fi
1826 shift
1827 case $# in
1828 0) set x `(cd "$src"; echo *.SH)`; shift;;
1829 esac
1830 if test ! -f "$src/$1"; then
1831         shift
1832 fi
1833 mkdir_p='
1834 name=$1;
1835 create="";
1836 while test $name; do
1837         if test ! -d "$name"; then
1838                 create="$name $create";
1839                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1840                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1841         else
1842                 name="";
1843         fi;
1844 done;
1845 for file in $create; do
1846         mkdir $file;
1847 done
1848 '
1849 for file in $*; do
1850         case "$src" in
1851         ".")
1852                 case "$file" in
1853                 */*)
1854                         dir=`expr X$file : 'X\(.*\)/'`
1855                         file=`expr X$file : 'X.*/\(.*\)'`
1856                         (cd "$dir" && . ./$file)
1857                         ;;
1858                 *)
1859                         . ./$file
1860                         ;;
1861                 esac
1862                 ;;
1863         *)
1864                 case "$file" in
1865                 */*)
1866                         dir=`expr X$file : 'X\(.*\)/'`
1867                         file=`expr X$file : 'X.*/\(.*\)'`
1868                         (set x $dir; shift; eval $mkdir_p)
1869                         sh <"$src/$dir/$file"
1870                         ;;
1871                 *)
1872                         sh <"$src/$file"
1873                         ;;
1874                 esac
1875                 ;;
1876         esac
1877 done
1878 if test -f "$src/config_h.SH"; then
1879         if test ! -f config.h; then
1880         : oops, they left it out of MANIFEST, probably, so do it anyway.
1881         . "$src/config_h.SH"
1882         fi
1883 fi
1884 EOS
1885
1886 : extract files and exit if asked to do so
1887 case "$extractsh" in
1888 true)
1889         case "$realsilent" in
1890         true) ;;
1891         *) exec 1>&4;;
1892         esac
1893         case "$config_sh" in
1894         '') config_sh='config.sh';;
1895         esac
1896         echo " "
1897         echo "Fetching answers from $config_sh..."
1898         cd ..
1899         . $config_sh
1900         test "$override" && . ./optdef.sh
1901         echo " "
1902         . UU/extract
1903         rm -rf UU
1904         echo "Extraction done."
1905         exit 0
1906         ;;
1907 esac
1908
1909 : Eunice requires " " instead of "", can you believe it
1910 echo " "
1911 : Here we go...
1912 echo "Beginning of configuration questions for $package."
1913
1914 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1915
1916 : first determine how to suppress newline on echo command
1917 echo " "
1918 echo "Checking echo to see how to suppress newlines..."
1919 (echo "hi there\c" ; echo " ") >.echotmp
1920 if $contains c .echotmp >/dev/null 2>&1 ; then
1921         echo "...using -n."
1922         n='-n'
1923         c=''
1924 else
1925         cat <<'EOM'
1926 ...using \c
1927 EOM
1928         n=''
1929         c='\c'
1930 fi
1931 echo $n "The star should be here-->$c"
1932 echo '*'
1933 rm -f .echotmp
1934
1935 : Now test for existence of everything in MANIFEST
1936 echo " "
1937 if test -f "$rsrc/MANIFEST"; then
1938         echo "First let's make sure your kit is complete.  Checking..." >&4
1939         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1940         rm -f missing
1941         tmppwd=`pwd`
1942         for filelist in x??; do
1943                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1944         done
1945         if test -s missing; then
1946                 cat missing >&4
1947                 cat >&4 <<'EOM'
1948
1949 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1950
1951 You have the option of continuing the configuration process, despite the
1952 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1953 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1954 and contact the author (perlbug@perl.org).
1955
1956 EOM
1957                 echo $n "Continue? [n] $c" >&4
1958                 read ans
1959                 case "$ans" in
1960                 y*)
1961                         echo "Continuing..." >&4
1962                         rm -f missing
1963                         ;;
1964                 *)
1965                         echo "ABORTING..." >&4
1966                         kill $$
1967                         ;;
1968                 esac
1969         else
1970                 echo "Looks good..."
1971         fi
1972 else
1973         echo "There is no MANIFEST file.  I hope your kit is complete !"
1974 fi
1975 rm -f missing x??
1976
1977 echo " "
1978 : Find the appropriate value for a newline for tr
1979 if test -n "$DJGPP"; then
1980        trnl='\012'
1981 fi
1982 if test X"$trnl" = X; then
1983         case "`echo foo|tr '\n' x 2>/dev/null`" in
1984         foox) trnl='\n' ;;
1985         esac
1986 fi
1987 if test X"$trnl" = X; then
1988         case "`echo foo|tr '\012' x 2>/dev/null`" in
1989         foox) trnl='\012' ;;
1990         esac
1991 fi
1992 if test X"$trnl" = X; then
1993        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1994        fooxy) trnl='\n\r' ;;
1995        esac
1996 fi
1997 if test X"$trnl" = X; then
1998         cat <<EOM >&2
1999
2000 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2001
2002 EOM
2003         exit 1
2004 fi
2005
2006 : compute the number of columns on the terminal for proper question formatting
2007 case "$COLUMNS" in
2008 '') COLUMNS='80';;
2009 esac
2010
2011 : set up the echo used in my read
2012 myecho="case \"\$xxxm\" in
2013 '') echo $n \"\$rp $c\" >&4;;
2014 *) case \"\$rp\" in
2015         '') echo $n \"[\$xxxm] $c\";;
2016         *)
2017                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2018                         echo \"\$rp\" >&4
2019                         echo $n \"[\$xxxm] $c\" >&4
2020                 else
2021                         echo $n \"\$rp [\$xxxm] $c\" >&4
2022                 fi
2023                 ;;
2024         esac;;
2025 esac"
2026
2027 : now set up to do reads with possible shell escape and default assignment
2028 cat <<EOSC >myread
2029 $startsh
2030 xxxm=\$dflt
2031 $myecho
2032 ans='!'
2033 case "\$fastread" in
2034 yes) case "\$dflt" in
2035         '') ;;
2036         *) ans='';
2037                 case "\$silent-\$rp" in
2038                 true-) ;;
2039                 *) echo " " >&4;;
2040                 esac;;
2041         esac;;
2042 *) case "\$silent" in
2043         true) case "\$rp" in
2044                 '') ans='';;
2045                 esac;;
2046         esac;;
2047 esac
2048 while expr "X\$ans" : "X!" >/dev/null; do
2049         read answ
2050         set x \$xxxm
2051         shift
2052         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2053         case  "\$answ" in
2054         "!")
2055                 sh 1>&4
2056                 echo " "
2057                 $myecho
2058                 ;;
2059         !*)
2060                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2061                 shift
2062                 sh 1>&4 -c "\$*"
2063                 echo " "
2064                 $myecho
2065                 ;;
2066         "\$ans")
2067                 case "\$ans" in
2068                 \\&*)
2069                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2070                         shift
2071                         case "\$1" in
2072                         -d)
2073                                 fastread=yes
2074                                 echo "(OK, I'll run with -d after this question.)" >&4
2075                                 ;;
2076                         -*)
2077                                 echo "*** Sorry, \$1 not supported yet." >&4
2078                                 ;;
2079                         esac
2080                         $myecho
2081                         ans=!
2082                         ;;
2083                 esac;;
2084         *)
2085                 case "\$aok" in
2086                 y)
2087                         echo "*** Substitution done -- please confirm."
2088                         xxxm="\$ans"
2089                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2090                         xxxm="\$ans"
2091                         ans=!
2092                         ;;
2093                 *)
2094                         echo "*** Error -- try again."
2095                         ans=!
2096                         ;;
2097                 esac
2098                 $myecho
2099                 ;;
2100         esac
2101         case "\$ans\$xxxm\$nostick" in
2102         '')
2103                 ans=!
2104                 $myecho
2105                 ;;
2106         esac
2107 done
2108 case "\$ans" in
2109 '') ans="\$xxxm";;
2110 esac
2111 EOSC
2112
2113 : create .config dir to save info across Configure sessions
2114 test -d ../.config || mkdir ../.config
2115 cat >../.config/README <<EOF
2116 This directory created by Configure to save information that should
2117 persist across sessions for $package.
2118
2119 You may safely delete it if you wish.
2120 EOF
2121
2122 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2123 case "$usedevel" in
2124 $define|true|[yY]*) ;;
2125 *) case "$xversion" in
2126    *[13579])
2127         cat >&4 <<EOH
2128 *** WHOA THERE!!! ***
2129
2130     This is an UNSTABLE DEVELOPMENT release.
2131     The version of this $package distribution is $xversion, that is, odd,
2132     (as opposed to even) and that signifies a development release.
2133     If you want a maintenance release, you want an even-numbered version.
2134
2135     Do ***NOT*** install this into production use.
2136     Data corruption and crashes are possible.
2137
2138     It is most seriously suggested that you do not continue any further
2139     unless you want to help in developing and debugging Perl.
2140
2141     If you *still* want to build perl, you can answer 'y' now,
2142     or pass -Dusedevel to Configure.
2143
2144 EOH
2145         rp='Do you really want to continue?'
2146         dflt='n'
2147         . ./myread
2148         case "$ans" in
2149         [yY]) echo >&4 "Okay, continuing."
2150               usedevel="$define" ;;
2151         *) echo >&4 "Okay, bye."
2152            exit 1
2153            ;;
2154         esac
2155         ;;
2156     esac
2157     ;;
2158 esac
2159 case "$usedevel" in
2160 $define|true|[yY]*)
2161         case "$versiononly" in
2162         '') versiononly="$define" ;;
2163         esac
2164         case "$installusrbinperl" in
2165         '') installusrbinperl="$undef" ;;
2166         esac
2167         ;;
2168 esac
2169
2170 : general instructions
2171 needman=true
2172 firsttime=true
2173 user=`(logname) 2>/dev/null`
2174 case "$user" in
2175 '') user=`whoami 2>&1`;;
2176 esac
2177 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2178         firsttime=false
2179         echo " "
2180         rp='Would you like to see the instructions?'
2181         dflt=n
2182         . ./myread
2183         case "$ans" in
2184         [yY]*) ;;
2185         *) needman=false;;
2186         esac
2187 fi
2188 if $needman; then
2189         cat <<EOH
2190
2191 This installation shell script will examine your system and ask you questions
2192 to determine how the perl5 package should be installed. If you get
2193 stuck on a question, you may use a ! shell escape to start a subshell or
2194 execute a command.  Many of the questions will have default answers in square
2195 brackets; typing carriage return will give you the default.
2196
2197 On some of the questions which ask for file or directory names you are allowed
2198 to use the ~name construct to specify the login directory belonging to "name",
2199 even if you don't have a shell which knows about that.  Questions where this is
2200 allowed will be marked "(~name ok)".
2201
2202 EOH
2203         rp=''
2204         dflt='Type carriage return to continue'
2205         . ./myread
2206         cat <<'EOH'
2207
2208 The prompter used in this script allows you to use shell variables and
2209 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2210 in the default answer, as if the default line was a set of arguments given to a
2211 script shell.  This means you may also use $* to repeat the whole default line,
2212 so you do not have to re-type everything to add something to the default.
2213
2214 Everytime there is a substitution, you will have to confirm.  If there is an
2215 error (e.g. an unmatched backtick), the default answer will remain unchanged
2216 and you will be prompted again.
2217
2218 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2219 the questions and use the computed defaults (or the previous answers if there
2220 was already a config.sh file). Type 'Configure -h' for a list of options.
2221 You may also start interactively and then answer '& -d' at any prompt to turn
2222 on the non-interactive behaviour for the remainder of the execution.
2223
2224 EOH
2225         . ./myread
2226         cat <<EOH
2227
2228 Much effort has been expended to ensure that this shell script will run on any
2229 Unix system.  If despite that it blows up on yours, your best bet is to edit
2230 Configure and run it again.  If you can't run Configure for some reason,
2231 you'll have to generate a config.sh file by hand.  Whatever problems you
2232 have, let me (perlbug@perl.org) know how I blew it.
2233
2234 This installation script affects things in two ways:
2235
2236 1) it may do direct variable substitutions on some of the files included
2237    in this kit.
2238 2) it builds a config.h file for inclusion in C programs.  You may edit
2239    any of these files as the need arises after running this script.
2240
2241 If you make a mistake on a question, there is no easy way to back up to it
2242 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2243 files.  Configure will offer to let you do this before it runs the SH files.
2244
2245 EOH
2246         dflt='Type carriage return to continue'
2247         . ./myread
2248         case "$firsttime" in
2249         true) echo $user >>../.config/instruct;;
2250         esac
2251 fi
2252
2253 : find out where common programs are
2254 echo " "
2255 echo "Locating common programs..." >&4
2256 cat <<EOSC >loc
2257 $startsh
2258 case \$# in
2259 0) exit 1;;
2260 esac
2261 thing=\$1
2262 shift
2263 dflt=\$1
2264 shift
2265 for dir in \$*; do
2266         case "\$thing" in
2267         .)
2268         if test -d \$dir/\$thing; then
2269                 echo \$dir
2270                 exit 0
2271         fi
2272         ;;
2273         *)
2274         for thisthing in \$dir/\$thing; do
2275                 : just loop through to pick last item
2276         done
2277         if test -f \$thisthing; then
2278                 echo \$thisthing
2279                 exit 0
2280         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2281                 echo \$thisthing
2282                 exit 0
2283         elif test -f \$dir/\$thing.exe; then
2284                 if test -n "$DJGPP"; then
2285                         echo \$dir/\$thing.exe
2286                 elif test "$eunicefix" != ":"; then
2287                         : on Eunice apparently
2288                         echo \$dir/\$thing
2289                         exit 0
2290                 fi
2291                 exit 0
2292         fi
2293         ;;
2294         esac
2295 done
2296 echo \$dflt
2297 exit 1
2298 EOSC
2299 chmod +x loc
2300 $eunicefix loc
2301 loclist="
2302 awk
2303 cat
2304 chmod
2305 comm
2306 cp
2307 echo
2308 expr
2309 grep
2310 ls
2311 mkdir
2312 rm
2313 sed
2314 sort
2315 touch
2316 tr
2317 uniq
2318 "
2319 trylist="
2320 Mcc
2321 ar
2322 bison
2323 byacc
2324 cpp
2325 csh
2326 date
2327 egrep
2328 gmake
2329 gzip
2330 less
2331 ln
2332 make
2333 more
2334 nm
2335 nroff
2336 pg
2337 test
2338 uname
2339 zip
2340 "
2341 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2342 pth="$pth /lib /usr/lib"
2343 for file in $loclist; do
2344         eval xxx=\$$file
2345         case "$xxx" in
2346         /*|?:[\\/]*)
2347                 if test -f "$xxx"; then
2348                         : ok
2349                 else
2350                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2351                         xxx=`./loc $file $file $pth`
2352                 fi
2353                 ;;
2354         '') xxx=`./loc $file $file $pth`;;
2355         *) xxx=`./loc $xxx $xxx $pth`;;
2356         esac
2357         eval $file=$xxx$_exe
2358         eval _$file=$xxx
2359         case "$xxx" in
2360         /*)
2361                 echo $file is in $xxx.
2362                 ;;
2363         ?:[\\/]*)
2364                 echo $file is in $xxx.
2365                 ;;
2366         *)
2367                 echo "I don't know where '$file' is, and my life depends on it." >&4
2368                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2369                 exit 1
2370                 ;;
2371         esac
2372 done
2373 echo " "
2374 echo "Don't worry if any of the following aren't found..."
2375 say=offhand
2376 for file in $trylist; do
2377         eval xxx=\$$file
2378         case "$xxx" in
2379         /*|?:[\\/]*)
2380                 if test -f "$xxx"; then
2381                         : ok
2382                 else
2383                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2384                         xxx=`./loc $file $file $pth`
2385                 fi
2386                 ;;
2387         '') xxx=`./loc $file $file $pth`;;
2388         *) xxx=`./loc $xxx $xxx $pth`;;
2389         esac
2390         eval $file=$xxx$_exe
2391         eval _$file=$xxx
2392         case "$xxx" in
2393         /*)
2394                 echo $file is in $xxx.
2395                 ;;
2396         ?:[\\/]*)
2397                 echo $file is in $xxx.
2398                 ;;
2399         *)
2400                 echo "I don't see $file out there, $say."
2401                 say=either
2402                 ;;
2403         esac
2404 done
2405 case "$egrep" in
2406 egrep)
2407         echo "Substituting grep for egrep."
2408         egrep=$grep
2409         _egrep=$grep
2410         ;;
2411 esac
2412 case "$ln" in
2413 ln)
2414         echo "Substituting cp for ln."
2415         ln=$cp
2416         _ln=$cp
2417         ;;
2418 esac
2419 case "$make" in
2420 make)   
2421         case "$gmake" in
2422         gmake)
2423         echo "I can't find make or gmake, and my life depends on it." >&4
2424         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2425         exit 1
2426         ;;
2427         esac
2428         ;;
2429 esac    
2430 case "$gmake" in
2431 gmake)  ;;
2432 *)      # We can't have osname yet.
2433         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2434                 # Assume that gmake, if found, is definitely GNU make
2435                 # and prefer it over the system make.
2436                 echo "Substituting gmake for make."
2437                 make=$gmake
2438                 _make=$gmake
2439         fi
2440         ;;
2441 esac
2442 case "$test" in
2443 test)
2444         echo "Hopefully test is built into your sh."
2445         ;;
2446 *)
2447         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2448                 echo "Using the test built into your sh."
2449                 test=test
2450                 _test=test
2451         fi
2452         ;;
2453 esac
2454 case "$echo" in
2455 echo)
2456         echo "Hopefully echo is built into your sh."
2457         ;;
2458 '') ;;
2459 *)
2460         echo " "
2461 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2462         $echo $n "hi there$c" >foo1
2463         echo $n "hi there$c" >foo2
2464         if cmp foo1 foo2 >/dev/null 2>&1; then
2465                 echo "They are compatible.  In fact, they may be identical."
2466         else
2467                 case "$n" in
2468                 '-n') n='' c='\c';;
2469                 *) n='-n' c='';;
2470                 esac
2471                 cat <<FOO
2472 They are not compatible!  You are probably running ksh on a non-USG system.
2473 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2474 have echo built in and we may have to run some Bourne shell scripts.  That
2475 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2476
2477 FOO
2478                 $echo $n "The star should be here-->$c"
2479                 $echo "*"
2480         fi
2481         $rm -f foo1 foo2
2482         ;;
2483 esac
2484
2485 cat <<EOS >trygcc
2486 $startsh
2487 EOS
2488 cat <<'EOSC' >>trygcc
2489 case "$cc" in
2490 '') ;;
2491 *)  $rm -f try try.*
2492     $cat >try.c <<EOM
2493 int main(int argc, char *argv[]) {
2494   return 0;
2495 }
2496 EOM
2497     if $cc -o try $ccflags $ldflags try.c; then
2498        :
2499     else
2500         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2501         despair=yes
2502         trygcc=yes
2503         case "$cc" in
2504         *gcc*) trygcc=no ;;
2505         esac
2506         case "`$cc -v -c try.c 2>&1`" in
2507         *gcc*) trygcc=no ;;
2508         esac
2509         if $test X"$trygcc" = Xyes; then
2510             if gcc -o try -c try.c; then
2511                 echo " "
2512                 echo "You seem to have a working gcc, though." >&4
2513                 rp="Would you like to use it?"
2514                 dflt=y
2515                 if $test -f myread; then
2516                     . ./myread
2517                 else
2518                     if $test -f UU/myread; then
2519                         . ./UU/myread
2520                     else
2521                         echo "Cannot find myread, sorry.  Aborting." >&2
2522                         exit 1
2523                     fi
2524                 fi  
2525                 case "$ans" in
2526                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2527                        if $test -f usethreads.cbu; then
2528                            $cat >&4 <<EOM 
2529
2530 *** However, any setting of the C compiler flags (e.g. for thread support)
2531 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2532 *** (together with e.g. -Dusethreads).
2533
2534 EOM
2535                        fi;;
2536                 esac
2537             fi
2538         fi
2539     fi
2540     $rm -f try try.*
2541     ;;
2542 esac
2543 EOSC
2544
2545 cat <<EOS >checkcc
2546 $startsh
2547 EOS
2548 cat <<'EOSC' >>checkcc
2549 case "$cc" in        
2550 '') ;;
2551 *)  $rm -f try try.*              
2552     $cat >try.c <<EOM
2553 int main(int argc, char *argv[]) {
2554   return 0;
2555 }
2556 EOM
2557     if $cc -o try $ccflags $ldflags try.c; then
2558        :
2559     else
2560         if $test X"$despair" = Xyes; then
2561            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2562         fi
2563         $cat >&4 <<EOM         
2564 You need to find a working C compiler.
2565 Either (purchase and) install the C compiler supplied by your OS vendor,
2566 or for a free C compiler try http://gcc.gnu.org/
2567 I cannot continue any further, aborting.
2568 EOM
2569         exit 1
2570     fi
2571     $rm -f try try.*
2572     ;;
2573 esac
2574 EOSC
2575
2576 : determine whether symbolic links are supported
2577 echo " "
2578 $touch blurfl
2579 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2580         echo "Symbolic links are supported." >&4
2581         lns="$ln -s"
2582 else
2583         echo "Symbolic links are NOT supported." >&4
2584         lns="$ln"
2585 fi
2586 $rm -f blurfl sym
2587
2588 : determine whether symbolic links are supported
2589 echo " "
2590 case "$lns" in
2591 *"ln"*" -s")
2592         echo "Checking how to test for symbolic links..." >&4
2593         $lns blurfl sym
2594         if $test "X$issymlink" = X; then
2595                 case "$newsh" in
2596                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2597                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2598                 esac
2599                 if test $? = 0; then
2600                         issymlink="test -h"
2601                 else
2602                         echo "Your builtin 'test -h' may be broken." >&4
2603                         case "$test" in
2604                         /*)     ;;
2605                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2606                                 for p in $pth
2607                                 do
2608                                         if test -f "$p/$test"; then
2609                                                 test="$p/$test"
2610                                                 break
2611                                         fi
2612                                 done
2613                                 ;;
2614                         esac
2615                         case "$test" in
2616                         /*)
2617                                 echo "Trying external '$test -h'." >&4
2618                                 issymlink="$test -h"
2619                                 if $test ! -h sym >/dev/null 2>&1; then
2620                                         echo "External '$test -h' is broken, too." >&4
2621                                         issymlink=''
2622                                 fi
2623                                 ;;
2624                         *)      issymlink='' ;;
2625                         esac
2626                 fi              
2627         fi
2628         if $test "X$issymlink" = X; then
2629                 if $test -L sym 2>/dev/null; then
2630                         issymlink="$test -L"
2631                         echo "The builtin '$test -L' worked." >&4
2632                 fi
2633         fi
2634         if $test "X$issymlink" != X; then
2635                 echo "You can test for symbolic links with '$issymlink'." >&4
2636         else
2637                 echo "I do not know how you can test for symbolic links." >&4
2638         fi
2639         $rm -f blurfl sym
2640         ;;
2641 *)      echo "No symbolic links, so not testing for their testing..." >&4
2642         ;;
2643 esac
2644 echo " "
2645
2646
2647 case "$mksymlinks" in
2648 $define|true|[yY]*)
2649         case "$src" in
2650         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2651                 exit 1
2652                 ;;
2653         *)      case "$lns:$issymlink" in
2654                 *"ln"*" -s:"*"test -"?)
2655                         echo "Creating the symbolic links..." >&4
2656                         echo "(First creating the subdirectories...)" >&4
2657                         cd ..
2658                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2659                                 read directory
2660                                 test -z "$directory" && break
2661                                 mkdir -p $directory
2662                         done
2663                         # Sanity check 1.
2664                         if test ! -d t/base; then
2665                                 echo "Failed to create the subdirectories.  Aborting." >&4
2666                                 exit 1
2667                         fi
2668                         echo "(Then creating the symlinks...)" >&4
2669                         awk '{print $1}' $src/MANIFEST | while true; do
2670                                 read filename
2671                                 test -z "$filename" && break
2672                                 if test -f $filename; then
2673                                         if $issymlink $filename; then
2674                                                 rm -f $filename
2675                                         fi
2676                                 fi
2677                                 if test -f $filename; then
2678                                         echo "$filename already exists, not symlinking."
2679                                 else
2680                                         ln -s $src/$filename $filename
2681                                 fi
2682                         done
2683                         # Sanity check 2.
2684                         if test ! -f t/base/lex.t; then
2685                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2686                                 exit 1
2687                         fi
2688                         cd UU
2689                         ;;
2690                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2691                         ;;
2692                 esac
2693                 ;;
2694         esac
2695         ;;
2696 esac
2697
2698
2699 case "$usecrosscompile" in
2700 $define|true|[yY]*)
2701         $echo "Cross-compiling..."
2702         croak=''
2703         case "$cc" in
2704         *-*-gcc) # A cross-compiling gcc, probably.
2705             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2706             ar=$targetarch-ar
2707             # leave out ld, choosing it is more complex
2708             nm=$targetarch-nm
2709             ranlib=$targetarch-ranlib
2710             $echo 'extern int foo;' > try.c
2711             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2712             shift
2713             if $test $# -gt 0; then
2714                 incpth="$incpth $*"
2715                 incpth="`$echo $incpth|$sed 's/^ //'`"
2716                 echo "Guessing incpth '$incpth'." >&4
2717                 for i in $*; do
2718                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2719                     if $test -d $j; then
2720                         libpth="$libpth $j"
2721                     fi
2722                 done   
2723                 libpth="`$echo $libpth|$sed 's/^ //'`"
2724                 echo "Guessing libpth '$libpth'." >&4
2725             fi
2726             $rm -f try.c
2727             ;;
2728         esac
2729         case "$targetarch" in
2730         '') echo "Targetarch not defined." >&4; croak=y ;;
2731         *)  echo "Using targetarch $targetarch." >&4 ;;
2732         esac
2733         case "$incpth" in
2734         '') echo "Incpth not defined." >&4; croak=y ;;
2735         *)  echo "Using incpth '$incpth'." >&4 ;;
2736         esac
2737         case "$libpth" in
2738         '') echo "Libpth not defined." >&4; croak=y ;;
2739         *)  echo "Using libpth '$libpth'." >&4 ;;
2740         esac
2741         case "$usrinc" in
2742         '') for i in $incpth; do
2743                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2744                     usrinc=$i
2745                     echo "Guessing usrinc $usrinc." >&4
2746                     break
2747                 fi
2748             done
2749             case "$usrinc" in
2750             '') echo "Usrinc not defined." >&4; croak=y ;;
2751             esac
2752             ;;
2753         *)  echo "Using usrinc $usrinc." >&4 ;;
2754         esac
2755         case "$targethost" in
2756         '') echo "Targethost not defined." >&4; croak=y ;;
2757         *)  echo "Using targethost $targethost." >&4
2758         esac
2759         locincpth=' '
2760         loclibpth=' '
2761         case "$croak" in
2762         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2763         esac
2764         case "$src" in
2765         /*) run=$src/Cross/run
2766             targetmkdir=$src/Cross/mkdir
2767             to=$src/Cross/to
2768             from=$src/Cross/from
2769             ;;
2770         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2771             run=$pwd/Cross/run
2772             targetmkdir=$pwd/Cross/mkdir
2773             to=$pwd/Cross/to
2774             from=$pwd/Cross/from
2775             ;;
2776         esac
2777         case "$targetrun" in
2778         '') targetrun=ssh ;;
2779         esac
2780         case "$targetto" in
2781         '') targetto=scp ;;
2782         esac
2783         case "$targetfrom" in
2784         '') targetfrom=scp ;;
2785         esac
2786         run=$run-$targetrun
2787         to=$to-$targetto
2788         from=$from-$targetfrom
2789         case "$targetdir" in
2790         '')  targetdir=/tmp
2791              echo "Guessing targetdir $targetdir." >&4
2792              ;;
2793         esac
2794         case "$targetuser" in
2795         '')  targetuser=root
2796              echo "Guessing targetuser $targetuser." >&4
2797              ;;
2798         esac
2799         case "$targetfrom" in
2800         scp)    q=-q ;;
2801         *)      q='' ;;
2802         esac
2803         case "$targetrun" in
2804         ssh|rsh)
2805             cat >$run <<EOF
2806 #!/bin/sh
2807 case "\$1" in
2808 -cwd)
2809   shift
2810   cwd=\$1
2811   shift
2812   ;;
2813 esac
2814 case "\$cwd" in
2815 '') cwd=$targetdir ;;
2816 esac
2817 exe=\$1
2818 shift
2819 if $test ! -f \$exe.xok; then
2820   $to \$exe
2821   $touch \$exe.xok
2822 fi
2823 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2824 EOF
2825             ;;
2826         *)  echo "Unknown targetrun '$targetrun'" >&4
2827             exit 1
2828             ;;
2829         esac
2830         case "$targetmkdir" in
2831         */Cross/mkdir)
2832             cat >$targetmkdir <<EOF
2833 #!/bin/sh
2834 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2835 EOF
2836             $chmod a+rx $targetmkdir
2837             ;;
2838         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2839             exit 1
2840             ;;
2841         esac
2842         case "$targetto" in
2843         scp|rcp)
2844             cat >$to <<EOF
2845 #!/bin/sh
2846 for f in \$@
2847 do
2848   case "\$f" in
2849   /*)
2850     $targetmkdir \`dirname \$f\`
2851     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2852     ;;
2853   *)
2854     $targetmkdir $targetdir/\`dirname \$f\`
2855     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2856     ;;
2857   esac
2858 done
2859 exit 0
2860 EOF
2861             ;;
2862         cp) cat >$to <<EOF
2863 #!/bin/sh
2864 for f in \$@
2865 do
2866   case "\$f" in
2867   /*)
2868     $mkdir -p $targetdir/\`dirname \$f\`
2869     $cp \$f $targetdir/\$f || exit 1
2870     ;;
2871   *)
2872     $targetmkdir $targetdir/\`dirname \$f\`
2873     $cp \$f $targetdir/\$f || exit 1
2874     ;;
2875   esac
2876 done
2877 exit 0
2878 EOF
2879             ;;
2880         *)  echo "Unknown targetto '$targetto'" >&4
2881             exit 1
2882             ;;
2883         esac
2884         case "$targetfrom" in
2885         scp|rcp)
2886           cat >$from <<EOF
2887 #!/bin/sh
2888 for f in \$@
2889 do
2890   $rm -f \$f
2891   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2892 done
2893 exit 0
2894 EOF
2895             ;;
2896         cp) cat >$from <<EOF
2897 #!/bin/sh
2898 for f in \$@
2899 do
2900   $rm -f \$f
2901   cp $targetdir/\$f . || exit 1
2902 done
2903 exit 0
2904 EOF
2905             ;;
2906         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2907             exit 1
2908             ;;
2909         esac
2910         if $test ! -f $run; then
2911             echo "Target 'run' script '$run' not found." >&4
2912         else
2913             $chmod a+rx $run
2914         fi
2915         if $test ! -f $to; then
2916             echo "Target 'to' script '$to' not found." >&4
2917         else
2918             $chmod a+rx $to
2919         fi
2920         if $test ! -f $from; then
2921             echo "Target 'from' script '$from' not found." >&4
2922         else
2923             $chmod a+rx $from
2924         fi
2925         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2926             exit 1
2927         fi
2928         cat >&4 <<EOF
2929 Using '$run' for remote execution,
2930 and '$from' and '$to'
2931 for remote file transfer.
2932 EOF
2933         ;;
2934 *)      run=''
2935         to=:
2936         from=:
2937         usecrosscompile='undef'
2938         targetarch=''
2939         ;;
2940 esac
2941
2942 : see whether [:lower:] and [:upper:] are supported character classes
2943 echo " "
2944 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2945 ABYZ)
2946         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2947         up='[:upper:]'
2948         low='[:lower:]'
2949         ;;
2950 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2951         # (0xd9 and 0xe2), therefore that is a nice testing point.
2952         if test "X$up" = X -o "X$low" = X; then
2953             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2954             rs) up='[A-Z]'
2955                 low='[a-z]'
2956                 ;;
2957             esac
2958         fi
2959         if test "X$up" = X -o "X$low" = X; then
2960             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2961             rs) up='A-Z'
2962                 low='a-z'
2963                 ;;
2964             esac
2965         fi
2966         if test "X$up" = X -o "X$low" = X; then
2967             case "`echo RS | od -x 2>/dev/null`" in
2968             *D9E2*|*d9e2*)
2969                 echo "Hey, this might be EBCDIC." >&4
2970                 if test "X$up" = X -o "X$low" = X; then
2971                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2972                     rs) up='[A-IJ-RS-Z]'
2973                         low='[a-ij-rs-z]'
2974                         ;;
2975                     esac
2976                 fi
2977                 if test "X$up" = X -o "X$low" = X; then
2978                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2979                     rs) up='A-IJ-RS-Z'
2980                         low='a-ij-rs-z'
2981                         ;;
2982                     esac
2983                 fi
2984                 ;;
2985             esac
2986         fi
2987 esac
2988 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2989 rs)
2990     echo "Using $up and $low to convert case." >&4
2991     ;;
2992 *)
2993     echo "I don't know how to translate letters from upper to lower case." >&4
2994     echo "Your tr is not acting any way I know of." >&4
2995     exit 1
2996     ;;
2997 esac
2998 : set up the translation script tr, must be called with ./tr of course
2999 cat >tr <<EOSC
3000 $startsh
3001 case "\$1\$2" in
3002 '[A-Z][a-z]') exec $tr '$up' '$low';;
3003 '[a-z][A-Z]') exec $tr '$low' '$up';;
3004 esac
3005 exec $tr "\$@"
3006 EOSC
3007 chmod +x tr
3008 $eunicefix tr
3009
3010 : Try to determine whether config.sh was made on this system
3011 case "$config_sh" in
3012 '')
3013 myuname=`$uname -a 2>/dev/null`
3014 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3015 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3016 # because the A-Z/a-z are not consecutive.
3017 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3018         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3019 newmyuname="$myuname"
3020 dflt=n
3021 case "$knowitall" in
3022 '')
3023         if test -f ../config.sh; then
3024                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3025                         eval "`grep myuname= ../config.sh`"
3026                 fi
3027                 if test "X$myuname" = "X$newmyuname"; then
3028                         dflt=y
3029                 fi
3030         fi
3031         ;;
3032 *) dflt=y;;
3033 esac
3034
3035 : Get old answers from old config file if Configure was run on the
3036 : same system, otherwise use the hints.
3037 hint=default
3038 cd ..
3039 if test -f config.sh; then
3040         echo " "
3041         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3042         . UU/myread
3043         case "$ans" in
3044         n*|N*) echo "OK, I'll ignore it."
3045                 mv config.sh config.sh.old
3046                 myuname="$newmyuname"
3047                 ;;
3048         *)  echo "Fetching default answers from your old config.sh file..." >&4
3049                 tmp_n="$n"
3050                 tmp_c="$c"
3051                 tmp_sh="$sh"
3052                 . ./config.sh
3053                 cp config.sh UU
3054                 n="$tmp_n"
3055                 c="$tmp_c"
3056                 : Older versions did not always set $sh.  Catch re-use of such
3057                 : an old config.sh.
3058                 case "$sh" in
3059                 '') sh="$tmp_sh" ;;
3060                 esac
3061                 hint=previous
3062                 ;;
3063         esac
3064 fi
3065 . ./UU/checkcc
3066 if test ! -f config.sh; then
3067         $cat <<EOM
3068
3069 First time through, eh?  I have some defaults handy for some systems
3070 that need some extra help getting the Configure answers right:
3071
3072 EOM
3073         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3074         dflt=''
3075         : Half the following guesses are probably wrong... If you have better
3076         : tests or hints, please send them to perlbug@perl.org
3077         : The metaconfig authors would also appreciate a copy...
3078         $test -f /irix && osname=irix
3079         $test -f /xenix && osname=sco_xenix
3080         $test -f /dynix && osname=dynix
3081         $test -f /dnix && osname=dnix
3082         $test -f /lynx.os && osname=lynxos
3083         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3084         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3085         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3086         $test -f /bin/mips && /bin/mips && osname=mips
3087         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3088                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3089         $test -d /usr/apollo/bin && osname=apollo
3090         $test -f /etc/saf/_sactab && osname=svr4
3091         $test -d /usr/include/minix && osname=minix
3092         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3093         if $test -d /MachTen -o -d /MachTen_Folder; then
3094                 osname=machten
3095                 if $test -x /sbin/version; then
3096                         osvers=`/sbin/version | $awk '{print $2}' |
3097                         $sed -e 's/[A-Za-z]$//'`
3098                 elif $test -x /usr/etc/version; then
3099                         osvers=`/usr/etc/version | $awk '{print $2}' |
3100                         $sed -e 's/[A-Za-z]$//'`
3101                 else
3102                         osvers="$2.$3"
3103                 fi
3104         fi
3105
3106         $test -f /sys/posix.dll &&
3107                 $test -f /usr/bin/what &&
3108                 set X `/usr/bin/what /sys/posix.dll` &&
3109                 $test "$3" = UWIN &&
3110                 osname=uwin &&
3111                 osvers="$5"
3112
3113         if $test -f $uname; then
3114                 set X $myuname
3115                 shift
3116
3117                 case "$5" in
3118                 fps*) osname=fps ;;
3119                 mips*)
3120                         case "$4" in
3121                         umips) osname=umips ;;
3122                         *) osname=mips ;;
3123                         esac;;
3124                 [23]100) osname=mips ;;
3125                 next*) osname=next ;;
3126                 i386*)
3127                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3128                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3129                                 osname='sco'
3130                                 osvers=$tmp
3131                         elif $test -f /etc/kconfig; then
3132                                 osname=isc
3133                                 if test "$lns" = "$ln -s"; then
3134                                         osvers=4
3135                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3136                                         osvers=3
3137                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3138                                         osvers=2
3139                                 fi
3140                         fi
3141                         tmp=''
3142                         ;;
3143                 pc*)
3144                         if test -n "$DJGPP"; then
3145                                 osname=dos
3146                                 osvers=djgpp
3147                         fi
3148                         ;;
3149                 esac
3150
3151                 case "$1" in
3152                 aix) osname=aix
3153                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3154                         case "$tmp" in
3155                         # oslevel can fail with:
3156                         # oslevel: Unable to acquire lock.
3157                         *not\ found) osvers="$4"."$3" ;;
3158                         '<3240'|'<>3240') osvers=3.2.0 ;;
3159                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3160                         '=3250'|'>3250') osvers=3.2.5 ;;
3161                         *) osvers=$tmp;;
3162                         esac
3163                         ;;
3164                 bsd386) osname=bsd386
3165                         osvers=`$uname -r`
3166                         ;;
3167                 cygwin*) osname=cygwin
3168                         osvers="$3"
3169                         ;;
3170                 *dc.osx) osname=dcosx
3171                         osvers="$3"
3172                         ;;
3173                 dnix) osname=dnix
3174                         osvers="$3"
3175                         ;;
3176                 domainos) osname=apollo
3177                         osvers="$3"
3178                         ;;
3179                 dgux)   osname=dgux
3180                         osvers="$3"
3181                         ;;
3182                 dragonfly) osname=dragonfly
3183                         osvers="$3"
3184                         ;;
3185                 dynixptx*) osname=dynixptx
3186                         osvers=`echo "$4"|sed 's/^v//'`
3187                         ;;
3188                 freebsd) osname=freebsd
3189                         osvers="$3" ;;
3190                 genix)  osname=genix ;;
3191                 gnu)    osname=gnu
3192                         osvers="$3" ;;
3193                 hp*)    osname=hpux
3194                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3195                         ;;
3196                 irix*)  osname=irix
3197                         case "$3" in
3198                         4*) osvers=4 ;;
3199                         5*) osvers=5 ;;
3200                         *)      osvers="$3" ;;
3201                         esac
3202                         ;;
3203                 linux)  osname=linux
3204                         case "$3" in
3205                         *)      osvers="$3" ;;
3206                         esac
3207                         ;;
3208                 MiNT)   osname=mint
3209                         ;;
3210                 netbsd*) osname=netbsd
3211                         osvers="$3"
3212                         ;;
3213                 news-os) osvers="$3"
3214                         case "$3" in
3215                         4*) osname=newsos4 ;;
3216                         *) osname=newsos ;;
3217                         esac
3218                         ;;
3219                 next*) osname=next ;;
3220                 nonstop-ux) osname=nonstopux ;;
3221                 openbsd) osname=openbsd
3222                         osvers="$3"
3223                         ;;
3224                 os2)    osname=os2
3225                         osvers="$4"
3226                         ;;
3227                 POSIX-BC | posix-bc ) osname=posix-bc
3228                         osvers="$3"
3229                         ;;
3230                 powerux | power_ux | powermax_os | powermaxos | \
3231                 powerunix | power_unix) osname=powerux
3232                         osvers="$3"
3233                         ;;
3234                 qnx) osname=qnx
3235                         osvers="$4"
3236                         ;;
3237                 solaris) osname=solaris
3238                         case "$3" in
3239                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3240                         *)      osvers="$3" ;;
3241                         esac
3242                         ;;
3243                 sunos) osname=sunos
3244                         case "$3" in
3245                         5*) osname=solaris
3246                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3247                         *)      osvers="$3" ;;
3248                         esac
3249                         ;;
3250                 titanos) osname=titanos
3251                         case "$3" in
3252                         1*) osvers=1 ;;
3253                         2*) osvers=2 ;;
3254                         3*) osvers=3 ;;
3255                         4*) osvers=4 ;;
3256                         *)      osvers="$3" ;;
3257                         esac
3258                         ;;
3259                 ultrix) osname=ultrix
3260                         osvers="$3"
3261                         ;;
3262                 osf1|mls+)      case "$5" in
3263                                 alpha)
3264                                         osname=dec_osf
3265                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3266                                         case "$osvers" in
3267                                         [1-9].[0-9]*) ;;
3268                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3269                                         esac
3270                                         ;;
3271                         hp*)    osname=hp_osf1  ;;
3272                         mips)   osname=mips_osf1 ;;
3273                         esac
3274                         ;;
3275                 # UnixWare 7.1.2 is known as Open UNIX 8
3276                 openunix|unixware) osname=svr5
3277                         osvers="$4"
3278                         ;;
3279                 uts)    osname=uts
3280                         osvers="$3"
3281                         ;;
3282                 vos) osvers="$3"
3283                         ;;
3284                 $2) case "$osname" in
3285                         *isc*) ;;
3286                         *freebsd*) ;;
3287                         svr*)
3288                                 : svr4.x or possibly later
3289                                 case "svr$3" in
3290                                 ${osname}*)
3291                                         osname=svr$3
3292                                         osvers=$4
3293                                         ;;
3294                                 esac
3295                                 case "$osname" in
3296                                 svr4.0)
3297                                         : Check for ESIX
3298                                         if test -f /stand/boot ; then
3299                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3300                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3301                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3302                                                         if test -n "$isesix"; then
3303                                                                 osname=esix4
3304                                                         fi
3305                                                 fi
3306                                         fi
3307                                         ;;
3308                                 esac
3309                                 ;;
3310                         *)      if test -f /etc/systemid; then
3311                                         osname=sco
3312                                         set `echo $3 | $sed 's/\./ /g'` $4
3313                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3314                                                 osvers=$1.$2.$3
3315                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3316                                                 osvers=$1.$2
3317                                         elif $test -f $src/hints/sco_$1.sh; then
3318                                                 osvers=$1
3319                                         fi
3320                                 else
3321                                         case "$osname" in
3322                                         '') : Still unknown.  Probably a generic Sys V.
3323                                                 osname="sysv"
3324                                                 osvers="$3"
3325                                                 ;;
3326                                         esac
3327                                 fi
3328                                 ;;
3329                         esac
3330                         ;;
3331                 *)      case "$osname" in
3332                         '') : Still unknown.  Probably a generic BSD.
3333                                 osname="$1"
3334                                 osvers="$3"
3335                                 ;;
3336                         esac
3337                         ;;
3338                 esac
3339         else
3340                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3341                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3342                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3343                                 osname=news_os
3344                         fi
3345                         $rm -f UU/kernel.what
3346                 elif test -d c:/. -o -n "$is_os2" ; then
3347                         set X $myuname
3348                         osname=os2
3349                         osvers="$5"
3350                 fi
3351         fi
3352
3353         case "$targetarch" in
3354         '') ;;
3355         *)  hostarch=$osname
3356             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3357             osvers=''
3358             ;;
3359         esac
3360
3361         : Now look for a hint file osname_osvers, unless one has been
3362         : specified already.
3363         case "$hintfile" in
3364         ''|' ')
3365                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3366                 : Also try without trailing minor version numbers.
3367                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3368                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3369                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3370                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3371                 case "$file" in
3372                 '') dflt=none ;;
3373                 *)  case "$osvers" in
3374                         '') dflt=$file
3375                                 ;;
3376                         *)  if $test -f $src/hints/$file.sh ; then
3377                                         dflt=$file
3378                                 elif $test -f $src/hints/$xfile.sh ; then
3379                                         dflt=$xfile
3380                                 elif $test -f $src/hints/$xxfile.sh ; then
3381                                         dflt=$xxfile
3382                                 elif $test -f $src/hints/$xxxfile.sh ; then
3383                                         dflt=$xxxfile
3384                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3385                                         dflt=$xxxxfile
3386                                 elif $test -f "$src/hints/${osname}.sh" ; then
3387                                         dflt="${osname}"
3388                                 else
3389                                         dflt=none
3390                                 fi
3391                                 ;;
3392                         esac
3393                         ;;
3394                 esac
3395                 if $test -f Policy.sh ; then
3396                         case "$dflt" in
3397                         *Policy*) ;;
3398                         none) dflt="Policy" ;;
3399                         *) dflt="Policy $dflt" ;;
3400                         esac
3401                 fi
3402                 ;;
3403         *)
3404                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3405                 ;;
3406         esac
3407
3408         if $test -f Policy.sh ; then
3409                 $cat <<EOM
3410
3411 There's also a Policy hint file available, which should make the
3412 site-specific (policy) questions easier to answer.
3413 EOM
3414
3415         fi
3416
3417         $cat <<EOM
3418
3419 You may give one or more space-separated answers, or "none" if appropriate.
3420 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3421 previous run of Configure, you may specify it as well as or instead of
3422 OS-specific hints.  If hints are provided for your OS, you should use them:
3423 although Perl can probably be built without hints on many platforms, using
3424 hints often improve performance and may enable features that Configure can't
3425 set up on its own. If there are no hints that match your OS, specify "none";
3426 DO NOT give a wrong version or a wrong OS.
3427
3428 EOM
3429
3430         rp="Which of these apply, if any?"
3431         . UU/myread
3432         tans=$ans
3433         for file in $tans; do
3434                 if $test X$file = XPolicy -a -f Policy.sh; then
3435                         . Policy.sh
3436                         $cat Policy.sh >> UU/config.sh
3437                 elif $test -f $src/hints/$file.sh; then
3438                         . $src/hints/$file.sh
3439                         $cat $src/hints/$file.sh >> UU/config.sh
3440                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3441                         : nothing
3442                 else
3443                         : Give one chance to correct a possible typo.
3444                         echo "$file.sh does not exist"
3445                         dflt=$file
3446                         rp="hint to use instead?"
3447                         . UU/myread
3448                         for file in $ans; do
3449                                 if $test -f "$src/hints/$file.sh"; then
3450                                         . $src/hints/$file.sh
3451                                         $cat $src/hints/$file.sh >> UU/config.sh
3452                                 elif $test X$ans = X -o X$ans = Xnone ; then
3453                                         : nothing
3454                                 else
3455                                         echo "$file.sh does not exist -- ignored."
3456                                 fi
3457                         done
3458                 fi
3459         done
3460
3461         hint=recommended
3462         : Remember our hint file for later.
3463         if $test -f "$src/hints/$file.sh" ; then
3464                 hintfile="$file"
3465         else
3466                 hintfile=''
3467         fi
3468 fi
3469 cd UU
3470 ;;
3471 *)
3472         echo " "
3473         echo "Fetching default answers from $config_sh..." >&4
3474         tmp_n="$n"
3475         tmp_c="$c"
3476         cd ..
3477         cp $config_sh config.sh 2>/dev/null
3478         chmod +w config.sh
3479         . ./config.sh
3480         cd UU
3481         cp ../config.sh .
3482         n="$tmp_n"
3483         c="$tmp_c"
3484         hint=previous
3485         ;;
3486 esac
3487 test "$override" && . ./optdef.sh
3488
3489 : Restore computed paths
3490 for file in $loclist $trylist; do
3491         eval $file="\$_$file"
3492 done
3493
3494 cat << EOM
3495
3496 Configure uses the operating system name and version to set some defaults.
3497 The default value is probably right if the name rings a bell. Otherwise,
3498 since spelling matters for me, either accept the default or answer "none"
3499 to leave it blank.
3500
3501 EOM
3502 case "$osname" in
3503         ''|' ')
3504                 case "$hintfile" in
3505                 ''|' '|none) dflt=none ;;
3506                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3507                 esac
3508                 ;;
3509         *) dflt="$osname" ;;
3510 esac
3511 rp="Operating system name?"
3512 . ./myread
3513 case "$ans" in
3514 none)  osname='' ;;
3515 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3516 esac
3517 echo " "
3518 case "$osvers" in
3519         ''|' ')
3520                 case "$hintfile" in
3521                 ''|' '|none) dflt=none ;;
3522                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3523                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3524                         case "$dflt" in
3525                         ''|' ') dflt=none ;;
3526                         esac
3527                         ;;
3528                 esac
3529                 ;;
3530         *) dflt="$osvers" ;;
3531 esac
3532 rp="Operating system version?"
3533 . ./myread
3534 case "$ans" in
3535 none)  osvers='' ;;
3536 *) osvers="$ans" ;;
3537 esac
3538
3539
3540 . ./posthint.sh
3541
3542 : who configured the system
3543 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3544 case "$cf_by" in
3545 "")
3546         cf_by=`(logname) 2>/dev/null`
3547         case "$cf_by" in
3548         "")
3549                 cf_by=`(whoami) 2>/dev/null`
3550                 case "$cf_by" in
3551                 "") cf_by=unknown ;;
3552                 esac ;;
3553         esac ;;
3554 esac
3555
3556 : decide how portable to be.  Allow command line overrides.
3557 case "$d_portable" in
3558 "$undef") ;;
3559 *)      d_portable="$define" ;;
3560 esac
3561
3562 : set up shell script to do ~ expansion
3563 cat >filexp <<EOSS
3564 $startsh
3565 : expand filename
3566 case "\$1" in
3567  ~/*|~)
3568         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3569         ;;
3570  ~*)
3571         if $test -f /bin/csh; then
3572                 /bin/csh -f -c "glob \$1"
3573                 failed=\$?
3574                 echo ""
3575                 exit \$failed
3576         else
3577                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3578                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3579                 if $test ! -d "\$dir"; then
3580                         me=\`basename \$0\`
3581                         echo "\$me: can't locate home directory for: \$name" >&2
3582                         exit 1
3583                 fi
3584                 case "\$1" in
3585                 */*)
3586                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3587                         ;;
3588                 *)
3589                         echo \$dir
3590                         ;;
3591                 esac
3592         fi
3593         ;;
3594 *)
3595         echo \$1
3596         ;;
3597 esac
3598 EOSS
3599 chmod +x filexp
3600 $eunicefix filexp
3601
3602 : now set up to get a file name
3603 cat <<EOS >getfile
3604 $startsh
3605 EOS
3606 cat <<'EOSC' >>getfile
3607 tilde=''
3608 fullpath=''
3609 already=''
3610 skip=''
3611 none_ok=''
3612 exp_file=''
3613 nopath_ok=''
3614 orig_rp="$rp"
3615 orig_dflt="$dflt"
3616 case "$gfpth" in
3617 '') gfpth='.' ;;
3618 esac
3619
3620 case "$fn" in
3621 *\(*)
3622         : getfile will accept an answer from the comma-separated list
3623         : enclosed in parentheses even if it does not meet other criteria.
3624         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3625         fn=`echo $fn | sed 's/(.*)//'`
3626         ;;
3627 esac
3628
3629 case "$fn" in
3630 *:*)
3631         loc_file=`expr $fn : '.*:\(.*\)'`
3632         fn=`expr $fn : '\(.*\):.*'`
3633         ;;
3634 esac
3635
3636 case "$fn" in
3637 *~*) tilde=true;;
3638 esac
3639 case "$fn" in
3640 */*) fullpath=true;;
3641 esac
3642 case "$fn" in
3643 *+*) skip=true;;
3644 esac
3645 case "$fn" in
3646 *n*) none_ok=true;;
3647 esac
3648 case "$fn" in
3649 *e*) exp_file=true;;
3650 esac
3651 case "$fn" in
3652 *p*) nopath_ok=true;;
3653 esac
3654
3655 case "$fn" in
3656 *f*) type='File';;
3657 *d*) type='Directory';;
3658 *l*) type='Locate';;
3659 esac
3660
3661 what="$type"
3662 case "$what" in
3663 Locate) what='File';;
3664 esac
3665
3666 case "$exp_file" in
3667 '')
3668         case "$d_portable" in
3669         "$define") ;;
3670         *) exp_file=true;;
3671         esac
3672         ;;
3673 esac
3674
3675 cd ..
3676 while test "$type"; do
3677         redo=''
3678         rp="$orig_rp"
3679         dflt="$orig_dflt"
3680         case "$tilde" in
3681         true) rp="$rp (~name ok)";;
3682         esac
3683         . UU/myread
3684         if test -f UU/getfile.ok && \
3685                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3686         then
3687                 value="$ans"
3688                 ansexp="$ans"
3689                 break
3690         fi
3691         case "$ans" in
3692         none)
3693                 value=''
3694                 ansexp=''
3695                 case "$none_ok" in
3696                 true) type='';;
3697                 esac
3698                 ;;
3699         *)
3700                 case "$tilde" in
3701                 '') value="$ans"
3702                         ansexp="$ans";;
3703                 *)
3704                         value=`UU/filexp $ans`
3705                         case $? in
3706                         0)
3707                                 if test "$ans" != "$value"; then
3708                                         echo "(That expands to $value on this system.)"
3709                                 fi
3710                                 ;;
3711                         *) value="$ans";;
3712                         esac
3713                         ansexp="$value"
3714                         case "$exp_file" in
3715                         '') value="$ans";;
3716                         esac
3717                         ;;
3718                 esac
3719                 case "$fullpath" in
3720                 true)
3721                         case "$ansexp" in
3722                         /*) value="$ansexp" ;;
3723                         [a-zA-Z]:/*) value="$ansexp" ;;
3724                         *)
3725                                 redo=true
3726                                 case "$already" in
3727                                 true)
3728                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3729                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3730                                         ;;
3731                                 *)
3732                                 echo "Please give a full path name, starting with slash." >&4
3733                                         case "$tilde" in
3734                                         true)
3735                                 echo "Note that using ~name is ok provided it expands well." >&4
3736                                                 already=true
3737                                                 ;;
3738                                         esac
3739                                 esac
3740                                 ;;
3741                         esac
3742                         ;;
3743                 esac
3744                 case "$redo" in
3745                 '')
3746                         case "$type" in
3747                         File)
3748                                 for fp in $gfpth; do
3749                                         if test "X$fp" = X.; then
3750                                             pf="$ansexp"
3751                                         else    
3752                                             pf="$fp/$ansexp"
3753                                         fi
3754                                         if test -f "$pf"; then
3755                                                 type=''
3756                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3757                                         then
3758                                                 echo "($value is not a plain file, but that's ok.)"
3759                                                 type=''
3760                                         fi
3761                                         if test X"$type" = X; then
3762                                             value="$pf"
3763                                             break
3764                                         fi
3765                                 done
3766                                 ;;
3767                         Directory)
3768                                 for fp in $gfpth; do
3769                                         if test "X$fp" = X.; then
3770                                             dir="$ans"
3771                                             direxp="$ansexp"
3772                                         else    
3773                                             dir="$fp/$ansexp"
3774                                             direxp="$fp/$ansexp"
3775                                         fi
3776                                         if test -d "$direxp"; then
3777                                                 type=''
3778                                                 value="$dir"
3779                                                 break
3780                                         fi
3781                                 done
3782                                 ;;
3783                         Locate)
3784                                 if test -d "$ansexp"; then
3785                                         echo "(Looking for $loc_file in directory $value.)"
3786                                         value="$value/$loc_file"
3787                                         ansexp="$ansexp/$loc_file"
3788                                 fi
3789                                 if test -f "$ansexp"; then
3790                                         type=''
3791                                 fi
3792                                 case "$nopath_ok" in
3793                                 true)   case "$value" in
3794                                         */*) ;;
3795                                         *)      echo "Assuming $value will be in people's path."
3796                                                 type=''
3797                                                 ;;
3798                                         esac
3799                                         ;;
3800                                 esac
3801                                 ;;
3802                         esac
3803
3804                         case "$skip" in
3805                         true) type='';
3806                         esac
3807
3808                         case "$type" in
3809                         '') ;;
3810                         *)
3811                                 if test "$fastread" = yes; then
3812                                         dflt=y
3813                                 else
3814                                         dflt=n
3815                                 fi
3816                                 rp="$what $value doesn't exist.  Use that name anyway?"
3817                                 . UU/myread
3818                                 dflt=''
3819                                 case "$ans" in
3820                                 y*) type='';;
3821                                 *) echo " ";;
3822                                 esac
3823                                 ;;
3824                         esac
3825                         ;;
3826                 esac
3827                 ;;
3828         esac
3829 done
3830 cd UU
3831 ans="$value"
3832 rp="$orig_rp"
3833 dflt="$orig_dflt"
3834 rm -f getfile.ok
3835 test "X$gfpthkeep" != Xy && gfpth=""
3836 EOSC
3837
3838 : determine root of directory hierarchy where package will be installed.
3839 case "$prefix" in
3840 '')
3841         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3842         ;;
3843 *?/)
3844         dflt=`echo "$prefix" | sed 's/.$//'`
3845         ;;
3846 *)
3847         dflt="$prefix"
3848         ;;
3849 esac
3850 $cat <<EOM
3851
3852 By default, $package will be installed in $dflt/bin, manual pages
3853 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3854 installation directories. Typically this is something like /usr/local.
3855 If you wish to have binaries under /usr/bin but other parts of the
3856 installation under /usr/local, that's ok: you will be prompted
3857 separately for each of the installation directories, the prefix being
3858 only used to set the defaults.
3859
3860 EOM
3861 fn=d~
3862 rp='Installation prefix to use?'
3863 . ./getfile
3864 oldprefix=''
3865 case "$prefix" in
3866 '') ;;
3867 *)
3868         case "$ans" in
3869         "$prefix") ;;
3870         *) oldprefix="$prefix";;
3871         esac
3872         ;;
3873 esac
3874 prefix="$ans"
3875 prefixexp="$ansexp"
3876
3877 case "$afsroot" in
3878 '')     afsroot=/afs ;;
3879 *)      afsroot=$afsroot ;;
3880 esac
3881
3882 : is AFS running?
3883 echo " "
3884 case "$afs" in
3885 $define|true)   afs=true ;;
3886 $undef|false)   afs=false ;;
3887 *)      if test -d $afsroot; then
3888                 afs=true
3889         else
3890                 afs=false
3891         fi
3892         ;;
3893 esac
3894 if $afs; then
3895         echo "AFS may be running... I'll be extra cautious then..." >&4
3896 else
3897         echo "AFS does not seem to be running..." >&4
3898 fi
3899
3900 : determine installation prefix for where package is to be installed.
3901 if $afs; then 
3902 $cat <<EOM
3903
3904 Since you are running AFS, I need to distinguish the directory in which
3905 files will reside from the directory in which they are installed (and from
3906 which they are presumably copied to the former directory by occult means).
3907
3908 EOM
3909         case "$installprefix" in
3910         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3911         *) dflt="$installprefix";;
3912         esac
3913 else
3914 $cat <<EOM
3915
3916 In some special cases, particularly when building $package for distribution,
3917 it is convenient to distinguish the directory in which files should be
3918 installed from the directory ($prefix) in which they will
3919 eventually reside.  For most users, these two directories are the same.
3920
3921 EOM
3922         case "$installprefix" in
3923         '') dflt=$prefix ;;
3924         *) dflt=$installprefix;;
3925         esac
3926 fi
3927 fn=d~
3928 rp='What installation prefix should I use for installing files?'
3929 . ./getfile
3930 installprefix="$ans"
3931 installprefixexp="$ansexp"
3932
3933 : Perform the prefixexp/installprefixexp correction if necessary
3934 cat <<EOS >installprefix
3935 $startsh
3936 EOS
3937 cat <<'EOSC' >>installprefix
3938 : Change installation prefix, if necessary.
3939 if $test X"$prefix" != X"$installprefix"; then
3940     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3941 else
3942     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3943 fi
3944 EOSC
3945 chmod +x installprefix
3946 $eunicefix installprefix
3947
3948 : Set variables such as privlib and privlibexp from the output of ./getfile
3949 : performing the prefixexp/installprefixexp correction if necessary.
3950 cat <<EOS >setprefixvar
3951 $startsh
3952 EOS
3953 cat <<'EOSC' >>setprefixvar
3954 eval "${prefixvar}=\"\$ans\""
3955 eval "${prefixvar}exp=\"\$ansexp\""
3956 . ./installprefix
3957 EOSC
3958 chmod +x setprefixvar
3959 $eunicefix setprefixvar
3960
3961 : set up the script used to warn in case of inconsistency
3962 cat <<EOS >whoa
3963 $startsh
3964 EOS
3965 cat <<'EOSC' >>whoa
3966 dflt=y
3967 case "$hint" in
3968     recommended)
3969         case "$hintfile" in
3970         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3971                 ;;
3972         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
3973                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3974                 ;;
3975         esac
3976         ;;
3977     *)  echo " "
3978         echo "*** WHOA THERE!!! ***" >&4
3979         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3980         ;;
3981 esac
3982 rp="    Keep the $hint value?"
3983 . ./myread
3984 case "$ans" in
3985 y) td=$was; tu=$was;;
3986 esac
3987 EOSC
3988
3989 : function used to set $1 to $val
3990 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3991 case "$val$was" in
3992 $define$undef) . ./whoa; eval "$var=\$td";;
3993 $undef$define) . ./whoa; eval "$var=\$tu";;
3994 *) eval "$var=$val";;
3995 esac'
3996
3997 case "$usesocks" in
3998 $define|true|[yY]*)     dflt='y';;
3999 *) dflt='n';;
4000 esac
4001 cat <<EOM
4002
4003 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4004 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4005 to use the PerlIO abstraction layer, this will be implicitly selected.
4006
4007 If this doesn't make any sense to you, just accept the default '$dflt'.
4008 EOM
4009 rp='Build Perl for SOCKS?'
4010 . ./myread
4011 case "$ans" in
4012 y|Y)    val="$define" ;;     
4013 *)      val="$undef" ;;
4014 esac
4015 set usesocks
4016 eval $setvar
4017
4018 case "$usesocks" in
4019 $define|true|[yY]*) useperlio="$define";;
4020 esac
4021
4022 case "$useperlio" in
4023 $define|true|[yY]*|'')  dflt='y';;
4024 *) dflt='n';;
4025 esac
4026 cat <<EOM
4027
4028 Previous version of $package used the standard IO mechanisms as
4029 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4030 alternate IO mechanisms via the PerlIO abstraction layer, but the
4031 stdio mechanism is still available if needed.  The abstraction layer
4032 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4033 Using PerlIO with sfio may cause problems with some extension modules.
4034
4035 If this doesn't make any sense to you, just accept the default '$dflt'.
4036 EOM
4037 rp='Use the PerlIO abstraction layer?'
4038 . ./myread
4039 case "$ans" in
4040 y|Y) 
4041         val="$define"
4042         ;;
4043 *)      
4044         echo "Ok, doing things the stdio way."
4045         val="$undef"
4046         ;;
4047 esac
4048 set useperlio
4049 eval $setvar 
4050
4051 case "$usesocks" in
4052 $define|true|[yY]*)
4053         case "$useperlio" in
4054         $define|true|[yY]*) ;;
4055         *)      cat >&4 <<EOM
4056
4057 You are using the SOCKS proxy protocol library which means that you
4058 should also use the PerlIO layer.  You may be headed for trouble.
4059
4060 EOM
4061                 ;;
4062         esac
4063         ;;
4064 esac
4065
4066         
4067 : get the patchlevel
4068 echo " "
4069 echo "Getting the current patchlevel..." >&4
4070 if $test -r $rsrc/patchlevel.h;then
4071         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4072         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4073         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4074         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4075         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4076         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4077         perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
4078 else
4079         revision=0
4080         patchlevel=0
4081         subversion=0
4082         api_revision=0
4083         api_version=0
4084         api_subversion=0
4085         perl_patchlevel=0
4086         $echo "(You do not have patchlevel.h.  Eek.)"
4087 fi
4088 if $test -r $rsrc/.patch ; then
4089         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4090                 perl_patchlevel=`cat $rsrc/.patch`
4091         fi
4092 fi
4093 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4094 version_patchlevel_string="version $patchlevel subversion $subversion"
4095 case "$perl_patchlevel" in
4096 0|'') ;;
4097 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4098 esac
4099
4100 $echo "(You have $package $version_patchlevel_string.)"
4101
4102 case "$osname" in
4103 dos|vms)
4104         : XXX Should be a Configure test for double-dots in filenames.
4105         version=`echo $revision $patchlevel $subversion | \
4106                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4107         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4108                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4109         ;;
4110 *)
4111         version=`echo $revision $patchlevel $subversion | \
4112                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4113         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4114                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4115         ;;
4116 esac
4117 : Special case the 5.005_xx maintenance series, which used 5.005
4118 : without any subversion label as a subdirectory in $sitelib
4119 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4120         api_versionstring='5.005'
4121 fi
4122
4123 case "$usethreads" in
4124 $define|true|[yY]*)     dflt='y';;
4125 *)     # Catch case where user specified ithreads or 5005threads but
4126        # forgot -Dusethreads (A.D. 4/2002)
4127        case "$useithreads$use5005threads" in
4128        *$define*)      
4129                 case "$useperlio" in
4130                 "$define")      dflt='y' ;;
4131                 *)              dflt='n' ;;
4132                 esac
4133                 ;;
4134        *)       dflt='n';;
4135        esac
4136        ;;
4137 esac
4138 cat <<EOM
4139
4140 Perl can be built to take advantage of threads on some systems.
4141 To do so, Configure can be run with -Dusethreads.
4142
4143 Note that Perl built with threading support runs slightly slower
4144 and uses more memory than plain Perl. The current implementation
4145 is believed to be stable, but it is fairly new, and so should be
4146 treated with caution.
4147
4148 If this doesn't make any sense to you, just accept the default '$dflt'.
4149 EOM
4150 rp='Build a threading Perl?'
4151 . ./myread
4152 case "$ans" in
4153 y|Y)    val="$define" ;;
4154 *)      val="$undef" ;;
4155 esac
4156 set usethreads
4157 eval $setvar
4158
4159 if $test $patchlevel -lt 9; then
4160     case "$usethreads" in
4161     $define)
4162         $cat <<EOM
4163
4164 Since release 5.6, Perl has had two different threading implementations,
4165 the newer interpreter-based version (ithreads) with one interpreter per
4166 thread, and the older 5.005 version (5005threads).
4167 The 5005threads version is effectively unmaintained and will probably be
4168 removed in Perl 5.10, so there should be no need to build a Perl using it
4169 unless needed for backwards compatibility with some existing 5.005threads
4170 code.
4171
4172 EOM
4173         : Default to ithreads unless overridden on command line or with
4174         : old config.sh
4175         dflt='y'
4176         case "$use5005threads" in
4177                 $define|true|[yY]*) dflt='n';;
4178         esac
4179         case "$useithreads" in
4180                 $undef|false|[nN]*) dflt='n';;
4181         esac
4182         rp='Use the newer interpreter-based ithreads?'
4183         . ./myread
4184         case "$ans" in
4185         y|Y)    val="$define" ;;
4186         *)      val="$undef" ;;
4187         esac
4188         set useithreads
4189         eval $setvar
4190         : Now set use5005threads to the opposite value.
4191         case "$useithreads" in
4192         $define) val="$undef" ;;
4193         *) val="$define" ;;
4194         esac
4195         set use5005threads
4196         eval $setvar
4197         ;;
4198     *)
4199         useithreads="$undef"
4200         use5005threads="$undef"
4201         ;;
4202     esac
4203
4204     case "$useithreads$use5005threads" in
4205     "$define$define")
4206         $cat >&4 <<EOM
4207
4208 You cannot have both the ithreads and the 5.005 threads enabled
4209 at the same time.  Disabling the 5.005 threads since they are
4210 much less stable than the ithreads.
4211
4212 EOM
4213         use5005threads="$undef"
4214         ;;
4215     esac
4216
4217 else
4218 : perl-5.9.x and later
4219
4220     if test X"$usethreads" = "X$define"; then
4221         case "$use5005threads" in
4222             $define|true|[yY]*)
4223                 $cat >&4 <<EOM
4224
4225 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4226
4227 EOM
4228             ;;
4229         esac
4230     fi
4231
4232     use5005threads="$undef"
4233     useithreads="$usethreads"
4234 fi
4235
4236 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4237         cat >&4 <<EOF
4238 ***
4239 *** To build with ithreads you must also use the PerlIO layer.
4240 *** Cannot continue, aborting.
4241 ***
4242 EOF
4243         exit 1
4244 fi
4245
4246 case "$d_oldpthreads" in
4247 '')     : Configure tests would be welcome here.  For now, assume undef.
4248         val="$undef" ;;
4249 *)      val="$d_oldpthreads" ;;
4250 esac
4251 set d_oldpthreads
4252 eval $setvar
4253
4254
4255 : Look for a hint-file generated 'call-back-unit'.  If the
4256 : user has specified that a threading perl is to be built,
4257 : we may need to set or change some other defaults.
4258 if $test -f usethreads.cbu; then
4259     echo "Your platform has some specific hints regarding threaded builds, using them..."
4260     . ./usethreads.cbu
4261 else
4262     case "$usethreads" in
4263         "$define"|true|[yY]*)
4264                 $cat <<EOM
4265 (Your platform does not have any specific hints for threaded builds.
4266  Assuming POSIX threads, then.)
4267 EOM
4268         ;;
4269     esac
4270 fi
4271
4272 cat <<EOM
4273
4274 Perl can be built so that multiple Perl interpreters can coexist
4275 within the same Perl executable.
4276 EOM
4277
4278 case "$useithreads" in
4279 $define)
4280         cat <<EOM
4281 This multiple interpreter support is required for interpreter-based threads.
4282 EOM
4283         val="$define"
4284         ;;
4285 *)      case "$usemultiplicity" in
4286         $define|true|[yY]*)     dflt='y';;
4287         *) dflt='n';;
4288         esac
4289         echo " "
4290         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4291         rp='Build Perl for multiplicity?'
4292         . ./myread
4293         case "$ans" in
4294         y|Y)    val="$define" ;;
4295         *)      val="$undef" ;;
4296         esac
4297         ;;
4298 esac
4299 set usemultiplicity
4300 eval $setvar
4301
4302
4303 case "$usemorebits" in
4304 "$define"|true|[yY]*)
4305         use64bitint="$define"
4306         uselongdouble="$define"
4307         usemorebits="$define"
4308         ;;
4309 *)      usemorebits="$undef"
4310         ;;
4311 esac
4312
4313 : make some quick guesses about what we are up against
4314 echo " "
4315 $echo $n "Hmm...  $c"
4316 echo exit 1 >bsd
4317 echo exit 1 >usg
4318 echo exit 1 >v7
4319 echo exit 1 >osf1
4320 echo exit 1 >eunice
4321 echo exit 1 >xenix
4322 echo exit 1 >venix
4323 echo exit 1 >os2
4324 d_bsd="$undef"
4325 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4326 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4327 then
4328         echo "Looks kind of like an OSF/1 system, but we'll see..."
4329         echo exit 0 >osf1
4330 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4331         xxx=`./loc addbib blurfl $pth`
4332         if $test -f $xxx; then
4333         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4334                 echo exit 0 >bsd
4335                 echo exit 0 >usg
4336         else
4337                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4338                         echo "Looks kind of like an extended USG system, but we'll see..."
4339                 else
4340                         echo "Looks kind of like a USG system, but we'll see..."
4341                 fi
4342                 echo exit 0 >usg
4343         fi
4344 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4345         echo "Looks kind of like a BSD system, but we'll see..."
4346         d_bsd="$define"
4347         echo exit 0 >bsd
4348 else
4349         echo "Looks kind of like a Version 7 system, but we'll see..."
4350         echo exit 0 >v7
4351 fi
4352 case "$eunicefix" in
4353 *unixtovms*)
4354         $cat <<'EOI'
4355 There is, however, a strange, musty smell in the air that reminds me of
4356 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4357 EOI
4358         echo exit 0 >eunice
4359         d_eunice="$define"
4360 : it so happens the Eunice I know will not run shell scripts in Unix format
4361         ;;
4362 *)
4363         echo " "
4364         echo "Congratulations.  You aren't running Eunice."
4365         d_eunice="$undef"
4366         ;;
4367 esac
4368 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4369 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4370 : semicolon as a patch separator
4371 case "$p_" in
4372 :) ;;
4373 *)
4374         $cat <<'EOI'
4375 I have the feeling something is not exactly right, however...don't tell me...
4376 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4377 (Or you may be running DOS with DJGPP.)
4378 EOI
4379         echo exit 0 >os2
4380         ;;
4381 esac
4382 if test -f /xenix; then
4383         echo "Actually, this looks more like a XENIX system..."
4384         echo exit 0 >xenix
4385         d_xenix="$define"
4386 else
4387         echo " "
4388         echo "It's not Xenix..."
4389         d_xenix="$undef"
4390 fi
4391 chmod +x xenix
4392 $eunicefix xenix
4393 if test -f /venix; then
4394         echo "Actually, this looks more like a VENIX system..."
4395         echo exit 0 >venix
4396 else
4397         echo " "
4398         if ./xenix; then
4399                 : null
4400         else
4401                 echo "Nor is it Venix..."
4402         fi
4403 fi
4404 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4405 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4406 $rm -f foo
4407
4408 case "$cc" in
4409 '') dflt=cc;;
4410 *) dflt="$cc";;
4411 esac
4412 rp="Use which C compiler?"
4413 . ./myread
4414 cc="$ans"
4415
4416 : See if they have not cc but they do have gcc
4417 . ./trygcc
4418 : Look for a hint-file generated 'call-back-unit'.  Now that the
4419 : user has specified the compiler, we may need to set or change some
4420 : other defaults.
4421 if $test -f cc.cbu; then
4422     . ./cc.cbu
4423 fi
4424 . ./checkcc
4425
4426 echo " "
4427 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4428 $cat >try.c <<EOM
4429 #include <stdio.h>
4430 int main() {
4431 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4432 #ifdef __VERSION__
4433         printf("%s\n", __VERSION__);
4434 #else
4435         printf("%s\n", "1");
4436 #endif
4437 #endif
4438         return(0);
4439 }
4440 EOM
4441 if $cc -o try $ccflags $ldflags try.c; then
4442         gccversion=`$run ./try`
4443         case "$gccversion" in
4444         '') echo "You are not using GNU cc." ;;
4445         *)  echo "You are using GNU cc $gccversion."
4446             ccname=gcc
4447             ;;
4448         esac
4449 else
4450         echo " "
4451         echo "*** WHOA THERE!!! ***" >&4
4452         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4453         case "$knowitall" in
4454         '')
4455         echo "    You'd better start hunting for one and let me know about it." >&4
4456                 exit 1
4457                 ;;
4458         esac
4459 fi
4460 $rm -f try try.*
4461 case "$gccversion" in
4462 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4463 esac
4464 case "$gccversion" in
4465 '') gccosandvers='' ;;
4466 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4467    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4468    gccshortvers=''
4469    case "$gccosandvers" in
4470    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4471    $osname$osvers) ;; # looking good
4472    $osname*) cat <<EOM >&4
4473
4474 *** WHOA THERE!!! ***
4475
4476     Your gcc has not been compiled for the exact release of
4477     your operating system ($gccosandvers versus $osname$osvers).
4478
4479     In general it is a good idea to keep gcc synchronized with
4480     the operating system because otherwise serious problems
4481     may ensue when trying to compile software, like Perl.
4482
4483     I'm trying to be optimistic here, though, and will continue.
4484     If later during the configuration and build icky compilation
4485     problems appear (headerfile conflicts being the most common
4486     manifestation), I suggest reinstalling the gcc to match
4487     your operating system release.
4488
4489 EOM
4490       ;;
4491    *) gccosandvers='' ;; # failed to parse, better be silent
4492    esac
4493    ;;
4494 esac
4495 case "$ccname" in
4496 '') ccname="$cc" ;;
4497 esac
4498
4499 # gcc 3.* complain about adding -Idirectories that they already know about,
4500 # so we will take those off from locincpth.
4501 case "$gccversion" in
4502 3*)
4503     echo "main(){}">try.c
4504     for incdir in $locincpth; do
4505        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4506              grep '^c[cp]p*[01]: warning: changing search order '`
4507        if test "X$warn" != X; then
4508            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4509        fi
4510     done
4511     $rm -f try try.*
4512 esac
4513
4514 : What should the include directory be ?
4515 echo " "
4516 $echo $n "Hmm...  $c"
4517 dflt='/usr/include'
4518 incpath=''
4519 mips_type=''
4520 if $test -f /bin/mips && /bin/mips; then
4521         echo "Looks like a MIPS system..."
4522         $cat >usr.c <<'EOCP'
4523 #ifdef SYSTYPE_BSD43
4524 /bsd43
4525 #endif
4526 EOCP
4527         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4528                 dflt='/bsd43/usr/include'
4529                 incpath='/bsd43'
4530                 mips_type='BSD 4.3'
4531         else
4532                 mips_type='System V'
4533         fi
4534         $rm -f usr.c usr.out
4535         echo "and you're compiling with the $mips_type compiler and libraries."
4536         xxx_prompt=y
4537         echo "exit 0" >mips
4538 else
4539         echo "Doesn't look like a MIPS system."
4540         xxx_prompt=n
4541         echo "exit 1" >mips
4542 fi
4543 chmod +x mips
4544 $eunicefix mips
4545 case "$usrinc" in
4546 '') ;;
4547 *) dflt="$usrinc";;
4548 esac
4549 case "$xxx_prompt" in
4550 y)      fn=d/
4551         echo " "
4552         rp='Where are the include files you want to use?'
4553         . ./getfile
4554         usrinc="$ans"
4555         ;;
4556 *)      usrinc="$dflt"
4557         ;;
4558 esac
4559
4560 : see how we invoke the C preprocessor
4561 echo " "
4562 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4563 cat <<'EOT' >testcpp.c
4564 #define ABC abc
4565 #define XYZ xyz
4566 ABC.XYZ
4567 EOT
4568 cd ..
4569 if test ! -f cppstdin; then
4570         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4571                 # AIX cc -E doesn't show the absolute headerfile
4572                 # locations but we'll cheat by using the -M flag.
4573                 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
4574         else
4575                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4576         fi
4577 else
4578         echo "Keeping your $hint cppstdin wrapper."
4579 fi
4580 chmod 755 cppstdin
4581 wrapper=`pwd`/cppstdin
4582 ok='false'
4583 cd UU
4584
4585 if $test "X$cppstdin" != "X" && \
4586         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4587         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4588 then
4589         echo "You used to use $cppstdin $cppminus so we'll use that again."
4590         case "$cpprun" in
4591         '') echo "But let's see if we can live without a wrapper..." ;;
4592         *)
4593                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4594                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4595                 then
4596                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4597                         ok='true'
4598                 else
4599                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4600                 fi
4601                 ;;
4602         esac
4603 else
4604         case "$cppstdin" in
4605         '') ;;
4606         *)
4607                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4608                 ;;
4609         esac
4610 fi
4611
4612 if $ok; then
4613         : nothing
4614 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4615         $cc -E <testcpp.c >testcpp.out 2>&1; \
4616         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4617         echo "Yup, it does."
4618         x_cpp="$cc -E"
4619         x_minus='';
4620 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4621         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4622         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4623         echo "Yup, it does."
4624         x_cpp="$cc -E"
4625         x_minus='-';
4626 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4627         $cc -P <testcpp.c >testcpp.out 2>&1; \
4628         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4629         echo "Yipee, that works!"
4630         x_cpp="$cc -P"
4631         x_minus='';
4632 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4633         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4634         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4635         echo "At long last!"
4636         x_cpp="$cc -P"
4637         x_minus='-';
4638 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4639         $cpp <testcpp.c >testcpp.out 2>&1; \
4640         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4641         echo "It works!"
4642         x_cpp="$cpp"
4643         x_minus='';
4644 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4645         $cpp - <testcpp.c >testcpp.out 2>&1; \
4646         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4647         echo "Hooray, it works!  I was beginning to wonder."
4648         x_cpp="$cpp"
4649         x_minus='-';
4650 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4651         $wrapper <testcpp.c >testcpp.out 2>&1; \
4652         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4653         x_cpp="$wrapper"
4654         x_minus=''
4655         echo "Eureka!"
4656 else
4657         dflt=''
4658         rp="No dice.  I can't find a C preprocessor.  Name one:"
4659         . ./myread
4660         x_cpp="$ans"
4661         x_minus=''
4662         $x_cpp <testcpp.c >testcpp.out 2>&1
4663         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4664                 echo "OK, that will do." >&4
4665         else
4666 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4667                 exit 1
4668         fi
4669 fi
4670
4671 case "$ok" in
4672 false)
4673         cppstdin="$x_cpp"
4674         cppminus="$x_minus"
4675         cpprun="$x_cpp"
4676         cpplast="$x_minus"
4677         set X $x_cpp
4678         shift
4679         case "$1" in
4680         "$cpp")
4681                 echo "Perhaps can we force $cc -E using a wrapper..."
4682                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4683                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4684                 then
4685                         echo "Yup, we can."
4686                         cppstdin="$wrapper"
4687                         cppminus='';
4688                 else
4689                         echo "Nope, we'll have to live without it..."
4690                 fi
4691                 ;;
4692         esac
4693         case "$cpprun" in
4694         "$wrapper")
4695                 cpprun=''
4696                 cpplast=''
4697                 ;;
4698         esac
4699         ;;
4700 esac
4701
4702 case "$cppstdin" in
4703 "$wrapper"|'cppstdin') ;;
4704 *) $rm -f $wrapper;;
4705 esac
4706 $rm -f testcpp.c testcpp.out
4707
4708 : Set private lib path
4709 case "$plibpth" in
4710 '') if ./mips; then
4711                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4712         fi;;
4713 esac
4714 case "$libpth" in
4715 ' ') dlist='';;
4716 '') dlist="$loclibpth $plibpth $glibpth";;
4717 *) dlist="$libpth";;
4718 esac
4719
4720 : Now check and see which directories actually exist, avoiding duplicates
4721 libpth=''
4722 for xxx in $dlist
4723 do
4724     if $test -d $xxx; then
4725                 case " $libpth " in
4726                 *" $xxx "*) ;;
4727                 *) libpth="$libpth $xxx";;
4728                 esac
4729     fi
4730 done
4731 $cat <<'EOM'
4732
4733 Some systems have incompatible or broken versions of libraries.  Among
4734 the directories listed in the question below, please remove any you
4735 know not to be holding relevant libraries, and add any that are needed.
4736 Say "none" for none.
4737
4738 EOM
4739 case "$libpth" in
4740 '') dflt='none';;
4741 *)
4742         set X $libpth
4743         shift
4744         dflt=${1+"$@"}
4745         ;;
4746 esac
4747 rp="Directories to use for library searches?"
4748 . ./myread
4749 case "$ans" in
4750 none) libpth=' ';;
4751 *) libpth="$ans";;
4752 esac
4753
4754 : compute shared library extension
4755 case "$so" in
4756 '')
4757         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4758                 dflt='sl'
4759         else
4760                 dflt='so'
4761         fi
4762         ;;
4763 *) dflt="$so";;
4764 esac
4765 $cat <<EOM
4766
4767 On some systems, shared libraries may be available.  Answer 'none' if
4768 you want to suppress searching of shared libraries for the remainder
4769 of this configuration.
4770
4771 EOM
4772 rp='What is the file extension used for shared libraries?'
4773 . ./myread
4774 so="$ans"
4775
4776 : Define several unixisms.
4777 : Hints files or command line option can be used to override them.
4778 : The convoluted testing is in case hints files set either the old
4779 : or the new name.
4780 case "$_exe" in
4781 '')     case "$exe_ext" in
4782         '')     ;;
4783         *)      _exe="$exe_ext" ;;
4784         esac
4785         ;;
4786 esac
4787 case "$_a" in
4788 '')     case "$lib_ext" in
4789     '') _a='.a';;
4790         *)      _a="$lib_ext" ;;
4791         esac
4792         ;;
4793 esac
4794 case "$_o" in
4795 '') case "$obj_ext" in
4796         '')     _o='.o';;
4797         *)      _o="$obj_ext";;
4798         esac
4799         ;;
4800 esac
4801 case "$p_" in
4802 '') case "$path_sep" in
4803         '')     p_=':';;
4804         *)      p_="$path_sep";;
4805         esac
4806         ;;
4807 esac
4808 exe_ext=$_exe
4809 lib_ext=$_a
4810 obj_ext=$_o
4811 path_sep=$p_
4812
4813 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4814
4815 : Which makefile gets called first.  This is used by make depend.
4816 case "$firstmakefile" in
4817 '') firstmakefile='makefile';;
4818 esac
4819
4820 case "$ccflags" in
4821 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4822 esac
4823
4824 case "$uselongdouble" in
4825 $define|true|[yY]*)     dflt='y';;
4826 *) dflt='n';;
4827 esac
4828 cat <<EOM
4829
4830 Perl can be built to take advantage of long doubles which
4831 (if available) may give more accuracy and range for floating point numbers.
4832
4833 If this doesn't make any sense to you, just accept the default '$dflt'.
4834 EOM
4835 rp='Try to use long doubles if available?'
4836 . ./myread
4837 case "$ans" in
4838 y|Y)    val="$define"   ;;
4839 *)      val="$undef"    ;;
4840 esac
4841 set uselongdouble
4842 eval $setvar
4843
4844 case "$uselongdouble" in
4845 true|[yY]*) uselongdouble="$define" ;;
4846 esac
4847
4848 : Look for a hint-file generated 'call-back-unit'.  If the
4849 : user has specified that long doubles should be used,
4850 : we may need to set or change some other defaults.
4851 if $test -f uselongdouble.cbu; then
4852     echo "Your platform has some specific hints regarding long doubles, using them..."
4853     . ./uselongdouble.cbu
4854 else
4855     case "$uselongdouble" in
4856         $define)
4857                 $cat <<EOM
4858 (Your platform does not have any specific hints for long doubles.)
4859 EOM
4860         ;;
4861     esac
4862 fi
4863
4864 : Looking for optional libraries
4865 echo " "
4866 echo "Checking for optional libraries..." >&4
4867 case "$libs" in
4868 ' '|'') dflt='';;
4869 *) dflt="$libs";;
4870 esac
4871 case "$libswanted" in
4872 '') libswanted='c_s';;
4873 esac
4874 case "$usesocks" in
4875 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4876 esac
4877 libsfound=''
4878 libsfiles=''
4879 libsdirs=''
4880 libspath=''
4881 for thisdir in $libpth $xlibpth; do
4882   test -d $thisdir && libspath="$libspath $thisdir"
4883 done
4884 for thislib in $libswanted; do
4885         for thisdir in $libspath; do
4886             xxx=''
4887             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4888                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4889                 $test -f "$xxx" && eval $libscheck
4890                 $test -f "$xxx" && libstyle=shared
4891             fi
4892             if test ! -f "$xxx"; then
4893                 xxx=$thisdir/lib$thislib.$so
4894                 $test -f "$xxx" && eval $libscheck
4895                 $test -f "$xxx" && libstyle=shared
4896             fi  
4897             if test ! -f "$xxx"; then
4898                 xxx=$thisdir/lib$thislib$_a
4899                 $test -f "$xxx" && eval $libscheck
4900                 $test -f "$xxx" && libstyle=static
4901             fi
4902             if test ! -f "$xxx"; then
4903                 xxx=$thisdir/$thislib$_a
4904                 $test -f "$xxx" && eval $libscheck
4905                 $test -f "$xxx" && libstyle=static
4906             fi
4907             if test ! -f "$xxx"; then
4908                 xxx=$thisdir/lib${thislib}_s$_a
4909                 $test -f "$xxx" && eval $libscheck
4910                 $test -f "$xxx" && libstyle=static
4911                 $test -f "$xxx" && thislib=${thislib}_s
4912             fi
4913             if test ! -f "$xxx"; then
4914                 xxx=$thisdir/Slib$thislib$_a
4915                 $test -f "$xxx" && eval $libscheck
4916                 $test -f "$xxx" && libstyle=static
4917             fi
4918             if $test -f "$xxx"; then
4919                 case "$libstyle" in
4920                 shared) echo "Found -l$thislib (shared)." ;;
4921                 static) echo "Found -l$thislib." ;;
4922                 *)      echo "Found -l$thislib ($libstyle)." ;;
4923                 esac
4924                 case " $dflt " in
4925                 *"-l$thislib "*);;
4926                 *) dflt="$dflt -l$thislib"
4927                    libsfound="$libsfound $xxx"
4928                    yyy=`basename $xxx`
4929                    libsfiles="$libsfiles $yyy"
4930                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4931                    case " $libsdirs " in
4932                    *" $yyy "*) ;;
4933                    *) libsdirs="$libsdirs $yyy" ;;
4934                    esac
4935                    ;;
4936                 esac
4937                 break
4938             fi  
4939         done
4940         if $test ! -f "$xxx"; then
4941             echo "No -l$thislib."
4942         fi
4943 done
4944 set X $dflt
4945 shift
4946 dflt="$*"
4947 case "$libs" in
4948 '') dflt="$dflt";;
4949 *) dflt="$libs";;
4950 esac
4951 case "$dflt" in
4952 ' '|'') dflt='none';;
4953 esac
4954
4955 $cat <<EOM
4956
4957 In order to compile $package on your machine, a number of libraries
4958 are usually needed.  Include any other special libraries here as well.
4959 Say "none" for none.  The default list is almost always right.
4960 EOM
4961
4962 echo " "
4963 rp="What libraries to use?"
4964 . ./myread
4965 case "$ans" in
4966 none) libs=' ';;
4967 *) libs="$ans";;
4968 esac
4969
4970 : determine optimization, if desired, or use for debug flag also
4971 case "$optimize" in
4972 ' '|$undef) dflt='none';;
4973 '') dflt='-O';;
4974 *) dflt="$optimize";;
4975 esac
4976 $cat <<EOH
4977
4978 By default, $package compiles with the -O flag to use the optimizer.
4979 Alternately, you might want to use the symbolic debugger, which uses
4980 the -g flag (on traditional Unix systems).  Either flag can be
4981 specified here.  To use neither flag, specify the word "none".
4982
4983 EOH
4984 rp="What optimizer/debugger flag should be used?"
4985 . ./myread
4986 optimize="$ans"
4987 case "$optimize" in
4988 'none') optimize=" ";;
4989 esac
4990
4991 : Check what DEBUGGING is required from the command line
4992 : -DEBUGGING      or -DDEBUGGING or
4993 : -DEBUGGING=both                       = -g + -DDEBUGGING
4994 : -DEBUGGING=-g   or -Doptimize=-g      = -g
4995 : -DEBUGGING=none or -UDEBUGGING        =
4996 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
4997 case "$EBUGGING" in
4998 '')     ;;
4999 *)      DEBUGGING=$EBUGGING ;;
5000 esac
5001
5002 case "$DEBUGGING" in
5003 -g|both|$define)
5004     case "$optimize" in
5005         *-g*) ;;
5006         *)    optimize="$optimize -g" ;;
5007     esac ;;
5008 none|$undef)
5009     case "$optimize" in
5010         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5011                 shift
5012                 optimize="$*"
5013                 ;;
5014     esac ;;
5015 esac
5016
5017 dflt=''
5018 case "$DEBUGGING" in
5019 both|$define) dflt='-DDEBUGGING'
5020 esac
5021
5022 : We will not override a previous value, but we might want to
5023 : augment a hint file
5024 case "$hint" in
5025 default|recommended)
5026         case "$gccversion" in
5027         1*) dflt="$dflt -fpcc-struct-return" ;;
5028         esac
5029         case "$optimize:$DEBUGGING" in
5030         *-g*:old) dflt="$dflt -DDEBUGGING";;
5031         esac
5032         case "$gccversion" in
5033         2*) if test -d /etc/conf/kconfig.d &&
5034                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5035                 then
5036                         # Interactive Systems (ISC) POSIX mode.
5037                         dflt="$dflt -posix"
5038                 fi
5039                 ;;
5040         esac
5041         case "$gccversion" in
5042         1*) ;;
5043         2.[0-8]*) ;;
5044         ?*)     echo " "
5045                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
5046                 echo 'int main(void) { return 0; }' > gcctest.c
5047                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
5048                         echo "Yes, it does." 2>&1
5049                         case "$ccflags" in
5050                         *strict-aliasing*)
5051                                 echo "Leaving current flags $ccflags alone." 2>&1
5052                                 ;;
5053                         *) dflt="$dflt -fno-strict-aliasing" ;;
5054                         esac
5055                 else
5056                         echo "Nope, it doesn't, but that's ok." 2>&1
5057                 fi
5058                 ;;
5059         esac
5060         # For gcc, adding -pipe speeds up compilations for some, but apparently
5061         # some assemblers can't read from stdin.  (It also slows down compilations
5062         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5063         case "$gccversion" in
5064         ?*)     echo " "
5065                 echo "Checking if your compiler accepts -pipe" 2>&1
5066                 echo 'int main(void) { return 0; }' > gcctest.c
5067                 if $cc -pipe -o gcctest gcctest.c; then
5068                         echo "Yes, it does." 2>&1
5069                         case "$ccflags" in
5070                         *-pipe*)
5071                                 echo "Leaving current flags $ccflags alone." 2>&1
5072                                 ;;
5073                         *) dflt="$dflt -pipe" ;;
5074                         esac
5075                 else
5076                         echo "Nope, it doesn't, but that's ok." 2>&1
5077                 fi
5078                 ;;
5079         esac
5080         ;;
5081 esac
5082
5083 case "$mips_type" in
5084 *BSD*|'') inclwanted="$locincpth $usrinc";;
5085 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5086 esac
5087 for thisincl in $inclwanted; do
5088         if $test -d $thisincl; then
5089                 if $test x$thisincl != x$usrinc; then
5090                         case "$dflt" in
5091                         *" -I$thisincl "*);;
5092                         *) dflt="$dflt -I$thisincl ";;
5093                         esac
5094                 fi
5095         fi
5096 done
5097
5098 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5099         xxx=true;
5100 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5101         xxx=true;
5102 else
5103         xxx=false;
5104 fi;
5105 if $xxx; then
5106         case "$dflt" in
5107         *$2*);;
5108         *) dflt="$dflt -D$2";;
5109         esac;
5110 fi'
5111
5112 set signal.h LANGUAGE_C; eval $inctest
5113
5114 case "$usesocks" in
5115 $define)
5116         ccflags="$ccflags -DSOCKS"
5117         ;;
5118 esac
5119
5120 case "$hint" in
5121 default|recommended) dflt="$ccflags $dflt" ;;
5122 *) dflt="$ccflags";;
5123 esac
5124
5125 case "$dflt" in
5126 ''|' ') dflt=none;;
5127 esac
5128
5129 $cat <<EOH
5130
5131 Your C compiler may want other flags.  For this question you should include
5132 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5133 but you should NOT include libraries or ld flags like -lwhatever.  If you
5134 want $package to honor its debug switch, you should include -DDEBUGGING here.
5135 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5136
5137 To use no flags, specify the word "none".
5138
5139 EOH
5140 set X $dflt
5141 shift
5142 dflt=${1+"$@"}
5143 rp="Any additional cc flags?"
5144 . ./myread
5145 case "$ans" in
5146 none) ccflags='';;
5147 *) ccflags="$ans";;
5148 esac
5149
5150 : the following weeds options from ccflags that are of no interest to cpp
5151 case "$cppflags" in
5152 '') cppflags="$ccflags" ;;
5153 *)  cppflags="$cppflags $ccflags" ;;
5154 esac
5155 case "$gccversion" in
5156 1*) cppflags="$cppflags -D__GNUC__"
5157 esac
5158 case "$mips_type" in
5159 '');;
5160 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5161 esac
5162 case "$cppflags" in
5163 '');;
5164 *)
5165         echo " "
5166         echo "Let me guess what the preprocessor flags are..." >&4
5167         set X $cppflags
5168         shift
5169         cppflags=''
5170         $cat >cpp.c <<'EOM'
5171 #define BLURFL foo
5172
5173 BLURFL xx LFRULB
5174 EOM
5175         previous=''
5176         for flag in $*
5177         do
5178                 case "$flag" in
5179                 -*) ftry="$flag";;
5180                 *) ftry="$previous $flag";;
5181                 esac
5182                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5183                         >cpp1.out 2>/dev/null && \
5184                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5185                         >cpp2.out 2>/dev/null && \
5186                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5187                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5188                 then
5189                         cppflags="$cppflags $ftry"
5190                         previous=''
5191                 else
5192                         previous="$flag"
5193                 fi
5194         done
5195         set X $cppflags
5196         shift
5197         cppflags=${1+"$@"}
5198         case "$cppflags" in
5199         *-*)  echo "They appear to be: $cppflags";;
5200         esac
5201         $rm -f cpp.c cpp?.out
5202         ;;
5203 esac
5204
5205 : flags used in final linking phase
5206 case "$ldflags" in
5207 '') if ./venix; then
5208                 dflt='-i -z'
5209         else
5210                 dflt=''
5211         fi
5212         case "$ccflags" in
5213         *-posix*) dflt="$dflt -posix" ;;
5214         esac
5215         ;;
5216 *) dflt="$ldflags";;
5217 esac
5218
5219 : Try to guess additional flags to pick up local libraries.
5220 for thislibdir in $libpth; do
5221         case " $loclibpth " in
5222         *" $thislibdir "*)
5223                 case "$dflt " in
5224                 *"-L$thislibdir "*) ;;
5225                 *)  dflt="$dflt -L$thislibdir" ;;
5226                 esac
5227                 ;;
5228         esac
5229 done
5230
5231 case "$dflt" in
5232 '') dflt='none' ;;
5233 esac
5234
5235 $cat <<EOH
5236
5237 Your C linker may need flags.  For this question you should
5238 include -L/whatever and any other flags used by the C linker, but you
5239 should NOT include libraries like -lwhatever.
5240
5241 Make sure you include the appropriate -L/path flags if your C linker
5242 does not normally search all of the directories you specified above,
5243 namely
5244         $libpth
5245 To use no flags, specify the word "none".
5246
5247 EOH
5248
5249 rp="Any additional ld flags (NOT including libraries)?"
5250 . ./myread
5251 case "$ans" in
5252 none) ldflags='';;
5253 *) ldflags="$ans";;
5254 esac
5255 rmlist="$rmlist pdp11"
5256
5257 : coherency check
5258 echo " "
5259 echo "Checking your choice of C compiler and flags for coherency..." >&4
5260 $cat > try.c <<'EOF'
5261 #include <stdio.h>
5262 int main() { printf("Ok\n"); return(0); }
5263 EOF
5264 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5265 shift
5266 $cat >try.msg <<'EOM'
5267 I've tried to compile and run the following simple program:
5268
5269 EOM
5270 $cat try.c >> try.msg
5271
5272 $cat >> try.msg <<EOM
5273
5274 I used the command:
5275
5276         $*
5277         $run ./try
5278
5279 and I got the following output:
5280
5281 EOM
5282 dflt=y
5283 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5284         if $sh -c "$run ./try" >>try.msg 2>&1; then
5285                 xxx=`$run ./try`
5286                 case "$xxx" in
5287                 "Ok") dflt=n ;;
5288                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5289                         case " $libs " in
5290                         *" -lsfio "*)
5291                                 cat >> try.msg <<'EOQS'
5292 If $libs contains -lsfio, and sfio is mis-configured, then it
5293 sometimes (apparently) runs and exits with a 0 status, but with no
5294 output!  It may have to do with sfio's use of _exit vs. exit.
5295
5296 EOQS
5297                                 rp="You have a big problem.  Shall I abort Configure"
5298                                 dflt=y
5299                                 ;;
5300                         esac
5301                         ;;
5302                 esac
5303         else
5304                 echo "The program compiled OK, but exited with status $?." >>try.msg
5305                 rp="You have a problem.  Shall I abort Configure"
5306                 dflt=y
5307         fi
5308 else
5309         echo "I can't compile the test program." >>try.msg
5310         rp="You have a BIG problem.  Shall I abort Configure"
5311         dflt=y
5312 fi
5313 case "$dflt" in
5314 y)
5315         $cat try.msg >&4
5316         case "$knowitall" in
5317         '')
5318                 echo "(The supplied flags or libraries might be incorrect.)"
5319                 ;;
5320         *) dflt=n;;
5321         esac
5322         echo " "
5323         . ./myread
5324         case "$ans" in
5325         n*|N*) ;;
5326         *)      echo "Ok.  Stopping Configure." >&4
5327                 exit 1
5328                 ;;
5329         esac
5330         ;;
5331 n) echo "OK, that should do.";;
5332 esac
5333 $rm_try
5334
5335 : define a shorthand compile call
5336 compile='
5337 mc_file=$1;
5338 shift;
5339 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5340 : define a shorthand compile call for compilations that should be ok.
5341 compile_ok='
5342 mc_file=$1;
5343 shift;
5344 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5345
5346 : determine filename position in cpp output
5347 echo " "
5348 echo "Computing filename position in cpp output for #include directives..." >&4
5349 case "$osname" in
5350 vos) testaccess=-e ;;
5351 *)   testaccess=-r ;;
5352 esac
5353 echo '#include <stdio.h>' > foo.c
5354 $cat >fieldn <<EOF
5355 $startsh
5356 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5357 $grep '^[       ]*#.*stdio\.h' | \
5358 while read cline; do
5359         pos=1
5360         set \$cline
5361         while $test \$# -gt 0; do
5362                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5363                         echo "\$pos"
5364                         exit 0
5365                 fi
5366                 shift
5367                 pos=\`expr \$pos + 1\`
5368         done
5369 done
5370 EOF
5371 chmod +x fieldn
5372 fieldn=`./fieldn`
5373 $rm -f foo.c fieldn
5374 case $fieldn in
5375 '') pos='???';;
5376 1) pos=first;;
5377 2) pos=second;;
5378 3) pos=third;;
5379 *) pos="${fieldn}th";;
5380 esac
5381 echo "Your cpp writes the filename in the $pos field of the line."
5382
5383 case "$osname" in
5384 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5385 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5386 *)   cppfilter='' ;;
5387 esac
5388 : locate header file
5389 $cat >findhdr <<EOF
5390 $startsh
5391 wanted=\$1
5392 name=''
5393 for usrincdir in $usrinc
5394 do
5395         if test -f \$usrincdir/\$wanted; then
5396                 echo "\$usrincdir/\$wanted"
5397                 exit 0
5398         fi
5399 done
5400 awkprg='{ print \$$fieldn }'
5401 echo "#include <\$wanted>" > foo\$\$.c
5402 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5403 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5404 while read cline; do
5405         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5406         case "\$name" in
5407         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5408         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5409         *) exit 2;;
5410         esac;
5411 done;
5412 #
5413 # status = 0: grep returned 0 lines, case statement not executed
5414 # status = 1: headerfile found
5415 # status = 2: while loop executed, no headerfile found
5416 #
5417 status=\$?
5418 $rm -f foo\$\$.c;
5419 if test \$status -eq 1; then
5420         exit 0;
5421 fi
5422 exit 1
5423 EOF
5424 chmod +x findhdr
5425
5426 : define an alternate in-header-list? function
5427 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5428 cont=true; xxf="echo \"<\$1> found.\" >&4";
5429 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5430 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5431 esac;
5432 case $# in 4) instead=instead;; *) instead="at last";; esac;
5433 while $test "$cont"; do
5434         xxx=`./findhdr $1`
5435         var=$2; eval "was=\$$2";
5436         if $test "$xxx" && $test -r "$xxx";
5437         then eval $xxf;
5438         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5439                 cont="";
5440         else eval $xxnf;
5441         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5442         set $yyy; shift; shift; yyy=$@;
5443         case $# in 0) cont="";;
5444         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5445                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5446         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5447                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5448         esac;
5449 done;
5450 while $test "$yyy";
5451 do set $yyy; var=$2; eval "was=\$$2";
5452         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5453         set $yyy; shift; shift; yyy=$@;
5454 done'
5455
5456 : see if stdlib is available
5457 set stdlib.h i_stdlib
5458 eval $inhdr
5459
5460 : check for lengths of integral types
5461 echo " "
5462 case "$intsize" in
5463 '')
5464         echo "Checking to see how big your integers are..." >&4
5465         $cat >try.c <<EOCP
5466 #include <stdio.h>
5467 #$i_stdlib I_STDLIB
5468 #ifdef I_STDLIB
5469 #include <stdlib.h>
5470 #endif
5471 int main()
5472 {
5473         printf("intsize=%d;\n", (int)sizeof(int));
5474         printf("longsize=%d;\n", (int)sizeof(long));
5475         printf("shortsize=%d;\n", (int)sizeof(short));
5476         exit(0);
5477 }
5478 EOCP
5479         set try
5480         if eval $compile_ok && $run ./try > /dev/null; then
5481                 eval `$run ./try`
5482                 echo "Your integers are $intsize bytes long."
5483                 echo "Your long integers are $longsize bytes long."
5484                 echo "Your short integers are $shortsize bytes long."
5485         else
5486                 $cat >&4 <<EOM
5487 !
5488 Help! I can't compile and run the intsize test program: please enlighten me!
5489 (This is probably a misconfiguration in your system or libraries, and
5490 you really ought to fix it.  Still, I'll try anyway.)
5491 !
5492 EOM
5493                 dflt=4
5494                 rp="What is the size of an integer (in bytes)?"
5495                 . ./myread
5496                 intsize="$ans"
5497                 dflt=$intsize
5498                 rp="What is the size of a long integer (in bytes)?"
5499                 . ./myread
5500                 longsize="$ans"
5501                 dflt=2
5502                 rp="What is the size of a short integer (in bytes)?"
5503                 . ./myread
5504                 shortsize="$ans"
5505         fi
5506         ;;
5507 esac
5508 $rm_try
5509
5510 : check for long long
5511 echo " "
5512 echo "Checking to see if you have long long..." >&4
5513 echo 'int main() { long long x = 7; return 0; }' > try.c
5514 set try
5515 if eval $compile; then
5516         val="$define"
5517         echo "You have long long."
5518 else
5519         val="$undef"
5520         echo "You do not have long long."
5521 fi
5522 $rm_try
5523 set d_longlong
5524 eval $setvar
5525
5526 : check for length of long long
5527 case "${d_longlong}${longlongsize}" in
5528 $define)
5529         echo " "
5530         echo "Checking to see how big your long longs are..." >&4
5531         $cat >try.c <<'EOCP'
5532 #include <stdio.h>
5533 int main()
5534 {
5535     printf("%d\n", (int)sizeof(long long));
5536     return(0);
5537 }
5538 EOCP
5539         set try
5540         if eval $compile_ok; then
5541                 longlongsize=`$run ./try`
5542                 echo "Your long longs are $longlongsize bytes long."
5543         else
5544                 dflt='8'
5545                 echo " "
5546                 echo "(I can't seem to compile the test program.  Guessing...)"
5547                 rp="What is the size of a long long (in bytes)?"
5548                 . ./myread
5549                 longlongsize="$ans"
5550         fi
5551         if $test "X$longsize" = "X$longlongsize"; then
5552                 echo "(That isn't any different from an ordinary long.)"
5553         fi
5554         ;;
5555 esac
5556 $rm_try
5557
5558 : see if inttypes.h is available
5559 : we want a real compile instead of Inhdr because some systems
5560 : have an inttypes.h which includes non-existent headers
5561 echo " "
5562 $cat >try.c <<EOCP
5563 #include <inttypes.h>
5564 int main() {
5565         static int32_t foo32 = 0x12345678;
5566 }
5567 EOCP
5568 set try
5569 if eval $compile; then
5570         echo "<inttypes.h> found." >&4
5571         val="$define"
5572 else
5573         echo "<inttypes.h> NOT found." >&4
5574         val="$undef"
5575 fi
5576 $rm_try
5577 set i_inttypes
5578 eval $setvar
5579
5580 : check for int64_t
5581 echo " "
5582 echo "Checking to see if you have int64_t..." >&4
5583 $cat >try.c <<EOCP
5584 #include <sys/types.h>
5585 #$i_inttypes I_INTTYPES
5586 #ifdef I_INTTYPES
5587 #include <inttypes.h>
5588 #endif
5589 int main() { int64_t x = 7; }
5590 EOCP
5591 set try
5592 if eval $compile; then
5593         val="$define"
5594         echo "You have int64_t."
5595 else
5596         val="$undef"
5597         echo "You do not have int64_t."
5598 fi
5599 $rm_try
5600 set d_int64_t
5601 eval $setvar
5602
5603
5604 echo " "
5605 echo "Checking which 64-bit integer type we could use..." >&4
5606
5607 case "$intsize" in
5608 8) val=int
5609    set quadtype
5610    eval $setvar
5611    val='"unsigned int"'
5612    set uquadtype
5613    eval $setvar
5614    quadkind=1
5615    ;;
5616 *) case "$longsize" in
5617    8) val=long
5618       set quadtype
5619       eval $setvar
5620       val='"unsigned long"'
5621       set uquadtype
5622       eval $setvar
5623       quadkind=2
5624       ;;
5625    *) case "$d_longlong:$longlongsize" in
5626       define:8)
5627         val='"long long"'
5628         set quadtype
5629         eval $setvar
5630         val='"unsigned long long"'
5631         set uquadtype
5632         eval $setvar
5633         quadkind=3
5634         ;;
5635       *) case "$d_int64_t" in
5636          define)
5637            val=int64_t
5638            set quadtype
5639            eval $setvar
5640            val=uint64_t
5641            set uquadtype
5642            eval $setvar
5643            quadkind=4
5644            ;;
5645          esac
5646          ;;
5647       esac
5648       ;;
5649    esac
5650    ;;
5651 esac
5652
5653 case "$quadtype" in
5654 '')     echo "Alas, no 64-bit integer types in sight." >&4
5655         d_quad="$undef"
5656         ;;
5657 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5658         d_quad="$define"
5659         ;;
5660 esac
5661
5662
5663 case "$uselonglong" in
5664 "$define"|true|[yY]*)
5665         cat <<EOM >&4
5666
5667 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5668 EOM
5669         use64bitint="$define"
5670         ;;
5671 esac                          
5672 case "$use64bits" in
5673 "$define"|true|[yY]*)
5674         cat <<EOM >&4
5675
5676 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5677 EOM
5678         use64bitint="$define"
5679         ;;
5680 esac                          
5681 case "$use64bitints" in
5682 "$define"|true|[yY]*)
5683         cat <<EOM >&4
5684
5685 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5686 EOM
5687         use64bitint="$define"
5688         ;;
5689 esac                          
5690 case "$use64bitsint" in
5691 "$define"|true|[yY]*)
5692         cat <<EOM >&4
5693
5694 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5695 EOM
5696         use64bitint="$define"
5697         ;;
5698 esac                          
5699 case "$uselonglongs" in
5700 "$define"|true|[yY]*)
5701         cat <<EOM >&4
5702
5703 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5704 EOM
5705         use64bitint="$define"
5706         ;;
5707 esac                          
5708 case "$use64bitsall" in
5709 "$define"|true|[yY]*)
5710         cat <<EOM >&4
5711
5712 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5713 EOM
5714         use64bitall="$define"
5715         ;;
5716 esac                          
5717
5718 case "$ccflags" in
5719 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5720 esac
5721 case "$use64bitall" in
5722 "$define"|true|[yY]*) use64bitint="$define" ;;
5723 esac
5724
5725 case "$longsize" in
5726 8) cat <<EOM
5727
5728 You have natively 64-bit long integers.
5729 EOM
5730    val="$define"
5731    ;;
5732 *) case "$use64bitint" in
5733    "$define"|true|[yY]*) dflt='y';;
5734    *) dflt='n';;
5735    esac
5736    case "$d_quad" in
5737    "$define") ;;
5738    *) dflt='n' ;;
5739    esac
5740    cat <<EOM
5741
5742 Perl can be built to take advantage of 64-bit integer types
5743 on some systems.  To do so, Configure can be run with -Duse64bitint.
5744 Choosing this option will most probably introduce binary incompatibilities.
5745
5746 If this doesn't make any sense to you, just accept the default '$dflt'.
5747 (The default has been chosen based on your configuration.)
5748 EOM
5749    rp='Try to use 64-bit integers, if available?'
5750    . ./myread
5751    case "$ans" in
5752    [yY]*) val="$define" ;;
5753    *)     val="$undef"  ;;
5754    esac
5755    ;;
5756 esac
5757 set use64bitint
5758 eval $setvar
5759
5760 case "$use64bitall" in
5761 "$define"|true|[yY]*) dflt='y' ;;
5762 *) case "$longsize" in
5763    8) dflt='y' ;;
5764    *) dflt='n' ;;
5765    esac
5766    ;;
5767 esac    
5768 cat <<EOM
5769
5770 You may also choose to try maximal 64-bitness.  It means using as much
5771 64-bitness as possible on the platform.  This in turn means even more
5772 binary incompatibilities.  On the other hand, your platform may not
5773 have any more 64-bitness available than what you already have chosen.
5774
5775 If this doesn't make any sense to you, just accept the default '$dflt'.
5776 (The default has been chosen based on your configuration.)
5777 EOM
5778 rp='Try to use maximal 64-bit support, if available?'
5779 . ./myread
5780 case "$ans" in
5781 [yY]*) val="$define" ;;
5782 *)     val="$undef"  ;;
5783 esac
5784 set use64bitall
5785 eval $setvar
5786 case "$use64bitall" in
5787 "$define")
5788         case "$use64bitint" in
5789         "$undef")
5790                 cat <<EOM
5791
5792 Since you have chosen a maximally 64-bit build, I'm also turning on
5793 the use of 64-bit integers.
5794 EOM
5795                 use64bitint="$define" ;;
5796         esac
5797         ;;
5798 esac
5799
5800 : Look for a hint-file generated 'call-back-unit'.  If the
5801 : user has specified that a 64-bit perl is to be built,
5802 : we may need to set or change some other defaults.
5803 if $test -f use64bitint.cbu; then
5804         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5805         . ./use64bitint.cbu
5806 fi
5807 case "$use64bitint" in
5808 "$define"|true|[yY]*)
5809         case "$longsize" in
5810         4) case "$archname64" in
5811            '') archname64=64int ;;
5812            esac
5813            ;;
5814         esac
5815         ;;
5816 esac
5817
5818 : Look for a hint-file generated 'call-back-unit'.  If the
5819 : user has specified that a maximally 64-bit perl is to be built,
5820 : we may need to set or change some other defaults.
5821 if $test -f use64bitall.cbu; then
5822         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5823         . ./use64bitall.cbu
5824 fi
5825 case "$use64bitall" in
5826 "$define"|true|[yY]*)
5827         case "$longsize" in
5828         4) case "$archname64" in
5829            ''|64int) archname64=64all ;;
5830            esac
5831            ;;
5832         esac
5833         ;;
5834 esac
5835
5836 case "$d_quad:$use64bitint" in
5837 $undef:$define)
5838         cat >&4 <<EOF
5839
5840 *** You have chosen to use 64-bit integers,
5841 *** but none can be found.
5842 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5843 *** Cannot continue, aborting.
5844
5845 EOF
5846         exit 1
5847         ;;
5848 esac
5849
5850 : check for length of double
5851 echo " "
5852 case "$doublesize" in
5853 '')
5854         echo "Checking to see how big your double precision numbers are..." >&4
5855         $cat >try.c <<EOCP
5856 #include <stdio.h>
5857 #$i_stdlib I_STDLIB
5858 #ifdef I_STDLIB
5859 #include <stdlib.h>
5860 #endif
5861 int main()
5862 {
5863     printf("%d\n", (int)sizeof(double));
5864     exit(0);
5865 }
5866 EOCP
5867         set try
5868         if eval $compile_ok; then
5869                 doublesize=`$run ./try`
5870                 echo "Your double is $doublesize bytes long."
5871         else
5872                 dflt='8'
5873                 echo "(I can't seem to compile the test program.  Guessing...)"
5874                 rp="What is the size of a double precision number (in bytes)?"
5875                 . ./myread
5876                 doublesize="$ans"
5877         fi
5878         ;;
5879 esac
5880 $rm_try
5881
5882 : check for long doubles
5883 echo " "
5884 echo "Checking to see if you have long double..." >&4
5885 echo 'int main() { long double x = 7.0; }' > try.c
5886 set try
5887 if eval $compile; then
5888         val="$define"
5889         echo "You have long double."
5890 else
5891         val="$undef"
5892         echo "You do not have long double."
5893 fi
5894 $rm_try
5895 set d_longdbl
5896 eval $setvar
5897
5898 : check for length of long double
5899 case "${d_longdbl}${longdblsize}" in
5900 $define)
5901         echo " "
5902         echo "Checking to see how big your long doubles are..." >&4
5903         $cat >try.c <<'EOCP'
5904 #include <stdio.h>
5905 int main()
5906 {
5907         printf("%d\n", sizeof(long double));
5908 }
5909 EOCP
5910         set try
5911         set try
5912         if eval $compile; then
5913                 longdblsize=`$run ./try`
5914                 echo "Your long doubles are $longdblsize bytes long."
5915         else
5916                 dflt='8'
5917                 echo " "
5918                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5919                 rp="What is the size of a long double (in bytes)?"
5920                 . ./myread
5921                 longdblsize="$ans"
5922         fi
5923         if $test "X$doublesize" = "X$longdblsize"; then
5924                 echo "That isn't any different from an ordinary double."
5925                 echo "I'll keep your setting anyway, but you may see some"
5926                 echo "harmless compilation warnings."
5927         fi
5928         ;;
5929 esac
5930 $rm_try
5931
5932 : determine the architecture name
5933 echo " "
5934 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5935         tarch=`arch`"-$osname"
5936 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5937         if uname -m > tmparch 2>&1 ; then
5938                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5939                         -e 's/$/'"-$osname/" tmparch`
5940         else
5941                 tarch="$osname"
5942         fi
5943         $rm -f tmparch
5944 else
5945         tarch="$osname"
5946 fi
5947 case "$myarchname" in
5948 ''|"$tarch") ;;
5949 *)
5950         echo "(Your architecture name used to be $myarchname.)"
5951         archname=''
5952         ;;
5953 esac
5954 case "$targetarch" in
5955 '') ;;
5956 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5957 esac
5958 myarchname="$tarch"
5959 case "$archname" in
5960 '') dflt="$tarch";;
5961 *) dflt="$archname";;
5962 esac
5963 rp='What is your architecture name'
5964 . ./myread
5965 archname="$ans"
5966 case "$usethreads" in
5967 $define)
5968         echo "Threads selected." >&4
5969         case "$archname" in
5970         *-thread*) echo "...and architecture name already has -thread." >&4
5971                 ;;
5972         *)      archname="$archname-thread"
5973                 echo "...setting architecture name to $archname." >&4
5974                 ;;
5975         esac
5976         ;;
5977 esac
5978 case "$usemultiplicity" in
5979 $define)
5980         echo "Multiplicity selected." >&4
5981         case "$archname" in
5982         *-multi*) echo "...and architecture name already has -multi." >&4
5983                 ;;
5984         *)      archname="$archname-multi"
5985                 echo "...setting architecture name to $archname." >&4
5986                 ;;
5987         esac
5988         ;;
5989 esac
5990 case "$use64bitint$use64bitall" in
5991 *"$define"*)
5992         case "$archname64" in
5993         '')
5994                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5995                 ;;
5996         *)
5997                 case "$use64bitint" in
5998                 "$define") echo "64 bit integers selected." >&4 ;;
5999                 esac
6000                 case "$use64bitall" in
6001                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6002                 esac
6003                 case "$archname" in
6004                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6005                         ;;
6006                 *)      archname="$archname-$archname64"
6007                         echo "...setting architecture name to $archname." >&4
6008                         ;;
6009                 esac
6010                 ;;
6011         esac
6012 esac
6013 case "$uselongdouble" in
6014 $define)
6015         echo "Long doubles selected." >&4
6016         case "$longdblsize" in
6017         $doublesize)
6018                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6019                 ;;
6020         *)
6021                 case "$archname" in
6022                 *-ld*) echo "...and architecture name already has -ld." >&4
6023                         ;;
6024                 *)      archname="$archname-ld"
6025                         echo "...setting architecture name to $archname." >&4
6026                         ;;
6027                 esac
6028                 ;;
6029         esac
6030         ;;
6031 esac
6032 case "$useperlio" in
6033 $define)
6034         echo "Perlio selected." >&4
6035         ;;
6036 *)
6037         echo "Perlio not selected, using stdio." >&4
6038         case "$archname" in
6039         *-stdio*) echo "...and architecture name already has -stdio." >&4
6040                 ;;
6041         *)      archname="$archname-stdio"
6042                 echo "...setting architecture name to $archname." >&4
6043                 ;;
6044         esac
6045         ;;
6046 esac
6047 if $test -f archname.cbu; then
6048         echo "Your platform has some specific hints for architecture name, using them..."
6049         . ./archname.cbu
6050 fi
6051
6052 : set the prefixit variable, to compute a suitable default value
6053 prefixit='case "$3" in
6054 ""|none)
6055         case "$oldprefix" in
6056         "") eval "$1=\"\$$2\"";;
6057         *)
6058                 case "$3" in
6059                 "") eval "$1=";;
6060                 none)
6061                         eval "tp=\"\$$2\"";
6062                         case "$tp" in
6063                         ""|" ") eval "$1=\"\$$2\"";;
6064                         *) eval "$1=";;
6065                         esac;;
6066                 esac;;
6067         esac;;
6068 *)
6069         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6070         case "$tp" in
6071         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6072         /*-$oldprefix/*|\~*-$oldprefix/*)
6073                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6074         *) eval "$1=\"\$$2\"";;
6075         esac;;
6076 esac'
6077
6078 : determine installation style
6079 : For now, try to deduce it from prefix unless it is already set.
6080 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6081 case "$installstyle" in
6082 '')     case "$prefix" in
6083                 *perl*) dflt='lib';;
6084                 *) dflt='lib/perl5' ;;
6085         esac
6086         ;;
6087 *)      dflt="$installstyle" ;;
6088 esac
6089 : Probably not worth prompting for this since we prompt for all
6090 : the directories individually, and the prompt would be too long and
6091 : confusing anyway.
6092 installstyle=$dflt
6093
6094 : determine where public executables go
6095 echo " "
6096 set dflt bin bin
6097 eval $prefixit
6098 fn=d~
6099 rp='Pathname where the public executables will reside?'
6100 . ./getfile
6101 if $test "X$ansexp" != "X$binexp"; then
6102         installbin=''
6103 fi
6104 prefixvar=bin
6105 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6106 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6107 :     this via initialinstalllocation
6108 . ./setprefixvar
6109
6110 case "$userelocatableinc" in
6111 $define|true|[yY]*)     dflt='y' ;;
6112 *)                      dflt='n' ;;
6113 esac
6114 cat <<EOM
6115
6116 Would you like to build Perl so that the installation is relocatable, so that
6117 library paths in @INC are determined relative to the path of the perl binary?
6118 This is not advised for system Perl installs, or if you need to run setid
6119 scripts or scripts under taint mode.
6120
6121 If this doesn't make any sense to you, just accept the default '$dflt'.
6122 EOM
6123 rp='Use relocatable @INC?'
6124 . ./myread
6125 case "$ans" in
6126 y|Y)    val="$define" ;;
6127 *)      val="$undef"  ;;
6128 esac
6129 set userelocatableinc
6130 eval $setvar
6131
6132 initialinstalllocation="$binexp"
6133 : Default prefix is now "up one level from where the binaries are"
6134 case "$userelocatableinc" in
6135 $define|true|[yY]*)
6136     bin=".../"
6137     binexp=".../"
6138     prefix=".../.."
6139     prefixexp=".../.."
6140     installprefixexp=".../.."
6141     ;;
6142 esac
6143
6144 : determine where private library files go
6145 : Usual default is /usr/local/lib/perl5/$version.
6146 : Also allow things like /opt/perl/lib/$version, since
6147 : /opt/perl/lib/perl5... would be redundant.
6148 : The default "style" setting is made in installstyle.U
6149 case "$installstyle" in
6150 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6151 *)       set dflt privlib lib/$version ;;
6152 esac
6153 eval $prefixit
6154 $cat <<EOM
6155
6156 There are some auxiliary files for $package that need to be put into a
6157 private library directory that is accessible by everyone.
6158
6159 EOM
6160 fn=$binexp
6161 fn=d~+
6162 rp='Pathname where the private library files will reside?'
6163 . ./getfile
6164 prefixvar=privlib
6165 . ./setprefixvar
6166
6167 : set the prefixup variable, to restore leading tilda escape
6168 prefixup='case "$prefixexp" in
6169 "$prefix") ;;
6170 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6171 esac'
6172
6173 : determine where public architecture dependent libraries go
6174 set archlib archlib
6175 eval $prefixit
6176 : privlib default is /usr/local/lib/$package/$version
6177 : archlib default is /usr/local/lib/$package/$version/$archname
6178 : privlib may have an optional trailing /share.
6179 tdflt=`echo $privlib | $sed 's,/share$,,'`
6180 tdflt=$tdflt/$archname
6181 case "$archlib" in
6182 '')     dflt=$tdflt
6183         ;;
6184 *)      dflt="$archlib"
6185     ;;
6186 esac
6187 $cat <<EOM
6188
6189 $spackage contains architecture-dependent library files.  If you are
6190 sharing libraries in a heterogeneous environment, you might store
6191 these files in a separate location.  Otherwise, you can just include
6192 them with the rest of the public library files.
6193
6194 EOM
6195 fn=$binexp
6196 fn=d+~
6197 rp='Where do you want to put the public architecture-dependent libraries?'
6198 . ./getfile
6199 prefixvar=archlib
6200 . ./setprefixvar
6201 if $test X"$archlib" = X"$privlib"; then
6202         d_archlib="$undef"
6203 else
6204         d_archlib="$define"
6205 fi
6206
6207 : see if setuid scripts can be secure
6208 $cat <<EOM
6209
6210 Some kernels have a bug that prevents setuid #! scripts from being
6211 secure.  Some sites have disabled setuid #! scripts because of this.
6212
6213 First let's decide if your kernel supports secure setuid #! scripts.
6214 (If setuid #! scripts would be secure but have been disabled anyway,
6215 don't say that they are secure if asked.)
6216
6217 EOM
6218
6219 val="$undef"
6220 if $test -d /dev/fd; then
6221         echo "#!$ls" >reflect
6222         chmod +x,u+s reflect
6223         ./reflect >flect 2>&1
6224         if $contains "/dev/fd" flect >/dev/null; then
6225                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6226                 val="$define"
6227         else
6228                 $cat <<EOM
6229 If you are not sure if they are secure, I can check but I'll need a
6230 username and password different from the one you are using right now.
6231 If you don't have such a username or don't want me to test, simply
6232 enter 'none'.
6233
6234 EOM
6235                 rp='Other username to test security of setuid scripts with?'
6236                 dflt='none'
6237                 . ./myread
6238                 case "$ans" in
6239                 n|none)
6240                         case "$d_suidsafe" in
6241                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6242                                 dflt=n;;
6243                         "$undef")
6244                                 echo "Well, the $hint value is *not* secure." >&4
6245                                 dflt=n;;
6246                         *)      echo "Well, the $hint value *is* secure." >&4
6247                                 dflt=y;;
6248                         esac
6249                         ;;
6250                 *)
6251                         $rm -f reflect flect
6252                         echo "#!$ls" >reflect
6253                         chmod +x,u+s reflect
6254                         echo >flect
6255                         chmod a+w flect
6256                         echo '"su" will (probably) prompt you for '"$ans's password."
6257                         su $ans -c './reflect >flect'
6258                         if $contains "/dev/fd" flect >/dev/null; then
6259                                 echo "Okay, it looks like setuid scripts are secure." >&4
6260                                 dflt=y
6261                         else
6262                                 echo "I don't think setuid scripts are secure." >&4
6263                                 dflt=n
6264                         fi
6265                         ;;
6266                 esac
6267                 rp='Does your kernel have *secure* setuid scripts?'
6268                 . ./myread
6269                 case "$ans" in
6270                 [yY]*)  val="$define";;
6271                 *)      val="$undef";;
6272                 esac
6273         fi
6274 else
6275         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6276         echo "(That's for file descriptors, not floppy disks.)"
6277         val="$undef"
6278 fi
6279 set d_suidsafe
6280 eval $setvar
6281
6282 $rm -f reflect flect
6283
6284 : now see if they want to do setuid emulation
6285 echo " "
6286 val="$undef"
6287 case "$d_suidsafe" in
6288 "$define")
6289         val="$undef"
6290         echo "No need to emulate SUID scripts since they are secure here." >&4
6291         ;;
6292 *)
6293         $cat <<EOM
6294 Some systems have disabled setuid scripts, especially systems where
6295 setuid scripts cannot be secure.  On systems where setuid scripts have
6296 been disabled, the setuid/setgid bits on scripts are currently
6297 useless.  It is possible for $package to detect those bits and emulate
6298 setuid/setgid in a secure fashion.  This emulation will only work if
6299 setuid scripts have been disabled in your kernel.
6300
6301 EOM
6302         case "$d_dosuid" in
6303         "$define") dflt=y ;;
6304         *) dflt=n ;;
6305         esac
6306         rp="Do you want to do setuid/setgid emulation?"
6307         . ./myread
6308         case "$ans" in
6309         [yY]*)  val="$define";;
6310         *)      val="$undef";;
6311         esac
6312         ;;
6313 esac
6314 set d_dosuid
6315 eval $setvar
6316
6317 : Find perl5.005 or later.
6318 echo "Looking for a previously installed perl5.005 or later... "
6319 case "$perl5" in
6320 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6321                 : Check if this perl is recent and can load a simple module
6322                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6323                         perl5=$tdir/perl
6324                         break;
6325                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6326                         perl5=$tdir/perl5
6327                         break;
6328                 fi
6329         done
6330         ;;
6331 *)      perl5="$perl5"
6332         ;;
6333 esac
6334 case "$perl5" in
6335 '')     echo "None found.  That's ok.";;
6336 *)      echo "Using $perl5." ;;
6337 esac
6338
6339 $cat <<EOM
6340
6341 After $package is installed, you may wish to install various
6342 add-on modules and utilities.  Typically, these add-ons will
6343 be installed under $prefix with the rest
6344 of this package.  However, you may wish to install such add-ons
6345 elsewhere under a different prefix.
6346
6347 If you do not wish to put everything under a single prefix, that's
6348 ok.  You will be prompted for the individual locations; this siteprefix
6349 is only used to suggest the defaults.
6350
6351 The default should be fine for most people.
6352
6353 EOM
6354 fn=d~+
6355 rp='Installation prefix to use for add-on modules and utilities?'
6356 : XXX Here might be another good place for an installstyle setting.
6357 case "$siteprefix" in
6358 '') dflt=$prefix ;;
6359 *)  dflt=$siteprefix ;;
6360 esac
6361 . ./getfile
6362 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6363 oldsiteprefix=''
6364 case "$siteprefix" in
6365 '') ;;
6366 *)      case "$ans" in
6367         "$prefix") ;;
6368         *) oldsiteprefix="$prefix";;
6369         esac
6370         ;;
6371 esac
6372 siteprefix="$ans"
6373 siteprefixexp="$ansexp"
6374
6375 : determine where site specific libraries go.
6376 : Usual default is /usr/local/lib/perl5/site_perl/$version
6377 : The default "style" setting is made in installstyle.U
6378 : XXX No longer works with Prefixit stuff.
6379 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6380 case "$sitelib" in
6381 '') case "$installstyle" in
6382         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6383         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6384         esac
6385         ;;
6386 *)      dflt="$sitelib"
6387         ;;
6388 esac
6389 $cat <<EOM
6390
6391 The installation process will create a directory for
6392 site-specific extensions and modules.  Most users find it convenient
6393 to place all site-specific files in this directory rather than in the
6394 main distribution directory.
6395
6396 EOM
6397 fn=d~+
6398 rp='Pathname for the site-specific library files?'
6399 . ./getfile
6400 prefixvar=sitelib
6401 . ./setprefixvar
6402 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6403
6404 : Determine list of previous versions to include in @INC
6405 $cat > getverlist <<EOPL
6406 #!$perl5 -w
6407 use File::Basename;
6408 \$api_versionstring = "$api_versionstring";
6409 \$version = "$version";
6410 \$stem = "$sitelib_stem";
6411 \$archname = "$archname";
6412 EOPL
6413         $cat >> getverlist <<'EOPL'
6414 # The list found is store twice for each entry: the original name, and
6415 # the binary broken down version as pack "sss", so sorting is easy and
6416 # unambiguous. This will work for all versions that have a maximum of
6417 # three digit groups, separate by '.'s or '_'s. Names are extended with
6418 # ".0.0" to ensure at least three elements for the pack.
6419 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6420
6421 # Can't have leading @ because metaconfig interprets it as a command!
6422 ;@inc_version_list=();
6423 # XXX Redo to do opendir/readdir?
6424 if (-d $stem) {
6425     chdir($stem);
6426     ;@candidates = map {
6427         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6428 }
6429 else {
6430     ;@candidates = ();
6431 }
6432
6433 ($pversion, $aversion, $vsn5005) = map {
6434     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6435 foreach $d (@candidates) {
6436     if ($d->[1] lt $pversion) {
6437         if ($d->[1] ge $aversion) {
6438             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6439         }
6440         elsif ($d->[1] ge $vsn5005) {
6441             unshift(@inc_version_list, grep { -d } $d->[0]);
6442         }
6443     }
6444     else {
6445         # Skip newer version.  I.e. don't look in
6446         # 5.7.0 if we're installing 5.6.1.
6447     }
6448 }
6449
6450 if (@inc_version_list) {
6451     print join(' ', @inc_version_list);
6452 }
6453 else {
6454     # Blank space to preserve value for next Configure run.
6455     print " ";
6456 }
6457 EOPL
6458 chmod +x getverlist
6459 case "$inc_version_list" in
6460 '')     if test -x "$perl5$exe_ext"; then
6461                 dflt=`$perl5 getverlist`
6462         else
6463                 dflt='none'
6464         fi
6465         ;;
6466 $undef) dflt='none' ;;
6467 *)  eval dflt=\"$inc_version_list\" ;;
6468 esac
6469 case "$dflt" in
6470 ''|' ') dflt=none ;;
6471 esac
6472 case "$dflt" in
6473 5.005) dflt=none ;;
6474 esac
6475 $cat <<EOM
6476
6477 In order to ease the process of upgrading, this version of perl
6478 can be configured to use modules built and installed with earlier
6479 versions of perl that were installed under $prefix.  Specify here
6480 the list of earlier versions that this version of perl should check.
6481 If Configure detected no earlier versions of perl installed under
6482 $prefix, then the list will be empty.  Answer 'none' to tell perl
6483 to not search earlier versions.
6484
6485 The default should almost always be sensible, so if you're not sure,
6486 just accept the default.
6487 EOM
6488
6489 rp='List of earlier versions to include in @INC?'
6490 . ./myread
6491 case "$ans" in
6492 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6493 *) inc_version_list="$ans" ;;
6494 esac
6495 case "$inc_version_list" in
6496 ''|' ')
6497         inc_version_list_init='0'
6498         d_inc_version_list="$undef"
6499         ;;
6500 *)      inc_version_list_init=`echo $inc_version_list |
6501                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6502         d_inc_version_list="$define"
6503         ;;
6504 esac
6505 $rm -f getverlist
6506
6507 : see if this is a malloc.h system
6508 : we want a real compile instead of Inhdr because some systems have a
6509 : malloc.h that just gives a compile error saying to use stdlib.h instead
6510 echo " "
6511 $cat >try.c <<EOCP
6512 #include <stdlib.h>
6513 #include <malloc.h>
6514 int main () { return 0; }
6515 EOCP
6516 set try
6517 if eval $compile; then
6518     echo "<malloc.h> found." >&4
6519     val="$define"
6520 else
6521     echo "<malloc.h> NOT found." >&4
6522     val="$undef"
6523 fi
6524 $rm_try
6525 set i_malloc
6526 eval $setvar
6527
6528 : check for void type
6529 echo " "
6530 echo "Checking to see how well your C compiler groks the void type..." >&4
6531 case "$voidflags" in
6532 '')
6533         $cat >try.c <<EOCP
6534 #$i_stdlib I_STDLIB
6535 #ifdef I_STDLIB
6536 #include <stdlib.h>
6537 #endif
6538 #if TRY & 1
6539 void sub() {
6540 #else
6541 sub() {
6542 #endif
6543         extern void moo();      /* function returning void */
6544         void (*goo)();          /* ptr to func returning void */
6545 #if TRY & 8
6546         void *hue;              /* generic ptr */
6547 #endif
6548 #if TRY & 2
6549         void (*foo[10])();
6550 #endif
6551
6552 #if TRY & 4
6553         if(goo == moo) {
6554                 exit(0);
6555         }
6556 #endif
6557         exit(0);
6558 }
6559 int main() { sub(); }
6560 EOCP
6561         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6562                 voidflags=$defvoidused
6563         echo "Good.  It appears to support void to the level $package wants.">&4
6564                 if $contains warning .out >/dev/null 2>&1; then
6565                         echo "However, you might get some warnings that look like this:"
6566                         $cat .out
6567                 fi
6568         else
6569 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6570                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6571                         echo "It supports 1..."
6572                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6573                                 echo "It also supports 2..."
6574                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6575                                         voidflags=7
6576                                         echo "And it supports 4 but not 8 definitely."
6577                                 else
6578                                         echo "It doesn't support 4..."
6579                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6580                                                 voidflags=11
6581                                                 echo "But it supports 8."
6582                                         else
6583                                                 voidflags=3
6584                                                 echo "Neither does it support 8."
6585                                         fi
6586                                 fi
6587                         else
6588                                 echo "It does not support 2..."
6589                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6590                                         voidflags=13
6591                                         echo "But it supports 4 and 8."
6592                                 else
6593                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6594                                                 voidflags=5
6595                                                 echo "And it supports 4 but has not heard about 8."
6596                                         else
6597                                                 echo "However it supports 8 but not 4."
6598                                         fi
6599                                 fi
6600                         fi
6601                 else
6602                         echo "There is no support at all for void."
6603                         voidflags=0
6604                 fi
6605         fi
6606 esac
6607 case "$voidflags" in
6608 "$defvoidused") ;;
6609 *)      $cat >&4 <<'EOM'
6610   Support flag bits are:
6611     1: basic void declarations.
6612     2: arrays of pointers to functions returning void.
6613     4: operations between pointers to and addresses of void functions.
6614     8: generic void pointers.
6615 EOM
6616         dflt="$voidflags";
6617         rp="Your void support flags add up to what?"
6618         . ./myread
6619         voidflags="$ans"
6620         ;;
6621 esac
6622 $rm_try
6623
6624 : check for length of pointer
6625 echo " "
6626 case "$ptrsize" in
6627 '')
6628         echo "Checking to see how big your pointers are..." >&4
6629         if test "$voidflags" -gt 7; then
6630                 echo '#define VOID_PTR char *' > try.c
6631         else
6632                 echo '#define VOID_PTR void *' > try.c
6633         fi
6634         $cat >>try.c <<EOCP
6635 #include <stdio.h>
6636 #$i_stdlib I_STDLIB
6637 #ifdef I_STDLIB
6638 #include <stdlib.h>
6639 #endif
6640 int main()
6641 {
6642     printf("%d\n", (int)sizeof(VOID_PTR));
6643     exit(0);
6644 }
6645 EOCP
6646         set try
6647         if eval $compile_ok; then
6648                 ptrsize=`$run ./try`
6649                 echo "Your pointers are $ptrsize bytes long."
6650         else
6651                 dflt='4'
6652                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6653                 rp="What is the size of a pointer (in bytes)?"
6654                 . ./myread
6655                 ptrsize="$ans"
6656         fi
6657         ;;
6658 esac
6659 $rm_try
6660 case "$use64bitall" in
6661 "$define"|true|[yY]*)
6662         case "$ptrsize" in
6663         4)      cat <<EOM >&4
6664
6665 *** You have chosen a maximally 64-bit build,
6666 *** but your pointers are only 4 bytes wide.
6667 *** Please rerun Configure without -Duse64bitall.
6668 EOM
6669                 case "$d_quad" in
6670                 define)
6671                         cat <<EOM >&4
6672 *** Since you have quads, you could possibly try with -Duse64bitint.
6673 EOM
6674                         ;;
6675                 esac
6676                 cat <<EOM >&4
6677 *** Cannot continue, aborting.
6678
6679 EOM
6680
6681                 exit 1
6682                 ;;
6683         esac
6684         ;;
6685 esac
6686
6687
6688 : determine whether to use malloc wrapping
6689 echo " "
6690 case "$usemallocwrap" in
6691 [yY]*|true|$define)     dflt='y' ;;
6692 [nN]*|false|$undef)     dflt='n' ;;
6693 *)      case "$usedevel" in
6694         [yY]*|true|$define)     dflt='y' ;;
6695         *) dflt='n' ;;
6696         esac
6697         ;;
6698 esac
6699 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6700 . ./myread
6701 usemallocwrap="$ans"
6702 case "$ans" in
6703 y*|true)
6704         usemallocwrap="$define" ;;
6705 *)
6706         usemallocwrap="$undef" ;;
6707 esac
6708
6709 : determine which malloc to compile in
6710 echo " "
6711 case "$usemymalloc" in
6712 [yY]*|true|$define)     dflt='y' ;;
6713 [nN]*|false|$undef)     dflt='n' ;;
6714 *)      case "$ptrsize" in
6715         4) dflt='y' ;;
6716         *) dflt='n' ;;
6717         esac
6718         ;;
6719 esac
6720 rp="Do you wish to attempt to use the malloc that comes with $package?"
6721 . ./myread
6722 usemymalloc="$ans"
6723 case "$ans" in
6724 y*|true)
6725         usemymalloc='y'
6726         mallocsrc='malloc.c'
6727         mallocobj="malloc$_o"
6728         d_mymalloc="$define"
6729         case "$libs" in
6730         *-lmalloc*)
6731                 : Remove malloc from list of libraries to use
6732                 echo "Removing unneeded -lmalloc from library list" >&4
6733                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6734                 shift
6735                 libs="$*"
6736                 echo "libs = $libs" >&4
6737                 ;;
6738         esac
6739         ;;
6740 *)
6741         usemymalloc='n'
6742         mallocsrc=''
6743         mallocobj=''
6744         d_mymalloc="$undef"
6745         ;;
6746 esac
6747
6748 : compute the return types of malloc and free
6749 echo " "
6750 $cat >malloc.c <<END
6751 #$i_malloc I_MALLOC
6752 #$i_stdlib I_STDLIB
6753 #include <stdio.h>
6754 #include <sys/types.h>
6755 #ifdef I_MALLOC
6756 #include <malloc.h>
6757 #endif
6758 #ifdef I_STDLIB
6759 #include <stdlib.h>
6760 #endif
6761 #ifdef TRY_MALLOC
6762 void *malloc();
6763 #endif
6764 #ifdef TRY_FREE
6765 void free();
6766 #endif
6767 END
6768 case "$malloctype" in
6769 '')
6770         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6771                 malloctype='void *'
6772         else
6773                 malloctype='char *'
6774         fi
6775         ;;
6776 esac
6777 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6778
6779 case "$freetype" in
6780 '')
6781         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6782                 freetype='void'
6783         else
6784                 freetype='int'
6785         fi
6786         ;;
6787 esac
6788 echo "Your system uses $freetype free(), it would seem." >&4
6789 $rm -f malloc.[co]
6790 : determine where site specific architecture-dependent libraries go.
6791 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6792 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6793 : sitelib may have an optional trailing /share.
6794 case "$sitearch" in
6795 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6796         dflt="$dflt/$archname"
6797         ;;
6798 *)      dflt="$sitearch"
6799         ;;
6800 esac
6801 set sitearch sitearch none
6802 eval $prefixit
6803 $cat <<EOM
6804
6805 The installation process will also create a directory for
6806 architecture-dependent site-specific extensions and modules.
6807
6808 EOM
6809 fn=d~+
6810 rp='Pathname for the site-specific architecture-dependent library files?'
6811 . ./getfile
6812 prefixvar=sitearch
6813 . ./setprefixvar
6814 if $test X"$sitearch" = X"$sitelib"; then
6815         d_sitearch="$undef"
6816 else
6817         d_sitearch="$define"
6818 fi
6819
6820 $cat <<EOM
6821
6822 The installation process will also create a directory for
6823 vendor-supplied add-ons.  Vendors who supply perl with their system
6824 may find it convenient to place all vendor-supplied files in this
6825 directory rather than in the main distribution directory.  This will
6826 ease upgrades between binary-compatible maintenance versions of perl.
6827
6828 Of course you may also use these directories in whatever way you see
6829 fit.  For example, you might use them to access modules shared over a
6830 company-wide network.
6831
6832 The default answer should be fine for most people.
6833 This causes further questions about vendor add-ons to be skipped
6834 and no vendor-specific directories will be configured for perl.
6835
6836 EOM
6837 rp='Do you want to configure vendor-specific add-on directories?'
6838 case "$usevendorprefix" in
6839 define|true|[yY]*) dflt=y ;;
6840 *)      : User may have set vendorprefix directly on Configure command line.
6841         case "$vendorprefix" in
6842         ''|' ') dflt=n ;;
6843         *)      dflt=y ;;
6844         esac
6845         ;;
6846 esac
6847 . ./myread
6848 case "$ans" in
6849 [yY]*)  fn=d~+
6850         rp='Installation prefix to use for vendor-supplied add-ons?'
6851         case "$vendorprefix" in
6852         '') dflt='' ;;
6853         *)  dflt=$vendorprefix ;;
6854         esac
6855         . ./getfile
6856         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6857         oldvendorprefix=''
6858         case "$vendorprefix" in
6859         '') ;;
6860         *)      case "$ans" in
6861                 "$prefix") ;;
6862                 *) oldvendorprefix="$prefix";;
6863                 esac
6864                 ;;
6865         esac
6866         usevendorprefix="$define"
6867         vendorprefix="$ans"
6868         vendorprefixexp="$ansexp"
6869         ;;
6870 *)      usevendorprefix="$undef"
6871         vendorprefix=''
6872         vendorprefixexp=''
6873         ;;
6874 esac
6875
6876 case "$vendorprefix" in
6877 '')     d_vendorlib="$undef"
6878         vendorlib=''
6879         vendorlibexp=''
6880         ;;
6881 *)      d_vendorlib="$define"
6882         : determine where vendor-supplied modules go.
6883         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6884         case "$vendorlib" in
6885         '')
6886                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6887                 case "$installstyle" in
6888                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6889                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6890                 esac
6891                 ;;
6892         *)      dflt="$vendorlib"
6893                 ;;
6894         esac
6895         fn=d~+
6896         rp='Pathname for the vendor-supplied library files?'
6897         . ./getfile
6898         vendorlib="$ans"
6899         vendorlibexp="$ansexp"
6900         ;;
6901 esac
6902 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6903 prefixvar=vendorlib
6904 . ./installprefix
6905
6906 case "$vendorprefix" in
6907 '')     d_vendorarch="$undef"
6908         vendorarch=''
6909         vendorarchexp=''
6910         ;;
6911 *)      d_vendorarch="$define"
6912         : determine where vendor-supplied architecture-dependent libraries go.
6913         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6914         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6915         : vendorlib may have an optional trailing /share.
6916         case "$vendorarch" in
6917         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6918                 dflt="$dflt/$archname"
6919                 ;;
6920         *)      dflt="$vendorarch" ;;
6921         esac
6922         fn=d~+
6923         rp='Pathname for vendor-supplied architecture-dependent files?'
6924         . ./getfile
6925         vendorarch="$ans"
6926         vendorarchexp="$ansexp"
6927         ;;
6928 esac
6929 prefixvar=vendorarch
6930 . ./installprefix
6931
6932 : Final catch-all directories to search
6933 $cat <<EOM
6934
6935 Lastly, you can have perl look in other directories for extensions and
6936 modules in addition to those already specified.
6937 These directories will be searched after 
6938         $sitearch 
6939         $sitelib 
6940 EOM
6941 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6942 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6943 echo ' '
6944 case "$otherlibdirs" in
6945 ''|' ') dflt='none' ;;
6946 *)      dflt="$otherlibdirs" ;;
6947 esac
6948 $cat <<EOM
6949 Enter a colon-separated set of extra paths to include in perl's @INC
6950 search path, or enter 'none' for no extra paths.
6951
6952 EOM
6953
6954 rp='Colon-separated list of additional directories for perl to search?'
6955 . ./myread
6956 case "$ans" in
6957 ' '|''|none)    otherlibdirs=' ' ;;     
6958 *)      otherlibdirs="$ans" ;;
6959 esac
6960 case "$otherlibdirs" in
6961 ' ') val=$undef ;;
6962 *)      val=$define ;;
6963 esac
6964 set d_perl_otherlibdirs
6965 eval $setvar
6966
6967 : Cruising for prototypes
6968 echo " "
6969 echo "Checking out function prototypes..." >&4
6970 $cat >prototype.c <<EOCP
6971 #$i_stdlib I_STDLIB
6972 #ifdef I_STDLIB
6973 #include <stdlib.h>
6974 #endif
6975 int main(int argc, char *argv[]) {
6976         exit(0);}
6977 EOCP
6978 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6979         echo "Your C compiler appears to support function prototypes."
6980         val="$define"
6981 else
6982         echo "Your C compiler doesn't seem to understand function prototypes."
6983         val="$undef"
6984 fi
6985 set prototype
6986 eval $setvar
6987 $rm -f prototype*
6988
6989 case "$prototype" in
6990 "$define") ;;
6991 *)      ansi2knr='ansi2knr'
6992         echo " "
6993         cat <<EOM >&4
6994
6995 $me:  FATAL ERROR:
6996 This version of $package can only be compiled by a compiler that 
6997 understands function prototypes.  Unfortunately, your C compiler 
6998         $cc $ccflags
6999 doesn't seem to understand them.  Sorry about that.
7000
7001 If GNU cc is available for your system, perhaps you could try that instead.  
7002
7003 Eventually, we hope to support building Perl with pre-ANSI compilers.
7004 If you would like to help in that effort, please contact <perlbug@perl.org>.
7005
7006 Aborting Configure now.
7007 EOM
7008         exit 2
7009         ;;
7010 esac
7011
7012 echo " "
7013 case "$extras" in
7014 '') dflt='n';;
7015 *) dflt='y';;
7016 esac
7017 cat <<EOM
7018 Perl can be built with extra modules or bundles of modules which
7019 will be fetched from the CPAN and installed alongside Perl.
7020
7021 Notice that you will need access to the CPAN; either via the Internet,
7022 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7023 be asked later to configure the CPAN.pm module which will in turn do
7024 the installation of the rest of the extra modules or bundles.)
7025
7026 Notice also that if the modules require any external software such as
7027 libraries and headers (the libz library and the zlib.h header for the
7028 Compress::Zlib module, for example) you MUST have any such software
7029 already installed, this configuration process will NOT install such
7030 things for you.
7031
7032 If this doesn't make any sense to you, just accept the default '$dflt'.
7033 EOM
7034 rp='Install any extra modules (y or n)?'
7035 . ./myread
7036 case "$ans" in
7037 y|Y)
7038         cat <<EOM
7039
7040 Please list any extra modules or bundles to be installed from CPAN,
7041 with spaces between the names.  The names can be in any format the
7042 'install' command of CPAN.pm will understand.  (Answer 'none',
7043 without the quotes, to install no extra modules or bundles.)
7044 EOM
7045         rp='Extras?'
7046         dflt="$extras"
7047         . ./myread
7048         extras="$ans"
7049 esac
7050 case "$extras" in
7051 ''|'none')
7052         val=''
7053         $rm -f ../extras.lst
7054         ;;
7055 *)      echo "(Saving the list of extras for later...)"
7056         echo "$extras" > ../extras.lst
7057         val="'$extras'"
7058         ;;
7059 esac
7060 set extras
7061 eval $setvar
7062 echo " "
7063
7064 : determine where html pages for programs go
7065 set html1dir html1dir none
7066 eval $prefixit
7067 $cat <<EOM
7068
7069 If you wish to install html files for programs in $spackage, indicate
7070 the appropriate directory here.  To skip installing html files,
7071 answer "none".
7072 EOM
7073 case "$html1dir" in
7074 ''|none|$undef|' ') dflt=none ;;
7075 *) dflt=$html1dir ;;
7076 esac
7077 fn=dn+~
7078 rp="Directory for the main $spackage html pages?"
7079 . ./getfile
7080 prefixvar=html1dir
7081 . ./setprefixvar
7082 : Use ' ' for none so value is preserved next time through Configure
7083 $test X"$html1dir" = "X" && html1dir=' '
7084
7085 : determine where html pages for libraries and modules go
7086 set html3dir html3dir none
7087 eval $prefixit
7088 $cat <<EOM
7089
7090 If you wish to install html files for modules associated with $spackage,
7091 indicate the appropriate directory here.  To skip installing html files,
7092 answer "none".
7093 EOM
7094 : There is no obvious default.  If they have specified html1dir, then
7095 : try to key off that, possibly changing .../html1 into .../html3.
7096 case "$html3dir" in
7097 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7098 *) dflt=$html3dir ;;
7099 esac
7100 fn=dn+~
7101 rp="Directory for the $spackage module html pages?"
7102 . ./getfile
7103 prefixvar=html3dir
7104 . ./setprefixvar
7105 : Use ' ' for none so value is preserved next time through Configure
7106 $test X"$html3dir" = "X" && html3dir=' '
7107
7108 : determine whether to install perl also as /usr/bin/perl
7109
7110 echo " "
7111 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7112         $cat <<EOM
7113 Many scripts expect perl to be installed as /usr/bin/perl.
7114
7115 If you want to, I can install the perl you are about to compile
7116 as /usr/bin/perl (in addition to $bin/perl).
7117 EOM
7118         if test -f /usr/bin/perl; then
7119             $cat <<EOM
7120
7121 However, please note that because you already have a /usr/bin/perl,
7122 overwriting that with a new Perl would very probably cause problems.
7123 Therefore I'm assuming you don't want to do that (unless you insist).
7124
7125 EOM
7126             case "$installusrbinperl" in
7127             "$define"|[yY]*)    dflt='y';;
7128             *)                  dflt='n';;
7129             esac
7130         else
7131             $cat <<EOM
7132
7133 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7134
7135 EOM
7136             case "$installusrbinperl" in
7137             "$undef"|[nN]*)     dflt='n';;
7138             *)                  dflt='y';;
7139             esac
7140         fi
7141         rp="Do you want to install perl as /usr/bin/perl?"
7142         . ./myread
7143         case "$ans" in
7144         [yY]*)  val="$define";;
7145         *)      val="$undef" ;;
7146         esac
7147 else
7148         val="$undef"
7149 fi
7150 set installusrbinperl
7151 eval $setvar
7152
7153 echo " "
7154 echo "Checking for GNU C Library..." >&4
7155 cat >try.c <<'EOCP'
7156 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7157    alone are insufficient to distinguish different versions, such as
7158    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7159    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7160 */
7161 #include <stdio.h>
7162 int main(void)
7163 {
7164 #ifdef __GLIBC__
7165 #   ifdef __GLIBC_MINOR__
7166 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7167 #           include <gnu/libc-version.h>
7168             printf("%s\n",  gnu_get_libc_version());
7169 #       else
7170             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7171 #       endif
7172 #   else
7173         printf("%d\n",  __GLIBC__);
7174 #   endif
7175     return 0;
7176 #else
7177     return 1;
7178 #endif
7179 }
7180 EOCP
7181 set try
7182 if eval $compile_ok && $run ./try > glibc.ver; then
7183         val="$define"
7184         gnulibc_version=`$cat glibc.ver`
7185         echo "You are using the GNU C Library version $gnulibc_version"
7186 else
7187         val="$undef"
7188         gnulibc_version=''
7189         echo "You are not using the GNU C Library"
7190 fi
7191 $rm_try glibc.ver
7192 set d_gnulibc
7193 eval $setvar
7194
7195 : see if nm is to be used to determine whether a symbol is defined or not
7196 case "$usenm" in
7197 '')
7198         dflt=''
7199         case "$d_gnulibc" in
7200         "$define")
7201                 echo " "
7202                 echo "nm probably won't work on the GNU C Library." >&4
7203                 dflt=n
7204                 ;;
7205         esac
7206         case "$dflt" in
7207         '') 
7208                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7209                         echo " "
7210                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7211                         echo "'nm' won't be sufficient on this sytem." >&4
7212                         dflt=n
7213                 fi
7214                 ;;
7215         esac
7216         case "$dflt" in
7217         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7218                 if $test $dflt -gt 20; then
7219                         dflt=y
7220                 else
7221                         dflt=n
7222                 fi
7223                 ;;
7224         esac
7225         ;;
7226 *)
7227         case "$usenm" in
7228         true|$define) dflt=y;;
7229         *) dflt=n;;
7230         esac
7231         ;;
7232 esac
7233 $cat <<EOM
7234
7235 I can use $nm to extract the symbols from your C libraries. This
7236 is a time consuming task which may generate huge output on the disk (up
7237 to 3 megabytes) but that should make the symbols extraction faster. The
7238 alternative is to skip the 'nm' extraction part and to compile a small
7239 test program instead to determine whether each symbol is present. If
7240 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7241 this may be the best solution.
7242
7243 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7244
7245 EOM
7246 rp="Shall I use $nm to extract C symbols from the libraries?"
7247 . ./myread
7248 case "$ans" in
7249 [Nn]*) usenm=false;;
7250 *) usenm=true;;
7251 esac
7252
7253 runnm=$usenm
7254 case "$reuseval" in
7255 true) runnm=false;;
7256 esac
7257
7258 : nm options which may be necessary
7259 case "$nm_opt" in
7260 '') if $test -f /mach_boot; then
7261                 nm_opt=''       # Mach
7262         elif $test -d /usr/ccs/lib; then
7263                 nm_opt='-p'     # Solaris (and SunOS?)
7264         elif $test -f /dgux; then
7265                 nm_opt='-p'     # DG-UX
7266         elif $test -f /lib64/rld; then
7267                 nm_opt='-p'     # 64-bit Irix
7268         else
7269                 nm_opt=''
7270         fi;;
7271 esac
7272
7273 : nm options which may be necessary for shared libraries but illegal
7274 : for archive libraries.  Thank you, Linux.
7275 case "$nm_so_opt" in
7276 '')     case "$myuname" in
7277         *linux*|gnu*)
7278                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7279                         nm_so_opt='--dynamic'
7280                 fi
7281                 ;;
7282         esac
7283         ;;
7284 esac
7285
7286 case "$runnm" in
7287 true)
7288 : get list of predefined functions in a handy place
7289 echo " "
7290 case "$libc" in
7291 '') libc=unknown
7292         case "$libs" in
7293         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7294         esac
7295         ;;
7296 esac
7297 case "$libs" in
7298 '') ;;
7299 *)  for thislib in $libs; do
7300         case "$thislib" in
7301         -lc|-lc_s)
7302                 : Handle C library specially below.
7303                 ;;
7304         -l*)
7305                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7306                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7307                         :
7308                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7309                         :
7310                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7311                         :
7312                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7313                         :
7314                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7315                         :
7316                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7317                         :
7318                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7319                         :
7320                 else
7321                         try=''
7322                 fi
7323                 libnames="$libnames $try"
7324                 ;;
7325         *) libnames="$libnames $thislib" ;;
7326         esac
7327         done
7328         ;;
7329 esac
7330 xxx=normal
7331 case "$libc" in
7332 unknown)
7333         set /lib/libc.$so
7334         for xxx in $libpth; do
7335                 $test -r $1 || set $xxx/libc.$so
7336                 : The messy sed command sorts on library version numbers.
7337                 $test -r $1 || \
7338                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7339                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7340                                 h
7341                                 s/[0-9][0-9]*/0000&/g
7342                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7343                                 G
7344                                 s/\n/ /' | \
7345                          $sort | $sed -e 's/^.* //'`
7346                 eval set \$$#
7347         done
7348         $test -r $1 || set /usr/ccs/lib/libc.$so
7349         $test -r $1 || set /lib/libsys_s$_a
7350         ;;
7351 *)
7352         set blurfl
7353         ;;
7354 esac
7355 if $test -r "$1"; then
7356         echo "Your (shared) C library seems to be in $1."
7357         libc="$1"
7358 elif $test -r /lib/libc && $test -r /lib/clib; then
7359         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7360         xxx=apollo
7361         libc='/lib/clib /lib/libc'
7362         if $test -r /lib/syslib; then
7363                 echo "(Your math library is in /lib/syslib.)"
7364                 libc="$libc /lib/syslib"
7365         fi
7366 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7367         echo "Your C library seems to be in $libc, as you said before."
7368 elif $test -r $incpath/usr/lib/libc$_a; then
7369         libc=$incpath/usr/lib/libc$_a;
7370         echo "Your C library seems to be in $libc.  That's fine."
7371 elif $test -r /lib/libc$_a; then
7372         libc=/lib/libc$_a;
7373         echo "Your C library seems to be in $libc.  You're normal."
7374 else
7375         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7376                 :
7377         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7378                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7379         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7380                 :
7381         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7382                 :
7383         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7384                 :
7385         else
7386                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7387         fi
7388         if $test -r "$tans"; then
7389                 echo "Your C library seems to be in $tans, of all places."
7390                 libc=$tans
7391         else
7392                 libc='blurfl'
7393         fi
7394 fi
7395 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7396         dflt="$libc"
7397         cat <<EOM
7398
7399 If the guess above is wrong (which it might be if you're using a strange
7400 compiler, or your machine supports multiple models), you can override it here.
7401
7402 EOM
7403 else
7404         dflt=''
7405         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7406         cat >&4 <<EOM
7407 I can't seem to find your C library.  I've looked in the following places:
7408
7409 EOM
7410         $sed 's/^/      /' libpath
7411         cat <<EOM
7412
7413 None of these seems to contain your C library. I need to get its name...
7414
7415 EOM
7416 fi
7417 fn=f
7418 rp='Where is your C library?'
7419 . ./getfile
7420 libc="$ans"
7421
7422 echo " "
7423 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7424 set X `cat libnames`
7425 shift
7426 xxx=files
7427 case $# in 1) xxx=file; esac
7428 echo "Extracting names from the following $xxx for later perusal:" >&4
7429 echo " "
7430 $sed 's/^/      /' libnames >&4
7431 echo " "
7432 $echo $n "This may take a while...$c" >&4
7433
7434 for file in $*; do
7435         case $file in
7436         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7437         *) $nm $nm_opt $file 2>/dev/null;;
7438         esac
7439 done >libc.tmp
7440
7441 $echo $n ".$c"
7442 $grep fprintf libc.tmp > libc.ptf
7443 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7444 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7445 xxx='[ADTSIW]'
7446 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7447         eval $xscan;\
7448         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7449                 eval $xrun
7450 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7451         eval $xscan;\
7452         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7453                 eval $xrun
7454 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7455         eval $xscan;\
7456         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7457                 eval $xrun
7458 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7459         eval $xscan;\
7460         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7461                 eval $xrun
7462 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7463         eval $xscan;\
7464         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7465                 eval $xrun
7466 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7467         eval $xscan;\
7468         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7469                 eval $xrun
7470 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7471                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7472         eval $xscan;\
7473         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7474                 eval $xrun
7475 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7476         eval $xscan;\
7477         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7478                 eval $xrun
7479 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7480         eval $xscan;\
7481         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7482                 eval $xrun
7483 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7484         eval $xscan;\
7485         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7486                 eval $xrun
7487 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7488         eval $xscan;\
7489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7490                 eval $xrun
7491 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7492         eval $xscan;\
7493         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7494                 eval $xrun
7495 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7496         eval $xscan;\
7497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7498                 eval $xrun
7499 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7500         eval $xscan;\
7501         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7502                 eval $xrun
7503 else
7504         $nm -p $* 2>/dev/null >libc.tmp
7505         $grep fprintf libc.tmp > libc.ptf
7506         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7507                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7508         then
7509                 nm_opt='-p'
7510                 eval $xrun
7511         else
7512                 echo " "
7513                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7514                 com=''
7515                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7516                         for thisname in $libnames $libc; do
7517                                 $ar t $thisname >>libc.tmp
7518                         done
7519                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7520                         echo "Ok." >&4
7521                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7522                         # Repeat libc to extract forwarders to DLL entries too
7523                         for thisname in $libnames $libc; do
7524                                 $ar tv $thisname >>libc.tmp
7525                                 # Revision 50 of EMX has bug in $ar.
7526                                 # it will not extract forwarders to DLL entries
7527                                 # Use emximp which will extract exactly them.
7528                                 emximp -o tmp.imp $thisname \
7529                                     2>/dev/null && \
7530                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7531                                     < tmp.imp >>libc.tmp
7532                                 $rm tmp.imp
7533                         done
7534                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7535                         echo "Ok." >&4
7536                 else
7537                         echo "$ar didn't seem to work right." >&4
7538                         echo "Maybe this is a Cray...trying bld instead..." >&4
7539                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7540                         then
7541                                 for thisname in $libnames; do
7542                                         bld t $libnames | \
7543                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7544                                         $ar t $thisname >>libc.tmp
7545                                 done
7546                                 echo "Ok." >&4
7547                         else
7548                                 echo "That didn't work either.  Giving up." >&4
7549                                 exit 1
7550                         fi
7551                 fi
7552         fi
7553 fi
7554 nm_extract="$com"
7555 case "$PASE" in
7556 define)
7557     echo " "
7558     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7559     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7560     ;;
7561 *)  if $test -f /lib/syscalls.exp; then
7562         echo " "
7563         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7564         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7565     fi
7566     ;;
7567 esac
7568 ;;
7569 esac
7570 $rm -f libnames libpath
7571
7572 : see if dld is available
7573 set dld.h i_dld
7574 eval $inhdr
7575
7576
7577 echo " "
7578 echo "Checking for C++..." >&4
7579 cat >try.c <<'EOCP'
7580 #include <stdio.h>
7581 int main(void)
7582 {
7583 #ifdef __cplusplus
7584     printf("define\n");
7585 #else
7586     printf("undef\n");
7587 #endif
7588     return 0;
7589 }
7590 EOCP
7591 set try
7592 if eval $compile_ok && $run ./try >cplusplus$$; then
7593         val=`$cat cplusplus$$`
7594         echo "You are using a C++ compiler."
7595 else
7596         val="$undef"
7597         echo "You are not using a C++ compiler."
7598 fi
7599 $rm_try cplusplus$$
7600 set d_cplusplus
7601 eval $setvar
7602
7603 : is a C symbol defined?
7604 csym='tlook=$1;
7605 case "$3" in
7606 -v) tf=libc.tmp; tdc="";;
7607 -a) tf=libc.tmp; tdc="[]";;
7608 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7609 esac;
7610 tx=yes;
7611 case "$reuseval-$4" in
7612 true-) ;;
7613 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7614 esac;
7615 case "$tx" in
7616 yes)
7617         tval=false;
7618         case "$d_cplusplus" in
7619                 $define) extern_C=\"C\";;
7620         esac;
7621         if $test "$runnm" = true; then
7622                 if $contains $tlook $tf >/dev/null 2>&1; then
7623                         tval=true;
7624                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7625                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7626                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7627                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7628                         $rm_try;
7629                 fi;
7630         else
7631                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7632                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7633                 $rm_try;
7634         fi;
7635         ;;
7636 *)
7637         case "$tval" in
7638         $define) tval=true;;
7639         *) tval=false;;
7640         esac;
7641         ;;
7642 esac;
7643 eval "$2=$tval"'
7644
7645 : define an is-in-libc? function
7646 inlibc='echo " "; td=$define; tu=$undef;
7647 sym=$1; var=$2; eval "was=\$$2";
7648 tx=yes;
7649 case "$reuseval$was" in
7650 true) ;;
7651 true*) tx=no;;
7652 esac;
7653 case "$tx" in
7654 yes)
7655         set $sym tres -f;
7656         eval $csym;
7657         case "$tres" in
7658         true)
7659                 echo "$sym() found." >&4;
7660                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7661         *)
7662                 echo "$sym() NOT found." >&4;
7663                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7664         esac;;
7665 *)
7666         case "$was" in
7667         $define) echo "$sym() found." >&4;;
7668         *) echo "$sym() NOT found." >&4;;
7669         esac;;
7670 esac'
7671
7672 : see if dlopen exists
7673 xxx_runnm="$runnm"
7674 xxx_ccflags="$ccflags"
7675 runnm=false
7676 : with g++ one needs -shared to get is-in-libc to work for dlopen
7677 case "$gccversion" in
7678 '')     ;;
7679 *)      case "$d_cplusplus" in
7680         "$define") ccflags="$ccflags -shared" ;;
7681         esac
7682         ;;
7683 esac
7684 set dlopen d_dlopen
7685 eval $inlibc
7686 runnm="$xxx_runnm"
7687 ccflags="$xxx_ccflags"
7688
7689 : see if this is a unistd.h system
7690 set unistd.h i_unistd
7691 eval $inhdr
7692
7693 : determine which dynamic loading, if any, to compile in
7694 echo " "
7695 dldir="ext/DynaLoader"
7696 case "$usedl" in
7697 $define|y|true)
7698         dflt='y'
7699         usedl="$define"
7700         ;;
7701 $undef|n|false)
7702         dflt='n'
7703         usedl="$undef"
7704         ;;
7705 *)
7706         dflt='n'
7707         case "$d_dlopen" in
7708             $define) dflt='y' ;;
7709         esac
7710         case "$i_dld" in
7711             $define) dflt='y' ;;
7712         esac
7713         : Does a dl_xxx.xs file exist for this operating system
7714         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7715         ;;
7716 esac
7717 rp="Do you wish to use dynamic loading?"
7718 . ./myread
7719 usedl="$ans"
7720 case "$ans" in
7721 y*) usedl="$define"
7722         case "$dlsrc" in
7723         '')
7724                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7725                         dflt="$dldir/dl_${osname}.xs"
7726                 elif $test "$d_dlopen" = "$define" ; then
7727                         dflt="$dldir/dl_dlopen.xs"
7728                 elif $test "$i_dld" = "$define" ; then
7729                         dflt="$dldir/dl_dld.xs"
7730                 else
7731                         dflt=''
7732                 fi
7733                 ;;
7734         *)      dflt="$dldir/$dlsrc"
7735                 ;;
7736         esac
7737     echo "The following dynamic loading files are available:"
7738         : Can not go over to $dldir because getfile has path hard-coded in.
7739         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7740         rp="Source file to use for dynamic loading"
7741         fn="fne"
7742         gfpth="$src"
7743         . ./getfile
7744         usedl="$define"
7745         : emulate basename
7746         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7747
7748         $cat << EOM
7749
7750 Some systems may require passing special flags to $cc -c to
7751 compile modules that will be used to create a shared library.
7752 To use no flags, say "none".
7753
7754 EOM
7755     case "$cccdlflags" in
7756     '') case "$gccversion" in
7757                 '') case "$osname" in
7758                         hpux)   dflt='+z' ;;
7759                         next)   dflt='none' ;;
7760                         irix*)  dflt='-KPIC' ;;
7761                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7762                         sunos)  dflt='-pic' ;;
7763                         *)      dflt='none' ;;
7764                     esac
7765                         ;;
7766                 *)  case "$osname" in
7767                         darwin) dflt='none' ;;
7768                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7769                         *)      dflt='-fpic' ;;
7770                     esac ;;
7771             esac ;;
7772         ' ') dflt='none' ;;
7773     *)  dflt="$cccdlflags" ;;
7774     esac
7775     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7776     . ./myread
7777     case "$ans" in
7778     none) cccdlflags=' ' ;;
7779     *) cccdlflags="$ans" ;;
7780     esac
7781
7782     cat << EOM
7783
7784 Some systems use ld to create libraries that can be dynamically loaded,
7785 while other systems (such as those using ELF) use $cc.
7786
7787 EOM
7788         case "$ld" in
7789         '')     $cat >try.c <<EOM
7790 /* Test for whether ELF binaries are produced */
7791 #include <fcntl.h>
7792 #$i_stdlib I_STDLIB
7793 #ifdef I_STDLIB
7794 #include <stdlib.h>
7795 #endif
7796 #$i_unistd I_UNISTD
7797 #ifdef I_UNISTD
7798 #include <unistd.h>
7799 #endif
7800 int main() {
7801         char b[4];
7802         int i = open("a.out",O_RDONLY);
7803         if(i == -1)
7804                 exit(1); /* fail */
7805         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7806                 exit(0); /* succeed (yes, it's ELF) */
7807         else
7808                 exit(1); /* fail */
7809 }
7810 EOM
7811                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7812                         cat <<EOM
7813 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7814 EOM
7815                         dflt="$cc"
7816                 else
7817                         echo "I'll use ld to build dynamic libraries."
7818                         dflt='ld'
7819                 fi
7820                 $rm_try
7821                 ;;
7822         *)      dflt="$ld"
7823                 ;;
7824         esac
7825
7826     rp="What command should be used to create dynamic libraries?"
7827     . ./myread
7828         ld="$ans"
7829
7830     cat << EOM
7831
7832 Some systems may require passing special flags to $ld to create a
7833 library that can be dynamically loaded.  If your ld flags include
7834 -L/other/path options to locate libraries outside your loader's normal
7835 search path, you may need to specify those -L options here as well.  To
7836 use no flags, say "none".
7837
7838 EOM
7839     case "$lddlflags" in
7840     '') case "$osname" in
7841                         beos) dflt='-nostart' ;;
7842                         hpux) dflt='-b';
7843                               case "$gccversion" in
7844                               '') dflt="$dflt +vnocompatwarnings" ;;
7845                               esac
7846                               ;;
7847                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7848                         next)  dflt='none' ;;
7849                         solaris) dflt='-G' ;;
7850                         sunos) dflt='-assert nodefinitions' ;;
7851                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7852                 *)     dflt='none' ;;
7853                         esac
7854                         ;;
7855     *) dflt="$lddlflags" ;;
7856     esac
7857
7858         : Try to guess additional flags to pick up local libraries.
7859         : Be careful not to append to a plain 'none'
7860         case "$dflt" in
7861         none) dflt='' ;;
7862         esac
7863         for thisflag in $ldflags; do
7864                 case "$thisflag" in
7865                 -L*|-R*|-Wl,-R*)
7866                         case " $dflt " in
7867                         *" $thisflag "*) ;;
7868                         *) dflt="$dflt $thisflag" ;;
7869                         esac
7870                         ;;
7871                 esac
7872         done
7873
7874         case "$dflt" in
7875         ''|' ') dflt='none' ;;
7876         esac
7877
7878     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7879     . ./myread
7880     case "$ans" in
7881     none) lddlflags=' ' ;;
7882     *) lddlflags="$ans" ;;
7883     esac
7884
7885         cat <<EOM
7886
7887 Some systems may require passing special flags to $cc to indicate that
7888 the resulting executable will use dynamic linking.  To use no flags,
7889 say "none".
7890
7891 EOM
7892     case "$ccdlflags" in
7893     '') case "$osname" in
7894             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7895             next|sunos) dflt='none' ;;
7896             *)          dflt='none' ;;
7897             esac ;;
7898     ' ')  dflt='none' ;;
7899     *)  dflt="$ccdlflags" ;;
7900     esac
7901     rp="Any special flags to pass to $cc to use dynamic linking?"
7902     . ./myread
7903     case "$ans" in
7904     none) ccdlflags=' ' ;;
7905     *) ccdlflags="$ans" ;;
7906     esac
7907     ;;
7908 *)  usedl="$undef"
7909         ld='ld'
7910     dlsrc='dl_none.xs'
7911     lddlflags=''
7912     ccdlflags=''
7913     ;;
7914 esac
7915
7916 also=''
7917 case "$usedl" in
7918 $undef)
7919         # No dynamic loading being used, so don't bother even to prompt.
7920         useshrplib='false'
7921         ;;
7922 *)      case "$useshrplib" in
7923         '')     case "$osname" in
7924                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7925                         dflt=y
7926                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7927                         ;;
7928                 next*)
7929                         case "$osvers" in
7930                         4*)     dflt=y
7931                                 also='Building a shared libperl is needed for MAB support.'
7932                                 ;;
7933                         *)      dflt=n
7934                                 ;;
7935                         esac
7936                         ;;
7937                 *)      dflt=n
7938                         ;;
7939                 esac
7940                 ;;
7941         $define|true|[Yy]*)
7942                 dflt=y
7943                 ;;
7944         *)      dflt=n
7945                 ;;
7946         esac
7947         $cat << EOM
7948
7949 The perl executable is normally obtained by linking perlmain.c with
7950 libperl${_a}, any static extensions (usually just DynaLoader), and
7951 any other libraries needed on this system (such as -lm, etc.).  Since
7952 your system supports dynamic loading, it is probably possible to build
7953 a shared libperl.$so.  If you will have more than one executable linked
7954 to libperl.$so, this will significantly reduce the size of each
7955 executable, but it may have a noticeable effect on performance.  The
7956 default is probably sensible for your system.
7957 $also
7958
7959 EOM
7960         rp="Build a shared libperl.$so (y/n)"
7961         . ./myread
7962         case "$ans" in
7963         true|$define|[Yy]*)
7964                 useshrplib='true'  ;;
7965         *)      useshrplib='false' ;;
7966         esac
7967         ;;
7968 esac
7969
7970 case "$useshrplib" in
7971 true)
7972         case "$libperl" in
7973         '')
7974                 # Figure out a good name for libperl.so.  Since it gets stored in
7975                 # a version-specific architecture-dependent library, the version
7976                 # number isn't really that important, except for making cc/ld happy.
7977                 #
7978                 # A name such as libperl.so.3.1
7979                 majmin="libperl.$so.$patchlevel.$subversion"
7980                 # A name such as libperl.so.301
7981                 majonly=`echo $patchlevel $subversion |
7982                         $awk '{printf "%d%02d", $1, $2}'`
7983                 majonly=libperl.$so.$majonly
7984                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7985                 # rely on figuring it out from the naming of libc.
7986                 case "${osname}${osvers}" in
7987                 next4*)
7988                         dflt=libperl.5.$so
7989                         # XXX How handle the --version stuff for MAB?
7990                         ;;
7991                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7992                         dflt=libperl.$so
7993                         ;;
7994                 cygwin*) # ld links against an importlib
7995                         dflt=libperl$lib_ext
7996                         ;;
7997                 *)      # Try to guess based on whether libc has major.minor.
7998                         case "$libc" in
7999                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8000                         *libc.$so.[0-9]*) dflt=$majonly ;;
8001                         *)      dflt=libperl.$so ;;
8002                         esac
8003                         ;;
8004                 esac
8005                 ;;
8006         *)      dflt=$libperl
8007                 ;;
8008         esac
8009         cat << EOM
8010
8011 I need to select a good name for the shared libperl.  If your system uses
8012 library names with major and minor numbers, then you might want something
8013 like $majmin.  Alternatively, if your system uses a single version
8014 number for shared libraries, then you might want to use $majonly.
8015 Or, your system might be quite happy with a simple libperl.$so.
8016
8017 Since the shared libperl will get installed into a version-specific
8018 architecture-dependent directory, the version number of the shared perl
8019 library probably isn't important, so the default should be o.k.
8020
8021 EOM
8022         rp='What name do you want to give to the shared libperl?'
8023         . ./myread
8024         libperl=$ans
8025         echo "Ok, I'll use $libperl"
8026         ;;
8027 *)
8028         libperl="libperl${_a}"
8029         ;;
8030 esac
8031
8032 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8033 case "$shrpdir" in
8034 '') ;;
8035 *)      $cat >&4 <<EOM
8036 WARNING:  Use of the shrpdir variable for the installation location of
8037 the shared $libperl is not supported.  It was never documented and
8038 will not work in this version.  Let me (perlbug@perl.org)
8039 know of any problems this may cause.
8040
8041 EOM
8042         case "$shrpdir" in
8043         "$archlibexp/CORE")
8044                 $cat >&4 <<EOM
8045 But your current setting of $shrpdir is
8046 the default anyway, so it's harmless.
8047 EOM
8048                 ;;
8049         *)
8050                 $cat >&4 <<EOM
8051 Further, your current attempted setting of $shrpdir
8052 conflicts with the value of $archlibexp/CORE
8053 that installperl will use.
8054 EOM
8055                 ;;
8056         esac
8057         ;;
8058 esac
8059
8060 # How will the perl executable find the installed shared $libperl?
8061 # Add $xxx to ccdlflags.
8062 # If we can't figure out a command-line option, use $shrpenv to
8063 # set env LD_RUN_PATH.  The main perl makefile uses this.
8064 shrpdir=$archlibexp/CORE
8065 xxx=''
8066 tmp_shrpenv=''
8067 if "$useshrplib"; then
8068     case "$osname" in 
8069         aix)
8070                 # We'll set it in Makefile.SH...
8071                 ;;
8072         solaris)
8073                 xxx="-R $shrpdir"
8074                 ;;
8075         freebsd|netbsd|openbsd|interix|dragonfly)
8076                 xxx="-Wl,-R$shrpdir"
8077                 ;;
8078         bsdos|linux|irix*|dec_osf|gnu*)
8079                 xxx="-Wl,-rpath,$shrpdir"
8080                 ;;
8081         next)
8082                 # next doesn't like the default...
8083                 ;;
8084         beos)
8085                 # beos doesn't like the default, either.
8086                 ;;
8087         hpux*)
8088                 # hpux doesn't like the default, either.
8089                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8090                 ;;
8091         *)
8092                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8093                 ;;
8094         esac
8095         case "$xxx" in
8096         '') ;;
8097         *)      
8098                 # Only add $xxx if it isn't already in ccdlflags.
8099                 case " $ccdlflags " in
8100                 *" $xxx "*)     ;;
8101                 *)      ccdlflags="$ccdlflags $xxx"
8102                         cat <<EOM >&4
8103
8104 Adding $xxx to the flags
8105 passed to $ld so that the perl executable will find the 
8106 installed shared $libperl.
8107
8108 EOM
8109                         ;;
8110                 esac
8111                 ;;
8112         esac
8113 fi
8114 # Fix ccdlflags in AIX for building external extensions.
8115 # (For building Perl itself bare -bE:perl.exp is needed,
8116 #  Makefile.SH takes care of this.)
8117 case "$osname" in
8118 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8119 esac
8120 # Respect a hint or command-line value.
8121 case "$shrpenv" in
8122 '') shrpenv="$tmp_shrpenv" ;;
8123 esac
8124 case "$ldlibpthname" in
8125 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8126 none)   ldlibpthname='' ;;
8127 esac
8128
8129 : determine where manual pages are on this system
8130 echo " "
8131 case "$sysman" in
8132 '') 
8133         syspath='/usr/share/man/man1 /usr/man/man1'
8134         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8135         syspath="$syspath /usr/man/u_man/man1"
8136         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8137         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8138         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8139         sysman=`./loc . /usr/man/man1 $syspath`
8140         ;;
8141 esac
8142 if $test -d "$sysman"; then
8143         echo "System manual is in $sysman." >&4
8144 else
8145         echo "Could not find manual pages in source form." >&4
8146 fi
8147
8148 : determine where manual pages go
8149 set man1dir man1dir none
8150 eval $prefixit
8151 $cat <<EOM
8152
8153 $spackage has manual pages available in source form.
8154 EOM
8155 case "$nroff" in
8156 nroff)
8157         echo "However, you don't have nroff, so they're probably useless to you."
8158         case "$man1dir" in
8159         '') man1dir="none";;
8160         esac;;
8161 esac
8162 echo "If you don't want the manual sources installed, answer 'none'."
8163 case "$man1dir" in
8164 ' ') dflt=none
8165         ;;
8166 '')
8167         lookpath="$prefixexp/share/man/man1"
8168         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8169         lookpath="$lookpath $prefixexp/man/p_man/man1"
8170         lookpath="$lookpath $prefixexp/man/u_man/man1"
8171         lookpath="$lookpath $prefixexp/man/man.1"
8172         case "$sysman" in
8173         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8174         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8175         esac
8176         set dflt
8177         eval $prefixup
8178         ;;
8179 *)  dflt="$man1dir"
8180         ;;
8181 esac
8182 echo " "
8183 fn=dn+~
8184 rp="Where do the main $spackage manual pages (source) go?"
8185 . ./getfile
8186 if $test "X$man1direxp" != "X$ansexp"; then
8187         installman1dir=''
8188 fi
8189 prefixvar=man1dir
8190 . ./setprefixvar
8191
8192 case "$man1dir" in
8193 '')     man1dir=' '
8194         installman1dir='';;
8195 esac
8196
8197 : What suffix to use on installed man pages
8198
8199 case "$man1dir" in
8200 ' ')
8201         man1ext='0'
8202         ;;
8203 *)
8204         rp="What suffix should be used for the main $spackage man pages?"
8205         case "$man1ext" in
8206         '')     case "$man1dir" in
8207                 *1)  dflt=1 ;;
8208                 *1p) dflt=1p ;;
8209                 *1pm) dflt=1pm ;;
8210                 *l) dflt=l;;
8211                 *n) dflt=n;;
8212                 *o) dflt=o;;
8213                 *p) dflt=p;;
8214                 *C) dflt=C;;
8215                 *L) dflt=L;;
8216                 *L1) dflt=L1;;
8217                 *) dflt=1;;
8218                 esac
8219                 ;;
8220         *)      dflt="$man1ext";;
8221         esac
8222         . ./myread
8223         man1ext="$ans"
8224         ;;
8225 esac
8226
8227 : see if we can have long filenames
8228 echo " "
8229 first=123456789abcdef
8230 $rm -f $first
8231 if (echo hi >$first) 2>/dev/null; then
8232         if $test -f 123456789abcde; then
8233                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8234                 val="$undef"
8235         else
8236                 echo 'You can have filenames longer than 14 characters.'>&4
8237                 val="$define"
8238         fi
8239 else
8240         $cat <<'EOM'
8241 You can't have filenames longer than 14 chars.
8242 You can't even think about them!
8243 EOM
8244         val="$undef"
8245 fi 
8246 set d_flexfnam
8247 eval $setvar
8248 $rm -rf 123456789abcde*
8249
8250 : determine where library module manual pages go
8251 set man3dir man3dir none
8252 eval $prefixit
8253 $cat <<EOM
8254
8255 $spackage has manual pages for many of the library modules.
8256 EOM
8257
8258 case "$nroff" in
8259 nroff)
8260         $cat <<'EOM'
8261 However, you don't have nroff, so they're probably useless to you.
8262 EOM
8263         case "$man3dir" in
8264         '') man3dir="none";;
8265         esac;;
8266 esac
8267
8268 case "$d_flexfnam" in
8269 undef)
8270         $cat <<'EOM'
8271 However, your system can't handle the long file names like File::Basename.3.
8272 EOM
8273         case "$man3dir" in
8274         '') man3dir="none";;
8275         esac;;
8276 esac
8277
8278 echo "If you don't want the manual sources installed, answer 'none'."
8279 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8280 case "$man3dir" in
8281 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8282         if $test -d "$privlib/man/man3"; then
8283                 cat <<EOM >&4
8284
8285 WARNING:  Previous versions of perl installed man3 pages into
8286 $privlib/man/man3.  This version will suggest a
8287 new default of $dflt.
8288 EOM
8289                 tdflt=$dflt
8290                 dflt='n'
8291                 rp='Do you wish to preserve the old behavior?(y/n)'
8292                 . ./myread
8293                 case "$ans" in
8294                 y*) dflt="$privlib/man/man3" ;;
8295                 *)  dflt=$tdflt ;;
8296                 esac
8297     fi
8298         ;;
8299 *)      dflt="$man3dir" ;;
8300 esac
8301 case "$dflt" in
8302 ' ') dflt=none ;;
8303 esac
8304 echo " "
8305 fn=dn+~
8306 rp="Where do the $package library man pages (source) go?"
8307 . ./getfile
8308 prefixvar=man3dir
8309 . ./setprefixvar
8310
8311 case "$man3dir" in
8312 '')     man3dir=' '
8313         installman3dir='';;
8314 esac
8315
8316 : What suffix to use on installed man pages
8317 case "$man3dir" in
8318 ' ')
8319         man3ext='0'
8320         ;;
8321 *)
8322         rp="What suffix should be used for the $package library man pages?"
8323         case "$man3ext" in
8324         '')     case "$man3dir" in
8325                 *3)  dflt=3 ;;
8326                 *3p) dflt=3p ;;
8327                 *3pm) dflt=3pm ;;
8328                 *l) dflt=l;;
8329                 *n) dflt=n;;
8330                 *o) dflt=o;;
8331                 *p) dflt=p;;
8332                 *C) dflt=C;;
8333                 *L) dflt=L;;
8334                 *L3) dflt=L3;;
8335                 *) dflt=3;;
8336                 esac
8337                 ;;
8338         *)      dflt="$man3ext";;
8339         esac
8340         . ./myread
8341         man3ext="$ans"
8342         ;;
8343 esac
8344
8345 : see if we have to deal with yellow pages, now NIS.
8346 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8347         if $test -f /usr/etc/nibindd; then
8348                 echo " "
8349                 echo "I'm fairly confident you're on a NeXT."
8350                 echo " "
8351                 rp='Do you get the hosts file via NetInfo?'
8352                 dflt=y
8353                 case "$hostcat" in
8354                 nidump*) ;;
8355                 '') ;;
8356                 *) dflt=n;;
8357                 esac
8358                 . ./myread
8359                 case "$ans" in
8360                 y*) hostcat='nidump hosts .';;
8361                 *)      case "$hostcat" in
8362                         nidump*) hostcat='';;
8363                         esac
8364                         ;;
8365                 esac
8366         fi
8367         case "$hostcat" in
8368         nidump*) ;;
8369         *)
8370                 case "$hostcat" in
8371                 *ypcat*) dflt=y;;
8372                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8373                                 dflt=y
8374                         else
8375                                 dflt=n
8376                         fi;;
8377                 *) dflt=n;;
8378                 esac
8379                 echo " "
8380                 rp='Are you getting the hosts file via yellow pages?'
8381                 . ./myread
8382                 case "$ans" in
8383                 y*) hostcat='ypcat hosts';;
8384                 *) hostcat='cat /etc/hosts';;
8385                 esac
8386                 ;;
8387         esac
8388 fi
8389 case "$hostcat" in
8390 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8391 esac
8392 case "$groupcat" in
8393 '') test -f /etc/group && groupcat='cat /etc/group';;
8394 esac
8395 case "$passcat" in
8396 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8397 esac
8398
8399 : now get the host name
8400 echo " "
8401 echo "Figuring out host name..." >&4
8402 case "$myhostname" in
8403 '') cont=true
8404         echo 'Maybe "hostname" will work...'
8405         if tans=`sh -c hostname 2>&1` ; then
8406                 myhostname=$tans
8407                 phostname=hostname
8408                 cont=''
8409         fi
8410         ;;
8411 *) cont='';;
8412 esac
8413 if $test "$cont"; then
8414         if ./xenix; then
8415                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8416                 if tans=`cat /etc/systemid 2>&1` ; then
8417                         myhostname=$tans
8418                         phostname='cat /etc/systemid'
8419                         echo "Whadyaknow.  Xenix always was a bit strange..."
8420                         cont=''
8421                 fi
8422         elif $test -r /etc/systemid; then
8423                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8424         fi
8425 fi
8426 if $test "$cont"; then
8427         echo 'No, maybe "uuname -l" will work...'
8428         if tans=`sh -c 'uuname -l' 2>&1` ; then
8429                 myhostname=$tans
8430                 phostname='uuname -l'
8431         else
8432                 echo 'Strange.  Maybe "uname -n" will work...'
8433                 if tans=`sh -c 'uname -n' 2>&1` ; then
8434                         myhostname=$tans
8435                         phostname='uname -n'
8436                 else
8437                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8438                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8439                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8440                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8441                         else
8442                                 case "$myhostname" in
8443                                 '') echo "Does this machine have an identity crisis or something?"
8444                                         phostname='';;
8445                                 *)
8446                                         echo "Well, you said $myhostname before..."
8447                                         phostname='echo $myhostname';;
8448                                 esac
8449                         fi
8450                 fi
8451         fi
8452 fi
8453 case "$myhostname" in
8454 '') myhostname=noname ;;
8455 esac
8456 : you do not want to know about this
8457 set $myhostname
8458 myhostname=$1
8459
8460 : verify guess
8461 if $test "$myhostname" ; then
8462         dflt=y
8463         rp='Your host name appears to be "'$myhostname'".'" Right?"
8464         . ./myread
8465         case "$ans" in
8466         y*) ;;
8467         *) myhostname='';;
8468         esac
8469 fi
8470
8471 : bad guess or no guess
8472 while $test "X$myhostname" = X ; do
8473         dflt=''
8474         rp="Please type the (one word) name of your host:"
8475         . ./myread
8476         myhostname="$ans"
8477 done
8478
8479 : translate upper to lower if necessary
8480 case "$myhostname" in
8481 *[A-Z]*)
8482         echo "(Normalizing case in your host name)"
8483         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8484         ;;
8485 esac
8486
8487 case "$myhostname" in
8488 *.*)
8489         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8490         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8491         echo "(Trimming domain name from host name--host name is now $myhostname)"
8492         ;;
8493 *) case "$mydomain" in
8494         '')
8495                 {
8496                         test "X$hostcat" = "Xypcat hosts" &&
8497                         ypmatch "$myhostname" hosts 2>/dev/null |\
8498                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8499                         $test -s hosts
8500                 } || {
8501                         test "X$hostcat" != "X" &&
8502                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8503                                         /[       ]$myhostname[  . ]/p" > hosts
8504                 }
8505                 tmp_re="[       . ]"
8506                 if $test -f hosts; then
8507                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8508                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8509                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8510                                 hosts | $sort | $uniq | \
8511                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8512                         case `$echo X$dflt` in
8513                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8514                                 dflt=.
8515                                 ;;
8516                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8517                                 ;;
8518                         esac
8519                 else
8520                         echo "(I cannot locate a hosts database anywhere)"
8521                         dflt=.
8522                 fi
8523                 case "$dflt" in
8524                 .)
8525                         tans=`./loc resolv.conf X /etc /usr/etc`
8526                         if $test -f "$tans"; then
8527                                 echo "(Attempting domain name extraction from $tans)"
8528                                 dflt=.`$sed -n -e 's/   / /g' \
8529                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8530                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8531                                 case "$dflt" in
8532                                 .) dflt=.`$sed -n -e 's/        / /g' \
8533                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8534                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8535                                         ;;
8536                                 esac
8537                         fi
8538                         ;;
8539                 esac
8540                 case "$dflt" in
8541                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8542                         dflt=.`sh -c domainname 2>/dev/null`
8543                         case "$dflt" in
8544                         '') dflt='.';;
8545                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8546                         esac
8547                         ;;
8548                 esac
8549                 case "$dflt$osname" in
8550                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8551                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8552                         ;;
8553                 esac
8554                 case "$dflt" in
8555                 .) echo "(Lost all hope -- silly guess then)"
8556                         dflt='.nonet'
8557                         ;;
8558                 esac
8559                 $rm -f hosts
8560                 ;;
8561         *) dflt="$mydomain";;
8562         esac;;
8563 esac
8564 echo " "
8565 rp="What is your domain name?"
8566 . ./myread
8567 tans="$ans"
8568 case "$ans" in
8569 '') ;;
8570 .*) ;;
8571 *) tans=".$tans";;
8572 esac
8573 mydomain="$tans"
8574
8575 : translate upper to lower if necessary
8576 case "$mydomain" in
8577 *[A-Z]*)
8578         echo "(Normalizing case in your domain name)"
8579         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8580         ;;
8581 esac
8582
8583 : a little sanity check here
8584 case "$phostname" in
8585 '') ;;
8586 *)
8587         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8588         $myhostname$mydomain|$myhostname) ;;
8589         *)
8590                 case "$phostname" in
8591                 sed*)
8592                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8593                         ;;
8594                 *)
8595                         echo "(That doesn't agree with your $phostname command, by the way.)"
8596                         ;;
8597                 esac
8598         ;;
8599         esac
8600         ;;
8601 esac
8602
8603 $cat <<EOM
8604
8605 I need to get your e-mail address in Internet format if possible, i.e.
8606 something like user@host.domain. Please answer accurately since I have
8607 no easy means to double check it. The default value provided below
8608 is most probably close to reality but may not be valid from outside
8609 your organization...
8610
8611 EOM
8612 cont=x
8613 while test "$cont"; do
8614         case "$cf_email" in
8615         '') dflt="$cf_by@$myhostname$mydomain";;
8616         *) dflt="$cf_email";;
8617         esac
8618         rp='What is your e-mail address?'
8619         . ./myread
8620         cf_email="$ans"
8621         case "$cf_email" in
8622         *@*.*) cont='' ;;
8623         *)
8624                 rp='Address does not look like an Internet one.  Use it anyway?'
8625                 case "$fastread" in
8626                 yes) dflt=y ;;
8627                 *) dflt=n ;;
8628                 esac
8629                 . ./myread
8630                 case "$ans" in
8631                 y*) cont='' ;;
8632                 *) echo " " ;;
8633                 esac
8634                 ;;
8635         esac
8636 done
8637
8638 $cat <<EOM
8639
8640 If you or somebody else will be maintaining perl at your site, please
8641 fill in the correct e-mail address here so that they may be contacted
8642 if necessary. Currently, the "perlbug" program included with perl
8643 will send mail to this address in addition to perlbug@perl.org. You may
8644 enter "none" for no administrator.
8645
8646 EOM
8647 case "$perladmin" in
8648 '') dflt="$cf_email";;
8649 *) dflt="$perladmin";;
8650 esac
8651 rp='Perl administrator e-mail address'
8652 . ./myread
8653 perladmin="$ans"
8654
8655 : determine whether to only install version-specific parts.
8656 echo " "
8657 $cat <<EOM
8658 Do you want to install only the version-specific parts of the perl
8659 distribution?  Usually you do *not* want to do this.
8660 EOM
8661 case "$versiononly" in
8662 "$define"|[Yy]*|true) dflt='y' ;;
8663 *) dflt='n';
8664 esac
8665 rp="Do you want to install only the version-specific parts of perl?"
8666 . ./myread
8667 case "$ans" in
8668 [yY]*)  val="$define";;
8669 *)      val="$undef" ;;
8670 esac
8671 set versiononly
8672 eval $setvar
8673
8674 case "$versiononly" in
8675 "$define") inc_version_list=''
8676            inc_version_list_init=0
8677            ;;
8678 esac
8679
8680 : figure out how to guarantee perl startup
8681 : XXX Note that this currently takes advantage of the bug that binexp ignores
8682 :     the Configure -Dinstallprefix setting, which in turn means that under
8683 :     relocatable @INC, initialinstalllocation is what binexp started as.
8684 case "$startperl" in
8685 '')
8686         case "$sharpbang" in
8687         *!)
8688                 $cat <<EOH
8689
8690 I can use the #! construct to start perl on your system. This will
8691 make startup of perl scripts faster, but may cause problems if you
8692 want to share those scripts and perl is not in a standard place
8693 ($initialinstalllocation/perl) on all your platforms. The alternative
8694 is to force a shell by starting the script with a single ':' character.
8695
8696 EOH
8697                 case "$versiononly" in
8698                 "$define")      dflt="$initialinstalllocation/perl$version";;
8699                 *)              dflt="$initialinstalllocation/perl";;
8700                 esac
8701                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8702                 . ./myread
8703                 case "$ans" in
8704                 none)   startperl=": # use perl";;
8705                 *)      startperl="#!$ans"
8706                         if $test 30 -lt `echo "$ans" | wc -c`; then
8707                                 $cat >&4 <<EOM
8708
8709 WARNING:  Some systems limit the #! command to 32 characters.
8710 If you experience difficulty running Perl scripts with #!, try
8711 installing Perl in a directory with a shorter pathname.
8712
8713 EOM
8714                         fi ;;
8715                 esac
8716                 ;;
8717         *) startperl=": # use perl"
8718                 ;;
8719         esac
8720         ;;
8721 esac
8722 echo "I'll use $startperl to start perl scripts."
8723
8724 : figure best path for perl in scripts
8725 case "$perlpath" in
8726 '')
8727         case "$versiononly" in
8728         "$define")      perlpath="$initialinstalllocation/perl$version";;
8729         *)              perlpath="$initialinstalllocation/perl";;
8730         esac
8731         case "$startperl" in
8732         *!*) ;;
8733         *)
8734                 $cat <<EOH
8735
8736 I will use the "eval 'exec'" idiom to start Perl on your system.
8737 I can use the full path of your Perl binary for this purpose, but
8738 doing so may cause problems if you want to share those scripts and
8739 Perl is not always in a standard place ($initialinstalllocation/perl).
8740
8741 EOH
8742                 dflt="$initialinstalllocation/perl"
8743                 rp="What path shall I use in \"eval 'exec'\"?"
8744                 . ./myread
8745                 perlpath="$ans"
8746                 ;;
8747         esac
8748         ;;
8749 esac
8750 case "$startperl" in
8751 *!*)    ;;
8752 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8753 esac
8754
8755 : determine where public executable scripts go
8756 set scriptdir scriptdir
8757 eval $prefixit
8758 case "$scriptdir" in
8759 '')
8760         dflt="$bin"
8761         : guess some guesses
8762         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8763         $test -d /usr/share/bin     && dflt=/usr/share/bin
8764         $test -d /usr/local/script  && dflt=/usr/local/script
8765         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8766         $test -d $prefixexp/script  && dflt=$prefixexp/script
8767         set dflt
8768         eval $prefixup
8769         ;;
8770 *)  dflt="$scriptdir"
8771         ;;
8772 esac
8773 $cat <<EOM
8774
8775 Some installations have a separate directory just for executable scripts so
8776 that they can mount it across multiple architectures but keep the scripts in
8777 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8778 Or you might just lump your scripts in with all your other executables.
8779
8780 EOM
8781 fn=d~
8782 rp='Where do you keep publicly executable scripts?'
8783 . ./getfile
8784 if $test "X$ansexp" != "X$scriptdirexp"; then
8785         installscript=''
8786 fi
8787 installscriptdir=''
8788 prefixvar=scriptdir
8789 . ./setprefixvar
8790 : A little fix up for an irregularly named variable.
8791 installscript="$installscriptdir"
8792
8793 : determine where add-on public executables go
8794 case "$sitebin" in
8795 '')     dflt=$siteprefix/bin ;;
8796 *)      dflt=$sitebin ;;
8797 esac
8798 fn=d~
8799 rp='Pathname where the add-on public executables should be installed?'
8800 . ./getfile
8801 prefixvar=sitebin
8802 . ./setprefixvar
8803
8804 : determine where add-on html pages go
8805 : There is no standard location, so try to copy the previously-selected
8806 : directory structure for the core html pages.
8807 case "$sitehtml1dir" in
8808 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8809 *)     dflt=$sitehtml1dir ;;
8810 esac
8811 case "$dflt" in
8812 ''|' ') dflt=none ;;
8813 esac
8814 fn=dn+~
8815 rp='Pathname where the site-specific html pages should be installed?'
8816 . ./getfile
8817 prefixvar=sitehtml1dir
8818 . ./setprefixvar
8819
8820 : determine where add-on library html pages go
8821 : There is no standard location, so try to copy the previously-selected
8822 : directory structure for the core html pages.
8823 case "$sitehtml3dir" in
8824 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8825 *)     dflt=$sitehtml3dir ;;
8826 esac
8827 case "$dflt" in
8828 ''|' ') dflt=none ;;
8829 esac
8830 fn=dn+~
8831 rp='Pathname where the site-specific library html pages should be installed?'
8832 . ./getfile
8833 prefixvar=sitehtml3dir
8834 . ./setprefixvar
8835
8836 : determine where add-on manual pages go
8837 case "$siteman1dir" in
8838 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8839 *)      dflt=$siteman1dir ;;
8840 esac
8841 case "$dflt" in
8842 ''|' ') dflt=none ;;
8843 esac
8844 fn=dn+~
8845 rp='Pathname where the site-specific manual pages should be installed?'
8846 . ./getfile
8847 prefixvar=siteman1dir
8848 . ./setprefixvar
8849
8850 : determine where add-on library man pages go
8851 case "$siteman3dir" in
8852 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8853 *)      dflt=$siteman3dir ;;
8854 esac
8855 case "$dflt" in
8856 ''|' ') dflt=none ;;
8857 esac
8858 fn=dn+~
8859 rp='Pathname where the site-specific library manual pages should be installed?'
8860 . ./getfile
8861 prefixvar=siteman3dir
8862 . ./setprefixvar
8863
8864 : determine where add-on public executable scripts go
8865 case "$sitescript" in
8866 '')     dflt=$siteprefix/script
8867         $test -d $dflt || dflt=$sitebin ;;
8868 *)  dflt="$sitescript" ;;
8869 esac
8870 fn=d~+
8871 rp='Pathname where add-on public executable scripts should be installed?'
8872 . ./getfile
8873 prefixvar=sitescript
8874 . ./setprefixvar
8875
8876 case "$usefaststdio" in
8877 $define|true|[yY]*|'')
8878         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8879         case "$xversion" in
8880         [68])   dflt='y' ;;
8881         *)      dflt='n' ;;
8882         esac
8883         ;;
8884 *) dflt='n';;
8885 esac
8886 cat <<EOM
8887
8888 Perl can be built to use 'fast stdio', which means using the stdio
8889 library but also directly manipulating the stdio buffers to enable
8890 faster I/O.  Using stdio is better for backward compatibility (especially
8891 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8892 interface has been preferred instead of stdio.
8893
8894 If this doesn't make any sense to you, just accept the default '$dflt'.
8895 EOM
8896 rp='Use the "fast stdio" if available?'
8897 . ./myread
8898 case "$ans" in
8899 y|Y)    val="$define" ;;     
8900 *)      val="$undef" ;;
8901 esac
8902 set usefaststdio
8903 eval $setvar
8904
8905
8906 : define an is-a-typedef? function
8907 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8908 case "$inclist" in
8909 "") inclist="sys/types.h";;
8910 esac;
8911 eval "varval=\$$var";
8912 case "$varval" in
8913 "")
8914         $rm -f temp.c;
8915         for inc in $inclist; do
8916                 echo "#include <$inc>" >>temp.c;
8917         done;
8918         echo "#ifdef $type" >> temp.c;
8919         echo "printf(\"We have $type\");" >> temp.c;
8920         echo "#endif" >> temp.c;
8921         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8922         if $contains $type temp.E >/dev/null 2>&1; then
8923                 eval "$var=\$type";
8924         else
8925                 eval "$var=\$def";
8926         fi;
8927         $rm -f temp.?;;
8928 *) eval "$var=\$varval";;
8929 esac'
8930
8931 : define an is-a-typedef? function that prompts if the type is not available.
8932 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8933 case "$inclist" in
8934 "") inclist="sys/types.h";;
8935 esac;
8936 eval "varval=\$$var";
8937 case "$varval" in
8938 "")
8939         $rm -f temp.c;
8940         for inc in $inclist; do
8941                 echo "#include <$inc>" >>temp.c;
8942         done;
8943         echo "#ifdef $type" >> temp.c;
8944         echo "printf(\"We have $type\");" >> temp.c;
8945         echo "#endif" >> temp.c;
8946         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8947         echo " " ;
8948         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8949         if $contains $type temp.E >/dev/null 2>&1; then
8950                 echo "$type found." >&4;
8951                 eval "$var=\$type";
8952         else
8953                 echo "$type NOT found." >&4;
8954                 dflt="$def";
8955                 . ./myread ;
8956                 eval "$var=\$ans";
8957         fi;
8958         $rm -f temp.?;;
8959 *) eval "$var=\$varval";;
8960 esac'
8961
8962 : see what type lseek is declared as in the kernel
8963 rp="What is the type used for lseek's offset on this system?"
8964 set off_t lseektype long stdio.h sys/types.h
8965 eval $typedef_ask
8966
8967 echo " "
8968 echo "Checking to see how big your file offsets are..." >&4
8969 $cat >try.c <<EOCP
8970 #include <sys/types.h>
8971 #include <stdio.h>
8972 int main()
8973 {
8974     printf("%d\n", (int)sizeof($lseektype));
8975     return(0);
8976 }
8977 EOCP
8978 set try
8979 if eval $compile_ok; then
8980         lseeksize=`$run ./try`
8981         echo "Your file offsets are $lseeksize bytes long."
8982 else
8983         dflt=$longsize
8984         echo " "
8985         echo "(I can't seem to compile the test program.  Guessing...)"
8986         rp="What is the size of your file offsets (in bytes)?"
8987         . ./myread
8988         lseeksize="$ans"
8989 fi
8990 $rm_try
8991
8992 : see what type file positions are declared as in the library
8993 rp="What is the type for file position used by fsetpos()?"
8994 set fpos_t fpostype long stdio.h sys/types.h
8995 eval $typedef_ask
8996
8997 echo " "
8998 case "$fpostype" in
8999 *_t) zzz="$fpostype"    ;;
9000 *)   zzz="fpos_t"       ;;
9001 esac
9002 echo "Checking the size of $zzz..." >&4 
9003 cat > try.c <<EOCP
9004 #include <sys/types.h>
9005 #include <stdio.h>
9006 #$i_stdlib I_STDLIB
9007 #ifdef I_STDLIB
9008 #include <stdlib.h>
9009 #endif
9010 int main() {
9011     printf("%d\n", (int)sizeof($fpostype));
9012     exit(0);
9013 }
9014 EOCP
9015 set try
9016 if eval $compile_ok; then
9017         yyy=`$run ./try`
9018         case "$yyy" in
9019         '')     fpossize=4
9020                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9021                 ;;
9022         *)      fpossize=$yyy
9023                 echo "Your $zzz is $fpossize bytes long."
9024                 ;;
9025         esac
9026 else
9027         dflt="$longsize"
9028         echo " " >&4
9029         echo "(I can't compile the test program.  Guessing...)" >&4
9030         rp="What is the size of your file positions (in bytes)?"
9031         . ./myread
9032         fpossize="$ans"
9033 fi
9034
9035 # Backward compatibility (uselfs is deprecated).
9036 case "$uselfs" in
9037 "$define"|true|[yY]*)
9038         cat <<EOM >&4
9039
9040 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9041 EOM
9042         uselargefiles="$define"
9043         ;;
9044 esac
9045
9046 case "$lseeksize:$fpossize" in
9047 8:8) cat <<EOM
9048
9049 You can have files larger than 2 gigabytes.
9050 EOM
9051    val="$define" ;;
9052 *)    case "$uselargefiles" in
9053    "$undef"|false|[nN]*) dflt='n' ;;
9054    *)   dflt='y' ;;
9055    esac
9056    cat <<EOM
9057
9058 Perl can be built to understand large files (files larger than 2 gigabytes)
9059 on some systems.  To do so, Configure can be run with -Duselargefiles.
9060
9061 If this doesn't make any sense to you, just accept the default '$dflt'.
9062 EOM
9063    rp='Try to understand large files, if available?'
9064    . ./myread
9065    case "$ans" in
9066    y|Y)         val="$define" ;;
9067    *)           val="$undef"  ;;
9068    esac
9069    ;;
9070 esac
9071 set uselargefiles
9072 eval $setvar
9073 : Look for a hint-file generated 'call-back-unit'.  If the
9074 : user has specified that a large files perl is to be built,
9075 : we may need to set or change some other defaults.
9076 if $test -f uselargefiles.cbu; then
9077         echo "Your platform has some specific hints regarding large file builds, using them..."
9078         . ./uselargefiles.cbu
9079 fi
9080 case "$uselargefiles" in
9081 "$define")
9082         if $test -f uselargefiles.cbu; then
9083                 echo " "
9084                 echo "Rechecking to see how big your file offsets are..." >&4
9085                 $cat >try.c <<EOCP
9086 #include <sys/types.h>
9087 #include <stdio.h>
9088 int main()
9089 {
9090     printf("%d\n", (int)sizeof($lseektype));
9091     return(0);
9092 }
9093 EOCP
9094                 set try
9095                 if eval $compile_ok; then
9096                         lseeksize=`$run ./try`
9097                         $echo "Your file offsets are now $lseeksize bytes long."
9098                 else
9099                         dflt="$lseeksize"
9100                         echo " "
9101                         echo "(I can't seem to compile the test program.  Guessing...)"
9102                         rp="What is the size of your file offsets (in bytes)?"
9103                         . ./myread
9104                         lseeksize="$ans"
9105                 fi
9106                 case "$fpostype" in
9107                 *_t) zzz="$fpostype"    ;;
9108                 *)   zzz="fpos_t"       ;;
9109                 esac
9110                 $echo $n "Rechecking the size of $zzz...$c" >&4
9111                 $cat > try.c <<EOCP
9112 #include <sys/types.h>
9113 #include <stdio.h>
9114 #$i_stdlib I_STDLIB
9115 #ifdef I_STDLIB
9116 #include <stdlib.h>
9117 #endif
9118 int main() {
9119     printf("%d\n", (int)sizeof($fpostype));
9120     return(0);
9121 }
9122 EOCP
9123                 set try
9124                 if eval $compile_ok; then
9125                         yyy=`$run ./try`
9126                         dflt="$lseeksize"
9127                         case "$yyy" in
9128                         '')     echo " "
9129                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9130                                 ;;
9131                         *)      fpossize=$yyy
9132                                 echo " $fpossize bytes." >&4
9133                                 ;;
9134                         esac
9135                 else
9136                         dflt="$fpossize"
9137                         echo " "
9138                         echo "(I can't compile the test program.  Guessing...)" >&4
9139                         rp="What is the size of your file positions (in bytes)?"
9140                         . ./myread
9141                         fpossize="$ans"
9142                 fi
9143                 $rm_try
9144         fi
9145         ;;
9146 esac
9147
9148 case "$vendorprefix" in
9149 '')     d_vendorbin="$undef"
9150         vendorbin=''
9151         vendorbinexp=''
9152         ;;
9153 *)      d_vendorbin="$define"
9154         : determine where vendor-supplied executables go.
9155         case "$vendorbin" in
9156         '') dflt=$vendorprefix/bin ;;
9157         *)      dflt="$vendorbin" ;;
9158         esac
9159         fn=d~+
9160         rp='Pathname for the vendor-supplied executables directory?'
9161         . ./getfile
9162         vendorbin="$ans"
9163         vendorbinexp="$ansexp"
9164         ;;
9165 esac
9166 prefixvar=vendorbin
9167 . ./installprefix
9168
9169 case "$vendorprefix" in
9170 '')     vendorhtml1dir=''
9171         vendorhtml1direxp=''
9172         ;;
9173 *)      : determine where vendor-supplied html pages go.
9174         : There is no standard location, so try to copy the previously-selected
9175         : directory structure for the core html pages.
9176         : XXX Better default suggestions would be welcome.
9177         case "$vendorhtml1dir" in
9178         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9179         *)      dflt=$vendorhtml1dir ;;
9180         esac
9181         case "$dflt" in
9182         ''|' ') dflt=none ;;
9183         esac
9184         fn=dn+~
9185         rp='Pathname for the vendor-supplied html pages?'
9186         . ./getfile
9187         vendorhtml1dir="$ans"
9188         vendorhtml1direxp="$ansexp"
9189         ;;
9190 esac
9191 : Use ' ' for none so value is preserved next time through Configure
9192 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9193 prefixvar=vendorhtml1dir
9194 . ./installprefix
9195
9196 case "$vendorprefix" in
9197 '')     vendorhtml3dir=''
9198         vendorhtml3direxp=''
9199         ;;
9200 *)      : determine where vendor-supplied module html pages go.
9201         : There is no standard location, so try to copy the previously-selected
9202         : directory structure for the core html pages.
9203         : XXX Better default suggestions would be welcome.
9204         case "$vendorhtml3dir" in
9205         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9206         *)      dflt=$vendorhtml3dir ;;
9207         esac
9208         case "$dflt" in
9209         ''|' ') dflt=none ;;
9210         esac
9211         fn=dn+~
9212         rp='Pathname for the vendor-supplied html pages?'
9213         . ./getfile
9214         vendorhtml3dir="$ans"
9215         vendorhtml3direxp="$ansexp"
9216         ;;
9217 esac
9218 : Use ' ' for none so value is preserved next time through Configure
9219 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9220 prefixvar=vendorhtml3dir
9221 . ./installprefix
9222
9223 case "$vendorprefix" in
9224 '')     vendorman1dir=''
9225         vendorman1direxp=''
9226         ;;
9227 *)      : determine where vendor-supplied manual pages go.
9228         case "$vendorman1dir" in
9229         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9230         *)      dflt=$vendorman1dir ;;
9231         esac
9232         case "$dflt" in
9233         ''|' ') dflt=none ;;
9234         esac
9235         fn=nd~+
9236         rp='Pathname for the vendor-supplied manual section 1 pages?'
9237         . ./getfile
9238         vendorman1dir="$ans"
9239         vendorman1direxp="$ansexp"
9240         ;;
9241 esac
9242 : Use ' ' for none so value is preserved next time through Configure
9243 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9244 prefixvar=vendorman1dir
9245 . ./installprefix
9246
9247 case "$vendorprefix" in
9248 '')     vendorman3dir=''
9249         vendorman3direxp=''
9250         ;;
9251 *)      : determine where vendor-supplied module manual pages go.
9252         case "$vendorman3dir" in
9253         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9254         *)      dflt=$vendorman3dir ;;
9255         esac
9256         case "$dflt" in
9257         ''|' ') dflt=none ;;
9258         esac
9259         fn=nd~+
9260         rp='Pathname for the vendor-supplied manual section 3 pages?'
9261         . ./getfile
9262         vendorman3dir="$ans"
9263         vendorman3direxp="$ansexp"
9264         ;;
9265 esac
9266 : Use ' ' for none so value is preserved next time through Configure
9267 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9268 prefixvar=vendorman3dir
9269 . ./installprefix
9270
9271 case "$vendorprefix" in
9272 '')     d_vendorscript="$undef"
9273         vendorscript=''
9274         vendorscriptexp=''
9275         ;;
9276 *)      d_vendorscript="$define"
9277         : determine where vendor-supplied scripts go.
9278         case "$vendorscript" in
9279         '')     dflt=$vendorprefix/script
9280                 $test -d $dflt || dflt=$vendorbin ;;
9281         *)  dflt="$vendorscript" ;;
9282         esac
9283         $cat <<EOM
9284
9285 The installation process will create a directory for
9286 vendor-supplied scripts.
9287
9288 EOM
9289         fn=d~+
9290         rp='Pathname for the vendor-supplied scripts directory?'
9291         . ./getfile
9292         vendorscript="$ans"
9293         vendorscriptexp="$ansexp"
9294         ;;
9295 esac
9296 prefixvar=vendorscript
9297 . ./installprefix
9298
9299 : see if qgcvt exists
9300 set qgcvt d_qgcvt
9301 eval $inlibc
9302
9303 echo " "
9304
9305 if $test X"$d_longdbl" = X"$define"; then
9306
9307 echo "Checking how to print long doubles..." >&4
9308
9309 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9310         $cat >try.c <<'EOCP'
9311 #include <sys/types.h>
9312 #include <stdio.h>
9313 int main() {
9314   double d = 123.456;
9315   printf("%.3f\n", d);
9316 }
9317 EOCP
9318         set try
9319         if eval $compile; then
9320                 yyy=`$run ./try`
9321                 case "$yyy" in
9322                 123.456)
9323                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9324                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9325                         echo "We will use %f."
9326                         ;;
9327                 esac
9328         fi
9329 fi
9330
9331 if $test X"$sPRIfldbl" = X; then
9332         $cat >try.c <<'EOCP'
9333 #include <sys/types.h>
9334 #include <stdio.h>
9335 int main() {
9336   long double d = 123.456;
9337   printf("%.3Lf\n", d);
9338 }
9339 EOCP
9340         set try
9341         if eval $compile; then
9342                 yyy=`$run ./try`
9343                 case "$yyy" in
9344                 123.456)
9345                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9346                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9347                         echo "We will use %Lf."
9348                         ;;
9349                 esac
9350         fi
9351 fi
9352
9353 if $test X"$sPRIfldbl" = X; then
9354         $cat >try.c <<'EOCP'
9355 #include <sys/types.h>
9356 #include <stdio.h>
9357 int main() {
9358   long double d = 123.456;
9359   printf("%.3llf\n", d);
9360 }
9361 EOCP
9362         set try
9363         if eval $compile; then
9364                 yyy=`$run ./try`
9365                 case "$yyy" in
9366                 123.456)
9367                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9368                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9369                         echo "We will use %llf."
9370                         ;;
9371                 esac
9372         fi
9373 fi
9374
9375 if $test X"$sPRIfldbl" = X; then
9376         $cat >try.c <<'EOCP'
9377 #include <sys/types.h>
9378 #include <stdio.h>
9379 int main() {
9380   long double d = 123.456;
9381   printf("%.3lf\n", d);
9382 }
9383 EOCP
9384         set try
9385         if eval $compile; then
9386                 yyy=`$run ./try`
9387                 case "$yyy" in
9388                 123.456)
9389                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9390                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9391                         echo "We will use %lf."
9392                         ;;
9393                 esac
9394         fi
9395 fi
9396
9397 if $test X"$sPRIfldbl" = X; then
9398         echo "Cannot figure out how to print long doubles." >&4
9399 else
9400         sSCNfldbl=$sPRIfldbl    # expect consistency
9401 fi
9402
9403 $rm_try
9404
9405 fi # d_longdbl
9406
9407 case "$sPRIfldbl" in
9408 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9409         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9410         d_SCNfldbl="$undef";
9411         ;;
9412 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9413         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9414         d_SCNfldbl="$define";
9415         ;;
9416 esac
9417
9418 : Check how to convert floats to strings.
9419
9420 if test "X$d_Gconvert" = X; then
9421
9422 echo " "
9423 echo "Checking for an efficient way to convert floats to strings."
9424 echo " " > try.c
9425 case "$uselongdouble" in
9426 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9427 esac
9428 case "$d_longdbl" in
9429 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9430 esac
9431 case "$d_PRIgldbl" in
9432 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9433 esac
9434 $cat >>try.c <<EOP
9435 #ifdef TRY_gconvert
9436 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9437 char *myname = "gconvert";
9438 #endif
9439 #ifdef TRY_gcvt
9440 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9441 char *myname = "gcvt";
9442 #endif
9443 #ifdef TRY_qgcvt
9444 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9445 char *myname = "qgcvt";
9446 #define DOUBLETYPE long double
9447 #endif
9448 #ifdef TRY_sprintf
9449 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9450 #ifdef HAS_PRIgldbl
9451 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9452 #else
9453 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9454 #endif
9455 #else
9456 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9457 #endif
9458 char *myname = "sprintf";
9459 #endif
9460
9461 #ifndef DOUBLETYPE
9462 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9463 #define DOUBLETYPE long double
9464 #else
9465 #define DOUBLETYPE double
9466 #endif
9467 #endif
9468
9469 #include <stdio.h>
9470
9471 #define I_STDLIB $i_stdlib
9472 #ifdef I_STDLIB
9473 #include <stdlib.h>
9474 #endif
9475
9476 int
9477 checkit(expect, got)
9478 char *expect;
9479 char *got;
9480 {
9481     if (strcmp(expect, got)) {
9482                 printf("%s oddity:  Expected %s, got %s\n",
9483                         myname, expect, got);
9484                 exit(1);
9485         }
9486 }
9487
9488 int main()
9489 {
9490         char buf[64];
9491         buf[63] = '\0';
9492
9493         /* This must be 1st test on (which?) platform */
9494         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9495         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9496         checkit("0.1", buf);
9497
9498         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9499         checkit("0.01", buf);
9500
9501         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9502         checkit("0.001", buf);
9503
9504         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9505         checkit("0.0001", buf);
9506
9507         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9508         if (strlen(buf) > 5)
9509             checkit("9e-005", buf); /* for Microsoft ?? */
9510         else
9511             checkit("9e-05", buf);
9512
9513         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9514         checkit("1", buf);
9515
9516         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9517         checkit("1.1", buf);
9518
9519         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9520         checkit("1.01", buf);
9521
9522         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9523         checkit("1.001", buf);
9524
9525         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9526         checkit("1.0001", buf);
9527
9528         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9529         checkit("1.00001", buf);
9530
9531         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9532         checkit("1.000001", buf);
9533
9534         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9535         checkit("0", buf);
9536
9537         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9538         checkit("-1", buf);
9539
9540         /* Some Linux gcvt's give 1.e+5 here. */
9541         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9542         checkit("100000", buf);
9543
9544         /* Some Linux gcvt's give -1.e+5 here. */
9545         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9546         checkit("-100000", buf);
9547
9548         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9549         checkit("123.456", buf);
9550
9551         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9552         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9553         /* 34 should be enough to scare even long double
9554          * places into using the e notation. */
9555         if (strlen(buf) > 5)
9556             checkit("1e+034", buf); /* for Microsoft */
9557         else
9558             checkit("1e+34", buf);
9559
9560         /* For Perl, if you add additional tests here, also add them to
9561          * t/base/num.t for benefit of platforms not using Configure or
9562          * overriding d_Gconvert */
9563
9564         exit(0);
9565 }
9566 EOP
9567 : first add preferred functions to our list
9568 xxx_list=""
9569 for xxx_convert in $gconvert_preference; do
9570     case $xxx_convert in
9571     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9572     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9573     esac
9574 done
9575 : then add any others
9576 for xxx_convert in gconvert gcvt sprintf; do
9577     case "$xxx_list" in
9578     *$xxx_convert*) ;;
9579     *) xxx_list="$xxx_list $xxx_convert" ;;
9580     esac
9581 done
9582
9583 case "$d_longdbl$uselongdouble" in
9584 "$define$define")
9585     : again, add prefered functions to our list first
9586     xxx_ld_list=""
9587     for xxx_convert in $gconvert_ld_preference; do
9588         case $xxx_convert in
9589         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9590         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9591         esac
9592     done
9593     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9594     for xxx_convert in qgcvt sprintf $xxx_list; do
9595         case "$xxx_ld_list" in
9596         $xxx_convert*|*" $xxx_convert"*) ;;
9597         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9598         esac
9599     done
9600     : if sprintf cannot do long doubles, move it to the end
9601     if test "$d_PRIgldbl" != "$define"; then
9602         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9603     fi
9604     : if no qgcvt, remove it
9605     if test "$d_qgcvt" != "$define"; then
9606         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9607     fi
9608     : use the ld_list
9609     xxx_list="$xxx_ld_list"
9610     ;;
9611 esac
9612
9613 for xxx_convert in $xxx_list; do
9614         echo "Trying $xxx_convert..."
9615         $rm -f try try$_o core
9616         set try -DTRY_$xxx_convert
9617         if eval $compile; then
9618                 echo "$xxx_convert() found." >&4
9619                 if $run ./try; then
9620                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9621                         break;
9622                 else
9623                         echo "...But $xxx_convert didn't work as I expected."
9624                         xxx_convert=''
9625                 fi
9626         else
9627                 echo "$xxx_convert NOT found." >&4
9628         fi
9629 done
9630
9631 if test X$xxx_convert = X; then
9632     echo "*** WHOA THERE!!! ***" >&4
9633     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9634     xxx_convert=sprintf
9635 fi
9636
9637 case "$xxx_convert" in
9638 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9639 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9640 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9641 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9642    "$define$define$define")
9643       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9644    "$define$define$undef")
9645       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9646    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9647    esac
9648    ;;
9649 esac
9650
9651 fi
9652 $rm_try
9653
9654 : see if _fwalk exists
9655 set fwalk d__fwalk
9656 eval $inlibc
9657
9658 : Initialize h_fcntl
9659 h_fcntl=false
9660
9661 : Initialize h_sysfile
9662 h_sysfile=false
9663
9664 : access call always available on UNIX
9665 set access d_access
9666 eval $inlibc
9667
9668 : locate the flags for 'access()'
9669 case "$d_access" in
9670 "$define")
9671         echo " "
9672         $cat >access.c <<EOCP
9673 #include <sys/types.h>
9674 #ifdef I_FCNTL
9675 #include <fcntl.h>
9676 #endif
9677 #ifdef I_SYS_FILE
9678 #include <sys/file.h>
9679 #endif
9680 #ifdef I_UNISTD
9681 #include <unistd.h>
9682 #endif
9683 #$i_stdlib I_STDLIB
9684 #ifdef I_STDLIB
9685 #include <stdlib.h>
9686 #endif
9687 int main() {
9688         exit(R_OK);
9689 }
9690 EOCP
9691         : check sys/file.h first, no particular reason here
9692         if $test `./findhdr sys/file.h` && \
9693                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9694                 h_sysfile=true;
9695                 echo "<sys/file.h> defines the *_OK access constants." >&4
9696         elif $test `./findhdr fcntl.h` && \
9697                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9698                 h_fcntl=true;
9699                 echo "<fcntl.h> defines the *_OK access constants." >&4
9700         elif $test `./findhdr unistd.h` && \
9701                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9702                 echo "<unistd.h> defines the *_OK access constants." >&4
9703         else
9704                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9705         fi
9706         ;;
9707 esac
9708 $rm -f access*
9709
9710 : see if accessx exists
9711 set accessx d_accessx
9712 eval $inlibc
9713
9714 : see if aintl exists
9715 set aintl d_aintl
9716 eval $inlibc
9717
9718 : see if alarm exists
9719 set alarm d_alarm
9720 eval $inlibc
9721
9722 : see if POSIX threads are available
9723 set pthread.h i_pthread
9724 eval $inhdr
9725
9726 : define a fucntion to check prototypes
9727 $cat > protochk <<EOSH
9728 $startsh
9729 cc="$cc"
9730 optimize="$optimize"
9731 ccflags="$ccflags"
9732 prototype="$prototype"
9733 define="$define"
9734 rm_try="$rm_try"
9735 usethreads=$usethreads
9736 i_pthread=$i_pthread
9737 pthread_h_first=$pthread_h_first
9738 EOSH
9739
9740 $cat >> protochk <<'EOSH'
9741
9742 $rm_try
9743 foo="$1"
9744 shift
9745 while test $# -ge 2; do
9746         case "$1" in
9747                 $define) echo "#include <$2>" >> try.c ;;
9748                 literal) echo "$2" >> try.c ;;
9749         esac
9750     # Extra magic for the benefit of systems that need pthread.h
9751     # to be included early to correctly detect threadsafe functions.
9752     # Such functions must guarantee themselves, though, that the usethreads
9753     # and i_pthread have been defined, before calling protochk.
9754     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9755         echo "#include <pthread.h>" >> try.c
9756         pthread_h_done=yes
9757     fi
9758     shift 2
9759 done
9760 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9761 cat >> try.c <<'EOCP'
9762 #ifdef CAN_PROTOTYPE
9763 #define _(args) args
9764 #else
9765 #define _(args) ()
9766 #endif
9767 EOCP
9768 echo "$foo" >> try.c
9769 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9770 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9771 status=$?
9772 $rm_try
9773 exit $status
9774 EOSH
9775 chmod +x protochk
9776 $eunicefix protochk
9777
9778 hasproto='varname=$1; func=$2; shift; shift;
9779 while $test $# -ge 2; do
9780         case "$1" in
9781         $define) echo "#include <$2>";;
9782         esac ;
9783     shift 2;
9784 done > try.c;
9785 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9786 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9787         echo "$func() prototype found.";
9788         val="$define";
9789 else
9790         echo "$func() prototype NOT found.";
9791         val="$undef";
9792 fi;
9793 set $varname;
9794 eval $setvar;
9795 $rm_try tryout.c'
9796
9797 : see if sys/types.h has to be included
9798 set sys/types.h i_systypes
9799 eval $inhdr
9800
9801 : see if sys/select.h has to be included
9802 set sys/select.h i_sysselct
9803 eval $inhdr
9804
9805 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9806 while $test $# -ge 2; do
9807         case "$1" in
9808         $define) echo "#include <$2>";;
9809         esac ;
9810     shift 2;
9811 done > try.c;
9812 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9813 set try;
9814 if eval $compile; then
9815         val="$define";
9816 else
9817         val="$undef";
9818 fi;
9819 set $varname;
9820 eval $setvar;
9821 $rm_try'
9822
9823 : see if we should include time.h, sys/time.h, or both
9824 echo " "
9825 if test "X$timeincl" = X; then
9826         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9827         $echo $n "I'm now running the test program...$c"
9828         $cat >try.c <<EOCP
9829 #include <sys/types.h>
9830 #ifdef I_TIME
9831 #include <time.h>
9832 #endif
9833 #ifdef I_SYSTIME
9834 #ifdef SYSTIMEKERNEL
9835 #define KERNEL
9836 #endif
9837 #include <sys/time.h>
9838 #endif
9839 #ifdef I_SYSSELECT
9840 #include <sys/select.h>
9841 #endif
9842 #$i_stdlib I_STDLIB
9843 #ifdef I_STDLIB
9844 #include <stdlib.h>
9845 #endif
9846 int main()
9847 {
9848         struct tm foo;
9849 #ifdef S_TIMEVAL
9850         struct timeval bar;
9851 #endif
9852 #ifdef S_TIMEZONE
9853         struct timezone tzp;
9854 #endif
9855         if (foo.tm_sec == foo.tm_sec)
9856                 exit(0);
9857 #ifdef S_TIMEVAL
9858         if (bar.tv_sec == bar.tv_sec)
9859                 exit(0);
9860 #endif
9861         exit(1);
9862 }
9863 EOCP
9864         flags=''
9865         for s_timezone in '-DS_TIMEZONE' ''; do
9866         sysselect=''
9867         for s_timeval in '-DS_TIMEVAL' ''; do
9868         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9869         for i_time in '' '-DI_TIME'; do
9870         for i_systime in '-DI_SYSTIME' ''; do
9871                 case "$flags" in
9872                 '') $echo $n ".$c"
9873                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9874                         if eval $compile; then
9875                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9876                                 shift
9877                                 flags="$*"
9878                                 echo " "
9879                                 $echo $n "Succeeded with $flags$c"
9880                         fi
9881                         ;;
9882                 esac
9883         done
9884         done
9885         done
9886         done
9887         done
9888         timeincl=''
9889         echo " "
9890         case "$flags" in
9891         *SYSTIMEKERNEL*) i_systimek="$define"
9892                 timeincl=`./findhdr sys/time.h`
9893                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9894         *) i_systimek="$undef";;
9895         esac
9896         case "$flags" in
9897         *I_TIME*) i_time="$define"
9898                 timeincl=`./findhdr time.h`" $timeincl"
9899                 echo "We'll include <time.h>." >&4;;
9900         *) i_time="$undef";;
9901         esac
9902         case "$flags" in
9903         *I_SYSTIME*) i_systime="$define"
9904                 timeincl=`./findhdr sys/time.h`" $timeincl"
9905                 echo "We'll include <sys/time.h>." >&4;;
9906         *) i_systime="$undef";;
9907         esac
9908         $rm_try
9909 fi
9910 : see if struct tm knows about tm_zone
9911 case "$i_systime$i_time" in
9912 *$define*)
9913         echo " "
9914         echo "Checking to see if your struct tm has tm_zone field..." >&4
9915         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9916         eval $hasfield
9917         ;;
9918 *)      val="$undef"
9919         set d_tm_tm_zone
9920         eval $setvar
9921         ;;
9922 esac
9923 case "$d_tm_tm_zone" in
9924 "$define")      echo "Yes, it does."   ;;
9925 *)              echo "No, it doesn't." ;;
9926 esac
9927 : see if struct tm knows about tm_gmtoff
9928 case "$i_systime$i_time" in
9929 *$define*)
9930         echo " "
9931         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9932         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9933         eval $hasfield
9934         ;;
9935 *)      val="$undef"
9936         set d_tm_tm_gmtoff
9937         eval $setvar
9938         ;;
9939 esac
9940 case "$d_tm_tm_gmtoff" in
9941 "$define")      echo "Yes, it does."   ;;
9942 *)              echo "No, it doesn't." ;;
9943 esac
9944
9945 : see if asctime_r exists
9946 set asctime_r d_asctime_r
9947 eval $inlibc
9948 case "$d_asctime_r" in
9949 "$define")
9950         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9951         case "$d_asctime_r_proto:$usethreads" in
9952         ":define")      d_asctime_r_proto=define
9953                 set d_asctime_r_proto asctime_r $hdrs
9954                 eval $hasproto ;;
9955         *)      ;;
9956         esac
9957         case "$d_asctime_r_proto" in
9958         define)
9959         case "$asctime_r_proto" in
9960         ''|0) try='char* asctime_r(const struct tm*, char*);'
9961         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9962         esac
9963         case "$asctime_r_proto" in
9964         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9965         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9966         esac
9967         case "$asctime_r_proto" in
9968         ''|0) try='int asctime_r(const struct tm*, char*);'
9969         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9970         esac
9971         case "$asctime_r_proto" in
9972         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9973         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9974         esac
9975         case "$asctime_r_proto" in
9976         ''|0)   d_asctime_r=undef
9977                 asctime_r_proto=0
9978                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9979         * )     case "$asctime_r_proto" in
9980                 REENTRANT_PROTO*) ;;
9981                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9982                 esac
9983                 echo "Prototype: $try" ;;
9984         esac
9985         ;;
9986         *)      case "$usethreads" in
9987                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9988                 esac
9989                 d_asctime_r=undef
9990                 asctime_r_proto=0
9991                 ;;
9992         esac
9993         ;;
9994 *)      asctime_r_proto=0
9995         ;;
9996 esac
9997
9998 : see if atolf exists
9999 set atolf d_atolf
10000 eval $inlibc
10001
10002 : see if atoll exists
10003 set atoll d_atoll
10004 eval $inlibc
10005
10006 : Look for GCC-style attribute format
10007 case "$d_attribute_format" in
10008 '')
10009 echo " "
10010 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10011 $cat >attrib.c <<'EOCP'
10012 #include <stdio.h>
10013 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10014 EOCP
10015 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10016         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10017                 echo "Your C compiler doesn't support __attribute__((format))."
10018                 val="$undef"
10019         else
10020                 echo "Your C compiler supports __attribute__((format))."
10021                 val="$define"
10022         fi
10023 else
10024         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10025         val="$undef"
10026 fi
10027 ;;
10028 *) val="$d_attribute_format" ;;
10029 esac
10030 set d_attribute_format
10031 eval $setvar
10032 $rm -f attrib*
10033
10034 : Look for GCC-style attribute format with null format allowed
10035 case "$d_printf_format_null" in
10036 '') case "$d_attribute_format" in
10037     $define)
10038         echo " "
10039         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10040 $cat >attrib.c <<EOCP
10041 #include <stdio.h>
10042 #$i_stdlib I_STDLIB
10043 #ifdef I_STDLIB
10044 #include <stdlib.h>
10045 #endif
10046 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10047 int null_printf (char* pat,...) { return (int)pat; }
10048 int main () { exit(null_printf(NULL)); }
10049 EOCP
10050         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10051             : run the executable in case it produces a run-time warning
10052             if $run ./attrib >>attrib.out 2>&1; then
10053                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10054                     echo "Your C compiler doesn't allow __printf__ format to be null."
10055                     val="$undef"
10056                 else
10057                     echo "Your C compiler allows __printf__ format to be null."
10058                     val="$define"
10059                 fi
10060             else
10061             echo "Your C compiler executable failed with __printf__ format null."
10062             val="$undef"
10063         fi
10064     else
10065         echo "Your C compiler fails with __printf__ format null."
10066         val="$undef"
10067     fi
10068     ;;
10069     *)  val="$undef" ;;
10070     esac
10071 ;;
10072 *)  val="$d_printf_format_null" ;;
10073 esac
10074 set d_printf_format_null
10075 eval $setvar
10076 $rm -f attrib*
10077
10078 : Look for GCC-style attribute malloc
10079 case "$d_attribute_malloc" in
10080 '')
10081 echo " "
10082 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10083 $cat >attrib.c <<'EOCP'
10084 #include <stdio.h>
10085 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10086 EOCP
10087 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10088         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10089                 echo "Your C compiler doesn't support __attribute__((malloc))."
10090                 val="$undef"
10091         else
10092                 echo "Your C compiler supports __attribute__((malloc))."
10093                 val="$define"
10094         fi
10095 else
10096         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10097         val="$undef"
10098 fi
10099 ;;
10100 *) val="$d_attribute_malloc" ;;
10101 esac
10102 set d_attribute_malloc
10103 eval $setvar
10104 $rm -f attrib*
10105
10106 : Look for GCC-style attribute nonnull
10107 case "$d_attribute_nonnull" in
10108 '')
10109 echo " "
10110 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10111 $cat >attrib.c <<'EOCP'
10112 #include <stdio.h>
10113 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10114 EOCP
10115 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10116         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10117                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10118                 val="$undef"
10119         else
10120                 echo "Your C compiler supports __attribute__((nonnull))."
10121                 val="$define"
10122         fi
10123 else
10124         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10125         val="$undef"
10126 fi
10127 ;;
10128 *) val="$d_attribute_nonnull" ;;
10129 esac
10130 set d_attribute_nonnull
10131 eval $setvar
10132 $rm -f attrib*
10133
10134 : Look for GCC-style attribute noreturn
10135 case "$d_attribute_noreturn" in
10136 '')
10137 echo " "
10138 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10139 $cat >attrib.c <<'EOCP'
10140 #include <stdio.h>
10141 void fall_over_dead( void ) __attribute__((noreturn));
10142 EOCP
10143 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10144         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10145                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10146                 val="$undef"
10147         else
10148                 echo "Your C compiler supports __attribute__((noreturn))."
10149                 val="$define"
10150         fi
10151 else
10152         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10153         val="$undef"
10154 fi
10155 ;;
10156 *) val="$d_attribute_noreturn" ;;
10157 esac
10158 set d_attribute_noreturn
10159 eval $setvar
10160 $rm -f attrib*
10161
10162 : Look for GCC-style attribute pure
10163 case "$d_attribute_pure" in
10164 '')
10165 echo " "
10166 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10167 $cat >attrib.c <<'EOCP'
10168 #include <stdio.h>
10169 int square( int n ) __attribute__((pure));
10170 EOCP
10171 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10172         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10173                 echo "Your C compiler doesn't support __attribute__((pure))."
10174                 val="$undef"
10175         else
10176                 echo "Your C compiler supports __attribute__((pure))."
10177                 val="$define"
10178         fi
10179 else
10180         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10181         val="$undef"
10182 fi
10183 ;;
10184 *) val="$d_attribute_pure" ;;
10185 esac
10186 set d_attribute_pure
10187 eval $setvar
10188 $rm -f attrib*
10189
10190 : Look for GCC-style attribute unused
10191 case "$d_attribute_unused" in
10192 '')
10193 echo " "
10194 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10195 $cat >attrib.c <<'EOCP'
10196 #include <stdio.h>
10197 int do_something( int dummy __attribute__((unused)), int n );
10198 EOCP
10199 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10200         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10201                 echo "Your C compiler doesn't support __attribute__((unused))."
10202                 val="$undef"
10203         else
10204                 echo "Your C compiler supports __attribute__((unused))."
10205                 val="$define"
10206         fi
10207 else
10208         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10209         val="$undef"
10210 fi
10211 ;;
10212 *) val="$d_attribute_unused" ;;
10213 esac
10214 set d_attribute_unused
10215 eval $setvar
10216 $rm -f attrib*
10217
10218 : Look for GCC-style attribute warn_unused_result
10219 case "$d_attribute_warn_unused_result" in
10220 '')
10221 echo " "
10222 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10223 $cat >attrib.c <<'EOCP'
10224 #include <stdio.h>
10225 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10226 EOCP
10227 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10228         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10229                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10230                 val="$undef"
10231         else
10232                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10233                 val="$define"
10234         fi
10235 else
10236         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10237         val="$undef"
10238 fi
10239 ;;
10240 *) val="$d_attribute_warn_unused_result" ;;
10241 esac
10242 set d_attribute_warn_unused_result
10243 eval $setvar
10244 $rm -f attrib*
10245
10246 : see if bcmp exists
10247 set bcmp d_bcmp
10248 eval $inlibc
10249
10250 : see if bcopy exists
10251 set bcopy d_bcopy
10252 eval $inlibc
10253
10254 : see if getpgrp exists
10255 set getpgrp d_getpgrp
10256 eval $inlibc
10257
10258 case "$d_getpgrp" in
10259 "$define")
10260         echo " "
10261         echo "Checking to see which flavor of getpgrp is in use..."
10262         $cat >try.c <<EOP
10263 #$i_unistd I_UNISTD
10264 #include <sys/types.h>
10265 #ifdef I_UNISTD
10266 #  include <unistd.h>
10267 #endif
10268 #$i_stdlib I_STDLIB
10269 #ifdef I_STDLIB
10270 #include <stdlib.h>
10271 #endif
10272 int main()
10273 {
10274         if (getuid() == 0) {
10275                 printf("(I see you are running Configure as super-user...)\n");
10276                 setuid(1);
10277         }
10278 #ifdef TRY_BSD_PGRP
10279         if (getpgrp(1) == 0)
10280                 exit(0);
10281 #else
10282         if (getpgrp() > 0)
10283                 exit(0);
10284 #endif
10285         exit(1);
10286 }
10287 EOP
10288         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10289                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10290                 val="$define"
10291         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10292                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10293                 val="$undef"
10294         else
10295                 echo "I can't seem to compile and run the test program."
10296                 if ./usg; then
10297                         xxx="a USG one, i.e. you use getpgrp()."
10298                 else
10299                         # SVR4 systems can appear rather BSD-ish.
10300                         case "$i_unistd" in
10301                         $undef)
10302                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10303                                 val="$define"
10304                                 ;;
10305                         $define)
10306                                 xxx="probably a USG one, i.e. you use getpgrp()."
10307                                 val="$undef"
10308                                 ;;
10309                         esac
10310                 fi
10311                 echo "Assuming your getpgrp is $xxx" >&4
10312         fi
10313         ;;
10314 *) val="$undef";;
10315 esac
10316 set d_bsdgetpgrp
10317 eval $setvar
10318 $rm_try
10319
10320 : see if setpgrp exists
10321 set setpgrp d_setpgrp
10322 eval $inlibc
10323
10324 case "$d_setpgrp" in
10325 "$define")
10326         echo " "
10327         echo "Checking to see which flavor of setpgrp is in use..."
10328         $cat >try.c <<EOP
10329 #$i_unistd I_UNISTD
10330 #include <sys/types.h>
10331 #ifdef I_UNISTD
10332 #  include <unistd.h>
10333 #endif
10334 #$i_stdlib I_STDLIB
10335 #ifdef I_STDLIB
10336 #include <stdlib.h>
10337 #endif
10338 int main()
10339 {
10340         if (getuid() == 0) {
10341                 printf("(I see you are running Configure as super-user...)\n");
10342                 setuid(1);
10343         }
10344 #ifdef TRY_BSD_PGRP
10345         if (-1 == setpgrp(1, 1))
10346                 exit(0);
10347 #else
10348         if (setpgrp() != -1)
10349                 exit(0);
10350 #endif
10351         exit(1);
10352 }
10353 EOP
10354         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10355                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10356                 val="$define"
10357         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10358                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10359                 val="$undef"
10360         else
10361                 echo "(I can't seem to compile and run the test program.)"
10362                 if ./usg; then
10363                         xxx="a USG one, i.e. you use setpgrp()."
10364                 else
10365                         # SVR4 systems can appear rather BSD-ish.
10366                         case "$i_unistd" in
10367                         $undef)
10368                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10369                                 val="$define"
10370                                 ;;
10371                         $define)
10372                                 xxx="probably a USG one, i.e. you use setpgrp()."
10373                                 val="$undef"
10374                                 ;;
10375                         esac
10376                 fi
10377                 echo "Assuming your setpgrp is $xxx" >&4
10378         fi
10379         ;;
10380 *) val="$undef";;
10381 esac
10382 set d_bsdsetpgrp
10383 eval $setvar
10384 $rm_try
10385
10386 : Look for GCC-style __builtin_choose_expr
10387 case "$d_builtin_choose_expr" in
10388 '')
10389     echo " "
10390     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10391     $cat >try.c <<'EOCP'
10392 #include <assert.h>
10393 #include <stdlib.h>
10394 #include <stdio.h>
10395
10396 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10397
10398 int main(void) {
10399     assert( SYRINX(1) == 2112 );
10400     assert( SYRINX(1) != 5150 );
10401     assert( SYRINX(0) == 5150 );
10402     assert( SYRINX(0) != 2112 );
10403     puts( "All good!" );
10404     exit(0);
10405 }
10406
10407 EOCP
10408     set try
10409     if eval $compile; then
10410         echo "Your C compiler supports __builtin_choose_expr."
10411         val="$define"
10412     else
10413         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10414         val="$undef"
10415     fi
10416 ;;
10417 *) val="$d_builtin_choose_expr" ;;
10418 esac
10419
10420 set d_builtin_choose_expr
10421 eval $setvar
10422 $rm_try
10423
10424 : Look for GCC-style __builtin_expect
10425 case "$d_builtin_expect" in
10426 '')
10427     echo " "
10428     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10429     $cat >builtin.c <<'EOCP'
10430 int main(void) {
10431     int n = 50;
10432     if ( __builtin_expect(n, 0) ) n = 1;
10433 }
10434 EOCP
10435     set try
10436     if eval $compile; then
10437         echo "Your C compiler supports __builtin_choose_expr."
10438         val="$define"
10439     else
10440         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10441         val="$undef"
10442     fi
10443     ;;
10444 *) val="$d_builtin_expect" ;;
10445 esac
10446
10447 set d_builtin_expect
10448 eval $setvar
10449 $rm_try
10450
10451 : see if bzero exists
10452 set bzero d_bzero
10453 eval $inlibc
10454
10455 : see if stdarg is available
10456 echo " "
10457 if $test `./findhdr stdarg.h`; then
10458         echo "<stdarg.h> found." >&4
10459         valstd="$define"
10460 else
10461         echo "<stdarg.h> NOT found." >&4
10462         valstd="$undef"
10463 fi
10464
10465 : see if varags is available
10466 echo " "
10467 if $test `./findhdr varargs.h`; then
10468         echo "<varargs.h> found." >&4
10469 else
10470         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10471 fi
10472
10473 : set up the varargs testing programs
10474 $cat > varargs.c <<EOP
10475 #ifdef I_STDARG
10476 #include <stdarg.h>
10477 #endif
10478 #ifdef I_VARARGS
10479 #include <varargs.h>
10480 #endif
10481
10482 #ifdef I_STDARG
10483 int f(char *p, ...)
10484 #else
10485 int f(va_alist)
10486 va_dcl
10487 #endif
10488 {
10489         va_list ap;
10490 #ifndef I_STDARG
10491         char *p;
10492 #endif
10493 #ifdef I_STDARG
10494         va_start(ap,p);
10495 #else
10496         va_start(ap);
10497         p = va_arg(ap, char *);
10498 #endif
10499         va_end(ap);
10500         return 0;
10501 }
10502 EOP
10503 $cat > varargs <<EOP
10504 $startsh
10505 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10506         echo "true"
10507 else
10508         echo "false"
10509 fi
10510 $rm -f varargs$_o
10511 EOP
10512 chmod +x varargs
10513
10514 : now check which varargs header should be included
10515 echo " "
10516 i_varhdr=''
10517 case "$valstd" in
10518 "$define")
10519         if `./varargs I_STDARG`; then
10520                 val='stdarg.h'
10521         elif `./varargs I_VARARGS`; then
10522                 val='varargs.h'
10523         fi
10524         ;;
10525 *)
10526         if `./varargs I_VARARGS`; then
10527                 val='varargs.h'
10528         fi
10529         ;;
10530 esac
10531 case "$val" in
10532 '')
10533 echo "I could not find the definition for va_dcl... You have problems..." >&4
10534         val="$undef"; set i_stdarg; eval $setvar
10535         val="$undef"; set i_varargs; eval $setvar
10536         ;;
10537 *) 
10538         set i_varhdr
10539         eval $setvar
10540         case "$i_varhdr" in
10541         stdarg.h)
10542                 val="$define"; set i_stdarg; eval $setvar
10543                 val="$undef"; set i_varargs; eval $setvar
10544                 ;;
10545         varargs.h)
10546                 val="$undef"; set i_stdarg; eval $setvar
10547                 val="$define"; set i_varargs; eval $setvar
10548                 ;;
10549         esac
10550         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10551 esac
10552 $rm -f varargs*
10553
10554 : see if the Compiler supports C99 variadic macros
10555 case "$i_stdarg$i_stdlib" in
10556     "$define$define")
10557     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10558     $cat >try.c <<EOCP
10559 #include <stdio.h>
10560 #include <stdarg.h>
10561
10562 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10563
10564 int main() {
10565   char buf[20];
10566   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10567   puts(buf);
10568   return 0;
10569 }
10570 EOCP
10571     set try
10572     if eval $compile && $run ./try 2>&1 >/dev/null; then
10573         case "`$run ./try`" in
10574             "123 456 789")
10575             echo "You have C99 variadic macros." >&4
10576             d_c99_variadic_macros="$define"
10577             ;;
10578             *)
10579             echo "You don't have functional C99 variadic macros." >&4
10580             d_c99_variadic_macros="$undef"
10581             ;;
10582         esac
10583     else
10584         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10585         d_c99_variadic_macros="$undef"
10586     fi
10587     $rm_try
10588     ;;
10589     *)
10590     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10591     d_c99_variadic_macros="$undef"
10592     ;;
10593 esac
10594
10595 : see if signal is declared as pointer to function returning int or void
10596 echo " "
10597 xxx=`./findhdr signal.h`
10598 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10599 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10600         echo "You have int (*signal())() instead of void." >&4
10601         val="$undef"
10602 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10603         echo "You have void (*signal())()." >&4
10604         val="$define"
10605 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10606         echo "You have int (*signal())() instead of void." >&4
10607         val="$undef"
10608 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10609         echo "You have void (*signal())()." >&4
10610         val="$define"
10611 else
10612         case "$d_voidsig" in
10613         '')
10614         echo "I can't determine whether signal handler returns void or int..." >&4
10615                 dflt=void
10616                 rp="What type does your signal handler return?"
10617                 . ./myread
10618                 case "$ans" in
10619                 v*) val="$define";;
10620                 *) val="$undef";;
10621                 esac;;
10622         "$define")
10623                 echo "As you already told me, signal handler returns void." >&4
10624                 val="$define"
10625                 ;;
10626         *)      echo "As you already told me, signal handler returns int." >&4
10627                 val="$undef"
10628                 ;;
10629         esac
10630 fi
10631 set d_voidsig
10632 eval $setvar
10633 case "$d_voidsig" in
10634 "$define") signal_t="void";;
10635 *) signal_t="int";;
10636 esac
10637 $rm -f $$.tmp
10638
10639 : check for ability to cast large floats to 32-bit ints.
10640 echo " "
10641 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10642 if $test "$intsize" -ge 4; then
10643         xxx=int
10644 else
10645         xxx=long
10646 fi
10647 $cat >try.c <<EOCP
10648 #include <stdio.h>
10649 #$i_stdlib I_STDLIB
10650 #ifdef I_STDLIB
10651 #include <stdlib.h>
10652 #endif
10653 #include <sys/types.h>
10654 #include <signal.h>
10655 $signal_t blech(int s) { exit(3); }
10656 int main()
10657 {
10658         $xxx i32;
10659         double f, g;
10660         int result = 0;
10661         char str[16];
10662         signal(SIGFPE, blech);
10663
10664         /* Don't let compiler optimize the test away.  Store the number
10665            in a writable string for gcc to pass to sscanf under HP/UX.
10666         */
10667         sprintf(str, "2147483647");
10668         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10669         g = 10 * f;
10670         i32  = ($xxx) g;
10671
10672         /* x86 processors will probably give 0x8000 0000, which is a
10673            sign change.  We don't want that.  We want to mimic SPARC
10674            behavior here, which is to preserve the sign and give
10675            back 0x7fff ffff.
10676         */
10677         if (i32 != ($xxx) f)
10678                 result |= 1;
10679         exit(result);
10680 }
10681 EOCP
10682 set try
10683 if eval $compile_ok; then
10684         $run ./try
10685         yyy=$?
10686 else
10687         echo "(I can't seem to compile the test program--assuming it can't)"
10688         yyy=1
10689 fi
10690 case "$yyy" in
10691 0)      val="$define"
10692         echo "Yup, it can."
10693         ;;
10694 *)      val="$undef"
10695         echo "Nope, it can't."
10696         ;;
10697 esac
10698 set d_casti32
10699 eval $setvar
10700 $rm_try
10701
10702 : check for ability to cast negative floats to unsigned
10703 echo " "
10704 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10705 $cat >try.c <<EOCP
10706 #include <stdio.h>
10707 #$i_stdlib I_STDLIB
10708 #ifdef I_STDLIB
10709 #include <stdlib.h>
10710 #endif
10711 #include <sys/types.h>
10712 #include <signal.h>
10713 $signal_t blech(int s) { exit(7); }
10714 $signal_t blech_in_list(int s) { exit(4); }
10715 unsigned long dummy_long(unsigned long p) { return p; }
10716 unsigned int dummy_int(unsigned int p) { return p; }
10717 unsigned short dummy_short(unsigned short p) { return p; }
10718 int main()
10719 {
10720         double f;
10721         unsigned long along;
10722         unsigned int aint;
10723         unsigned short ashort;
10724         int result = 0;
10725         char str[16];
10726
10727         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10728            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10729            optimized the whole file away
10730         */
10731         /* Store the number in a writable string for gcc to pass to
10732            sscanf under HP/UX.
10733         */
10734         sprintf(str, "-123");
10735         sscanf(str, "%lf", &f);  /* f = -123.; */
10736
10737         signal(SIGFPE, blech);
10738         along = (unsigned long)f;
10739         aint = (unsigned int)f;
10740         ashort = (unsigned short)f;
10741         if (along != (unsigned long)-123)
10742                 result |= 1;
10743         if (aint != (unsigned int)-123)
10744                 result |= 1;
10745         if (ashort != (unsigned short)-123)
10746                 result |= 1;
10747         sprintf(str, "1073741824.");
10748         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10749         f = f + f;
10750         along = 0;
10751         along = (unsigned long)f;
10752         if (along != 0x80000000)
10753                 result |= 2;
10754         f -= 1.;
10755         along = 0;
10756         along = (unsigned long)f;
10757         if (along != 0x7fffffff)
10758                 result |= 1;
10759         f += 2.;
10760         along = 0;
10761         along = (unsigned long)f;
10762         if (along != 0x80000001)
10763                 result |= 2;
10764         if (result)
10765                 exit(result);
10766         signal(SIGFPE, blech_in_list);
10767         sprintf(str, "123.");
10768         sscanf(str, "%lf", &f);  /* f = 123.; */
10769         along = dummy_long((unsigned long)f);
10770         aint = dummy_int((unsigned int)f);
10771         ashort = dummy_short((unsigned short)f);
10772         if (along != (unsigned long)123)
10773                 result |= 4;
10774         if (aint != (unsigned int)123)
10775                 result |= 4;
10776         if (ashort != (unsigned short)123)
10777                 result |= 4;
10778         exit(result);
10779
10780 }
10781 EOCP
10782 set try
10783 if eval $compile_ok; then
10784         $run ./try
10785         castflags=$?
10786 else
10787         echo "(I can't seem to compile the test program--assuming it can't)"
10788         castflags=7
10789 fi
10790 case "$castflags" in
10791 0)      val="$define"
10792         echo "Yup, it can."
10793         ;;
10794 *)      val="$undef"
10795         echo "Nope, it can't."
10796         ;;
10797 esac
10798 set d_castneg
10799 eval $setvar
10800 $rm_try
10801
10802 : see if vprintf exists
10803 echo " "
10804 if set vprintf val -f d_vprintf; eval $csym; $val; then
10805         echo 'vprintf() found.' >&4
10806         val="$define"
10807         $cat >try.c <<EOF
10808 #include <varargs.h>
10809 #$i_stdlib I_STDLIB
10810 #ifdef I_STDLIB
10811 #include <stdlib.h>
10812 #endif
10813
10814 int main() { xxx("foo"); }
10815
10816 xxx(va_alist)
10817 va_dcl
10818 {
10819         va_list args;
10820         char buf[10];
10821
10822         va_start(args);
10823         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10824 }
10825 EOF
10826         set try
10827         if eval $compile && $run ./try; then
10828                 echo "Your vsprintf() returns (int)." >&4
10829                 val2="$undef"
10830         else
10831                 echo "Your vsprintf() returns (char*)." >&4
10832                 val2="$define"
10833         fi
10834 else
10835         echo 'vprintf() NOT found.' >&4
10836                 val="$undef"
10837                 val2="$undef"
10838 fi
10839 $rm_try
10840 set d_vprintf
10841 eval $setvar
10842 val=$val2
10843 set d_charvspr
10844 eval $setvar
10845
10846 : see if chown exists
10847 set chown d_chown
10848 eval $inlibc
10849
10850 : see if chroot exists
10851 set chroot d_chroot
10852 eval $inlibc
10853
10854 : see if chsize exists
10855 set chsize d_chsize
10856 eval $inlibc
10857
10858 : see if class exists
10859 set class d_class
10860 eval $inlibc
10861
10862 : see if clearenv exists
10863 set clearenv d_clearenv
10864 eval $inlibc
10865
10866 hasstruct='varname=$1; struct=$2; shift; shift;
10867 while $test $# -ge 2; do
10868         case "$1" in
10869         $define) echo "#include <$2>";;
10870         esac ;
10871     shift 2;
10872 done > try.c;
10873 echo "int main () { struct $struct foo; }" >> try.c;
10874 set try;
10875 if eval $compile; then
10876         val="$define";
10877 else
10878         val="$undef";
10879 fi;
10880 set $varname;
10881 eval $setvar;
10882 $rm_try'
10883
10884 socketlib=''
10885 sockethdr=''
10886 : see whether socket exists
10887 echo " "
10888 $echo $n "Hmm... $c" >&4
10889 if set socket val -f d_socket; eval $csym; $val; then
10890         echo "Looks like you have Berkeley networking support." >&4
10891         d_socket="$define"
10892         if set setsockopt val -f; eval $csym; $val; then
10893                 d_oldsock="$undef"
10894         else
10895                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10896                 d_oldsock="$define"
10897         fi
10898 else
10899         if $contains socklib libc.list >/dev/null 2>&1; then
10900                 echo "Looks like you have Berkeley networking support." >&4
10901                 d_socket="$define"
10902                 : we will have to assume that it supports the 4.2 BSD interface
10903                 d_oldsock="$undef"
10904         else
10905                 echo "You don't have Berkeley networking in libc$_a..." >&4
10906                 if test "X$d_socket" = "X$define"; then
10907                    echo "...but you seem to believe that you have sockets." >&4
10908                 else
10909                         for net in net socket
10910                         do
10911                                 if test -f /usr/lib/lib$net$_a; then
10912                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10913                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10914                                         if $contains socket libc.list >/dev/null 2>&1; then
10915                                                 d_socket="$define"
10916                                                 socketlib="-l$net"
10917                                                 case "$net" in
10918                                                 net)
10919                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10920                                                         sockethdr="-I/usr/netinclude"
10921                                                         ;;
10922                                                 esac
10923                                                 echo "Found Berkeley sockets interface in lib$net." >&4
10924                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10925                                                         d_oldsock="$undef"
10926                                                 else
10927                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10928                                                         d_oldsock="$define"
10929                                                 fi
10930                                                 break
10931                                         fi
10932                                 fi
10933                         done
10934                         if test "X$d_socket" != "X$define"; then
10935                            echo "or anywhere else I see." >&4
10936                            d_socket="$undef"
10937                            d_oldsock="$undef"
10938                         fi
10939                 fi
10940         fi
10941 fi
10942
10943 : see if socketpair exists
10944 set socketpair d_sockpair
10945 eval $inlibc
10946
10947
10948 echo " "
10949 echo "Checking the availability of certain socket constants..." >&4
10950 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10951         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10952         $cat >try.c <<EOF
10953 #include <sys/types.h>
10954 #include <sys/socket.h>
10955 int main() {
10956     int i = $ENUM;
10957 }
10958 EOF
10959         val="$undef"
10960         set try; if eval $compile; then
10961                 val="$define"
10962         fi
10963         set d_${enum}; eval $setvar
10964         $rm_try
10965 done
10966
10967 : see if this is a sys/uio.h system
10968 set sys/uio.h i_sysuio
10969 eval $inhdr
10970
10971
10972 echo " "
10973 echo "Checking to see if your system supports struct cmsghdr..." >&4
10974 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10975 eval $hasstruct
10976 case "$d_cmsghdr_s" in
10977 "$define")      echo "Yes, it does."   ;;
10978 *)              echo "No, it doesn't." ;;
10979 esac
10980
10981
10982 : check for const keyword
10983 echo " "
10984 echo 'Checking to see if your C compiler knows about "const"...' >&4
10985 $cat >const.c <<'EOCP'
10986 typedef struct spug { int drokk; } spug;
10987 int main()
10988 {
10989         const char *foo;
10990         const spug y = { 0 };
10991 }
10992 EOCP
10993 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10994         val="$define"
10995         echo "Yup, it does."
10996 else
10997         val="$undef"
10998         echo "Nope, it doesn't."
10999 fi
11000 set d_const
11001 eval $setvar
11002
11003 : see if copysignl exists
11004 set copysignl d_copysignl
11005 eval $inlibc
11006
11007 : see if crypt exists
11008 echo " "
11009 set crypt d_crypt
11010 eval $inlibc
11011 case "$d_crypt" in
11012 $define) cryptlib='' ;;
11013 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11014                 echo 'crypt() found.' >&4
11015                 val="$define"
11016                 cryptlib=''
11017         else
11018                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11019                 if $test -z "$cryptlib"; then
11020                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11021                 else
11022                         cryptlib=-lcrypt
11023                 fi
11024                 if $test -z "$cryptlib"; then
11025                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11026                 else
11027                         cryptlib=-lcrypt
11028                 fi
11029                 if $test -z "$cryptlib"; then
11030                         cryptlib=`./loc libcrypt$_a "" $libpth`
11031                 else
11032                         cryptlib=-lcrypt
11033                 fi
11034                 if $test -z "$cryptlib"; then
11035                         echo 'crypt() NOT found.' >&4
11036                         val="$undef"
11037                 else
11038                         val="$define"
11039                 fi
11040         fi
11041         set d_crypt
11042         eval $setvar
11043         ;;
11044 esac
11045
11046 : see if this is a crypt.h system
11047 set crypt.h i_crypt
11048 eval $inhdr
11049
11050 : see if crypt_r exists
11051 set crypt_r d_crypt_r
11052 eval $inlibc
11053 case "$d_crypt_r" in
11054 "$define")
11055         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11056         case "$d_crypt_r_proto:$usethreads" in
11057         ":define")      d_crypt_r_proto=define
11058                 set d_crypt_r_proto crypt_r $hdrs
11059                 eval $hasproto ;;
11060         *)      ;;
11061         esac
11062         case "$d_crypt_r_proto" in
11063         define)
11064         case "$crypt_r_proto" in
11065         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11066         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11067         esac
11068         case "$crypt_r_proto" in
11069         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11070         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11071         esac
11072         case "$crypt_r_proto" in
11073         ''|0)   d_crypt_r=undef
11074                 crypt_r_proto=0
11075                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11076         * )     case "$crypt_r_proto" in
11077                 REENTRANT_PROTO*) ;;
11078                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11079                 esac
11080                 echo "Prototype: $try" ;;
11081         esac
11082         ;;
11083         *)      case "$usethreads" in
11084                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11085                 esac
11086                 d_crypt_r=undef
11087                 crypt_r_proto=0
11088                 ;;
11089         esac
11090         ;;
11091 *)      crypt_r_proto=0
11092         ;;
11093 esac
11094
11095 : get csh whereabouts
11096 case "$csh" in
11097 'csh') val="$undef" ;;
11098 *) val="$define" ;;
11099 esac
11100 set d_csh
11101 eval $setvar
11102 : Respect a hint or command line value for full_csh.
11103 case "$full_csh" in
11104 '') full_csh=$csh ;;
11105 esac
11106
11107 : see if ctermid exists
11108 set ctermid d_ctermid
11109 eval $inlibc
11110
11111 : see if ctermid_r exists
11112 set ctermid_r d_ctermid_r
11113 eval $inlibc
11114 case "$d_ctermid_r" in
11115 "$define")
11116         hdrs="$i_systypes sys/types.h define stdio.h "
11117         case "$d_ctermid_r_proto:$usethreads" in
11118         ":define")      d_ctermid_r_proto=define
11119                 set d_ctermid_r_proto ctermid_r $hdrs
11120                 eval $hasproto ;;
11121         *)      ;;
11122         esac
11123         case "$d_ctermid_r_proto" in
11124         define)
11125         case "$ctermid_r_proto" in
11126         ''|0) try='char* ctermid_r(char*);'
11127         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11128         esac
11129         case "$ctermid_r_proto" in
11130         ''|0)   d_ctermid_r=undef
11131                 ctermid_r_proto=0
11132                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11133         * )     case "$ctermid_r_proto" in
11134                 REENTRANT_PROTO*) ;;
11135                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11136                 esac
11137                 echo "Prototype: $try" ;;
11138         esac
11139         ;;
11140         *)      case "$usethreads" in
11141                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11142                 esac
11143                 d_ctermid_r=undef
11144                 ctermid_r_proto=0
11145                 ;;
11146         esac
11147         ;;
11148 *)      ctermid_r_proto=0
11149         ;;
11150 esac
11151
11152 : see if ctime_r exists
11153 set ctime_r d_ctime_r
11154 eval $inlibc
11155 case "$d_ctime_r" in
11156 "$define")
11157         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11158         case "$d_ctime_r_proto:$usethreads" in
11159         ":define")      d_ctime_r_proto=define
11160                 set d_ctime_r_proto ctime_r $hdrs
11161                 eval $hasproto ;;
11162         *)      ;;
11163         esac
11164         case "$d_ctime_r_proto" in
11165         define)
11166         case "$ctime_r_proto" in
11167         ''|0) try='char* ctime_r(const time_t*, char*);'
11168         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11169         esac
11170         case "$ctime_r_proto" in
11171         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11172         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11173         esac
11174         case "$ctime_r_proto" in
11175         ''|0) try='int ctime_r(const time_t*, char*);'
11176         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11177         esac
11178         case "$ctime_r_proto" in
11179         ''|0) try='int ctime_r(const time_t*, char*, int);'
11180         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11181         esac
11182         case "$ctime_r_proto" in
11183         ''|0)   d_ctime_r=undef
11184                 ctime_r_proto=0
11185                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11186         * )     case "$ctime_r_proto" in
11187                 REENTRANT_PROTO*) ;;
11188                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11189                 esac
11190                 echo "Prototype: $try" ;;
11191         esac
11192         ;;
11193         *)      case "$usethreads" in
11194                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11195                 esac
11196                 d_ctime_r=undef
11197                 ctime_r_proto=0
11198                 ;;
11199         esac
11200         ;;
11201 *)      ctime_r_proto=0
11202         ;;
11203 esac
11204
11205 : see if cuserid exists
11206 set cuserid d_cuserid
11207 eval $inlibc
11208
11209 : see if this is a limits.h system
11210 set limits.h i_limits
11211 eval $inhdr
11212
11213 : see if this is a float.h system
11214 set float.h i_float
11215 eval $inhdr
11216
11217 : See if number of significant digits in a double precision number is known
11218 echo " "
11219 $cat >dbl_dig.c <<EOM
11220 #$i_limits I_LIMITS
11221 #$i_float I_FLOAT
11222 #ifdef I_LIMITS
11223 #include <limits.h>
11224 #endif
11225 #ifdef I_FLOAT
11226 #include <float.h>
11227 #endif
11228 #ifdef DBL_DIG
11229 printf("Contains DBL_DIG");
11230 #endif
11231 EOM
11232 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11233 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11234         echo "DBL_DIG found." >&4
11235         val="$define"
11236 else
11237         echo "DBL_DIG NOT found." >&4
11238         val="$undef"
11239 fi
11240 $rm -f dbl_dig.?
11241 set d_dbl_dig
11242 eval $setvar
11243
11244 : see if dbm.h is available
11245 : see if dbmclose exists
11246 set dbmclose d_dbmclose
11247 eval $inlibc
11248
11249 case "$d_dbmclose" in
11250 $define)
11251         set dbm.h i_dbm
11252         eval $inhdr
11253         case "$i_dbm" in
11254         $define)
11255                 val="$undef"
11256                 set i_rpcsvcdbm
11257                 eval $setvar
11258                 ;;
11259         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11260                 eval $inhdr
11261                 ;;
11262         esac
11263         ;;
11264 *)      echo "We won't be including <dbm.h>"
11265         val="$undef"
11266         set i_dbm
11267         eval $setvar
11268         val="$undef"
11269         set i_rpcsvcdbm
11270         eval $setvar
11271         ;;
11272 esac
11273
11274 : see if prototype for dbminit is available
11275 echo " "
11276 set d_dbminitproto dbminit $i_dbm dbm.h
11277 eval $hasproto
11278
11279 : see if difftime exists
11280 set difftime d_difftime
11281 eval $inlibc
11282
11283 : see if this is a dirent system
11284 echo " "
11285 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11286         val="$define"
11287         echo "<dirent.h> found." >&4
11288 else
11289         val="$undef"
11290         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11291                 echo "<sys/dir.h> found." >&4
11292                 echo " "
11293         else
11294                 xinc=`./findhdr sys/ndir.h`
11295         fi
11296         echo "<dirent.h> NOT found." >&4
11297 fi
11298 set i_dirent
11299 eval $setvar
11300
11301 : Look for type of directory structure.
11302 echo " "
11303 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11304
11305 case "$direntrytype" in
11306 ''|' ')
11307         case "$i_dirent" in
11308         $define) guess1='struct dirent' ;;
11309         *) guess1='struct direct'  ;;
11310         esac
11311         ;;
11312 *)      guess1="$direntrytype"
11313         ;;
11314 esac
11315
11316 case "$guess1" in
11317 'struct dirent') guess2='struct direct' ;;
11318 *) guess2='struct dirent' ;;
11319 esac
11320
11321 if $contains "$guess1" try.c >/dev/null 2>&1; then
11322         direntrytype="$guess1"
11323         echo "Your directory entries are $direntrytype." >&4
11324 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11325         direntrytype="$guess2"
11326         echo "Your directory entries seem to be $direntrytype." >&4
11327 else
11328         echo "I don't recognize your system's directory entries." >&4
11329         rp="What type is used for directory entries on this system?"
11330         dflt="$guess1"
11331         . ./myread
11332         direntrytype="$ans"
11333 fi
11334 $rm_try
11335
11336 : see if the directory entry stores field length
11337 echo " "
11338 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11339 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11340         echo "Good, your directory entry keeps length information in d_namlen." >&4
11341         val="$define"
11342 else
11343         echo "Your directory entry does not know about the d_namlen field." >&4
11344         val="$undef"
11345 fi
11346 set d_dirnamlen
11347 eval $setvar
11348 $rm_try
11349
11350 : Look for DIR.dd_fd
11351 case "$i_dirent" in
11352 "$define")
11353     echo "Checking to see if DIR has a dd_fd member variable" >&4
11354     $cat >try.c <<EOCP
11355 #$i_stdlib I_STDLIB
11356 #ifdef I_STDLIB
11357 #include <stdlib.h>
11358 #endif
11359 #include <dirent.h>
11360
11361 int main() {
11362     DIR dir;
11363     dir.dd_fd = 1;
11364     return 0;
11365 }
11366 EOCP
11367     val=$undef
11368     set try
11369     if eval $compile; then
11370         echo "Yes, it does."
11371         val="$define"
11372     else
11373         echo "No, it does not."
11374         val="$undef"
11375     fi
11376     ;;
11377 *)
11378     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11379     val="$undef"
11380     ;;
11381 esac
11382 set d_dir_dd_fd
11383 eval $setvar
11384 $rm_try
11385
11386 : see if this is an sysdir system
11387 set sys/dir.h i_sysdir
11388 eval $inhdr
11389
11390 : see if this is an sysndir system
11391 set sys/ndir.h i_sysndir
11392 eval $inhdr
11393
11394 : Look for dirfd
11395 echo " "
11396 $cat >dirfd.c <<EOM
11397 #include <stdio.h>
11398 #$i_stdlib I_STDLIB
11399 #ifdef I_STDLIB
11400 #include <stdlib.h>
11401 #endif
11402 #$i_dirent I_DIRENT             /**/
11403 #$i_sysdir I_SYS_DIR            /**/
11404 #$i_sysndir I_SYS_NDIR          /**/
11405 #$i_systypes I_SYS_TYPES        /**/
11406 #if defined(I_SYS_TYPES)
11407 #include <sys/types.h>
11408 #endif
11409 #if defined(I_DIRENT)
11410 #include <dirent.h>
11411 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11412 #include <sys/dir.h>
11413 #endif
11414 #else
11415 #ifdef I_SYS_NDIR
11416 #include <sys/ndir.h>
11417 #else
11418 #ifdef I_SYS_DIR
11419 #ifdef hp9000s500
11420 #include <ndir.h>       /* may be wrong in the future */
11421 #else
11422 #include <sys/dir.h>
11423 #endif
11424 #endif
11425 #endif
11426 #endif 
11427 int main() {
11428         DIR *dirp = opendir(".");
11429         if (dirfd(dirp) >= 0)
11430                 exit(0);
11431         else
11432                 exit(1);
11433 }
11434 EOM
11435 val=$undef
11436 set dirfd
11437 if eval $compile; then
11438         val="$define"
11439 fi
11440 case "$val" in
11441 $define)        echo "dirfd() found." >&4       ;;
11442 *)              echo "dirfd() NOT found." >&4   ;;
11443 esac
11444 set d_dirfd
11445 eval $setvar
11446 $rm -f dirfd*
11447
11448 : see if dlerror exists
11449 xxx_runnm="$runnm"
11450 runnm=false
11451 set dlerror d_dlerror
11452 eval $inlibc
11453 runnm="$xxx_runnm"
11454
11455 : see if dlfcn is available
11456 set dlfcn.h i_dlfcn
11457 eval $inhdr
11458
11459 case "$usedl" in
11460 $define|y|true)
11461         $cat << EOM
11462
11463 On a few systems, the dynamically loaded modules that perl generates and uses
11464 will need a different extension than shared libs. The default will probably
11465 be appropriate.
11466
11467 EOM
11468         case "$dlext" in
11469         '')     dflt="$so" ;;
11470         *)      dflt="$dlext" ;;
11471         esac
11472         rp='What is the extension of dynamically loaded modules'
11473         . ./myread
11474         dlext="$ans"
11475         ;;
11476 *)
11477         dlext="none"
11478         ;;
11479 esac
11480
11481 : Check if dlsym need a leading underscore
11482 echo " "
11483 val="$undef"
11484
11485 case "$dlsrc" in
11486 dl_dlopen.xs)
11487         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11488         $cat >dyna.c <<'EOM'
11489 fred () { }
11490 EOM
11491
11492 $cat >fred.c<<EOM
11493
11494 #include <stdio.h>
11495 #$i_stdlib I_STDLIB
11496 #ifdef I_STDLIB
11497 #include <stdlib.h>
11498 #endif
11499 #$i_dlfcn I_DLFCN
11500 #ifdef I_DLFCN
11501 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11502 #else
11503 #include <sys/types.h>
11504 #include <nlist.h>
11505 #include <link.h>
11506 #endif
11507
11508 extern int fred() ;
11509
11510 int main()
11511 {
11512     void * handle ;
11513     void * symbol ;
11514 #ifndef RTLD_LAZY
11515     int mode = 1 ;
11516 #else
11517     int mode = RTLD_LAZY ;
11518 #endif
11519     handle = dlopen("./dyna.$dlext", mode) ;
11520     if (handle == NULL) {
11521         printf ("1\n") ;
11522         fflush (stdout) ;
11523         exit(0);
11524     }
11525     symbol = dlsym(handle, "fred") ;
11526     if (symbol == NULL) {
11527         /* try putting a leading underscore */
11528         symbol = dlsym(handle, "_fred") ;
11529         if (symbol == NULL) {
11530             printf ("2\n") ;
11531             fflush (stdout) ;
11532             exit(0);
11533         }
11534         printf ("3\n") ;
11535     }
11536     else
11537         printf ("4\n") ;
11538     fflush (stdout) ;
11539     exit(0);
11540 }
11541 EOM
11542         : Call the object file tmp-dyna.o in case dlext=o.
11543         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
11544                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
11545                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
11546                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11547                 xxx=`$run ./fred`
11548                 case $xxx in
11549                 1)      echo "Test program failed using dlopen." >&4
11550                         echo "Perhaps you should not use dynamic loading." >&4;;
11551                 2)      echo "Test program failed using dlsym." >&4
11552                         echo "Perhaps you should not use dynamic loading." >&4;;
11553                 3)      echo "dlsym needs a leading underscore" >&4
11554                         val="$define" ;;
11555                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11556                 esac
11557         else
11558                 echo "I can't compile and run the test program." >&4
11559                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11560         fi
11561         ;;
11562 esac
11563                 
11564 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11565
11566 set d_dlsymun
11567 eval $setvar
11568
11569 : see if drand48_r exists
11570 set drand48_r d_drand48_r
11571 eval $inlibc
11572 case "$d_drand48_r" in
11573 "$define")
11574         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11575         case "$d_drand48_r_proto:$usethreads" in
11576         ":define")      d_drand48_r_proto=define
11577                 set d_drand48_r_proto drand48_r $hdrs
11578                 eval $hasproto ;;
11579         *)      ;;
11580         esac
11581         case "$d_drand48_r_proto" in
11582         define)
11583         case "$drand48_r_proto" in
11584         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11585         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11586         esac
11587         case "$drand48_r_proto" in
11588         ''|0)   d_drand48_r=undef
11589                 drand48_r_proto=0
11590                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11591         * )     case "$drand48_r_proto" in
11592                 REENTRANT_PROTO*) ;;
11593                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11594                 esac
11595                 echo "Prototype: $try" ;;
11596         esac
11597         ;;
11598         *)      case "$usethreads" in
11599                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11600                 esac
11601                 d_drand48_r=undef
11602                 drand48_r_proto=0
11603                 ;;
11604         esac
11605         ;;
11606 *)      drand48_r_proto=0
11607         ;;
11608 esac
11609
11610 : see if prototype for drand48 is available
11611 echo " "
11612 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11613 eval $hasproto
11614
11615 : see if dup2 exists
11616 set dup2 d_dup2
11617 eval $inlibc
11618
11619 : see if eaccess exists
11620 set eaccess d_eaccess
11621 eval $inlibc
11622
11623 : see if endgrent exists
11624 set endgrent d_endgrent
11625 eval $inlibc
11626
11627 : see if this is an grp system
11628 set grp.h i_grp
11629 eval $inhdr
11630
11631 case "$i_grp" in
11632 $define)
11633         xxx=`./findhdr grp.h`
11634         $cppstdin $cppflags $cppminus < $xxx >$$.h
11635
11636         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11637                 val="$define"
11638         else
11639                 val="$undef"
11640         fi
11641         set d_grpasswd
11642         eval $setvar
11643
11644         $rm -f $$.h
11645         ;;
11646 *)
11647         val="$undef";
11648         set d_grpasswd; eval $setvar
11649         ;;
11650 esac
11651
11652 : see if endgrent_r exists
11653 set endgrent_r d_endgrent_r
11654 eval $inlibc
11655 case "$d_endgrent_r" in
11656 "$define")
11657         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11658         case "$d_endgrent_r_proto:$usethreads" in
11659         ":define")      d_endgrent_r_proto=define
11660                 set d_endgrent_r_proto endgrent_r $hdrs
11661                 eval $hasproto ;;
11662         *)      ;;
11663         esac
11664         case "$d_endgrent_r_proto" in
11665         define)
11666         case "$endgrent_r_proto" in
11667         ''|0) try='int endgrent_r(FILE**);'
11668         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11669         esac
11670         case "$endgrent_r_proto" in
11671         ''|0) try='void endgrent_r(FILE**);'
11672         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11673         esac
11674         case "$endgrent_r_proto" in
11675         ''|0)   d_endgrent_r=undef
11676                 endgrent_r_proto=0
11677                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11678         * )     case "$endgrent_r_proto" in
11679                 REENTRANT_PROTO*) ;;
11680                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11681                 esac
11682                 echo "Prototype: $try" ;;
11683         esac
11684         ;;
11685         *)      case "$usethreads" in
11686                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11687                 esac
11688                 d_endgrent_r=undef
11689                 endgrent_r_proto=0
11690                 ;;
11691         esac
11692         ;;
11693 *)      endgrent_r_proto=0
11694         ;;
11695 esac
11696
11697 : see if endhostent exists
11698 set endhostent d_endhent
11699 eval $inlibc
11700
11701 : see if this is a netdb.h system
11702 set netdb.h i_netdb
11703 eval $inhdr
11704
11705 : see if endhostent_r exists
11706 set endhostent_r d_endhostent_r
11707 eval $inlibc
11708 case "$d_endhostent_r" in
11709 "$define")
11710         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11711         case "$d_endhostent_r_proto:$usethreads" in
11712         ":define")      d_endhostent_r_proto=define
11713                 set d_endhostent_r_proto endhostent_r $hdrs
11714                 eval $hasproto ;;
11715         *)      ;;
11716         esac
11717         case "$d_endhostent_r_proto" in
11718         define)
11719         case "$endhostent_r_proto" in
11720         ''|0) try='int endhostent_r(struct hostent_data*);'
11721         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11722         esac
11723         case "$endhostent_r_proto" in
11724         ''|0) try='void endhostent_r(struct hostent_data*);'
11725         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11726         esac
11727         case "$endhostent_r_proto" in
11728         ''|0)   d_endhostent_r=undef
11729                 endhostent_r_proto=0
11730                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11731         * )     case "$endhostent_r_proto" in
11732                 REENTRANT_PROTO*) ;;
11733                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11734                 esac
11735                 echo "Prototype: $try" ;;
11736         esac
11737         ;;
11738         *)      case "$usethreads" in
11739                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11740                 esac
11741                 d_endhostent_r=undef
11742                 endhostent_r_proto=0
11743                 ;;
11744         esac
11745         ;;
11746 *)      endhostent_r_proto=0
11747         ;;
11748 esac
11749
11750 : see if endnetent exists
11751 set endnetent d_endnent
11752 eval $inlibc
11753
11754 : see if endnetent_r exists
11755 set endnetent_r d_endnetent_r
11756 eval $inlibc
11757 case "$d_endnetent_r" in
11758 "$define")
11759         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11760         case "$d_endnetent_r_proto:$usethreads" in
11761         ":define")      d_endnetent_r_proto=define
11762                 set d_endnetent_r_proto endnetent_r $hdrs
11763                 eval $hasproto ;;
11764         *)      ;;
11765         esac
11766         case "$d_endnetent_r_proto" in
11767         define)
11768         case "$endnetent_r_proto" in
11769         ''|0) try='int endnetent_r(struct netent_data*);'
11770         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11771         esac
11772         case "$endnetent_r_proto" in
11773         ''|0) try='void endnetent_r(struct netent_data*);'
11774         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11775         esac
11776         case "$endnetent_r_proto" in
11777         ''|0)   d_endnetent_r=undef
11778                 endnetent_r_proto=0
11779                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11780         * )     case "$endnetent_r_proto" in
11781                 REENTRANT_PROTO*) ;;
11782                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11783                 esac
11784                 echo "Prototype: $try" ;;
11785         esac
11786         ;;
11787         *)      case "$usethreads" in
11788                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11789                 esac
11790                 d_endnetent_r=undef
11791                 endnetent_r_proto=0
11792                 ;;
11793         esac
11794         ;;
11795 *)      endnetent_r_proto=0
11796         ;;
11797 esac
11798
11799 : see if endprotoent exists
11800 set endprotoent d_endpent
11801 eval $inlibc
11802
11803 : see if endprotoent_r exists
11804 set endprotoent_r d_endprotoent_r
11805 eval $inlibc
11806 case "$d_endprotoent_r" in
11807 "$define")
11808         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11809         case "$d_endprotoent_r_proto:$usethreads" in
11810         ":define")      d_endprotoent_r_proto=define
11811                 set d_endprotoent_r_proto endprotoent_r $hdrs
11812                 eval $hasproto ;;
11813         *)      ;;
11814         esac
11815         case "$d_endprotoent_r_proto" in
11816         define)
11817         case "$endprotoent_r_proto" in
11818         ''|0) try='int endprotoent_r(struct protoent_data*);'
11819         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11820         esac
11821         case "$endprotoent_r_proto" in
11822         ''|0) try='void endprotoent_r(struct protoent_data*);'
11823         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11824         esac
11825         case "$endprotoent_r_proto" in
11826         ''|0)   d_endprotoent_r=undef
11827                 endprotoent_r_proto=0
11828                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11829         * )     case "$endprotoent_r_proto" in
11830                 REENTRANT_PROTO*) ;;
11831                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11832                 esac
11833                 echo "Prototype: $try" ;;
11834         esac
11835         ;;
11836         *)      case "$usethreads" in
11837                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11838                 esac
11839                 d_endprotoent_r=undef
11840                 endprotoent_r_proto=0
11841                 ;;
11842         esac
11843         ;;
11844 *)      endprotoent_r_proto=0
11845         ;;
11846 esac
11847
11848 : see if endpwent exists
11849 set endpwent d_endpwent
11850 eval $inlibc
11851
11852 : see if this is a pwd.h system
11853 set pwd.h i_pwd
11854 eval $inhdr
11855
11856 case "$i_pwd" in
11857 $define)
11858         xxx=`./findhdr pwd.h`
11859         $cppstdin $cppflags $cppminus < $xxx >$$.h
11860
11861         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11862                 val="$define"
11863         else
11864                 val="$undef"
11865         fi
11866         set d_pwquota
11867         eval $setvar
11868
11869         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11870                 val="$define"
11871         else
11872                 val="$undef"
11873         fi
11874         set d_pwage
11875         eval $setvar
11876
11877         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11878                 val="$define"
11879         else
11880                 val="$undef"
11881         fi
11882         set d_pwchange
11883         eval $setvar
11884
11885         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11886                 val="$define"
11887         else
11888                 val="$undef"
11889         fi
11890         set d_pwclass
11891         eval $setvar
11892
11893         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11894                 val="$define"
11895         else
11896                 val="$undef"
11897         fi
11898         set d_pwexpire
11899         eval $setvar
11900
11901         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11902                 val="$define"
11903         else
11904                 val="$undef"
11905         fi
11906         set d_pwcomment
11907         eval $setvar
11908
11909         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11910                 val="$define"
11911         else
11912                 val="$undef"
11913         fi
11914         set d_pwgecos
11915         eval $setvar
11916
11917         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11918                 val="$define"
11919         else
11920                 val="$undef"
11921         fi
11922         set d_pwpasswd
11923         eval $setvar
11924
11925         $rm -f $$.h
11926         ;;
11927 *)
11928         val="$undef"; 
11929         set d_pwquota; eval $setvar
11930         set d_pwage; eval $setvar
11931         set d_pwchange; eval $setvar
11932         set d_pwclass; eval $setvar
11933         set d_pwexpire; eval $setvar
11934         set d_pwcomment; eval $setvar
11935         set d_pwgecos; eval $setvar
11936         set d_pwpasswd; eval $setvar
11937         ;;
11938 esac
11939
11940 : see if endpwent_r exists
11941 set endpwent_r d_endpwent_r
11942 eval $inlibc
11943 case "$d_endpwent_r" in
11944 "$define")
11945         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11946         case "$d_endpwent_r_proto:$usethreads" in
11947         ":define")      d_endpwent_r_proto=define
11948                 set d_endpwent_r_proto endpwent_r $hdrs
11949                 eval $hasproto ;;
11950         *)      ;;
11951         esac
11952         case "$d_endpwent_r_proto" in
11953         define)
11954         case "$endpwent_r_proto" in
11955         ''|0) try='int endpwent_r(FILE**);'
11956         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11957         esac
11958         case "$endpwent_r_proto" in
11959         ''|0) try='void endpwent_r(FILE**);'
11960         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11961         esac
11962         case "$endpwent_r_proto" in
11963         ''|0)   d_endpwent_r=undef
11964                 endpwent_r_proto=0
11965                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11966         * )     case "$endpwent_r_proto" in
11967                 REENTRANT_PROTO*) ;;
11968                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11969                 esac
11970                 echo "Prototype: $try" ;;
11971         esac
11972         ;;
11973         *)      case "$usethreads" in
11974                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11975                 esac
11976                 d_endpwent_r=undef
11977                 endpwent_r_proto=0
11978                 ;;
11979         esac
11980         ;;
11981 *)      endpwent_r_proto=0
11982         ;;
11983 esac
11984
11985 : see if endservent exists
11986 set endservent d_endsent
11987 eval $inlibc
11988
11989 : see if endservent_r exists
11990 set endservent_r d_endservent_r
11991 eval $inlibc
11992 case "$d_endservent_r" in
11993 "$define")
11994         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11995         case "$d_endservent_r_proto:$usethreads" in
11996         ":define")      d_endservent_r_proto=define
11997                 set d_endservent_r_proto endservent_r $hdrs
11998                 eval $hasproto ;;
11999         *)      ;;
12000         esac
12001         case "$d_endservent_r_proto" in
12002         define)
12003         case "$endservent_r_proto" in
12004         ''|0) try='int endservent_r(struct servent_data*);'
12005         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12006         esac
12007         case "$endservent_r_proto" in
12008         ''|0) try='void endservent_r(struct servent_data*);'
12009         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12010         esac
12011         case "$endservent_r_proto" in
12012         ''|0)   d_endservent_r=undef
12013                 endservent_r_proto=0
12014                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12015         * )     case "$endservent_r_proto" in
12016                 REENTRANT_PROTO*) ;;
12017                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12018                 esac
12019                 echo "Prototype: $try" ;;
12020         esac
12021         ;;
12022         *)      case "$usethreads" in
12023                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12024                 esac
12025                 d_endservent_r=undef
12026                 endservent_r_proto=0
12027                 ;;
12028         esac
12029         ;;
12030 *)      endservent_r_proto=0
12031         ;;
12032 esac
12033
12034 : Locate the flags for 'open()'
12035 echo " "
12036 $cat >try.c <<EOCP
12037 #include <sys/types.h>
12038 #ifdef I_FCNTL
12039 #include <fcntl.h>
12040 #endif
12041 #ifdef I_SYS_FILE
12042 #include <sys/file.h>
12043 #endif
12044 #$i_stdlib I_STDLIB
12045 #ifdef I_STDLIB
12046 #include <stdlib.h>
12047 #endif
12048 int main() {
12049         if(O_RDONLY);
12050 #ifdef O_TRUNC
12051         exit(0);
12052 #else
12053         exit(1);
12054 #endif
12055 }
12056 EOCP
12057 : check sys/file.h first to get FREAD on Sun
12058 if $test `./findhdr sys/file.h` && \
12059                 set try -DI_SYS_FILE && eval $compile; then
12060         h_sysfile=true;
12061         echo "<sys/file.h> defines the O_* constants..." >&4
12062         if $run ./try; then
12063                 echo "and you have the 3 argument form of open()." >&4
12064                 val="$define"
12065         else
12066                 echo "but not the 3 argument form of open().  Oh, well." >&4
12067                 val="$undef"
12068         fi
12069 elif $test `./findhdr fcntl.h` && \
12070                 set try -DI_FCNTL && eval $compile; then
12071         h_fcntl=true;
12072         echo "<fcntl.h> defines the O_* constants..." >&4
12073         if $run ./try; then
12074                 echo "and you have the 3 argument form of open()." >&4
12075                 val="$define"
12076         else
12077                 echo "but not the 3 argument form of open().  Oh, well." >&4
12078                 val="$undef"
12079         fi
12080 else
12081         val="$undef"
12082         echo "I can't find the O_* constant definitions!  You got problems." >&4
12083 fi
12084 set d_open3
12085 eval $setvar
12086 $rm_try
12087
12088 : see which of string.h or strings.h is needed
12089 echo " "
12090 strings=`./findhdr string.h`
12091 if $test "$strings" && $test -r "$strings"; then
12092         echo "Using <string.h> instead of <strings.h>." >&4
12093         val="$define"
12094 else
12095         val="$undef"
12096         strings=`./findhdr strings.h`
12097         if $test "$strings" && $test -r "$strings"; then
12098                 echo "Using <strings.h> instead of <string.h>." >&4
12099         else
12100                 echo "No string header found -- You'll surely have problems." >&4
12101         fi
12102 fi
12103 set i_string
12104 eval $setvar
12105 case "$i_string" in
12106 "$undef") strings=`./findhdr strings.h`;;
12107 *)        strings=`./findhdr string.h`;;
12108 esac
12109
12110 : see if this is a sys/file.h system
12111 val=''
12112 set sys/file.h val
12113 eval $inhdr
12114
12115 : do we need to include sys/file.h ?
12116 case "$val" in
12117 "$define")
12118         echo " "
12119         if $h_sysfile; then
12120                 val="$define"
12121                 echo "We'll be including <sys/file.h>." >&4
12122         else
12123                 val="$undef"
12124                 echo "We won't be including <sys/file.h>." >&4
12125         fi
12126         ;;
12127 *)
12128         h_sysfile=false
12129         ;;
12130 esac
12131 set i_sysfile
12132 eval $setvar
12133
12134 : see if fcntl.h is there
12135 val=''
12136 set fcntl.h val
12137 eval $inhdr
12138
12139 : see if we can include fcntl.h
12140 case "$val" in
12141 "$define")
12142         echo " "
12143         if $h_fcntl; then
12144                 val="$define"
12145                 echo "We'll be including <fcntl.h>." >&4
12146         else
12147                 val="$undef"
12148                 if $h_sysfile; then
12149         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12150                 else
12151                         echo "We won't be including <fcntl.h>." >&4
12152                 fi
12153         fi
12154         ;;
12155 *)
12156         h_fcntl=false
12157         val="$undef"
12158         ;;
12159 esac
12160 set i_fcntl
12161 eval $setvar
12162
12163 : check for non-blocking I/O stuff
12164 case "$h_sysfile" in
12165 true) echo "#include <sys/file.h>" > head.c;;
12166 *)
12167        case "$h_fcntl" in
12168        true) echo "#include <fcntl.h>" > head.c;;
12169        *) echo "#include <sys/fcntl.h>" > head.c;;
12170        esac
12171        ;;
12172 esac
12173 echo " "
12174 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12175 case "$o_nonblock" in
12176 '')
12177         $cat head.c > try.c
12178         $cat >>try.c <<EOCP
12179 #include <stdio.h>
12180 #$i_stdlib I_STDLIB
12181 #ifdef I_STDLIB
12182 #include <stdlib.h>
12183 #endif
12184 #$i_fcntl I_FCNTL
12185 #ifdef I_FCNTL
12186 #include <fcntl.h>
12187 #endif
12188 int main() {
12189 #ifdef O_NONBLOCK
12190         printf("O_NONBLOCK\n");
12191         exit(0);
12192 #endif
12193 #ifdef O_NDELAY
12194         printf("O_NDELAY\n");
12195         exit(0);
12196 #endif
12197 #ifdef FNDELAY
12198         printf("FNDELAY\n");
12199         exit(0);
12200 #endif
12201         exit(0);
12202 }
12203 EOCP
12204         set try
12205         if eval $compile_ok; then
12206                 o_nonblock=`$run ./try`
12207                 case "$o_nonblock" in
12208                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12209                 *) echo "Seems like we can use $o_nonblock.";;
12210                 esac
12211         else
12212                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12213         fi
12214         ;;
12215 *) echo "Using $hint value $o_nonblock.";;
12216 esac
12217 $rm_try
12218
12219 echo " "
12220 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12221 case "$eagain" in
12222 '')
12223         $cat head.c > try.c
12224         $cat >>try.c <<EOCP
12225 #include <errno.h>
12226 #include <sys/types.h>
12227 #include <signal.h>
12228 #include <stdio.h>
12229 #$i_stdlib I_STDLIB
12230 #ifdef I_STDLIB
12231 #include <stdlib.h>
12232 #endif
12233 #$i_fcntl I_FCNTL
12234 #ifdef I_FCNTL
12235 #include <fcntl.h>
12236 #endif
12237 #define MY_O_NONBLOCK $o_nonblock
12238 #ifndef errno  /* XXX need better Configure test */
12239 extern int errno;
12240 #endif
12241 #$i_unistd I_UNISTD
12242 #ifdef I_UNISTD
12243 #include <unistd.h>
12244 #endif
12245 #$i_string I_STRING
12246 #ifdef I_STRING
12247 #include <string.h>
12248 #else
12249 #include <strings.h>
12250 #endif
12251 $signal_t blech(int x) { exit(3); }
12252 EOCP
12253         $cat >> try.c <<'EOCP'
12254 int main()
12255 {
12256         int pd[2];
12257         int pu[2];
12258         char buf[1];
12259         char string[100];
12260
12261         pipe(pd);       /* Down: child -> parent */
12262         pipe(pu);       /* Up: parent -> child */
12263         if (0 != fork()) {
12264                 int ret;
12265                 close(pd[1]);   /* Parent reads from pd[0] */
12266                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12267 #ifdef F_SETFL
12268                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12269                         exit(1);
12270 #else
12271                 exit(4);
12272 #endif
12273                 signal(SIGALRM, blech);
12274                 alarm(5);
12275                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12276                         exit(2);
12277                 sprintf(string, "%d\n", ret);
12278                 write(2, string, strlen(string));
12279                 alarm(0);
12280 #ifdef EAGAIN
12281                 if (errno == EAGAIN) {
12282                         printf("EAGAIN\n");
12283                         goto ok;
12284                 }
12285 #endif
12286 #ifdef EWOULDBLOCK
12287                 if (errno == EWOULDBLOCK)
12288                         printf("EWOULDBLOCK\n");
12289 #endif
12290         ok:
12291                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12292                 sleep(2);                               /* Give it time to close our pipe */
12293                 alarm(5);
12294                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12295                 alarm(0);
12296                 sprintf(string, "%d\n", ret);
12297                 write(4, string, strlen(string));
12298                 exit(0);
12299         }
12300
12301         close(pd[0]);                   /* We write to pd[1] */
12302         close(pu[1]);                   /* We read from pu[0] */
12303         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12304         close(pd[1]);                   /* Pipe pd is now fully closed! */
12305         exit(0);                                /* Bye bye, thank you for playing! */
12306 }
12307 EOCP
12308         set try
12309         if eval $compile_ok; then
12310                 echo "$startsh" >mtry
12311                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12312                 chmod +x mtry
12313                 ./mtry >/dev/null 2>&1
12314                 case $? in
12315                 0) eagain=`$cat try.out`;;
12316                 1) echo "Could not perform non-blocking setting!";;
12317                 2) echo "I did a successful read() for something that was not there!";;
12318                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12319                 4) echo "Could not find F_SETFL!";;
12320                 *) echo "Something terribly wrong happened during testing.";;
12321                 esac
12322                 rd_nodata=`$cat try.ret`
12323                 echo "A read() system call with no data present returns $rd_nodata."
12324                 case "$rd_nodata" in
12325                 0|-1) ;;
12326                 *)
12327                         echo "(That's peculiar, fixing that to be -1.)"
12328                         rd_nodata=-1
12329                         ;;
12330                 esac
12331                 case "$eagain" in
12332                 '')
12333                         echo "Forcing errno EAGAIN on read() with no data available."
12334                         eagain=EAGAIN
12335                         ;;
12336                 *)
12337                         echo "Your read() sets errno to $eagain when no data is available."
12338                         ;;
12339                 esac
12340                 status=`$cat try.err`
12341                 case "$status" in
12342                 0) echo "And it correctly returns 0 to signal EOF.";;
12343                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12344                 *) echo "However, your read() returns '$status' on EOF??";;
12345                 esac
12346                 val="$define"
12347                 if test "$status" = "$rd_nodata"; then
12348                         echo "WARNING: you can't distinguish between EOF and no data!"
12349                         val="$undef"
12350                 fi
12351         else
12352                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12353                 eagain=EAGAIN
12354         fi
12355         set d_eofnblk
12356         eval $setvar
12357         ;;
12358 *)
12359         echo "Using $hint value $eagain."
12360         echo "Your read() returns $rd_nodata when no data is present."
12361         case "$d_eofnblk" in
12362         "$define") echo "And you can see EOF because read() returns 0.";;
12363         "$undef") echo "But you can't see EOF status from read() returned value.";;
12364         *)
12365                 echo "(Assuming you can't see EOF status from read anyway.)"
12366                 d_eofnblk=$undef
12367                 ;;
12368         esac
12369         ;;
12370 esac
12371 $rm_try head.c mtry
12372
12373 : see if _ptr and _cnt from stdio act std
12374 echo " "
12375
12376 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12377         echo "(Looks like you have stdio.h from BSD.)"
12378         case "$stdio_ptr" in
12379         '') stdio_ptr='((fp)->_p)'
12380                 ptr_lval=$define
12381                 ;;
12382         *)      ptr_lval=$d_stdio_ptr_lval;;
12383         esac
12384         case "$stdio_cnt" in
12385         '') stdio_cnt='((fp)->_r)'
12386                 cnt_lval=$define
12387                 ;;
12388         *)      cnt_lval=$d_stdio_cnt_lval;;
12389         esac
12390         case "$stdio_base" in
12391         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12392         esac
12393         case "$stdio_bufsiz" in
12394         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12395         esac
12396 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12397         echo "(Looks like you have stdio.h from Linux.)"
12398         case "$stdio_ptr" in
12399         '') stdio_ptr='((fp)->_IO_read_ptr)'
12400                 ptr_lval=$define
12401                 ;;
12402         *)      ptr_lval=$d_stdio_ptr_lval;;
12403         esac
12404         case "$stdio_cnt" in
12405         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12406                 cnt_lval=$undef
12407                 ;;
12408         *)      cnt_lval=$d_stdio_cnt_lval;;
12409         esac
12410         case "$stdio_base" in
12411         '') stdio_base='((fp)->_IO_read_base)';;
12412         esac
12413         case "$stdio_bufsiz" in
12414         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12415         esac
12416 else
12417         case "$stdio_ptr" in
12418         '') stdio_ptr='((fp)->_ptr)'
12419                 ptr_lval=$define
12420                 ;;
12421         *)      ptr_lval=$d_stdio_ptr_lval;;
12422         esac
12423         case "$stdio_cnt" in
12424         '') stdio_cnt='((fp)->_cnt)'
12425                 cnt_lval=$define
12426                 ;;
12427         *)      cnt_lval=$d_stdio_cnt_lval;;
12428         esac
12429         case "$stdio_base" in
12430         '') stdio_base='((fp)->_base)';;
12431         esac
12432         case "$stdio_bufsiz" in
12433         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12434         esac
12435 fi
12436
12437 : test whether _ptr and _cnt really work
12438 echo "Checking how std your stdio is..." >&4
12439 $cat >try.c <<EOP
12440 #include <stdio.h>
12441 #$i_stdlib I_STDLIB
12442 #ifdef I_STDLIB
12443 #include <stdlib.h>
12444 #endif
12445 #define FILE_ptr(fp)    $stdio_ptr
12446 #define FILE_cnt(fp)    $stdio_cnt
12447 int main() {
12448         FILE *fp = fopen("try.c", "r");
12449         char c = getc(fp);
12450         if (
12451                 18 <= FILE_cnt(fp) &&
12452                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12453         )
12454                 exit(0);
12455         exit(1);
12456 }
12457 EOP
12458 val="$undef"
12459 set try
12460 if eval $compile && $to try.c; then
12461         if $run ./try; then
12462                 echo "Your stdio acts pretty std."
12463                 val="$define"
12464         else
12465                 echo "Your stdio isn't very std."
12466         fi
12467 else
12468         echo "Your stdio doesn't appear very std."
12469 fi
12470 $rm_try
12471
12472 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12473 # direct buffer manipulation no longer works.  The Configure tests
12474 # should be changed to correctly detect this, but until then,
12475 # the following check should at least let perl compile and run.
12476 # (This quick fix should be updated before 5.8.1.)
12477 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12478 # A. Dougherty, June 3, 2002.
12479 case "$d_gnulibc" in
12480 $define)
12481         case "$gnulibc_version" in
12482         2.[01]*)  ;;
12483         2.2) ;;
12484         2.2.[0-9]) ;;
12485         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12486                 val="$undef"
12487                 ;;
12488         esac
12489         ;;
12490 esac
12491 set d_stdstdio
12492 eval $setvar
12493
12494 : Can _ptr be used as an lvalue?
12495 case "$d_stdstdio$ptr_lval" in
12496 $define$define) val=$define ;;
12497 *) val=$undef ;;
12498 esac
12499 set d_stdio_ptr_lval
12500 eval $setvar
12501
12502 : Can _cnt be used as an lvalue?
12503 case "$d_stdstdio$cnt_lval" in
12504 $define$define) val=$define ;;
12505 *) val=$undef ;;
12506 esac
12507 set d_stdio_cnt_lval
12508 eval $setvar
12509
12510
12511 : test whether setting _ptr sets _cnt as a side effect
12512 d_stdio_ptr_lval_sets_cnt="$undef"
12513 d_stdio_ptr_lval_nochange_cnt="$undef"
12514 case "$d_stdio_ptr_lval$d_stdstdio" in
12515 $define$define)
12516         echo "Checking to see what happens if we set the stdio ptr..." >&4
12517 $cat >try.c <<EOP
12518 #include <stdio.h>
12519 /* Can we scream? */
12520 /* Eat dust sed :-) */
12521 /* In the buffer space, no one can hear you scream. */
12522 #$i_stdlib I_STDLIB
12523 #ifdef I_STDLIB
12524 #include <stdlib.h>
12525 #endif
12526 #define FILE_ptr(fp)    $stdio_ptr
12527 #define FILE_cnt(fp)    $stdio_cnt
12528 #include <sys/types.h>
12529 int main() {
12530         FILE *fp = fopen("try.c", "r");
12531         int c;
12532         char *ptr;
12533         size_t cnt;
12534         if (!fp) {
12535             puts("Fail even to read");
12536             exit(1);
12537         }
12538         c = getc(fp); /* Read away the first # */
12539         if (c == EOF) {
12540             puts("Fail even to read");
12541             exit(1);
12542         }
12543         if (!(
12544                 18 <= FILE_cnt(fp) &&
12545                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12546         )) {
12547                 puts("Fail even to read");
12548                 exit (1);
12549         }
12550         ptr = (char*) FILE_ptr(fp);
12551         cnt = (size_t)FILE_cnt(fp);
12552
12553         FILE_ptr(fp) += 42;
12554
12555         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12556                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12557                 exit (1);
12558         }
12559         if (FILE_cnt(fp) <= 20) {
12560                 printf ("Fail (<20 chars to test)");
12561                 exit (1);
12562         }
12563         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12564                 puts("Fail compare");
12565                 exit (1);
12566         }
12567         if (cnt == FILE_cnt(fp)) {
12568                 puts("Pass_unchanged");
12569                 exit (0);
12570         }
12571         if (FILE_cnt(fp) == (cnt - 42)) {
12572                 puts("Pass_changed");
12573                 exit (0);
12574         }
12575         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12576         return 1;
12577
12578 }
12579 EOP
12580         set try
12581         if eval $compile && $to try.c; then
12582                 case `$run ./try` in
12583                 Pass_changed)
12584                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12585                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12586                 Pass_unchanged)
12587                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12588                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12589                 Fail*)
12590                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12591                 *)
12592                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12593         esac
12594         else
12595                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12596         fi
12597         $rm_try
12598         ;;
12599 esac
12600
12601 : see if _base is also standard
12602 val="$undef"
12603 case "$d_stdstdio" in
12604 $define)
12605         $cat >try.c <<EOP
12606 #include <stdio.h>
12607 #$i_stdlib I_STDLIB
12608 #ifdef I_STDLIB
12609 #include <stdlib.h>
12610 #endif
12611 #define FILE_base(fp)   $stdio_base
12612 #define FILE_bufsiz(fp) $stdio_bufsiz
12613 int main() {
12614         FILE *fp = fopen("try.c", "r");
12615         char c = getc(fp);
12616         if (
12617                 19 <= FILE_bufsiz(fp) &&
12618                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12619         )
12620                 exit(0);
12621         exit(1);
12622 }
12623 EOP
12624         set try
12625         if eval $compile && $to try.c; then
12626                 if $run ./try; then
12627                         echo "And its _base field acts std."
12628                         val="$define"
12629                 else
12630                         echo "But its _base field isn't std."
12631                 fi
12632         else
12633                 echo "However, it seems to be lacking the _base field."
12634         fi
12635         $rm_try
12636         ;;
12637 esac
12638 set d_stdiobase
12639 eval $setvar
12640
12641 : see if fast_stdio exists
12642 val="$undef"
12643 case "$d_stdstdio:$d_stdio_ptr_lval" in
12644 "$define:$define")
12645         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12646         *$define*)
12647                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12648                 val="$define"
12649                 ;;
12650         esac
12651         ;;
12652 esac
12653 set d_faststdio
12654 eval $setvar
12655
12656
12657
12658 : see if fchdir exists
12659 set fchdir d_fchdir
12660 eval $inlibc
12661
12662 : see if fchmod exists
12663 set fchmod d_fchmod
12664 eval $inlibc
12665
12666 : see if fchown exists
12667 set fchown d_fchown
12668 eval $inlibc
12669
12670 : see if this is an fcntl system
12671 set fcntl d_fcntl
12672 eval $inlibc
12673
12674 echo " "
12675 : See if fcntl-based locking works.
12676 $cat >try.c <<EOCP
12677 #$i_stdlib I_STDLIB
12678 #ifdef I_STDLIB
12679 #include <stdlib.h>
12680 #endif
12681 #include <unistd.h>
12682 #include <fcntl.h>
12683 #include <signal.h>
12684 $signal_t blech(int x) { exit(3); }
12685 int main() {
12686 #if defined(F_SETLK) && defined(F_SETLKW)
12687      struct flock flock;
12688      int retval, fd;
12689      fd = open("try.c", O_RDONLY);
12690      flock.l_type = F_RDLCK;
12691      flock.l_whence = SEEK_SET;
12692      flock.l_start = flock.l_len = 0;
12693      signal(SIGALRM, blech);
12694      alarm(10);
12695      retval = fcntl(fd, F_SETLK, &flock);
12696      close(fd);
12697      (retval < 0 ? exit(2) : exit(0));
12698 #else
12699      exit(2);
12700 #endif
12701 }
12702 EOCP
12703 echo "Checking if fcntl-based file locking works... "
12704 case "$d_fcntl" in
12705 "$define")
12706         set try
12707         if eval $compile_ok; then
12708                 if $run ./try; then
12709                         echo "Yes, it seems to work."
12710                         val="$define"
12711                 else
12712                         echo "Nope, it didn't work."
12713                         val="$undef"
12714                         case "$?" in
12715                         3) $cat >&4 <<EOM
12716 ***
12717 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12718 *** This is (almost) impossible.
12719 *** If your NFS lock daemons are not feeling well, something like
12720 *** this may happen, please investigate.  Cannot continue, aborting.
12721 ***
12722 EOM
12723                                 exit 1
12724                                 ;;
12725                         esac
12726                 fi
12727         else
12728                 echo "I'm unable to compile the test program, so I'll assume not."
12729                 val="$undef"
12730         fi
12731         ;;
12732 *) val="$undef";
12733         echo "Nope, since you don't even have fcntl()."
12734         ;;
12735 esac
12736 set d_fcntl_can_lock
12737 eval $setvar
12738 $rm_try
12739
12740 : check for fd_set items
12741 $cat <<EOM
12742
12743 Checking to see how well your C compiler handles fd_set and friends ...
12744 EOM
12745 $cat >try.c <<EOCP
12746 #$i_stdlib I_STDLIB
12747 #ifdef I_STDLIB
12748 #include <stdlib.h>
12749 #endif
12750 #$i_systime I_SYS_TIME
12751 #$i_sysselct I_SYS_SELECT
12752 #$d_socket HAS_SOCKET
12753 #include <sys/types.h>
12754 #ifdef HAS_SOCKET
12755 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12756 #endif
12757 #ifdef I_SYS_TIME
12758 #include <sys/time.h>
12759 #endif
12760 #ifdef I_SYS_SELECT
12761 #include <sys/select.h>
12762 #endif
12763 int main() {
12764         fd_set fds;
12765
12766 #ifdef TRYBITS
12767         if(fds.fds_bits);
12768 #endif
12769
12770 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12771         exit(0);
12772 #else
12773         exit(1);
12774 #endif
12775 }
12776 EOCP
12777 set try -DTRYBITS
12778 if eval $compile; then
12779         d_fds_bits="$define"
12780         d_fd_set="$define"
12781         echo "Well, your system knows about the normal fd_set typedef..." >&4
12782         if $run ./try; then
12783                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12784                 d_fd_macros="$define"
12785         else
12786                 $cat >&4 <<'EOM'
12787 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12788 EOM
12789                 d_fd_macros="$undef"
12790         fi
12791 else
12792         $cat <<'EOM'
12793 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12794 EOM
12795         set try
12796         if eval $compile; then
12797                 d_fds_bits="$undef"
12798                 d_fd_set="$define"
12799                 echo "Well, your system has some sort of fd_set available..." >&4
12800                 if $run ./try; then
12801                         echo "and you have the normal fd_set macros." >&4
12802                         d_fd_macros="$define"
12803                 else
12804                         $cat <<'EOM'
12805 but not the normal fd_set macros!  Gross!  More work for me...
12806 EOM
12807                         d_fd_macros="$undef"
12808                 fi
12809         else
12810         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12811                 d_fd_set="$undef"
12812                 d_fds_bits="$undef"
12813                 d_fd_macros="$undef"
12814         fi
12815 fi
12816 $rm_try
12817
12818 : see if fgetpos exists
12819 set fgetpos d_fgetpos
12820 eval $inlibc
12821
12822 : see if finite exists
12823 set finite d_finite
12824 eval $inlibc
12825
12826 : see if finitel exists
12827 set finitel d_finitel
12828 eval $inlibc
12829
12830 : see if flock exists
12831 set flock d_flock
12832 eval $inlibc
12833
12834 : see if prototype for flock is available
12835 echo " "
12836 set d_flockproto flock $i_sysfile sys/file.h
12837 eval $hasproto
12838
12839 : see if fork exists
12840 set fork d_fork
12841 eval $inlibc
12842
12843 : see if fp_class exists
12844 set fp_class d_fp_class
12845 eval $inlibc
12846
12847 : see if pathconf exists
12848 set pathconf d_pathconf
12849 eval $inlibc
12850
12851 : see if fpathconf exists
12852 set fpathconf d_fpathconf
12853 eval $inlibc
12854
12855 : see if fpclass exists
12856 set fpclass d_fpclass
12857 eval $inlibc
12858
12859 : see if fpclassify exists
12860 set fpclassify d_fpclassify
12861 eval $inlibc
12862
12863 : see if fpclassl exists
12864 set fpclassl d_fpclassl
12865 eval $inlibc
12866
12867
12868 : check for fpos64_t
12869 echo " "
12870 echo "Checking to see if you have fpos64_t..." >&4
12871 $cat >try.c <<EOCP
12872 #include <stdio.h>
12873 int main() { fpos64_t x = 7; }
12874 EOCP
12875 set try
12876 if eval $compile; then
12877         val="$define"
12878         echo "You have fpos64_t."
12879 else
12880         val="$undef"
12881         echo "You do not have fpos64_t."
12882         case "$fpossize" in
12883         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12884         esac
12885 fi
12886 $rm_try
12887 set d_fpos64_t
12888 eval $setvar
12889
12890 : see if frexpl exists
12891 set frexpl d_frexpl
12892 eval $inlibc
12893
12894 : see if this is a sys/param system
12895 set sys/param.h i_sysparam
12896 eval $inhdr
12897
12898 : see if this is a sys/mount.h system
12899 set sys/mount.h i_sysmount
12900 eval $inhdr
12901
12902
12903 echo " "
12904 echo "Checking to see if your system supports struct fs_data..." >&4
12905 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12906 eval $hasstruct
12907 case "$d_fs_data_s" in
12908 "$define")      echo "Yes, it does."   ;;
12909 *)              echo "No, it doesn't." ;;
12910 esac
12911
12912 : see if fseeko exists
12913 set fseeko d_fseeko
12914 eval $inlibc
12915 case "$longsize" in
12916 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12917 esac
12918
12919 : see if fsetpos exists
12920 set fsetpos d_fsetpos
12921 eval $inlibc
12922
12923
12924 : see if fstatfs exists
12925 set fstatfs d_fstatfs
12926 eval $inlibc
12927
12928
12929 : see if statvfs exists
12930 set statvfs d_statvfs
12931 eval $inlibc
12932
12933 : see if fstatvfs exists
12934 set fstatvfs d_fstatvfs
12935 eval $inlibc
12936
12937
12938 : see if fsync exists
12939 set fsync d_fsync
12940 eval $inlibc
12941
12942 : see if ftello exists
12943 set ftello d_ftello
12944 eval $inlibc
12945 case "$longsize" in
12946 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12947 esac
12948
12949 d_futimes="$undef"
12950 : check for a working futimes
12951 echo " "
12952 echo "Checking if you have a working futimes()" >&4
12953 $cat >try.c <<EOCP
12954 #include <stdio.h>
12955 #include <sys/time.h>
12956 #include <errno.h>
12957 #include <fcntl.h>
12958
12959 int main ()
12960 {
12961     int fd, rv;
12962     fd = open ("try.c", O_RDWR);
12963     if (-1 == fd) exit (1);
12964     rv = futimes (fd, NULL);
12965     exit (rv == -1 ? errno : 0);
12966 }
12967 EOCP
12968 set try
12969 if eval $compile; then
12970     `$run ./try`
12971     rc=$?
12972     case "$rc" in
12973         0)  echo "Yes, you have" >&4
12974             d_futimes="$define"
12975             ;;
12976         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
12977             ;;
12978     esac
12979 else
12980     echo "No, it does not (probably harmless)" >&4
12981 fi
12982 $rm_try
12983
12984 : see if getcwd exists
12985 set getcwd d_getcwd
12986 eval $inlibc
12987
12988 : see if getespwnam exists
12989 set getespwnam d_getespwnam
12990 eval $inlibc
12991
12992
12993 : see if getfsstat exists
12994 set getfsstat d_getfsstat
12995 eval $inlibc
12996
12997 : see if getgrent exists
12998 set getgrent d_getgrent
12999 eval $inlibc
13000
13001 : see if getgrent_r exists
13002 set getgrent_r d_getgrent_r
13003 eval $inlibc
13004 case "$d_getgrent_r" in
13005 "$define")
13006         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13007         case "$d_getgrent_r_proto:$usethreads" in
13008         ":define")      d_getgrent_r_proto=define
13009                 set d_getgrent_r_proto getgrent_r $hdrs
13010                 eval $hasproto ;;
13011         *)      ;;
13012         esac
13013         case "$d_getgrent_r_proto" in
13014         define)
13015         case "$getgrent_r_proto" in
13016         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13017         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13018         esac
13019         case "$getgrent_r_proto" in
13020         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13021         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13022         esac
13023         case "$getgrent_r_proto" in
13024         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13025         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13026         esac
13027         case "$getgrent_r_proto" in
13028         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13029         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13030         esac
13031         case "$getgrent_r_proto" in
13032         ''|0) try='int getgrent_r(struct group*, char*, int);'
13033         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13034         esac
13035         case "$getgrent_r_proto" in
13036         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13037         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13038         esac
13039         case "$getgrent_r_proto" in
13040         ''|0)   d_getgrent_r=undef
13041                 getgrent_r_proto=0
13042                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13043         * )     case "$getgrent_r_proto" in
13044                 REENTRANT_PROTO*) ;;
13045                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13046                 esac
13047                 echo "Prototype: $try" ;;
13048         esac
13049         ;;
13050         *)      case "$usethreads" in
13051                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13052                 esac
13053                 d_getgrent_r=undef
13054                 getgrent_r_proto=0
13055                 ;;
13056         esac
13057         ;;
13058 *)      getgrent_r_proto=0
13059         ;;
13060 esac
13061
13062 : see if getgrgid_r exists
13063 set getgrgid_r d_getgrgid_r
13064 eval $inlibc
13065 case "$d_getgrgid_r" in
13066 "$define")
13067         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13068         case "$d_getgrgid_r_proto:$usethreads" in
13069         ":define")      d_getgrgid_r_proto=define
13070                 set d_getgrgid_r_proto getgrgid_r $hdrs
13071                 eval $hasproto ;;
13072         *)      ;;
13073         esac
13074         case "$d_getgrgid_r_proto" in
13075         define)
13076         case "$getgrgid_r_proto" in
13077         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13078         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13079         esac
13080         case "$getgrgid_r_proto" in
13081         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13082         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13083         esac
13084         case "$getgrgid_r_proto" in
13085         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13086         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13087         esac
13088         case "$getgrgid_r_proto" in
13089         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13090         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13091         esac
13092         case "$getgrgid_r_proto" in
13093         ''|0)   d_getgrgid_r=undef
13094                 getgrgid_r_proto=0
13095                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13096         * )     case "$getgrgid_r_proto" in
13097                 REENTRANT_PROTO*) ;;
13098                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13099                 esac
13100                 echo "Prototype: $try" ;;
13101         esac
13102         ;;
13103         *)      case "$usethreads" in
13104                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13105                 esac
13106                 d_getgrgid_r=undef
13107                 getgrgid_r_proto=0
13108                 ;;
13109         esac
13110         ;;
13111 *)      getgrgid_r_proto=0
13112         ;;
13113 esac
13114
13115 : see if getgrnam_r exists
13116 set getgrnam_r d_getgrnam_r
13117 eval $inlibc
13118 case "$d_getgrnam_r" in
13119 "$define")
13120         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13121         case "$d_getgrnam_r_proto:$usethreads" in
13122         ":define")      d_getgrnam_r_proto=define
13123                 set d_getgrnam_r_proto getgrnam_r $hdrs
13124                 eval $hasproto ;;
13125         *)      ;;
13126         esac
13127         case "$d_getgrnam_r_proto" in
13128         define)
13129         case "$getgrnam_r_proto" in
13130         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13131         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13132         esac
13133         case "$getgrnam_r_proto" in
13134         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13135         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13136         esac
13137         case "$getgrnam_r_proto" in
13138         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13139         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13140         esac
13141         case "$getgrnam_r_proto" in
13142         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13143         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13144         esac
13145         case "$getgrnam_r_proto" in
13146         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13147         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13148         esac
13149         case "$getgrnam_r_proto" in
13150         ''|0)   d_getgrnam_r=undef
13151                 getgrnam_r_proto=0
13152                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13153         * )     case "$getgrnam_r_proto" in
13154                 REENTRANT_PROTO*) ;;
13155                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13156                 esac
13157                 echo "Prototype: $try" ;;
13158         esac
13159         ;;
13160         *)      case "$usethreads" in
13161                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13162                 esac
13163                 d_getgrnam_r=undef
13164                 getgrnam_r_proto=0
13165                 ;;
13166         esac
13167         ;;
13168 *)      getgrnam_r_proto=0
13169         ;;
13170 esac
13171
13172 : see if gethostbyaddr exists
13173 set gethostbyaddr d_gethbyaddr
13174 eval $inlibc
13175
13176 : see if gethostbyname exists
13177 set gethostbyname d_gethbyname
13178 eval $inlibc
13179
13180 : see if gethostent exists
13181 set gethostent d_gethent
13182 eval $inlibc
13183
13184 : see how we will look up host name
13185 echo " "
13186 call=''
13187 if set gethostname val -f d_gethname; eval $csym; $val; then
13188         echo 'gethostname() found.' >&4
13189         d_gethname="$define"
13190         call=gethostname
13191 fi
13192 if set uname val -f d_uname; eval $csym; $val; then
13193         if ./xenix; then
13194                 $cat <<'EOM'
13195 uname() was found, but you're running xenix, and older versions of xenix
13196 have a broken uname(). If you don't really know whether your xenix is old
13197 enough to have a broken system call, use the default answer.
13198
13199 EOM
13200                 dflt=y
13201                 case "$d_uname" in
13202                 "$define") dflt=n;;
13203                 esac
13204                 rp='Is your uname() broken?'
13205                 . ./myread
13206                 case "$ans" in
13207                 n*) d_uname="$define"; call=uname;;
13208                 esac
13209         else
13210                 echo 'uname() found.' >&4
13211                 d_uname="$define"
13212                 case "$call" in
13213                 '') call=uname ;;
13214                 esac
13215         fi
13216 fi
13217 case "$d_gethname" in
13218 '') d_gethname="$undef";;
13219 esac
13220 case "$d_uname" in
13221 '') d_uname="$undef";;
13222 esac
13223 case "$d_uname$d_gethname" in
13224 *define*)
13225         dflt=n
13226         cat <<EOM
13227  
13228 Every now and then someone has a $call() that lies about the hostname
13229 but can't be fixed for political or economic reasons.  If you wish, I can
13230 pretend $call() isn't there and maybe compute hostname at run-time
13231 thanks to the '$phostname' command.
13232
13233 EOM
13234         rp="Shall I ignore $call() from now on?"
13235         . ./myread
13236         case "$ans" in
13237         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13238         esac;;
13239 esac
13240 case "$phostname" in
13241 '') aphostname='';;
13242 *) case "$aphostname" in
13243         /*) ;;
13244         *) set X $phostname
13245                 shift
13246                 file=$1
13247                 shift
13248                 file=`./loc $file $file $pth`
13249                 aphostname=`echo $file $*`
13250                 ;;
13251         esac
13252         ;;
13253 esac
13254 case "$d_uname$d_gethname" in
13255 *define*) ;;
13256 *)
13257         case "$phostname" in
13258         '')
13259                 echo "There will be no way for $package to get your hostname." >&4;;
13260         *)
13261         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13262                 ;;
13263         esac;;
13264 esac
13265 case "$d_phostname" in
13266 '') d_phostname="$undef";;
13267 esac
13268
13269 : see if gethostbyaddr_r exists
13270 set gethostbyaddr_r d_gethostbyaddr_r
13271 eval $inlibc
13272 case "$d_gethostbyaddr_r" in
13273 "$define")
13274         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13275         case "$d_gethostbyaddr_r_proto:$usethreads" in
13276         ":define")      d_gethostbyaddr_r_proto=define
13277                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13278                 eval $hasproto ;;
13279         *)      ;;
13280         esac
13281         case "$d_gethostbyaddr_r_proto" in
13282         define)
13283         case "$gethostbyaddr_r_proto" in
13284         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13285         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13286         esac
13287         case "$gethostbyaddr_r_proto" in
13288         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13289         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13290         esac
13291         case "$gethostbyaddr_r_proto" in
13292         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13293         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13294         esac
13295         case "$gethostbyaddr_r_proto" in
13296         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13297         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13298         esac
13299         case "$gethostbyaddr_r_proto" in
13300         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13301         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13302         esac
13303         case "$gethostbyaddr_r_proto" in
13304         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13305         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13306         esac
13307         case "$gethostbyaddr_r_proto" in
13308         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13309         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13310         esac
13311         case "$gethostbyaddr_r_proto" in
13312         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13313         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13314         esac
13315         case "$gethostbyaddr_r_proto" in
13316         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13317         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13318         esac
13319         case "$gethostbyaddr_r_proto" in
13320         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13321         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13322         esac
13323         case "$gethostbyaddr_r_proto" in
13324         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13325         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13326         esac
13327         case "$gethostbyaddr_r_proto" in
13328         ''|0)   d_gethostbyaddr_r=undef
13329                 gethostbyaddr_r_proto=0
13330                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13331         * )     case "$gethostbyaddr_r_proto" in
13332                 REENTRANT_PROTO*) ;;
13333                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13334                 esac
13335                 echo "Prototype: $try" ;;
13336         esac
13337         ;;
13338         *)      case "$usethreads" in
13339                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13340                 esac
13341                 d_gethostbyaddr_r=undef
13342                 gethostbyaddr_r_proto=0
13343                 ;;
13344         esac
13345         ;;
13346 *)      gethostbyaddr_r_proto=0
13347         ;;
13348 esac
13349
13350 : see if gethostbyname_r exists
13351 set gethostbyname_r d_gethostbyname_r
13352 eval $inlibc
13353 case "$d_gethostbyname_r" in
13354 "$define")
13355         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13356         case "$d_gethostbyname_r_proto:$usethreads" in
13357         ":define")      d_gethostbyname_r_proto=define
13358                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13359                 eval $hasproto ;;
13360         *)      ;;
13361         esac
13362         case "$d_gethostbyname_r_proto" in
13363         define)
13364         case "$gethostbyname_r_proto" in
13365         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13366         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13367         esac
13368         case "$gethostbyname_r_proto" in
13369         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13370         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13371         esac
13372         case "$gethostbyname_r_proto" in
13373         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13374         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13375         esac
13376         case "$gethostbyname_r_proto" in
13377         ''|0)   d_gethostbyname_r=undef
13378                 gethostbyname_r_proto=0
13379                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13380         * )     case "$gethostbyname_r_proto" in
13381                 REENTRANT_PROTO*) ;;
13382                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13383                 esac
13384                 echo "Prototype: $try" ;;
13385         esac
13386         ;;
13387         *)      case "$usethreads" in
13388                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13389                 esac
13390                 d_gethostbyname_r=undef
13391                 gethostbyname_r_proto=0
13392                 ;;
13393         esac
13394         ;;
13395 *)      gethostbyname_r_proto=0
13396         ;;
13397 esac
13398
13399 : see if gethostent_r exists
13400 set gethostent_r d_gethostent_r
13401 eval $inlibc
13402 case "$d_gethostent_r" in
13403 "$define")
13404         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13405         case "$d_gethostent_r_proto:$usethreads" in
13406         ":define")      d_gethostent_r_proto=define
13407                 set d_gethostent_r_proto gethostent_r $hdrs
13408                 eval $hasproto ;;
13409         *)      ;;
13410         esac
13411         case "$d_gethostent_r_proto" in
13412         define)
13413         case "$gethostent_r_proto" in
13414         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13415         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13416         esac
13417         case "$gethostent_r_proto" in
13418         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13419         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13420         esac
13421         case "$gethostent_r_proto" in
13422         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13423         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13424         esac
13425         case "$gethostent_r_proto" in
13426         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13427         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13428         esac
13429         case "$gethostent_r_proto" in
13430         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13431         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13432         esac
13433         case "$gethostent_r_proto" in
13434         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13435         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13436         esac
13437         case "$gethostent_r_proto" in
13438         ''|0)   d_gethostent_r=undef
13439                 gethostent_r_proto=0
13440                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13441         * )     case "$gethostent_r_proto" in
13442                 REENTRANT_PROTO*) ;;
13443                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13444                 esac
13445                 echo "Prototype: $try" ;;
13446         esac
13447         ;;
13448         *)      case "$usethreads" in
13449                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13450                 esac
13451                 d_gethostent_r=undef
13452                 gethostent_r_proto=0
13453                 ;;
13454         esac
13455         ;;
13456 *)      gethostent_r_proto=0
13457         ;;
13458 esac
13459
13460 : see if prototypes for various gethostxxx netdb.h functions are available
13461 echo " "
13462 set d_gethostprotos gethostent $i_netdb netdb.h
13463 eval $hasproto
13464
13465 : see if getitimer exists
13466 set getitimer d_getitimer
13467 eval $inlibc
13468
13469 : see if getlogin exists
13470 set getlogin d_getlogin
13471 eval $inlibc
13472
13473 : see if getlogin_r exists
13474 set getlogin_r d_getlogin_r
13475 eval $inlibc
13476 case "$d_getlogin_r" in
13477 "$define")
13478         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13479         case "$d_getlogin_r_proto:$usethreads" in
13480         ":define")      d_getlogin_r_proto=define
13481                 set d_getlogin_r_proto getlogin_r $hdrs
13482                 eval $hasproto ;;
13483         *)      ;;
13484         esac
13485         case "$d_getlogin_r_proto" in
13486         define)
13487         case "$getlogin_r_proto" in
13488         ''|0) try='int getlogin_r(char*, size_t);'
13489         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13490         esac
13491         case "$getlogin_r_proto" in
13492         ''|0) try='int getlogin_r(char*, int);'
13493         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13494         esac
13495         case "$getlogin_r_proto" in
13496         ''|0) try='char* getlogin_r(char*, size_t);'
13497         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13498         esac
13499         case "$getlogin_r_proto" in
13500         ''|0) try='char* getlogin_r(char*, int);'
13501         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13502         esac
13503         case "$getlogin_r_proto" in
13504         ''|0)   d_getlogin_r=undef
13505                 getlogin_r_proto=0
13506                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13507         * )     case "$getlogin_r_proto" in
13508                 REENTRANT_PROTO*) ;;
13509                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13510                 esac
13511                 echo "Prototype: $try" ;;
13512         esac
13513         ;;
13514         *)      case "$usethreads" in
13515                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13516                 esac
13517                 d_getlogin_r=undef
13518                 getlogin_r_proto=0
13519                 ;;
13520         esac
13521         ;;
13522 *)      getlogin_r_proto=0
13523         ;;
13524 esac
13525
13526 : see if getmnt exists
13527 set getmnt d_getmnt
13528 eval $inlibc
13529
13530 : see if getmntent exists
13531 set getmntent d_getmntent
13532 eval $inlibc
13533
13534 : see if getnetbyaddr exists
13535 set getnetbyaddr d_getnbyaddr
13536 eval $inlibc
13537
13538 : see if getnetbyname exists
13539 set getnetbyname d_getnbyname
13540 eval $inlibc
13541
13542 : see if getnetent exists
13543 set getnetent d_getnent
13544 eval $inlibc
13545
13546 : see if getnetbyaddr_r exists
13547 set getnetbyaddr_r d_getnetbyaddr_r
13548 eval $inlibc
13549 case "$d_getnetbyaddr_r" in
13550 "$define")
13551         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13552         case "$d_getnetbyaddr_r_proto:$usethreads" in
13553         ":define")      d_getnetbyaddr_r_proto=define
13554                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13555                 eval $hasproto ;;
13556         *)      ;;
13557         esac
13558         case "$d_getnetbyaddr_r_proto" in
13559         define)
13560         case "$getnetbyaddr_r_proto" in
13561         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13562         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13563         esac
13564         case "$getnetbyaddr_r_proto" in
13565         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13566         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13567         esac
13568         case "$getnetbyaddr_r_proto" in
13569         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13570         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13571         esac
13572         case "$getnetbyaddr_r_proto" in
13573         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13574         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13575         esac
13576         case "$getnetbyaddr_r_proto" in
13577         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13578         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13579         esac
13580         case "$getnetbyaddr_r_proto" in
13581         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13582         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13583         esac
13584         case "$getnetbyaddr_r_proto" in
13585         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13586         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13587         esac
13588         case "$getnetbyaddr_r_proto" in
13589         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13590         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13591         esac
13592         case "$getnetbyaddr_r_proto" in
13593         ''|0)   d_getnetbyaddr_r=undef
13594                 getnetbyaddr_r_proto=0
13595                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13596         * )     case "$getnetbyaddr_r_proto" in
13597                 REENTRANT_PROTO*) ;;
13598                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13599                 esac
13600                 echo "Prototype: $try" ;;
13601         esac
13602         ;;
13603         *)      case "$usethreads" in
13604                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13605                 esac
13606                 d_getnetbyaddr_r=undef
13607                 getnetbyaddr_r_proto=0
13608                 ;;
13609         esac
13610         ;;
13611 *)      getnetbyaddr_r_proto=0
13612         ;;
13613 esac
13614
13615 : see if getnetbyname_r exists
13616 set getnetbyname_r d_getnetbyname_r
13617 eval $inlibc
13618 case "$d_getnetbyname_r" in
13619 "$define")
13620         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13621         case "$d_getnetbyname_r_proto:$usethreads" in
13622         ":define")      d_getnetbyname_r_proto=define
13623                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13624                 eval $hasproto ;;
13625         *)      ;;
13626         esac
13627         case "$d_getnetbyname_r_proto" in
13628         define)
13629         case "$getnetbyname_r_proto" in
13630         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13631         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13632         esac
13633         case "$getnetbyname_r_proto" in
13634         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13635         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13636         esac
13637         case "$getnetbyname_r_proto" in
13638         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13639         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13640         esac
13641         case "$getnetbyname_r_proto" in
13642         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13643         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13644         esac
13645         case "$getnetbyname_r_proto" in
13646         ''|0)   d_getnetbyname_r=undef
13647                 getnetbyname_r_proto=0
13648                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13649         * )     case "$getnetbyname_r_proto" in
13650                 REENTRANT_PROTO*) ;;
13651                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13652                 esac
13653                 echo "Prototype: $try" ;;
13654         esac
13655         ;;
13656         *)      case "$usethreads" in
13657                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13658                 esac
13659                 d_getnetbyname_r=undef
13660                 getnetbyname_r_proto=0
13661                 ;;
13662         esac
13663         ;;
13664 *)      getnetbyname_r_proto=0
13665         ;;
13666 esac
13667
13668 : see if getnetent_r exists
13669 set getnetent_r d_getnetent_r
13670 eval $inlibc
13671 case "$d_getnetent_r" in
13672 "$define")
13673         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13674         case "$d_getnetent_r_proto:$usethreads" in
13675         ":define")      d_getnetent_r_proto=define
13676                 set d_getnetent_r_proto getnetent_r $hdrs
13677                 eval $hasproto ;;
13678         *)      ;;
13679         esac
13680         case "$d_getnetent_r_proto" in
13681         define)
13682         case "$getnetent_r_proto" in
13683         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13684         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13685         esac
13686         case "$getnetent_r_proto" in
13687         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13688         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13689         esac
13690         case "$getnetent_r_proto" in
13691         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13692         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13693         esac
13694         case "$getnetent_r_proto" in
13695         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13696         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13697         esac
13698         case "$getnetent_r_proto" in
13699         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13700         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13701         esac
13702         case "$getnetent_r_proto" in
13703         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13704         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13705         esac
13706         case "$getnetent_r_proto" in
13707         ''|0)   d_getnetent_r=undef
13708                 getnetent_r_proto=0
13709                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13710         * )     case "$getnetent_r_proto" in
13711                 REENTRANT_PROTO*) ;;
13712                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13713                 esac
13714                 echo "Prototype: $try" ;;
13715         esac
13716         ;;
13717         *)      case "$usethreads" in
13718                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13719                 esac
13720                 d_getnetent_r=undef
13721                 getnetent_r_proto=0
13722                 ;;
13723         esac
13724         ;;
13725 *)      getnetent_r_proto=0
13726         ;;
13727 esac
13728
13729 : see if prototypes for various getnetxxx netdb.h functions are available
13730 echo " "
13731 set d_getnetprotos getnetent $i_netdb netdb.h
13732 eval $hasproto
13733
13734 : see if getpagesize exists
13735 set getpagesize d_getpagsz
13736 eval $inlibc
13737
13738
13739 : see if getprotobyname exists
13740 set getprotobyname d_getpbyname
13741 eval $inlibc
13742
13743 : see if getprotobynumber exists
13744 set getprotobynumber d_getpbynumber
13745 eval $inlibc
13746
13747 : see if getprotoent exists
13748 set getprotoent d_getpent
13749 eval $inlibc
13750
13751 : see if getpgid exists
13752 set getpgid d_getpgid
13753 eval $inlibc
13754
13755 : see if getpgrp2 exists
13756 set getpgrp2 d_getpgrp2
13757 eval $inlibc
13758
13759 : see if getppid exists
13760 set getppid d_getppid
13761 eval $inlibc
13762
13763 : see if getpriority exists
13764 set getpriority d_getprior
13765 eval $inlibc
13766
13767 : see if getprotobyname_r exists
13768 set getprotobyname_r d_getprotobyname_r
13769 eval $inlibc
13770 case "$d_getprotobyname_r" in
13771 "$define")
13772         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13773         case "$d_getprotobyname_r_proto:$usethreads" in
13774         ":define")      d_getprotobyname_r_proto=define
13775                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13776                 eval $hasproto ;;
13777         *)      ;;
13778         esac
13779         case "$d_getprotobyname_r_proto" in
13780         define)
13781         case "$getprotobyname_r_proto" in
13782         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13783         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13784         esac
13785         case "$getprotobyname_r_proto" in
13786         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13787         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13788         esac
13789         case "$getprotobyname_r_proto" in
13790         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13791         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13792         esac
13793         case "$getprotobyname_r_proto" in
13794         ''|0)   d_getprotobyname_r=undef
13795                 getprotobyname_r_proto=0
13796                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13797         * )     case "$getprotobyname_r_proto" in
13798                 REENTRANT_PROTO*) ;;
13799                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13800                 esac
13801                 echo "Prototype: $try" ;;
13802         esac
13803         ;;
13804         *)      case "$usethreads" in
13805                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13806                 esac
13807                 d_getprotobyname_r=undef
13808                 getprotobyname_r_proto=0
13809                 ;;
13810         esac
13811         ;;
13812 *)      getprotobyname_r_proto=0
13813         ;;
13814 esac
13815
13816 : see if getprotobynumber_r exists
13817 set getprotobynumber_r d_getprotobynumber_r
13818 eval $inlibc
13819 case "$d_getprotobynumber_r" in
13820 "$define")
13821         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13822         case "$d_getprotobynumber_r_proto:$usethreads" in
13823         ":define")      d_getprotobynumber_r_proto=define
13824                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13825                 eval $hasproto ;;
13826         *)      ;;
13827         esac
13828         case "$d_getprotobynumber_r_proto" in
13829         define)
13830         case "$getprotobynumber_r_proto" in
13831         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13832         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13833         esac
13834         case "$getprotobynumber_r_proto" in
13835         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13836         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13837         esac
13838         case "$getprotobynumber_r_proto" in
13839         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13840         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13841         esac
13842         case "$getprotobynumber_r_proto" in
13843         ''|0)   d_getprotobynumber_r=undef
13844                 getprotobynumber_r_proto=0
13845                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13846         * )     case "$getprotobynumber_r_proto" in
13847                 REENTRANT_PROTO*) ;;
13848                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13849                 esac
13850                 echo "Prototype: $try" ;;
13851         esac
13852         ;;
13853         *)      case "$usethreads" in
13854                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13855                 esac
13856                 d_getprotobynumber_r=undef
13857                 getprotobynumber_r_proto=0
13858                 ;;
13859         esac
13860         ;;
13861 *)      getprotobynumber_r_proto=0
13862         ;;
13863 esac
13864
13865 : see if getprotoent_r exists
13866 set getprotoent_r d_getprotoent_r
13867 eval $inlibc
13868 case "$d_getprotoent_r" in
13869 "$define")
13870         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13871         case "$d_getprotoent_r_proto:$usethreads" in
13872         ":define")      d_getprotoent_r_proto=define
13873                 set d_getprotoent_r_proto getprotoent_r $hdrs
13874                 eval $hasproto ;;
13875         *)      ;;
13876         esac
13877         case "$d_getprotoent_r_proto" in
13878         define)
13879         case "$getprotoent_r_proto" in
13880         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13881         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13882         esac
13883         case "$getprotoent_r_proto" in
13884         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13885         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13886         esac
13887         case "$getprotoent_r_proto" in
13888         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13889         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13890         esac
13891         case "$getprotoent_r_proto" in
13892         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13893         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13894         esac
13895         case "$getprotoent_r_proto" in
13896         ''|0)   d_getprotoent_r=undef
13897                 getprotoent_r_proto=0
13898                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13899         * )     case "$getprotoent_r_proto" in
13900                 REENTRANT_PROTO*) ;;
13901                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13902                 esac
13903                 echo "Prototype: $try" ;;
13904         esac
13905         ;;
13906         *)      case "$usethreads" in
13907                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13908                 esac
13909                 d_getprotoent_r=undef
13910                 getprotoent_r_proto=0
13911                 ;;
13912         esac
13913         ;;
13914 *)      getprotoent_r_proto=0
13915         ;;
13916 esac
13917
13918 : see if prototypes for various getprotoxxx netdb.h functions are available
13919 echo " "
13920 set d_getprotoprotos getprotoent $i_netdb netdb.h
13921 eval $hasproto
13922
13923 : see if getprpwnam exists
13924 set getprpwnam d_getprpwnam
13925 eval $inlibc
13926
13927 : see if getpwent exists
13928 set getpwent d_getpwent
13929 eval $inlibc
13930
13931 : see if getpwent_r exists
13932 set getpwent_r d_getpwent_r
13933 eval $inlibc
13934 case "$d_getpwent_r" in
13935 "$define")
13936         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13937         case "$d_getpwent_r_proto:$usethreads" in
13938         ":define")      d_getpwent_r_proto=define
13939                 set d_getpwent_r_proto getpwent_r $hdrs
13940                 eval $hasproto ;;
13941         *)      ;;
13942         esac
13943         case "$d_getpwent_r_proto" in
13944         define)
13945         case "$getpwent_r_proto" in
13946         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13947         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13948         esac
13949         case "$getpwent_r_proto" in
13950         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13951         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13952         esac
13953         case "$getpwent_r_proto" in
13954         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13955         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13956         esac
13957         case "$getpwent_r_proto" in
13958         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13959         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13960         esac
13961         case "$getpwent_r_proto" in
13962         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13963         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13964         esac
13965         case "$getpwent_r_proto" in
13966         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13967         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13968         esac
13969         case "$getpwent_r_proto" in
13970         ''|0)   d_getpwent_r=undef
13971                 getpwent_r_proto=0
13972                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13973         * )     case "$getpwent_r_proto" in
13974                 REENTRANT_PROTO*) ;;
13975                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13976                 esac
13977                 echo "Prototype: $try" ;;
13978         esac
13979         ;;
13980         *)      case "$usethreads" in
13981                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13982                 esac
13983                 d_getpwent_r=undef
13984                 getpwent_r_proto=0
13985                 ;;
13986         esac
13987         ;;
13988 *)      getpwent_r_proto=0
13989         ;;
13990 esac
13991
13992 : see if getpwnam_r exists
13993 set getpwnam_r d_getpwnam_r
13994 eval $inlibc
13995 case "$d_getpwnam_r" in
13996 "$define")
13997         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13998         case "$d_getpwnam_r_proto:$usethreads" in
13999         ":define")      d_getpwnam_r_proto=define
14000                 set d_getpwnam_r_proto getpwnam_r $hdrs
14001                 eval $hasproto ;;
14002         *)      ;;
14003         esac
14004         case "$d_getpwnam_r_proto" in
14005         define)
14006         case "$getpwnam_r_proto" in
14007         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14008         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14009         esac
14010         case "$getpwnam_r_proto" in
14011         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14012         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14013         esac
14014         case "$getpwnam_r_proto" in
14015         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14016         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14017         esac
14018         case "$getpwnam_r_proto" in
14019         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14020         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14021         esac
14022         case "$getpwnam_r_proto" in
14023         ''|0)   d_getpwnam_r=undef
14024                 getpwnam_r_proto=0
14025                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14026         * )     case "$getpwnam_r_proto" in
14027                 REENTRANT_PROTO*) ;;
14028                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14029                 esac
14030                 echo "Prototype: $try" ;;
14031         esac
14032         ;;
14033         *)      case "$usethreads" in
14034                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14035                 esac
14036                 d_getpwnam_r=undef
14037                 getpwnam_r_proto=0
14038                 ;;
14039         esac
14040         ;;
14041 *)      getpwnam_r_proto=0
14042         ;;
14043 esac
14044
14045 : see if getpwuid_r exists
14046 set getpwuid_r d_getpwuid_r
14047 eval $inlibc
14048 case "$d_getpwuid_r" in
14049 "$define")
14050         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14051         case "$d_getpwuid_r_proto:$usethreads" in
14052         ":define")      d_getpwuid_r_proto=define
14053                 set d_getpwuid_r_proto getpwuid_r $hdrs
14054                 eval $hasproto ;;
14055         *)      ;;
14056         esac
14057         case "$d_getpwuid_r_proto" in
14058         define)
14059         case "$getpwuid_r_proto" in
14060         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14061         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14062         esac
14063         case "$getpwuid_r_proto" in
14064         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14065         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14066         esac
14067         case "$getpwuid_r_proto" in
14068         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14069         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14070         esac
14071         case "$getpwuid_r_proto" in
14072         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14073         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14074         esac
14075         case "$getpwuid_r_proto" in
14076         ''|0)   d_getpwuid_r=undef
14077                 getpwuid_r_proto=0
14078                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14079         * )     case "$getpwuid_r_proto" in
14080                 REENTRANT_PROTO*) ;;
14081                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14082                 esac
14083                 echo "Prototype: $try" ;;
14084         esac
14085         ;;
14086         *)      case "$usethreads" in
14087                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14088                 esac
14089                 d_getpwuid_r=undef
14090                 getpwuid_r_proto=0
14091                 ;;
14092         esac
14093         ;;
14094 *)      getpwuid_r_proto=0
14095         ;;
14096 esac
14097
14098
14099 : see if getservbyname exists
14100 set getservbyname d_getsbyname
14101 eval $inlibc
14102
14103 : see if getservbyport exists
14104 set getservbyport d_getsbyport
14105 eval $inlibc
14106
14107 : see if getservent exists
14108 set getservent d_getsent
14109 eval $inlibc
14110
14111 : see if getservbyname_r exists
14112 set getservbyname_r d_getservbyname_r
14113 eval $inlibc
14114 case "$d_getservbyname_r" in
14115 "$define")
14116         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14117         case "$d_getservbyname_r_proto:$usethreads" in
14118         ":define")      d_getservbyname_r_proto=define
14119                 set d_getservbyname_r_proto getservbyname_r $hdrs
14120                 eval $hasproto ;;
14121         *)      ;;
14122         esac
14123         case "$d_getservbyname_r_proto" in
14124         define)
14125         case "$getservbyname_r_proto" in
14126         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14127         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14128         esac
14129         case "$getservbyname_r_proto" in
14130         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14131         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14132         esac
14133         case "$getservbyname_r_proto" in
14134         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14135         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14136         esac
14137         case "$getservbyname_r_proto" in
14138         ''|0)   d_getservbyname_r=undef
14139                 getservbyname_r_proto=0
14140                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14141         * )     case "$getservbyname_r_proto" in
14142                 REENTRANT_PROTO*) ;;
14143                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14144                 esac
14145                 echo "Prototype: $try" ;;
14146         esac
14147         ;;
14148         *)      case "$usethreads" in
14149                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14150                 esac
14151                 d_getservbyname_r=undef
14152                 getservbyname_r_proto=0
14153                 ;;
14154         esac
14155         ;;
14156 *)      getservbyname_r_proto=0
14157         ;;
14158 esac
14159
14160 : see if getservbyport_r exists
14161 set getservbyport_r d_getservbyport_r
14162 eval $inlibc
14163 case "$d_getservbyport_r" in
14164 "$define")
14165         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14166         case "$d_getservbyport_r_proto:$usethreads" in
14167         ":define")      d_getservbyport_r_proto=define
14168                 set d_getservbyport_r_proto getservbyport_r $hdrs
14169                 eval $hasproto ;;
14170         *)      ;;
14171         esac
14172         case "$d_getservbyport_r_proto" in
14173         define)
14174         case "$getservbyport_r_proto" in
14175         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14176         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14177         esac
14178         case "$getservbyport_r_proto" in
14179         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14180         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14181         esac
14182         case "$getservbyport_r_proto" in
14183         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14184         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14185         esac
14186         case "$getservbyport_r_proto" in
14187         ''|0)   d_getservbyport_r=undef
14188                 getservbyport_r_proto=0
14189                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14190         * )     case "$getservbyport_r_proto" in
14191                 REENTRANT_PROTO*) ;;
14192                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14193                 esac
14194                 echo "Prototype: $try" ;;
14195         esac
14196         ;;
14197         *)      case "$usethreads" in
14198                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14199                 esac
14200                 d_getservbyport_r=undef
14201                 getservbyport_r_proto=0
14202                 ;;
14203         esac
14204         ;;
14205 *)      getservbyport_r_proto=0
14206         ;;
14207 esac
14208
14209 : see if getservent_r exists
14210 set getservent_r d_getservent_r
14211 eval $inlibc
14212 case "$d_getservent_r" in
14213 "$define")
14214         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14215         case "$d_getservent_r_proto:$usethreads" in
14216         ":define")      d_getservent_r_proto=define
14217                 set d_getservent_r_proto getservent_r $hdrs
14218                 eval $hasproto ;;
14219         *)      ;;
14220         esac
14221         case "$d_getservent_r_proto" in
14222         define)
14223         case "$getservent_r_proto" in
14224         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14225         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14226         esac
14227         case "$getservent_r_proto" in
14228         ''|0) try='int getservent_r(struct servent*, char*, int);'
14229         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14230         esac
14231         case "$getservent_r_proto" in
14232         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14233         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14234         esac
14235         case "$getservent_r_proto" in
14236         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14237         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14238         esac
14239         case "$getservent_r_proto" in
14240         ''|0)   d_getservent_r=undef
14241                 getservent_r_proto=0
14242                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14243         * )     case "$getservent_r_proto" in
14244                 REENTRANT_PROTO*) ;;
14245                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14246                 esac
14247                 echo "Prototype: $try" ;;
14248         esac
14249         ;;
14250         *)      case "$usethreads" in
14251                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14252                 esac
14253                 d_getservent_r=undef
14254                 getservent_r_proto=0
14255                 ;;
14256         esac
14257         ;;
14258 *)      getservent_r_proto=0
14259         ;;
14260 esac
14261
14262 : see if prototypes for various getservxxx netdb.h functions are available
14263 echo " "
14264 set d_getservprotos getservent $i_netdb netdb.h
14265 eval $hasproto
14266
14267 : see if getspnam exists
14268 set getspnam d_getspnam
14269 eval $inlibc
14270
14271 : see if this is a shadow.h system
14272 set shadow.h i_shadow
14273 eval $inhdr
14274
14275 : see if getspnam_r exists
14276 set getspnam_r d_getspnam_r
14277 eval $inlibc
14278 case "$d_getspnam_r" in
14279 "$define")
14280         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14281         case "$d_getspnam_r_proto:$usethreads" in
14282         ":define")      d_getspnam_r_proto=define
14283                 set d_getspnam_r_proto getspnam_r $hdrs
14284                 eval $hasproto ;;
14285         *)      ;;
14286         esac
14287         case "$d_getspnam_r_proto" in
14288         define)
14289         case "$getspnam_r_proto" in
14290         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14291         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14292         esac
14293         case "$getspnam_r_proto" in
14294         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14295         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14296         esac
14297         case "$getspnam_r_proto" in
14298         ''|0)   d_getspnam_r=undef
14299                 getspnam_r_proto=0
14300                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14301         * )     case "$getspnam_r_proto" in
14302                 REENTRANT_PROTO*) ;;
14303                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14304                 esac
14305                 echo "Prototype: $try" ;;
14306         esac
14307         ;;
14308         *)      case "$usethreads" in
14309                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14310                 esac
14311                 d_getspnam_r=undef
14312                 getspnam_r_proto=0
14313                 ;;
14314         esac
14315         ;;
14316 *)      getspnam_r_proto=0
14317         ;;
14318 esac
14319
14320 : see if gettimeofday or ftime exists
14321 set gettimeofday d_gettimeod
14322 eval $inlibc
14323 case "$d_gettimeod" in
14324 "$undef")
14325         set ftime d_ftime 
14326         eval $inlibc
14327         ;;
14328 *)
14329         val="$undef"; set d_ftime; eval $setvar
14330         ;;
14331 esac
14332 case "$d_gettimeod$d_ftime" in
14333 "$undef$undef")
14334         echo " "
14335         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14336         ;;
14337 esac
14338
14339 : see if gmtime_r exists
14340 set gmtime_r d_gmtime_r
14341 eval $inlibc
14342 case "$d_gmtime_r" in
14343 "$define")
14344         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14345         case "$d_gmtime_r_proto:$usethreads" in
14346         ":define")      d_gmtime_r_proto=define
14347                 set d_gmtime_r_proto gmtime_r $hdrs
14348                 eval $hasproto ;;
14349         *)      ;;
14350         esac
14351         case "$d_gmtime_r_proto" in
14352         define)
14353         case "$gmtime_r_proto" in
14354         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14355         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14356         esac
14357         case "$gmtime_r_proto" in
14358         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14359         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14360         esac
14361         case "$gmtime_r_proto" in
14362         ''|0)   d_gmtime_r=undef
14363                 gmtime_r_proto=0
14364                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14365         * )     case "$gmtime_r_proto" in
14366                 REENTRANT_PROTO*) ;;
14367                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14368                 esac
14369                 echo "Prototype: $try" ;;
14370         esac
14371         ;;
14372         *)      case "$usethreads" in
14373                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14374                 esac
14375                 d_gmtime_r=undef
14376                 gmtime_r_proto=0
14377                 ;;
14378         esac
14379         ;;
14380 *)      gmtime_r_proto=0
14381         ;;
14382 esac
14383
14384 : see if hasmntopt exists
14385 set hasmntopt d_hasmntopt
14386 eval $inlibc
14387
14388 : see if this is a netinet/in.h or sys/in.h system
14389 set netinet/in.h i_niin sys/in.h i_sysin
14390 eval $inhdr
14391
14392 : see if arpa/inet.h has to be included
14393 set arpa/inet.h i_arpainet
14394 eval $inhdr
14395
14396 : see if htonl --and friends-- exists
14397 val=''
14398 set htonl val
14399 eval $inlibc
14400
14401 : Maybe they are macros.
14402 case "$val" in
14403 $undef)
14404         $cat >htonl.c <<EOM
14405 #include <stdio.h>
14406 #include <sys/types.h>
14407 #$i_niin I_NETINET_IN
14408 #$i_sysin I_SYS_IN
14409 #$i_arpainet I_ARPA_INET
14410 #ifdef I_NETINET_IN
14411 #include <netinet/in.h>
14412 #endif
14413 #ifdef I_SYS_IN
14414 #include <sys/in.h>
14415 #endif
14416 #ifdef I_ARPA_INET
14417 #include <arpa/inet.h>
14418 #endif
14419 #ifdef htonl
14420 printf("Defined as a macro.");
14421 #endif
14422 EOM
14423         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14424         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14425                 val="$define"
14426                 echo "But it seems to be defined as a macro." >&4
14427         fi
14428         $rm -f htonl.?
14429         ;;
14430 esac
14431 set d_htonl
14432 eval $setvar
14433
14434 : see if ilogbl exists
14435 set ilogbl d_ilogbl
14436 eval $inlibc
14437
14438 : index or strchr
14439 echo " "
14440 if set index val -f; eval $csym; $val; then
14441         if set strchr val -f d_strchr; eval $csym; $val; then
14442                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14443                         val="$define"
14444                         vali="$undef"
14445                         echo "strchr() found." >&4
14446                 else
14447                         val="$undef"
14448                         vali="$define"
14449                         echo "index() found." >&4
14450                 fi
14451         else
14452                 val="$undef"
14453                 vali="$define"
14454                 echo "index() found." >&4
14455         fi
14456 else
14457         if set strchr val -f d_strchr; eval $csym; $val; then
14458                 val="$define"
14459                 vali="$undef"
14460                 echo "strchr() found." >&4
14461         else
14462                 echo "No index() or strchr() found!" >&4
14463                 val="$undef"
14464                 vali="$undef"
14465         fi
14466 fi
14467 set d_strchr; eval $setvar
14468 val="$vali"
14469 set d_index; eval $setvar
14470
14471 : check whether inet_aton exists
14472 set inet_aton d_inetaton
14473 eval $inlibc
14474
14475 : Look for isascii
14476 echo " "
14477 $cat >isascii.c <<EOCP
14478 #include <stdio.h>
14479 #include <ctype.h>
14480 #$i_stdlib I_STDLIB
14481 #ifdef I_STDLIB
14482 #include <stdlib.h>
14483 #endif
14484 int main() {
14485         int c = 'A';
14486         if (isascii(c))
14487                 exit(0);
14488         else
14489                 exit(1);
14490 }
14491 EOCP
14492 set isascii
14493 if eval $compile; then
14494         echo "isascii() found." >&4
14495         val="$define"
14496 else
14497         echo "isascii() NOT found." >&4
14498         val="$undef"
14499 fi
14500 set d_isascii
14501 eval $setvar
14502 $rm -f isascii*
14503
14504 : see if isfinite exists
14505 set isfinite d_isfinite
14506 eval $inlibc
14507
14508 : see if isinf exists
14509 set isinf d_isinf
14510 eval $inlibc
14511
14512 : see if isnan exists
14513 set isnan d_isnan
14514 eval $inlibc
14515
14516 : see if isnanl exists
14517 set isnanl d_isnanl
14518 eval $inlibc
14519
14520 : see if killpg exists
14521 set killpg d_killpg
14522 eval $inlibc
14523
14524 : see if lchown exists
14525 echo " "
14526 $cat > try.c <<'EOCP'
14527 /* System header to define __stub macros and hopefully few prototypes,
14528     which can conflict with char lchown(); below.  */
14529 #include <assert.h>
14530 /* Override any gcc2 internal prototype to avoid an error.  */
14531 /* We use char because int might match the return type of a gcc2
14532    builtin and then its argument prototype would still apply.  */
14533 char lchown();
14534 int main() {
14535     /*  The GNU C library defines this for functions which it implements
14536         to always fail with ENOSYS.  Some functions are actually named
14537         something starting with __ and the normal name is an alias.  */
14538 #if defined (__stub_lchown) || defined (__stub___lchown)
14539 choke me
14540 #else
14541 lchown();
14542 #endif
14543 ; return 0; }
14544 EOCP
14545 set try
14546 if eval $compile; then
14547     $echo "lchown() found." >&4
14548     val="$define"
14549 else
14550     $echo "lchown() NOT found." >&4
14551     val="$undef"
14552 fi
14553 set d_lchown
14554 eval $setvar
14555
14556 : See if number of significant digits in a double precision number is known
14557 echo " "
14558 $cat >ldbl_dig.c <<EOM
14559 #$i_limits I_LIMITS
14560 #$i_float I_FLOAT
14561 #ifdef I_LIMITS
14562 #include <limits.h>
14563 #endif
14564 #ifdef I_FLOAT
14565 #include <float.h>
14566 #endif
14567 #ifdef LDBL_DIG
14568 printf("Contains LDBL_DIG");
14569 #endif
14570 EOM
14571 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14572 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14573         echo "LDBL_DIG found." >&4
14574         val="$define"
14575 else
14576         echo "LDBL_DIG NOT found." >&4
14577         val="$undef"
14578 fi
14579 $rm -f ldbl_dig.?
14580 set d_ldbl_dig
14581 eval $setvar
14582
14583 : see if this is a math.h system
14584 set math.h i_math
14585 eval $inhdr
14586
14587 d_libm_lib_version="$undef"
14588 case $i_math in
14589     $define)
14590         : check to see if math.h defines _LIB_VERSION
14591         echo " "
14592         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14593         $cat >try.c <<EOCP
14594 #include <unistd.h>
14595 #include <math.h>
14596 int main (int argc, char *argv[])
14597 {
14598     printf ("%d\n", _LIB_VERSION);
14599     return (0);
14600     } /* main */
14601 EOCP
14602         set try
14603         if eval $compile; then
14604             foo=`$run ./try`
14605             echo "Yes, it does ($foo)" >&4
14606             d_libm_lib_version="$define"
14607         else
14608             echo "No, it does not (probably harmless)\n" >&4
14609             fi
14610         $rm_try
14611         ;;
14612
14613     esac
14614
14615 : see if link exists
14616 set link d_link
14617 eval $inlibc
14618
14619 : see if localtime_r exists
14620 set localtime_r d_localtime_r
14621 eval $inlibc
14622 case "$d_localtime_r" in
14623 "$define")
14624         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14625         case "$d_localtime_r_proto:$usethreads" in
14626         ":define")      d_localtime_r_proto=define
14627                 set d_localtime_r_proto localtime_r $hdrs
14628                 eval $hasproto ;;
14629         *)      ;;
14630         esac
14631         case "$d_localtime_r_proto" in
14632         define)
14633         case "$localtime_r_proto" in
14634         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14635         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14636         esac
14637         case "$localtime_r_proto" in
14638         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14639         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14640         esac
14641         case "$localtime_r_proto" in
14642         ''|0)   d_localtime_r=undef
14643                 localtime_r_proto=0
14644                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14645         * )     case "$localtime_r_proto" in
14646                 REENTRANT_PROTO*) ;;
14647                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14648                 esac
14649                 echo "Prototype: $try" ;;
14650         esac
14651         ;;
14652         *)      case "$usethreads" in
14653                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14654                 esac
14655                 d_localtime_r=undef
14656                 localtime_r_proto=0
14657                 ;;
14658         esac
14659         ;;
14660 *)      localtime_r_proto=0
14661         ;;
14662 esac
14663
14664 : see if localtime_r calls tzset
14665 case "$localtime_r_proto" in
14666 REENTRANT_PROTO*)
14667         $cat >try.c <<EOCP
14668 /*  Does our libc's localtime_r call tzset ?
14669  *  return 0 if so, 1 otherwise.
14670  */
14671 #include <sys/types.h>
14672 #include <unistd.h>
14673 #include <time.h>
14674 #include <string.h>
14675 #include <malloc.h>
14676 int main()
14677 {
14678     time_t t = time(0L);
14679     char w_tz[]="TZ" "=GMT+5",
14680          e_tz[]="TZ" "=GMT-5",
14681         *tz_e = (char*)malloc(16),
14682         *tz_w = (char*)malloc(16);
14683     struct tm tm_e, tm_w;
14684     memset(&tm_e,'\0',sizeof(struct tm));
14685     memset(&tm_w,'\0',sizeof(struct tm));
14686     strcpy(tz_e,e_tz);
14687     strcpy(tz_w,w_tz);
14688
14689     putenv(tz_e);
14690     localtime_r(&t, &tm_e);
14691
14692     putenv(tz_w);
14693     localtime_r(&t, &tm_w);
14694
14695     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14696         return 1;
14697     return 0;
14698 }
14699 EOCP
14700         set try
14701         if eval $compile; then
14702             if $run ./try; then
14703                 d_localtime_r_needs_tzset=undef;
14704             else
14705                 d_localtime_r_needs_tzset=define;
14706             fi;
14707         else
14708             d_localtime_r_needs_tzset=undef;
14709         fi;
14710      ;;
14711   *)
14712      d_localtime_r_needs_tzset=undef;
14713      ;;
14714 esac
14715 $rm_try
14716
14717 : see if localeconv exists
14718 set localeconv d_locconv
14719 eval $inlibc
14720
14721 : see if lockf exists
14722 set lockf d_lockf
14723 eval $inlibc
14724
14725 : see if prototype for lseek is available
14726 echo " "
14727 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14728 eval $hasproto
14729
14730 : see if lstat exists
14731 set lstat d_lstat
14732 eval $inlibc
14733
14734 : see if madvise exists
14735 set madvise d_madvise
14736 eval $inlibc
14737
14738 : see if malloc_size exists
14739 set malloc_size d_malloc_size
14740 eval $inlibc
14741
14742 : see if malloc_size_good exists
14743 set malloc_good_size d_malloc_good_size
14744 eval $inlibc
14745
14746 : see if mblen exists
14747 set mblen d_mblen
14748 eval $inlibc
14749
14750 : see if mbstowcs exists
14751 set mbstowcs d_mbstowcs
14752 eval $inlibc
14753
14754 : see if mbtowc exists
14755 set mbtowc d_mbtowc
14756 eval $inlibc
14757
14758 : see if memchr exists
14759 set memchr d_memchr
14760 eval $inlibc
14761
14762 : see if memcmp exists
14763 set memcmp d_memcmp
14764 eval $inlibc
14765
14766 : see if memcpy exists
14767 set memcpy d_memcpy
14768 eval $inlibc
14769
14770 : see if memmove exists
14771 set memmove d_memmove
14772 eval $inlibc
14773
14774 : see if memset exists
14775 set memset d_memset
14776 eval $inlibc
14777
14778 : see if mkdir exists
14779 set mkdir d_mkdir
14780 eval $inlibc
14781
14782 : see if mkdtemp exists
14783 set mkdtemp d_mkdtemp
14784 eval $inlibc
14785
14786 : see if mkfifo exists
14787 set mkfifo d_mkfifo
14788 eval $inlibc
14789
14790 : see if mkstemp exists
14791 set mkstemp d_mkstemp
14792 eval $inlibc
14793
14794 : see if mkstemps exists
14795 set mkstemps d_mkstemps
14796 eval $inlibc
14797
14798 : see if mktime exists
14799 set mktime d_mktime
14800 eval $inlibc
14801
14802 : see if this is a sys/mman.h system
14803 set sys/mman.h i_sysmman
14804 eval $inhdr
14805
14806 : see if mmap exists
14807 set mmap d_mmap
14808 eval $inlibc
14809 : see what shmat returns
14810 : default to something harmless
14811 mmaptype='void *'
14812 case "$i_sysmman$d_mmap" in
14813 "$define$define")
14814         $cat >mmap.c <<'END'
14815 #include <sys/mman.h>
14816 void *mmap();
14817 END
14818         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14819                 mmaptype='void *'
14820         else
14821                 mmaptype='caddr_t'
14822         fi
14823         echo "and it returns ($mmaptype)." >&4
14824         ;;
14825 esac
14826
14827
14828
14829 : see if sqrtl exists
14830 set sqrtl d_sqrtl
14831 eval $inlibc
14832
14833 : see if scalbnl exists
14834 set scalbnl d_scalbnl
14835 eval $inlibc
14836
14837 : see if modfl exists
14838 set modfl d_modfl
14839 eval $inlibc
14840
14841 : see if prototype for modfl is available
14842 echo " "
14843 set d_modflproto modfl $i_math math.h
14844 eval $hasproto
14845
14846 d_modfl_pow32_bug="$undef"
14847
14848 case "$d_longdbl$d_modfl" in
14849 $define$define)
14850         $cat <<EOM
14851 Checking to see whether your modfl() is okay for large values...
14852 EOM
14853 $cat >try.c <<EOCP
14854 #include <math.h>
14855 #include <stdio.h>
14856 EOCP
14857 if $test "X$d_modflproto" != "X$define"; then
14858         $cat >>try.c <<EOCP
14859 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14860 long double modfl (long double, long double *);
14861 EOCP
14862 fi
14863 $cat >>try.c <<EOCP
14864 int main() {
14865     long double nv = 4294967303.15;
14866     long double v, w;
14867     v = modfl(nv, &w);
14868 #ifdef __GLIBC__
14869     printf("glibc");
14870 #endif
14871     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14872     return 0;
14873 }
14874 EOCP
14875         case "$osname:$gccversion" in
14876         aix:)   saveccflags="$ccflags"
14877                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14878         esac
14879         set try
14880         if eval $compile; then
14881                 foo=`$run ./try`
14882                 case "$foo" in
14883                 *" 4294967303.150000 1.150000 4294967302.000000")
14884                         echo >&4 "Your modfl() is broken for large values."
14885                         d_modfl_pow32_bug="$define"
14886                         case "$foo" in
14887                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14888                         ;;
14889                         esac
14890                         ;;
14891                 *" 4294967303.150000 0.150000 4294967303.000000")
14892                         echo >&4 "Your modfl() seems okay for large values."
14893                         ;;
14894                 *)      echo >&4 "I don't understand your modfl() at all."
14895                         d_modfl="$undef"
14896                         ;;
14897                 esac
14898                 $rm_try
14899         else
14900                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14901                 d_modfl="$undef"
14902         fi
14903         case "$osname:$gccversion" in
14904         aix:)   ccflags="$saveccflags" ;; # restore
14905         esac
14906         ;;
14907 esac
14908
14909 if $test "$uselongdouble" = "$define"; then
14910     message=""
14911     if $test "$d_sqrtl" != "$define"; then
14912         message="$message sqrtl"
14913     fi
14914     if $test "$d_modfl" != "$define"; then
14915         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14916             echo "You have both aintl and copysignl, so I can emulate modfl."
14917         else
14918             message="$message modfl"
14919         fi
14920     fi
14921     if $test "$d_frexpl" != "$define"; then
14922         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14923             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14924         else
14925             message="$message frexpl"
14926         fi
14927     fi
14928
14929     if $test "$message" != ""; then
14930         $cat <<EOM >&4
14931
14932 *** You requested the use of long doubles but you do not seem to have
14933 *** the following mathematical functions needed for long double support:
14934 ***    $message
14935 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14936 *** Cannot continue, aborting.
14937
14938 EOM
14939
14940         exit 1
14941     fi
14942 fi
14943
14944 : see if mprotect exists
14945 set mprotect d_mprotect
14946 eval $inlibc
14947
14948 : see if msgctl exists
14949 set msgctl d_msgctl
14950 eval $inlibc
14951
14952 : see if msgget exists
14953 set msgget d_msgget
14954 eval $inlibc
14955
14956 : see if msgsnd exists
14957 set msgsnd d_msgsnd
14958 eval $inlibc
14959
14960 : see if msgrcv exists
14961 set msgrcv d_msgrcv
14962 eval $inlibc
14963
14964 : see how much of the 'msg*(2)' library is present.
14965 h_msg=true
14966 echo " "
14967 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14968 *"$undef"*) h_msg=false;;
14969 esac
14970 case "$osname" in
14971 freebsd)
14972     case "`ipcs 2>&1`" in
14973     "SVID messages"*"not configured"*)
14974         echo "Your $osname does not have the msg*(2) configured." >&4
14975         h_msg=false
14976         val="$undef"
14977         set msgctl d_msgctl
14978         eval $setvar
14979         set msgget d_msgget
14980         eval $setvar
14981         set msgsnd d_msgsnd
14982         eval $setvar
14983         set msgrcv d_msgrcv
14984         eval $setvar
14985         ;;
14986     esac
14987     ;;
14988 esac
14989 : we could also check for sys/ipc.h ...
14990 if $h_msg && $test `./findhdr sys/msg.h`; then
14991         echo "You have the full msg*(2) library." >&4
14992         val="$define"
14993 else
14994         echo "You don't have the full msg*(2) library." >&4
14995         val="$undef"
14996 fi
14997 set d_msg
14998 eval $setvar
14999
15000
15001 echo " "
15002 echo "Checking to see if your system supports struct msghdr..." >&4
15003 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15004 eval $hasstruct
15005 case "$d_msghdr_s" in
15006 "$define")      echo "Yes, it does."   ;;
15007 *)              echo "No, it doesn't." ;;
15008 esac
15009
15010
15011 : see if msync exists
15012 set msync d_msync
15013 eval $inlibc
15014
15015 : see if munmap exists
15016 set munmap d_munmap
15017 eval $inlibc
15018
15019 : see if nice exists
15020 set nice d_nice
15021 eval $inlibc
15022
15023 : see if this is a langinfo.h system
15024 set langinfo.h i_langinfo
15025 eval $inhdr
15026
15027 : see if nl_langinfo exists
15028 set nl_langinfo d_nl_langinfo
15029 eval $inlibc
15030
15031 : check for length of character
15032 echo " "
15033 case "$charsize" in
15034 '')
15035         echo "Checking to see how big your characters are (hey, you never know)..." >&4
15036         $cat >try.c <<EOCP
15037 #include <stdio.h>
15038 #$i_stdlib I_STDLIB
15039 #ifdef I_STDLIB
15040 #include <stdlib.h>
15041 #endif
15042 int main()
15043 {
15044     printf("%d\n", (int)sizeof(char));
15045     exit(0);
15046 }
15047 EOCP
15048         set try
15049         if eval $compile_ok; then
15050                 dflt=`$run ./try`
15051         else
15052                 dflt='1'
15053                 echo "(I can't seem to compile the test program.  Guessing...)"
15054         fi
15055         ;;
15056 *)
15057         dflt="$charsize"
15058         ;;
15059 esac
15060 rp="What is the size of a character (in bytes)?"
15061 . ./myread
15062 charsize="$ans"
15063 $rm_try
15064
15065 : check for volatile keyword
15066 echo " "
15067 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15068 $cat >try.c <<'EOCP'
15069 int main()
15070 {
15071         typedef struct _goo_struct goo_struct;
15072         goo_struct * volatile goo = ((goo_struct *)0);
15073         struct _goo_struct {
15074                 long long_int;
15075                 int reg_int;
15076                 char char_var;
15077         };
15078         typedef unsigned short foo_t;
15079         char *volatile foo;
15080         volatile int bar;
15081         volatile foo_t blech;
15082         foo = foo;
15083 }
15084 EOCP
15085 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15086         val="$define"
15087         echo "Yup, it does."
15088 else
15089         val="$undef"
15090         echo "Nope, it doesn't."
15091 fi
15092 set d_volatile
15093 eval $setvar
15094 $rm_try
15095
15096
15097 echo " "
15098 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15099
15100 case "$use64bitint:$d_quad:$quadtype" in
15101 define:define:?*)
15102         ivtype="$quadtype"
15103         uvtype="$uquadtype"
15104         ivsize=8
15105         uvsize=8
15106         ;;
15107 *)      ivtype="long"
15108         uvtype="unsigned long"
15109         ivsize=$longsize
15110         uvsize=$longsize
15111         ;;
15112 esac
15113
15114 case "$uselongdouble:$d_longdbl" in
15115 define:define)
15116         nvtype="long double"
15117         nvsize=$longdblsize
15118         ;;
15119 *)      nvtype=double
15120         nvsize=$doublesize
15121         ;;
15122 esac
15123
15124 $echo "(IV will be "$ivtype", $ivsize bytes)"
15125 $echo "(UV will be "$uvtype", $uvsize bytes)"
15126 $echo "(NV will be "$nvtype", $nvsize bytes)"
15127
15128 $cat >try.c <<EOCP
15129 #$i_inttypes I_INTTYPES
15130 #ifdef I_INTTYPES
15131 #include <inttypes.h>
15132 #endif
15133 #include <stdio.h>
15134 int main() {
15135 #ifdef INT8
15136    int8_t i =  INT8_MAX;
15137   uint8_t u = UINT8_MAX;
15138   printf("int8_t\n");
15139 #endif
15140 #ifdef INT16
15141    int16_t i =  INT16_MAX;
15142   uint16_t i = UINT16_MAX;
15143   printf("int16_t\n");
15144 #endif
15145 #ifdef INT32
15146    int32_t i =  INT32_MAX;
15147   uint32_t u = UINT32_MAX;
15148   printf("int32_t\n");
15149 #endif
15150 }
15151 EOCP
15152
15153 case "$i8type" in
15154 '')     case "$charsize" in
15155         1)      i8type=char
15156                 u8type="unsigned char"
15157                 i8size=$charsize
15158                 u8size=$charsize
15159                 ;;
15160         esac
15161         ;;
15162 esac
15163 case "$i8type" in
15164 '')     set try -DINT8
15165         if eval $compile; then
15166                 case "`$run ./try`" in
15167                 int8_t) i8type=int8_t
15168                         u8type=uint8_t
15169                         i8size=1
15170                         u8size=1
15171                         ;;
15172                 esac
15173         fi
15174         ;;
15175 esac
15176 case "$i8type" in
15177 '')     if $test $charsize -ge 1; then
15178                 i8type=char
15179                 u8type="unsigned char"
15180                 i8size=$charsize
15181                 u8size=$charsize
15182         fi
15183         ;;
15184 esac
15185
15186 case "$i16type" in
15187 '')     case "$shortsize" in
15188         2)      i16type=short
15189                 u16type="unsigned short"
15190                 i16size=$shortsize
15191                 u16size=$shortsize
15192                 ;;
15193         esac
15194         ;;
15195 esac
15196 case "$i16type" in
15197 '')     set try -DINT16
15198         if eval $compile; then
15199                 case "`$run ./try`" in
15200                 int16_t)
15201                         i16type=int16_t
15202                         u16type=uint16_t
15203                         i16size=2
15204                         u16size=2
15205                         ;;
15206                 esac
15207         fi
15208         ;;
15209 esac
15210 case "$i16type" in
15211 '')     if $test $shortsize -ge 2; then
15212                 i16type=short
15213                 u16type="unsigned short"
15214                 i16size=$shortsize
15215                 u16size=$shortsize
15216         fi
15217         ;;
15218 esac
15219
15220 case "$i32type" in
15221 '')     case "$longsize" in
15222         4)      i32type=long
15223                 u32type="unsigned long"
15224                 i32size=$longsize
15225                 u32size=$longsize
15226                 ;;
15227         *)      case "$intsize" in
15228                 4)      i32type=int
15229                         u32type="unsigned int"
15230                         i32size=$intsize
15231                         u32size=$intsize
15232                         ;;
15233                 esac
15234                 ;;
15235         esac
15236         ;;
15237 esac
15238 case "$i32type" in
15239 '')     set try -DINT32
15240         if eval $compile; then
15241                 case "`$run ./try`" in
15242                 int32_t)
15243                         i32type=int32_t
15244                         u32type=uint32_t
15245                         i32size=4
15246                         u32size=4
15247                         ;;
15248                 esac
15249         fi
15250         ;;
15251 esac
15252 case "$i32type" in
15253 '')     if $test $intsize -ge 4; then
15254                 i32type=int
15255                 u32type="unsigned int"
15256                 i32size=$intsize
15257                 u32size=$intsize
15258         fi
15259         ;;
15260 esac
15261
15262 case "$i64type" in
15263 '')     case "$d_quad:$quadtype" in
15264         define:?*)
15265                 i64type="$quadtype"
15266                 u64type="$uquadtype"
15267                 i64size=8
15268                 u64size=8
15269                 ;;
15270         esac
15271         ;;
15272 esac
15273
15274 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15275 : volatile so that the compiler has to store it out to memory.
15276 if test X"$d_volatile" = X"$define"; then
15277         volatile=volatile
15278 fi
15279 $cat <<EOP >try.c
15280 #include <stdio.h>
15281 #$i_stdlib I_STDLIB
15282 #ifdef I_STDLIB
15283 #include <stdlib.h>
15284 #endif
15285 #include <sys/types.h>
15286 #include <signal.h>
15287 #ifdef SIGFPE
15288 $volatile int bletched = 0;
15289 $signal_t blech(int s) { bletched = 1; }
15290 #endif
15291 int main() {
15292     $uvtype u = 0;
15293     $nvtype d;
15294     int     n = 8 * $uvsize;
15295     int     i;
15296 #ifdef SIGFPE
15297     signal(SIGFPE, blech);
15298 #endif
15299
15300     for (i = 0; i < n; i++) {
15301       u = u << 1 | ($uvtype)1;
15302       d = ($nvtype)u;
15303       if (($uvtype)d != u)
15304         break;
15305       if (d <= 0)
15306         break;
15307       d = ($nvtype)(u - 1);
15308       if (($uvtype)d != (u - 1))
15309         break;
15310 #ifdef SIGFPE
15311       if (bletched)
15312         break;
15313 #endif
15314     }
15315     printf("%d\n", ((i == n) ? -n : i));
15316     exit(0);
15317 }
15318 EOP
15319 set try
15320
15321 d_nv_preserves_uv="$undef"
15322 if eval $compile; then
15323         nv_preserves_uv_bits="`$run ./try`"
15324 fi
15325 case "$nv_preserves_uv_bits" in
15326 \-[1-9]*)
15327         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15328         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15329         d_nv_preserves_uv="$define"
15330         ;;
15331 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15332         d_nv_preserves_uv="$undef" ;;
15333 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15334         nv_preserves_uv_bits="0" ;;
15335 esac
15336 $rm_try
15337
15338 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15339 : volatile so that the compiler has to store it out to memory.
15340 if test X"$d_volatile" = X"$define"; then
15341         volatile=volatile
15342 fi
15343 $cat <<EOP >try.c
15344 #include <stdio.h>
15345 #$i_stdlib I_STDLIB
15346 #ifdef I_STDLIB
15347 #include <stdlib.h>
15348 #endif
15349 #$i_string I_STRING
15350 #ifdef I_STRING
15351 #  include <string.h>
15352 #else
15353 #  include <strings.h>
15354 #endif
15355 #include <sys/types.h>
15356 #include <signal.h>
15357 #ifdef SIGFPE
15358 $volatile int bletched = 0;
15359 $signal_t blech(int s) { bletched = 1; }
15360 #endif
15361
15362 int checkit($nvtype d, char *where) {
15363     unsigned char *p = (char *)&d;
15364     unsigned char *end = p + sizeof(d);
15365     int fail = 0;
15366
15367     while (p < end)
15368         fail += *p++;
15369
15370     if (!fail)
15371         return 0;
15372
15373     p = (char *)&d;
15374     printf("No - %s: 0x", where);
15375     while (p < end)
15376         printf ("%02X", *p++);
15377     printf("\n");
15378     return 1;
15379 }
15380
15381 int main(int argc, char **argv) {
15382     $nvtype d = 0.0;
15383     int fail = 0;
15384     fail += checkit(d, "0.0");
15385
15386     /* The compiler shouldn't be assuming that bletched is 0  */
15387     d = bletched;
15388
15389     fail += checkit(d, "bleched");
15390
15391 #ifdef SIGFPE
15392     signal(SIGFPE, blech);
15393 #endif
15394
15395     /* Paranoia - the compiler should have no way of knowing that ANSI says
15396        that argv[argc] will always be NULL.  Actually, if it did assume this it
15397        would be buggy, as this is C and main() can be called from elsewhere in
15398        the program.  */
15399     d = argv[argc] ? 1 : 0;
15400
15401     if (d) {
15402         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15403     }
15404
15405     fail += checkit(d, "ternary");
15406
15407     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15408
15409     if (d != 0.0) {
15410         printf("No - memset doesn't give 0.0\n");
15411         /* This might just blow up:  */
15412         printf("(gives %g)\n", d);
15413         return 1;
15414     }
15415
15416 #ifdef SIGFPE
15417     if (bletched) {
15418         printf("No - something bleched\n");
15419         return 1;
15420     }
15421 #endif
15422     if (fail) {
15423       printf("No - %d fail(s)\n", fail);
15424       return 1;
15425     }
15426     printf("Yes\n");
15427     return 0;
15428 }
15429 EOP
15430 set try
15431
15432 d_nv_zero_is_allbits_zero="$undef"
15433 if eval $compile; then
15434     xxx="`$run ./try`"
15435     case "$?" in
15436         0)
15437             case "$xxx" in
15438                 Yes)  cat >&4 <<EOM
15439 0.0 is represented as all bits zero in memory
15440 EOM
15441                     d_nv_zero_is_allbits_zero="$define"
15442                     ;;
15443                 *)  cat >&4 <<EOM
15444 0.0 is not represented as all bits zero in memory
15445 EOM
15446                     d_nv_zero_is_allbits_zero="$undef"
15447                     ;;
15448             esac
15449             ;;
15450         *)  cat >&4 <<EOM
15451 0.0 is not represented as all bits zero in memory
15452 EOM
15453             d_nv_zero_is_allbits_zero="$undef"
15454             ;;
15455     esac
15456 fi
15457 $rm_try
15458
15459 : check for off64_t
15460 echo " "
15461 echo "Checking to see if you have off64_t..." >&4
15462 $cat >try.c <<EOCP
15463 #include <sys/types.h>
15464 #include <unistd.h>
15465 int main() { off64_t x = 7; }
15466 EOCP
15467 set try
15468 if eval $compile; then
15469         val="$define"
15470         echo "You have off64_t."
15471 else
15472         val="$undef"
15473         echo "You do not have off64_t."
15474         case "$lseeksize" in
15475         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15476         esac
15477 fi
15478 $rm_try
15479 set d_off64_t
15480 eval $setvar
15481
15482 : how to create joinable pthreads
15483 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15484         echo " "
15485         echo "Checking what constant to use for creating joinable pthreads..." >&4
15486         $cat >try.c <<'EOCP'
15487 #include <pthread.h>
15488 int main() {
15489     int detachstate = JOINABLE;
15490 }
15491 EOCP
15492         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15493         if eval $compile; then
15494                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15495                 val="$undef" # Yes, undef.
15496                 set d_old_pthread_create_joinable
15497                 eval $setvar
15498                 val=""
15499                 set old_pthread_create_joinable
15500                 eval $setvar
15501         else
15502                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15503                 if eval $compile; then
15504                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15505                         val="$define"
15506                         set d_old_pthread_create_joinable
15507                         eval $setvar
15508                         val=PTHREAD_CREATE_UNDETACHED
15509                         set old_pthread_create_joinable
15510                         eval $setvar
15511                 else
15512                         set try -DJOINABLE=__UNDETACHED
15513                         if eval $compile; then
15514                                 echo "You seem to use __UNDETACHED." >&4
15515                                 val="$define"
15516                                 set d_old_pthread_create_joinable
15517                                 eval $setvar
15518                                 val=__UNDETACHED
15519                                 set old_pthread_create_joinable
15520                                 eval $setvar
15521                         else
15522                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15523                                 val="$define"
15524                                 set d_old_pthread_create_joinable
15525                                 eval $setvar
15526                                 val=0
15527                                 set old_pthread_create_joinable
15528                                 eval $setvar
15529                         fi
15530                 fi
15531         fi
15532         $rm_try
15533 else
15534     d_old_pthread_create_joinable="$undef"
15535     old_pthread_create_joinable=""
15536 fi
15537
15538 : see if pause exists
15539 set pause d_pause
15540 eval $inlibc
15541
15542 : see if pipe exists
15543 set pipe d_pipe
15544 eval $inlibc
15545
15546 : see if poll exists
15547 set poll d_poll
15548 eval $inlibc
15549
15550 : see if readlink exists
15551 set readlink d_readlink
15552 eval $inlibc
15553
15554 echo " "
15555 procselfexe=''
15556 val="$undef"
15557 case "$d_readlink" in
15558 "$define")
15559         if $issymlink /proc/self/exe ; then
15560                 $ls -l /proc/self/exe > reflect
15561                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15562                         echo "You have Linux-like /proc/self/exe."
15563                         procselfexe='"/proc/self/exe"'
15564                         val="$define"
15565                 fi
15566         fi
15567         if $issymlink /proc/curproc/file ; then
15568                 $ls -l /proc/curproc/file > reflect
15569                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15570                         echo "You have BSD-like /proc/curproc/file."
15571                         procselfexe='"/proc/curproc/file"'
15572                         val="$define"
15573                 fi
15574         fi
15575         ;;
15576 esac
15577 $rm -f reflect
15578 set d_procselfexe
15579 eval $setvar
15580
15581 : backward compatibility for d_hvfork
15582 if test X$d_hvfork != X; then
15583         d_vfork="$d_hvfork"
15584         d_hvfork=''
15585 fi
15586 : see if there is a vfork
15587 val=''
15588 set vfork val
15589 eval $inlibc
15590
15591 d_pseudofork=$undef
15592
15593 : Ok, but do we want to use it. vfork is reportedly unreliable in
15594 : perl on Solaris 2.x, and probably elsewhere.
15595 case "$val" in
15596 $define)
15597         echo " "
15598         case "$usevfork" in
15599         false) dflt='n';;
15600         *) dflt='y';;
15601         esac
15602         cat <<'EOM'
15603
15604 Perl can only use a vfork() that doesn't suffer from strict
15605 restrictions on calling functions or modifying global data in
15606 the child.  For example, glibc-2.1 contains such a vfork()
15607 that is unsuitable.  If your system provides a proper fork()
15608 call, chances are that you do NOT want perl to use vfork().
15609
15610 EOM
15611         rp="Do you still want to use vfork()?"
15612         . ./myread
15613         case "$ans" in
15614         y|Y) ;;
15615         *)
15616                 echo "Ok, we won't use vfork()."
15617                 val="$undef"
15618                 ;;
15619         esac
15620         ;;
15621 esac
15622 set d_vfork
15623 eval $setvar
15624 case "$d_vfork" in
15625 $define) usevfork='true';;
15626 *) usevfork='false';;
15627 esac
15628
15629 : see whether the pthread_atfork exists
15630 $cat >try.c <<EOP
15631 #include <pthread.h>
15632 #include <stdio.h>
15633 int main() {
15634 #ifdef  PTHREAD_ATFORK
15635         pthread_atfork(NULL,NULL,NULL);
15636 #endif
15637 }
15638 EOP
15639
15640 : see if pthread_atfork exists
15641 set try -DPTHREAD_ATFORK
15642 if eval $compile; then
15643     val="$define"
15644 else
15645     val="$undef"
15646 fi
15647 case "$usethreads" in
15648 $define)
15649         case "$val" in
15650         $define) echo 'pthread_atfork found.' >&4        ;;
15651         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15652         esac
15653 esac
15654 set d_pthread_atfork
15655 eval $setvar
15656
15657 : see if pthread_attr_setscope exists
15658 set pthread_attr_setscope d_pthread_attr_setscope
15659 eval $inlibc
15660
15661
15662 : see whether the various POSIXish _yields exist
15663 $cat >try.c <<EOP
15664 #include <pthread.h>
15665 #include <stdio.h>
15666 int main() {
15667 #ifdef SCHED_YIELD
15668         sched_yield();
15669 #else
15670 #ifdef PTHREAD_YIELD
15671         pthread_yield();
15672 #else
15673 #ifdef PTHREAD_YIELD_NULL
15674         pthread_yield(NULL);
15675 #endif
15676 #endif
15677 #endif
15678 }
15679 EOP
15680 : see if sched_yield exists
15681 set try -DSCHED_YIELD
15682 if eval $compile; then
15683     val="$define"
15684     sched_yield='sched_yield()'
15685 else
15686     val="$undef"
15687 fi
15688 case "$usethreads" in
15689 $define)
15690         case "$val" in
15691         $define) echo 'sched_yield() found.' >&4        ;;
15692         *)       echo 'sched_yield() NOT found.' >&4    ;;
15693         esac
15694 esac
15695 set d_sched_yield
15696 eval $setvar
15697
15698 : see if pthread_yield exists
15699 set try -DPTHREAD_YIELD
15700 if eval $compile; then
15701     val="$define"
15702     case "$sched_yield" in
15703     '') sched_yield='pthread_yield()' ;;
15704     esac
15705 else
15706     set try -DPTHREAD_YIELD_NULL
15707     if eval $compile; then
15708         val="$define"
15709         case "$sched_yield" in
15710         '') sched_yield='pthread_yield(NULL)' ;;
15711         esac
15712     else
15713         val="$undef"
15714     fi
15715 fi
15716 case "$usethreads" in
15717 $define)
15718         case "$val" in
15719         $define) echo 'pthread_yield() found.' >&4      ;;
15720         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15721         esac
15722         ;;
15723 esac
15724 set d_pthread_yield
15725 eval $setvar
15726 case "$sched_yield" in
15727 '') sched_yield=undef ;;
15728 esac
15729 $rm_try
15730
15731 : see if random_r exists
15732 set random_r d_random_r
15733 eval $inlibc
15734 case "$d_random_r" in
15735 "$define")
15736         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15737         case "$d_random_r_proto:$usethreads" in
15738         ":define")      d_random_r_proto=define
15739                 set d_random_r_proto random_r $hdrs
15740                 eval $hasproto ;;
15741         *)      ;;
15742         esac
15743         case "$d_random_r_proto" in
15744         define)
15745         case "$random_r_proto" in
15746         ''|0) try='int random_r(int*, struct random_data*);'
15747         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15748         esac
15749         case "$random_r_proto" in
15750         ''|0) try='int random_r(long*, struct random_data*);'
15751         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15752         esac
15753         case "$random_r_proto" in
15754         ''|0) try='int random_r(struct random_data*, int32_t*);'
15755         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15756         esac
15757         case "$random_r_proto" in
15758         ''|0)   d_random_r=undef
15759                 random_r_proto=0
15760                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15761         * )     case "$random_r_proto" in
15762                 REENTRANT_PROTO*) ;;
15763                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15764                 esac
15765                 echo "Prototype: $try" ;;
15766         esac
15767         ;;
15768         *)      case "$usethreads" in
15769                 define) echo "random_r has no prototype, not using it." >&4 ;;
15770                 esac
15771                 d_random_r=undef
15772                 random_r_proto=0
15773                 ;;
15774         esac
15775         ;;
15776 *)      random_r_proto=0
15777         ;;
15778 esac
15779
15780 : see if readdir and friends exist
15781 set readdir d_readdir
15782 eval $inlibc
15783 set seekdir d_seekdir
15784 eval $inlibc
15785 set telldir d_telldir
15786 eval $inlibc
15787 set rewinddir d_rewinddir
15788 eval $inlibc
15789
15790 : see if readdir64_r exists
15791 set readdir64_r d_readdir64_r
15792 eval $inlibc
15793 case "$d_readdir64_r" in
15794 "$define")
15795         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15796         case "$d_readdir64_r_proto:$usethreads" in
15797         ":define")      d_readdir64_r_proto=define
15798                 set d_readdir64_r_proto readdir64_r $hdrs
15799                 eval $hasproto ;;
15800         *)      ;;
15801         esac
15802         case "$d_readdir64_r_proto" in
15803         define)
15804         case "$readdir64_r_proto" in
15805         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15806         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15807         esac
15808         case "$readdir64_r_proto" in
15809         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15810         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15811         esac
15812         case "$readdir64_r_proto" in
15813         ''|0)   d_readdir64_r=undef
15814                 readdir64_r_proto=0
15815                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15816         * )     case "$readdir64_r_proto" in
15817                 REENTRANT_PROTO*) ;;
15818                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15819                 esac
15820                 echo "Prototype: $try" ;;
15821         esac
15822         ;;
15823         *)      case "$usethreads" in
15824                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15825                 esac
15826                 d_readdir64_r=undef
15827                 readdir64_r_proto=0
15828                 ;;
15829         esac
15830         ;;
15831 *)      readdir64_r_proto=0
15832         ;;
15833 esac
15834
15835 : see if readdir_r exists
15836 set readdir_r d_readdir_r
15837 eval $inlibc
15838 case "$d_readdir_r" in
15839 "$define")
15840         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15841         case "$d_readdir_r_proto:$usethreads" in
15842         ":define")      d_readdir_r_proto=define
15843                 set d_readdir_r_proto readdir_r $hdrs
15844                 eval $hasproto ;;
15845         *)      ;;
15846         esac
15847         case "$d_readdir_r_proto" in
15848         define)
15849         case "$readdir_r_proto" in
15850         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15851         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15852         esac
15853         case "$readdir_r_proto" in
15854         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15855         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15856         esac
15857         case "$readdir_r_proto" in
15858         ''|0)   d_readdir_r=undef
15859                 readdir_r_proto=0
15860                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15861         * )     case "$readdir_r_proto" in
15862                 REENTRANT_PROTO*) ;;
15863                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15864                 esac
15865                 echo "Prototype: $try" ;;
15866         esac
15867         ;;
15868         *)      case "$usethreads" in
15869                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15870                 esac
15871                 d_readdir_r=undef
15872                 readdir_r_proto=0
15873                 ;;
15874         esac
15875         ;;
15876 *)      readdir_r_proto=0
15877         ;;
15878 esac
15879
15880 : see if readv exists
15881 set readv d_readv
15882 eval $inlibc
15883
15884 : see if recvmsg exists
15885 set recvmsg d_recvmsg
15886 eval $inlibc
15887
15888 : see if rename exists
15889 set rename d_rename
15890 eval $inlibc
15891
15892 : see if rmdir exists
15893 set rmdir d_rmdir
15894 eval $inlibc
15895
15896 : see if memory.h is available.
15897 val=''
15898 set memory.h val
15899 eval $inhdr
15900
15901 : See if it conflicts with string.h
15902 case "$val" in
15903 $define)
15904         case "$strings" in
15905         '') ;;
15906         *)
15907                 $cppstdin $cppflags $cppminus < $strings > mem.h
15908                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15909                         echo " "
15910                         echo "We won't be including <memory.h>."
15911                         val="$undef"
15912                 fi
15913                 $rm -f mem.h
15914                 ;;
15915         esac
15916 esac
15917 set i_memory
15918 eval $setvar
15919
15920 : can bcopy handle overlapping blocks?
15921 echo " "
15922 val="$undef"
15923 case "$d_memmove" in
15924 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15925 *)      case "$d_bcopy" in
15926         "$define")
15927                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15928                 $cat >try.c <<EOCP
15929 #$i_memory I_MEMORY
15930 #$i_stdlib I_STDLIB
15931 #$i_string I_STRING
15932 #$i_unistd I_UNISTD
15933 EOCP
15934         $cat >>try.c <<'EOCP'
15935 #include <stdio.h>
15936 #ifdef I_MEMORY
15937 #  include <memory.h>
15938 #endif
15939 #ifdef I_STDLIB
15940 #  include <stdlib.h>
15941 #endif
15942 #ifdef I_STRING
15943 #  include <string.h>
15944 #else
15945 #  include <strings.h>
15946 #endif
15947 #ifdef I_UNISTD
15948 #  include <unistd.h>  /* Needed for NetBSD */
15949 #endif
15950 int main()
15951 {
15952 char buf[128], abc[128];
15953 char *b;
15954 int len;
15955 int off;
15956 int align;
15957
15958 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15959    try to store the string in read-only memory. */
15960 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15961
15962 for (align = 7; align >= 0; align--) {
15963         for (len = 36; len; len--) {
15964                 b = buf+align;
15965                 bcopy(abc, b, len);
15966                 for (off = 1; off <= len; off++) {
15967                         bcopy(b, b+off, len);
15968                         bcopy(b+off, b, len);
15969                         if (bcmp(b, abc, len))
15970                                 exit(1);
15971                 }
15972         }
15973 }
15974 exit(0);
15975 }
15976 EOCP
15977                 set try
15978                 if eval $compile_ok; then
15979                         if $run ./try 2>/dev/null; then
15980                                 echo "Yes, it can."
15981                                 val="$define"
15982                         else
15983                                 echo "It can't, sorry."
15984                         fi
15985                 else
15986                         echo "(I can't compile the test program, so we'll assume not...)"
15987                 fi
15988                 ;;
15989         esac
15990         $rm_try
15991         ;;
15992 esac
15993 set d_safebcpy
15994 eval $setvar
15995
15996 : can memcpy handle overlapping blocks?
15997 echo " "
15998 val="$undef"
15999 case "$d_memmove" in
16000 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16001 *)      case "$d_memcpy" in
16002         "$define")
16003                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16004                 $cat >try.c <<EOCP
16005 #$i_memory I_MEMORY
16006 #$i_stdlib I_STDLIB
16007 #$i_string I_STRING
16008 #$i_unistd I_UNISTD
16009 EOCP
16010         $cat >>try.c <<'EOCP'
16011 #include <stdio.h>
16012 #ifdef I_MEMORY
16013 #  include <memory.h>
16014 #endif
16015 #ifdef I_STDLIB
16016 #  include <stdlib.h>
16017 #endif
16018 #ifdef I_STRING
16019 #  include <string.h>
16020 #else
16021 #  include <strings.h>
16022 #endif
16023 #ifdef I_UNISTD
16024 #  include <unistd.h>  /* Needed for NetBSD */
16025 #endif
16026 int main()
16027 {
16028 char buf[128], abc[128];
16029 char *b;
16030 int len;
16031 int off;
16032 int align;
16033
16034 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16035    try to store the string in read-only memory. */
16036 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16037
16038 for (align = 7; align >= 0; align--) {
16039         for (len = 36; len; len--) {
16040                 b = buf+align;
16041                 memcpy(b, abc, len);
16042                 for (off = 1; off <= len; off++) {
16043                         memcpy(b+off, b, len);
16044                         memcpy(b, b+off, len);
16045                         if (memcmp(b, abc, len))
16046                                 exit(1);
16047                 }
16048         }
16049 }
16050 exit(0);
16051 }
16052 EOCP
16053                 set try
16054                 if eval $compile_ok; then
16055                         if $run ./try 2>/dev/null; then
16056                                 echo "Yes, it can."
16057                                 val="$define"
16058                         else
16059                                 echo "It can't, sorry."
16060                         fi
16061                 else
16062                         echo "(I can't compile the test program, so we'll assume not...)"
16063                 fi
16064                 ;;
16065         esac
16066         $rm_try
16067         ;;
16068 esac
16069 set d_safemcpy
16070 eval $setvar
16071
16072 : can memcmp be trusted to compare relative magnitude?
16073 val="$undef"
16074 case "$d_memcmp" in
16075 "$define")
16076         echo " "
16077         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16078         $cat >try.c <<EOCP
16079 #$i_memory I_MEMORY
16080 #$i_stdlib I_STDLIB
16081 #$i_string I_STRING
16082 #$i_unistd I_UNISTD
16083 EOCP
16084         $cat >>try.c <<'EOCP'
16085 #include <stdio.h>
16086 #ifdef I_MEMORY
16087 #  include <memory.h>
16088 #endif
16089 #ifdef I_STDLIB
16090 #  include <stdlib.h>
16091 #endif
16092 #ifdef I_STRING
16093 #  include <string.h>
16094 #else
16095 #  include <strings.h>
16096 #endif
16097 #ifdef I_UNISTD
16098 #  include <unistd.h>  /* Needed for NetBSD */
16099 #endif
16100 int main()
16101 {
16102 char a = -1;
16103 char b = 0;
16104 if ((a < b) && memcmp(&a, &b, 1) < 0)
16105         exit(1);
16106 exit(0);
16107 }
16108 EOCP
16109         set try
16110         if eval $compile_ok; then
16111                 if $run ./try 2>/dev/null; then
16112                         echo "Yes, it can."
16113                         val="$define"
16114                 else
16115                         echo "No, it can't (it uses signed chars)."
16116                 fi
16117         else
16118                 echo "(I can't compile the test program, so we'll assume not...)"
16119         fi
16120         ;;
16121 esac
16122 $rm_try
16123 set d_sanemcmp
16124 eval $setvar
16125
16126 : see if prototype for sbrk is available
16127 echo " "
16128 set d_sbrkproto sbrk $i_unistd unistd.h
16129 eval $hasproto
16130
16131 : see if select exists
16132 set select d_select
16133 eval $inlibc
16134
16135 : see if semctl exists
16136 set semctl d_semctl
16137 eval $inlibc
16138
16139 : see if semget exists
16140 set semget d_semget
16141 eval $inlibc
16142
16143 : see if semop exists
16144 set semop d_semop
16145 eval $inlibc
16146
16147 : see how much of the 'sem*(2)' library is present.
16148 h_sem=true
16149 echo " "
16150 case "$d_semctl$d_semget$d_semop" in
16151 *"$undef"*) h_sem=false;;
16152 esac
16153 case "$osname" in
16154 freebsd)
16155     case "`ipcs 2>&1`" in
16156     "SVID messages"*"not configured"*)
16157         echo "Your $osname does not have the sem*(2) configured." >&4
16158         h_sem=false
16159         val="$undef"
16160         set semctl d_semctl
16161         eval $setvar
16162         set semget d_semget
16163         eval $setvar
16164         set semop d_semop
16165         eval $setvar
16166         ;;
16167     esac
16168     ;;
16169 esac
16170 : we could also check for sys/ipc.h ...
16171 if $h_sem && $test `./findhdr sys/sem.h`; then
16172         echo "You have the full sem*(2) library." >&4
16173         val="$define"
16174 else
16175         echo "You don't have the full sem*(2) library." >&4
16176         val="$undef"
16177 fi
16178 set d_sem
16179 eval $setvar
16180
16181 : see whether sys/sem.h defines union semun
16182 echo " "
16183 $cat > try.c <<'END'
16184 #include <sys/types.h>
16185 #include <sys/ipc.h>
16186 #include <sys/sem.h>
16187 int main () { union semun semun; semun.buf = 0; }
16188 END
16189 set try
16190 if eval $compile; then
16191     echo "You have union semun in <sys/sem.h>." >&4
16192     val="$define"
16193 else
16194     echo "You do not have union semun in <sys/sem.h>." >&4
16195     val="$undef"
16196 fi
16197 $rm_try
16198 set d_union_semun
16199 eval $setvar
16200
16201 : see how to do semctl IPC_STAT
16202 case "$d_sem" in
16203 $define)
16204     echo " "
16205     $cat > tryh.h <<END
16206 #ifndef S_IRUSR
16207 #   ifdef S_IREAD
16208 #       define S_IRUSR S_IREAD
16209 #       define S_IWUSR S_IWRITE
16210 #       define S_IXUSR S_IEXEC
16211 #   else
16212 #       define S_IRUSR 0400
16213 #       define S_IWUSR 0200
16214 #       define S_IXUSR 0100
16215 #   endif
16216 #   define S_IRGRP (S_IRUSR>>3)
16217 #   define S_IWGRP (S_IWUSR>>3)
16218 #   define S_IXGRP (S_IXUSR>>3)
16219 #   define S_IROTH (S_IRUSR>>6)
16220 #   define S_IWOTH (S_IWUSR>>6)
16221 #   define S_IXOTH (S_IXUSR>>6)
16222 #endif
16223 #ifndef S_IRWXU
16224 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16225 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16226 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16227 #endif
16228 END
16229     : see whether semctl IPC_STAT can use union semun
16230     case "$d_semctl_semun" in
16231     '')
16232       val="$undef"
16233       $cat > try.c <<END
16234 #include <sys/types.h>
16235 #include <sys/ipc.h>
16236 #include <sys/sem.h>
16237 #include <sys/stat.h>
16238 #include <stdio.h>
16239 #include <errno.h>
16240 #include "tryh.h"
16241 #ifndef errno
16242 extern int errno;
16243 #endif
16244 #$d_union_semun HAS_UNION_SEMUN
16245 int main() {
16246     union semun
16247 #ifndef HAS_UNION_SEMUN
16248     {
16249         int val;
16250         struct semid_ds *buf;
16251         unsigned short *array;
16252     }
16253 #endif
16254     arg;
16255     int sem, st;
16256
16257 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16258     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16259     if (sem > -1) {
16260         struct semid_ds argbuf;
16261         arg.buf = &argbuf;
16262 #       ifdef IPC_STAT
16263         st = semctl(sem, 0, IPC_STAT, arg);
16264         if (st == 0)
16265             printf("semun\n");
16266         else
16267 #       endif /* IPC_STAT */
16268             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16269 #       ifdef IPC_RMID
16270         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16271 #       endif /* IPC_RMID */
16272             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16273     } else
16274 #endif /* IPC_PRIVATE && ... */
16275         printf("semget failed: errno = %d\n", errno);
16276   return 0;
16277 }
16278 END
16279       set try
16280       if eval $compile; then
16281           xxx=`$run ./try`
16282           case "$xxx" in
16283           semun) val="$define" ;;
16284           esac
16285       fi
16286       $rm_try
16287       set d_semctl_semun
16288       eval $setvar
16289       ;;
16290     esac
16291     case "$d_semctl_semun" in
16292     $define)
16293         echo "You can use union semun for semctl IPC_STAT." >&4
16294         also='also'
16295         ;;
16296     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16297         also=''
16298         ;;
16299     esac
16300
16301     : see whether semctl IPC_STAT can use struct semid_ds pointer
16302     case "$d_semctl_semid_ds" in
16303     '')
16304       val="$undef"
16305       $cat > try.c <<'END'
16306 #include <sys/types.h>
16307 #include <sys/ipc.h>
16308 #include <sys/sem.h>
16309 #include <sys/stat.h>
16310 #include "tryh.h"
16311 #include <stdio.h>
16312 #include <errno.h>
16313 #ifndef errno
16314 extern int errno;
16315 #endif
16316 int main() {
16317     struct semid_ds arg;
16318     int sem, st;
16319
16320 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16321     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16322     if (sem > -1) {
16323 #       ifdef IPC_STAT
16324         st = semctl(sem, 0, IPC_STAT, &arg);
16325         if (st == 0)
16326             printf("semid_ds\n");
16327         else
16328 #       endif /* IPC_STAT */
16329             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16330 #       ifdef IPC_RMID
16331         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16332 #       endif /* IPC_RMID */
16333             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16334     } else
16335 #endif /* IPC_PRIVATE && ... */
16336         printf("semget failed: errno = %d\n", errno);
16337
16338     return 0;
16339 }
16340 END
16341       set try
16342       if eval $compile; then
16343           xxx=`$run ./try`
16344           case "$xxx" in
16345           semid_ds) val="$define" ;;
16346           esac
16347       fi
16348       $rm_try
16349       set d_semctl_semid_ds
16350       eval $setvar
16351       ;;
16352     esac
16353     case "$d_semctl_semid_ds" in
16354     $define)
16355         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16356         ;;
16357     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16358         ;;
16359     esac
16360     ;;
16361 *)  val="$undef"
16362
16363     # We do not have the full sem*(2) library, so assume we can not
16364     # use either.
16365
16366     set d_semctl_semun
16367     eval $setvar
16368
16369     set d_semctl_semid_ds
16370     eval $setvar
16371     ;;
16372 esac
16373 $rm_try tryh.h
16374
16375 : see if sendmsg exists
16376 set sendmsg d_sendmsg
16377 eval $inlibc
16378
16379 : see if setegid exists
16380 set setegid d_setegid
16381 eval $inlibc
16382
16383 : see if seteuid exists
16384 set seteuid d_seteuid
16385 eval $inlibc
16386
16387 : see if setgrent exists
16388 set setgrent d_setgrent
16389 eval $inlibc
16390
16391 : see if setgrent_r exists
16392 set setgrent_r d_setgrent_r
16393 eval $inlibc
16394 case "$d_setgrent_r" in
16395 "$define")
16396         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16397         case "$d_setgrent_r_proto:$usethreads" in
16398         ":define")      d_setgrent_r_proto=define
16399                 set d_setgrent_r_proto setgrent_r $hdrs
16400                 eval $hasproto ;;
16401         *)      ;;
16402         esac
16403         case "$d_setgrent_r_proto" in
16404         define)
16405         case "$setgrent_r_proto" in
16406         ''|0) try='int setgrent_r(FILE**);'
16407         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16408         esac
16409         case "$setgrent_r_proto" in
16410         ''|0) try='void setgrent_r(FILE**);'
16411         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16412         esac
16413         case "$setgrent_r_proto" in
16414         ''|0)   d_setgrent_r=undef
16415                 setgrent_r_proto=0
16416                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16417         * )     case "$setgrent_r_proto" in
16418                 REENTRANT_PROTO*) ;;
16419                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16420                 esac
16421                 echo "Prototype: $try" ;;
16422         esac
16423         ;;
16424         *)      case "$usethreads" in
16425                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16426                 esac
16427                 d_setgrent_r=undef
16428                 setgrent_r_proto=0
16429                 ;;
16430         esac
16431         ;;
16432 *)      setgrent_r_proto=0
16433         ;;
16434 esac
16435
16436 : see if sethostent exists
16437 set sethostent d_sethent
16438 eval $inlibc
16439
16440 : see if sethostent_r exists
16441 set sethostent_r d_sethostent_r
16442 eval $inlibc
16443 case "$d_sethostent_r" in
16444 "$define")
16445         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16446         case "$d_sethostent_r_proto:$usethreads" in
16447         ":define")      d_sethostent_r_proto=define
16448                 set d_sethostent_r_proto sethostent_r $hdrs
16449                 eval $hasproto ;;
16450         *)      ;;
16451         esac
16452         case "$d_sethostent_r_proto" in
16453         define)
16454         case "$sethostent_r_proto" in
16455         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16456         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16457         esac
16458         case "$sethostent_r_proto" in
16459         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16460         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16461         esac
16462         case "$sethostent_r_proto" in
16463         ''|0)   d_sethostent_r=undef
16464                 sethostent_r_proto=0
16465                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16466         * )     case "$sethostent_r_proto" in
16467                 REENTRANT_PROTO*) ;;
16468                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16469                 esac
16470                 echo "Prototype: $try" ;;
16471         esac
16472         ;;
16473         *)      case "$usethreads" in
16474                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16475                 esac
16476                 d_sethostent_r=undef
16477                 sethostent_r_proto=0
16478                 ;;
16479         esac
16480         ;;
16481 *)      sethostent_r_proto=0
16482         ;;
16483 esac
16484
16485 : see if setitimer exists
16486 set setitimer d_setitimer
16487 eval $inlibc
16488
16489 : see if setlinebuf exists
16490 set setlinebuf d_setlinebuf
16491 eval $inlibc
16492
16493 : see if setlocale exists
16494 set setlocale d_setlocale
16495 eval $inlibc
16496
16497 : see if locale.h is available
16498 set locale.h i_locale
16499 eval $inhdr
16500
16501 : see if setlocale_r exists
16502 set setlocale_r d_setlocale_r
16503 eval $inlibc
16504 case "$d_setlocale_r" in
16505 "$define")
16506         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16507         case "$d_setlocale_r_proto:$usethreads" in
16508         ":define")      d_setlocale_r_proto=define
16509                 set d_setlocale_r_proto setlocale_r $hdrs
16510                 eval $hasproto ;;
16511         *)      ;;
16512         esac
16513         case "$d_setlocale_r_proto" in
16514         define)
16515         case "$setlocale_r_proto" in
16516         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16517         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16518         esac
16519         case "$setlocale_r_proto" in
16520         ''|0)   d_setlocale_r=undef
16521                 setlocale_r_proto=0
16522                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16523         * )     case "$setlocale_r_proto" in
16524                 REENTRANT_PROTO*) ;;
16525                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16526                 esac
16527                 echo "Prototype: $try" ;;
16528         esac
16529         ;;
16530         *)      case "$usethreads" in
16531                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16532                 esac
16533                 d_setlocale_r=undef
16534                 setlocale_r_proto=0
16535                 ;;
16536         esac
16537         ;;
16538 *)      setlocale_r_proto=0
16539         ;;
16540 esac
16541
16542 : see if setnetent exists
16543 set setnetent d_setnent
16544 eval $inlibc
16545
16546 : see if setnetent_r exists
16547 set setnetent_r d_setnetent_r
16548 eval $inlibc
16549 case "$d_setnetent_r" in
16550 "$define")
16551         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16552         case "$d_setnetent_r_proto:$usethreads" in
16553         ":define")      d_setnetent_r_proto=define
16554                 set d_setnetent_r_proto setnetent_r $hdrs
16555                 eval $hasproto ;;
16556         *)      ;;
16557         esac
16558         case "$d_setnetent_r_proto" in
16559         define)
16560         case "$setnetent_r_proto" in
16561         ''|0) try='int setnetent_r(int, struct netent_data*);'
16562         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16563         esac
16564         case "$setnetent_r_proto" in
16565         ''|0) try='void setnetent_r(int, struct netent_data*);'
16566         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16567         esac
16568         case "$setnetent_r_proto" in
16569         ''|0)   d_setnetent_r=undef
16570                 setnetent_r_proto=0
16571                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16572         * )     case "$setnetent_r_proto" in
16573                 REENTRANT_PROTO*) ;;
16574                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16575                 esac
16576                 echo "Prototype: $try" ;;
16577         esac
16578         ;;
16579         *)      case "$usethreads" in
16580                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16581                 esac
16582                 d_setnetent_r=undef
16583                 setnetent_r_proto=0
16584                 ;;
16585         esac
16586         ;;
16587 *)      setnetent_r_proto=0
16588         ;;
16589 esac
16590
16591 : see if setprotoent exists
16592 set setprotoent d_setpent
16593 eval $inlibc
16594
16595 : see if setpgid exists
16596 set setpgid d_setpgid
16597 eval $inlibc
16598
16599 : see if setpgrp2 exists
16600 set setpgrp2 d_setpgrp2
16601 eval $inlibc
16602
16603 : see if setpriority exists
16604 set setpriority d_setprior
16605 eval $inlibc
16606
16607 : see if setproctitle exists
16608 set setproctitle d_setproctitle
16609 eval $inlibc
16610
16611 : see if setprotoent_r exists
16612 set setprotoent_r d_setprotoent_r
16613 eval $inlibc
16614 case "$d_setprotoent_r" in
16615 "$define")
16616         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16617         case "$d_setprotoent_r_proto:$usethreads" in
16618         ":define")      d_setprotoent_r_proto=define
16619                 set d_setprotoent_r_proto setprotoent_r $hdrs
16620                 eval $hasproto ;;
16621         *)      ;;
16622         esac
16623         case "$d_setprotoent_r_proto" in
16624         define)
16625         case "$setprotoent_r_proto" in
16626         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16627         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16628         esac
16629         case "$setprotoent_r_proto" in
16630         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16631         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16632         esac
16633         case "$setprotoent_r_proto" in
16634         ''|0)   d_setprotoent_r=undef
16635                 setprotoent_r_proto=0
16636                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16637         * )     case "$setprotoent_r_proto" in
16638                 REENTRANT_PROTO*) ;;
16639                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16640                 esac
16641                 echo "Prototype: $try" ;;
16642         esac
16643         ;;
16644         *)      case "$usethreads" in
16645                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16646                 esac
16647                 d_setprotoent_r=undef
16648                 setprotoent_r_proto=0
16649                 ;;
16650         esac
16651         ;;
16652 *)      setprotoent_r_proto=0
16653         ;;
16654 esac
16655
16656 : see if setpwent exists
16657 set setpwent d_setpwent
16658 eval $inlibc
16659
16660 : see if setpwent_r exists
16661 set setpwent_r d_setpwent_r
16662 eval $inlibc
16663 case "$d_setpwent_r" in
16664 "$define")
16665         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16666         case "$d_setpwent_r_proto:$usethreads" in
16667         ":define")      d_setpwent_r_proto=define
16668                 set d_setpwent_r_proto setpwent_r $hdrs
16669                 eval $hasproto ;;
16670         *)      ;;
16671         esac
16672         case "$d_setpwent_r_proto" in
16673         define)
16674         case "$setpwent_r_proto" in
16675         ''|0) try='int setpwent_r(FILE**);'
16676         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16677         esac
16678         case "$setpwent_r_proto" in
16679         ''|0) try='void setpwent_r(FILE**);'
16680         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16681         esac
16682         case "$setpwent_r_proto" in
16683         ''|0)   d_setpwent_r=undef
16684                 setpwent_r_proto=0
16685                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16686         * )     case "$setpwent_r_proto" in
16687                 REENTRANT_PROTO*) ;;
16688                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16689                 esac
16690                 echo "Prototype: $try" ;;
16691         esac
16692         ;;
16693         *)      case "$usethreads" in
16694                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16695                 esac
16696                 d_setpwent_r=undef
16697                 setpwent_r_proto=0
16698                 ;;
16699         esac
16700         ;;
16701 *)      setpwent_r_proto=0
16702         ;;
16703 esac
16704
16705 : see if setregid exists
16706 set setregid d_setregid
16707 eval $inlibc
16708 set setresgid d_setresgid
16709 eval $inlibc
16710
16711 : see if setreuid exists
16712 set setreuid d_setreuid
16713 eval $inlibc
16714 set setresuid d_setresuid
16715 eval $inlibc
16716
16717 : see if setrgid exists
16718 set setrgid d_setrgid
16719 eval $inlibc
16720
16721 : see if setruid exists
16722 set setruid d_setruid
16723 eval $inlibc
16724
16725 : see if setservent exists
16726 set setservent d_setsent
16727 eval $inlibc
16728
16729 : see if setservent_r exists
16730 set setservent_r d_setservent_r
16731 eval $inlibc
16732 case "$d_setservent_r" in
16733 "$define")
16734         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16735         case "$d_setservent_r_proto:$usethreads" in
16736         ":define")      d_setservent_r_proto=define
16737                 set d_setservent_r_proto setservent_r $hdrs
16738                 eval $hasproto ;;
16739         *)      ;;
16740         esac
16741         case "$d_setservent_r_proto" in
16742         define)
16743         case "$setservent_r_proto" in
16744         ''|0) try='int setservent_r(int, struct servent_data*);'
16745         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16746         esac
16747         case "$setservent_r_proto" in
16748         ''|0) try='void setservent_r(int, struct servent_data*);'
16749         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16750         esac
16751         case "$setservent_r_proto" in
16752         ''|0)   d_setservent_r=undef
16753                 setservent_r_proto=0
16754                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16755         * )     case "$setservent_r_proto" in
16756                 REENTRANT_PROTO*) ;;
16757                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16758                 esac
16759                 echo "Prototype: $try" ;;
16760         esac
16761         ;;
16762         *)      case "$usethreads" in
16763                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16764                 esac
16765                 d_setservent_r=undef
16766                 setservent_r_proto=0
16767                 ;;
16768         esac
16769         ;;
16770 *)      setservent_r_proto=0
16771         ;;
16772 esac
16773
16774 : see if setsid exists
16775 set setsid d_setsid
16776 eval $inlibc
16777
16778 : see if setvbuf exists
16779 set setvbuf d_setvbuf
16780 eval $inlibc
16781
16782 : see if sfio.h is available
16783 set sfio.h i_sfio
16784 eval $inhdr
16785
16786
16787 : see if sfio library is available
16788 case "$i_sfio" in
16789 $define)
16790         val=''
16791         set sfreserve val
16792         eval $inlibc
16793         ;;
16794 *)
16795         val="$undef"
16796         ;;
16797 esac
16798 : Ok, but do we want to use it.
16799 case "$val" in
16800 $define)
16801         case "$usesfio" in
16802         true|$define|[yY]*) dflt='y';;
16803         *) dflt='n';;
16804         esac
16805         echo "$package can use the sfio library, but it is experimental."
16806         case "$useperlio" in
16807         "$undef")
16808             echo "For sfio also the PerlIO abstraction layer is needed."
16809             echo "Earlier you said you wouldn't want that."
16810             ;;
16811         esac
16812         rp="You seem to have sfio available, do you want to try using it?"
16813         . ./myread
16814         case "$ans" in
16815         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16816                 useperlio="$define"
16817                 val="$define"
16818                 ;;
16819         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16820                 val="$undef"
16821                 ;;
16822         esac
16823         ;;
16824 *)      case "$usesfio" in
16825         true|$define|[yY]*)
16826                 echo "Sorry, cannot find sfio on this machine." >&4
16827                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16828                 val="$undef"
16829                 ;;
16830         esac
16831         ;;
16832 esac
16833 set d_sfio
16834 eval $setvar
16835 case "$d_sfio" in
16836 $define) usesfio='true';;
16837 *) usesfio='false';;
16838 esac
16839 case "$d_sfio" in
16840 $define) ;;
16841 *)      : Remove sfio from list of libraries to use
16842         case "$libs" in
16843         *-lsfio*)
16844                 echo "Removing unneeded -lsfio from library list" >&4
16845                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16846                 shift
16847                 libs="$*"
16848                 echo "libs = $libs" >&4
16849                 ;;
16850         esac
16851 ;;
16852 esac
16853
16854
16855 : see if shmctl exists
16856 set shmctl d_shmctl
16857 eval $inlibc
16858
16859 : see if shmget exists
16860 set shmget d_shmget
16861 eval $inlibc
16862
16863 : see if shmat exists
16864 set shmat d_shmat
16865 eval $inlibc
16866 : see what shmat returns
16867 case "$d_shmat" in
16868 "$define")
16869         $cat >shmat.c <<'END'
16870 #include <sys/shm.h>
16871 void *shmat();
16872 END
16873         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16874                 shmattype='void *'
16875         else
16876                 shmattype='char *'
16877         fi
16878         echo "and it returns ($shmattype)." >&4
16879         : see if a prototype for shmat is available
16880         xxx=`./findhdr sys/shm.h`
16881         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16882         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16883                 val="$define"
16884         else
16885                 val="$undef"
16886         fi
16887         $rm -f shmat.[co]
16888         ;;
16889 *)
16890         val="$undef"
16891         ;;
16892 esac
16893 set d_shmatprototype
16894 eval $setvar
16895
16896 : see if shmdt exists
16897 set shmdt d_shmdt
16898 eval $inlibc
16899
16900 : see how much of the 'shm*(2)' library is present.
16901 h_shm=true
16902 echo " "
16903 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16904 *"$undef"*) h_shm=false;;
16905 esac
16906 case "$osname" in
16907 freebsd)
16908     case "`ipcs 2>&1`" in
16909     "SVID shared memory"*"not configured"*)
16910         echo "Your $osname does not have the shm*(2) configured." >&4
16911         h_shm=false
16912         val="$undef"
16913         set shmctl d_shmctl
16914         evat $setvar
16915         set shmget d_shmget
16916         evat $setvar
16917         set shmat d_shmat
16918         evat $setvar
16919         set shmdt d_shmdt
16920         evat $setvar
16921         ;;
16922     esac
16923     ;;
16924 esac
16925 : we could also check for sys/ipc.h ...
16926 if $h_shm && $test `./findhdr sys/shm.h`; then
16927         echo "You have the full shm*(2) library." >&4
16928         val="$define"
16929 else
16930         echo "You don't have the full shm*(2) library." >&4
16931         val="$undef"
16932 fi
16933 set d_shm
16934 eval $setvar
16935
16936 echo " "
16937 : see if we have sigaction
16938 if set sigaction val -f d_sigaction; eval $csym; $val; then
16939         echo 'sigaction() found.' >&4
16940         $cat > try.c <<EOP
16941 #include <stdio.h>
16942 #include <sys/types.h>
16943 #include <signal.h>
16944 #$i_stdlib I_STDLIB
16945 #ifdef I_STDLIB
16946 #include <stdlib.h>
16947 #endif
16948 int main()
16949 {
16950     struct sigaction act, oact;
16951     act.sa_flags = 0;
16952     oact.sa_handler = 0;
16953     /* so that act and oact are used */
16954     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16955 }
16956 EOP
16957         set try
16958         if eval $compile_ok; then
16959                 val="$define"
16960         else
16961                 echo "But you don't seem to have a useable struct sigaction." >&4
16962                 val="$undef"
16963         fi
16964 else
16965         echo 'sigaction NOT found.' >&4
16966         val="$undef"
16967 fi
16968 set d_sigaction; eval $setvar
16969 $rm_try
16970
16971 : see if this is a sunmath.h system
16972 set sunmath.h i_sunmath
16973 eval $inhdr
16974
16975 : see if signbit exists
16976 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
16977 $cat >try.c <<EOCP
16978 #$i_math I_MATH
16979 #$i_sunmath I_SUNMATH
16980 #ifdef I_MATH
16981 #  include <math.h>
16982 #endif
16983 #ifdef I_SUNMATH  /* Solaris special math library */
16984 #  include <sunmath.h>
16985 #endif
16986 #define NV $nvtype
16987 int main(int argc, char **argv)
16988 {
16989     NV x = 0.0;
16990     NV y = -0.0;
16991     if ((signbit(x) == 0) && (signbit(y) != 0))
16992         return 0;
16993     else
16994         return 1;
16995 }
16996 EOCP
16997 val="$undef"
16998 set try
16999 if eval $compile; then
17000     if $run ./try; then
17001         $echo "Yes." >&4
17002         val="$define"
17003     else
17004         $echo "Signbit seems to be available, but doesn't work as I expected."
17005         $echo "I won't use it." >&4
17006         val="$undef"
17007     fi
17008 else
17009     $echo "Nope." >&4
17010     dflt="$undef"
17011 fi
17012 set d_signbit
17013 eval $setvar
17014 $rm_try
17015
17016 : see if sigprocmask exists
17017 set sigprocmask d_sigprocmask
17018 eval $inlibc
17019
17020 : see if sigsetjmp exists
17021 echo " "
17022 case "$d_sigsetjmp" in
17023 '')
17024         $cat >try.c <<EOP
17025 #include <setjmp.h>
17026 #$i_stdlib I_STDLIB
17027 #ifdef I_STDLIB
17028 #include <stdlib.h>
17029 #endif
17030 sigjmp_buf env;
17031 int set = 1;
17032 int main()
17033 {
17034         if (sigsetjmp(env,1))
17035                 exit(set);
17036         set = 0;
17037         siglongjmp(env, 1);
17038         exit(1);
17039 }
17040 EOP
17041         set try
17042         if eval $compile; then
17043                 if $run ./try >/dev/null 2>&1; then
17044                         echo "POSIX sigsetjmp found." >&4
17045                         val="$define"
17046                 else
17047                         $cat >&4 <<EOM
17048 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17049 I'll ignore them.
17050 EOM
17051                         val="$undef"
17052                 fi
17053         else
17054                 echo "sigsetjmp not found." >&4
17055                 val="$undef"
17056         fi
17057         ;;
17058 *) val="$d_sigsetjmp"
17059         case "$d_sigsetjmp" in
17060         $define) echo "POSIX sigsetjmp found." >&4;;
17061         $undef) echo "sigsetjmp not found." >&4;;
17062         esac
17063         ;;
17064 esac
17065 set d_sigsetjmp
17066 eval $setvar
17067 $rm_try
17068
17069 : see if snprintf exists
17070 set snprintf d_snprintf
17071 eval $inlibc
17072
17073 : see if vsnprintf exists
17074 set vsnprintf d_vsnprintf
17075 eval $inlibc
17076
17077 case "$d_snprintf-$d_vsnprintf" in
17078 "$define-$define")
17079     $cat <<EOM
17080 Checking whether your snprintf() and vsnprintf() work okay...
17081 EOM
17082     $cat >try.c <<'EOCP'
17083 /* v?snprintf testing logic courtesy of Russ Allbery.
17084  * According to C99:
17085  * - if the buffer is too short it still must be \0-terminated
17086  * - if the buffer is too short the potentially required length
17087  *   must be returned and not -1
17088  * - if the buffer is NULL the potentially required length
17089  *   must be returned and not -1 or core dump
17090  */
17091 #include <stdio.h>
17092 #include <stdarg.h>
17093
17094 char buf[2];
17095
17096 int test (char *format, ...)
17097 {
17098     va_list args;
17099     int count;
17100
17101     va_start (args, format);
17102     count = vsnprintf (buf, sizeof buf, format, args);
17103     va_end (args);
17104     return count;
17105 }
17106
17107 int main ()
17108 {
17109     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17110              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17111 }
17112 EOCP
17113     set try
17114     if eval $compile; then
17115         `$run ./try`
17116         case "$?" in
17117         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17118         *) cat <<EOM >&4
17119 Your snprintf() and snprintf() don't seem to be working okay.
17120 EOM
17121            d_snprintf="$undef"
17122            d_vsnprintf="$undef"
17123            ;;
17124         esac
17125     else
17126         echo "(I can't seem to compile the test program--assuming they don't)"
17127         d_snprintf="$undef"
17128         d_vsnprintf="$undef"
17129     fi
17130     $rm_try
17131     ;;
17132 esac
17133
17134 : see if sockatmark exists
17135 set sockatmark d_sockatmark
17136 eval $inlibc
17137
17138 : see if prototype for sockatmark is available
17139 echo " "
17140 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17141 eval $hasproto
17142
17143 : see if socks5_init exists
17144 set socks5_init d_socks5_init
17145 eval $inlibc
17146
17147 : see if sprintf returns the length of the string in the buffer as per ANSI
17148 $echo "Checking whether sprintf returns the length of the string..." >&4
17149 $cat <<EOP >try.c
17150 #include <stdio.h>
17151 #$i_stdlib I_STDLIB
17152 #ifdef I_STDLIB
17153 #include <stdlib.h>
17154 #endif
17155 #$i_string I_STRING
17156 #ifdef I_STRING
17157 #  include <string.h>
17158 #else
17159 #  include <strings.h>
17160 #endif
17161 #$i_math I_MATH
17162 #ifdef I_MATH
17163 #include <math.h>
17164 #endif
17165
17166 char buffer[256];
17167
17168 int check (size_t expect, int test) {
17169   size_t got = strlen(buffer);
17170   if (expect == got)
17171     return 0;
17172
17173   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17174        test, buffer);
17175   exit (test);
17176 }
17177
17178 int main(int argc, char **argv) {
17179   int test = 0;
17180
17181   check(sprintf(buffer, ""), ++test);
17182   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17183   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17184
17185   return 0;
17186 }
17187 EOP
17188 set try
17189
17190 d_sprintf_returns_strlen="$undef"
17191 if eval $compile; then
17192     xxx="`$run ./try`"
17193     case "$?" in
17194         0) cat >&4 <<EOM
17195 sprintf returns the length of the string (as ANSI says it should)
17196 EOM
17197         d_sprintf_returns_strlen="$define"
17198         ;;
17199         *) cat >&4 <<EOM
17200 sprintf does not return the length of the string (how old is this system?)
17201 EOM
17202         d_sprintf_returns_strlen="$undef"
17203         ;;
17204     esac
17205 fi
17206 $rm_try
17207
17208 : see if srand48_r exists
17209 set srand48_r d_srand48_r
17210 eval $inlibc
17211 case "$d_srand48_r" in
17212 "$define")
17213         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17214         case "$d_srand48_r_proto:$usethreads" in
17215         ":define")      d_srand48_r_proto=define
17216                 set d_srand48_r_proto srand48_r $hdrs
17217                 eval $hasproto ;;
17218         *)      ;;
17219         esac
17220         case "$d_srand48_r_proto" in
17221         define)
17222         case "$srand48_r_proto" in
17223         ''|0) try='int srand48_r(long, struct drand48_data*);'
17224         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17225         esac
17226         case "$srand48_r_proto" in
17227         ''|0)   d_srand48_r=undef
17228                 srand48_r_proto=0
17229                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17230         * )     case "$srand48_r_proto" in
17231                 REENTRANT_PROTO*) ;;
17232                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17233                 esac
17234                 echo "Prototype: $try" ;;
17235         esac
17236         ;;
17237         *)      case "$usethreads" in
17238                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17239                 esac
17240                 d_srand48_r=undef
17241                 srand48_r_proto=0
17242                 ;;
17243         esac
17244         ;;
17245 *)      srand48_r_proto=0
17246         ;;
17247 esac
17248
17249 : see if srandom_r exists
17250 set srandom_r d_srandom_r
17251 eval $inlibc
17252 case "$d_srandom_r" in
17253 "$define")
17254         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17255         case "$d_srandom_r_proto:$usethreads" in
17256         ":define")      d_srandom_r_proto=define
17257                 set d_srandom_r_proto srandom_r $hdrs
17258                 eval $hasproto ;;
17259         *)      ;;
17260         esac
17261         case "$d_srandom_r_proto" in
17262         define)
17263         case "$srandom_r_proto" in
17264         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17265         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17266         esac
17267         case "$srandom_r_proto" in
17268         ''|0)   d_srandom_r=undef
17269                 srandom_r_proto=0
17270                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17271         * )     case "$srandom_r_proto" in
17272                 REENTRANT_PROTO*) ;;
17273                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17274                 esac
17275                 echo "Prototype: $try" ;;
17276         esac
17277         ;;
17278         *)      case "$usethreads" in
17279                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17280                 esac
17281                 d_srandom_r=undef
17282                 srandom_r_proto=0
17283                 ;;
17284         esac
17285         ;;
17286 *)      srandom_r_proto=0
17287         ;;
17288 esac
17289
17290 : see if prototype for setresgid is available
17291 echo " "
17292 set d_sresgproto setresgid $i_unistd unistd.h
17293 eval $hasproto
17294
17295 : see if prototype for setresuid is available
17296 echo " "
17297 set d_sresuproto setresuid $i_unistd unistd.h
17298 eval $hasproto
17299
17300 : see if sys/stat.h is available
17301 set sys/stat.h i_sysstat
17302 eval $inhdr
17303
17304
17305 : see if stat knows about block sizes
17306 echo " "
17307 echo "Checking to see if your struct stat has st_blocks field..." >&4
17308 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17309 eval $hasfield
17310
17311
17312 : see if this is a sys/vfs.h system
17313 set sys/vfs.h i_sysvfs
17314 eval $inhdr
17315
17316
17317 : see if this is a sys/statfs.h system
17318 set sys/statfs.h i_sysstatfs
17319 eval $inhdr
17320
17321
17322 echo " "
17323 echo "Checking to see if your system supports struct statfs..." >&4
17324 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
17325 eval $hasstruct
17326 case "$d_statfs_s" in
17327 "$define")      echo "Yes, it does."   ;;
17328 *)              echo "No, it doesn't." ;;
17329 esac
17330
17331
17332
17333 : see if struct statfs knows about f_flags
17334 case "$d_statfs_s" in
17335 define) 
17336         echo " "
17337         echo "Checking to see if your struct statfs has f_flags field..." >&4
17338         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
17339         eval $hasfield
17340         ;;
17341 *)      val="$undef"
17342         set d_statfs_f_flags
17343         eval $setvar
17344         ;;
17345 esac
17346 case "$d_statfs_f_flags" in
17347 "$define")      echo "Yes, it does."   ;;
17348 *)              echo "No, it doesn't." ;;
17349 esac
17350
17351 $cat >&4 <<EOM
17352 Checking how to access stdio streams by file descriptor number...
17353 EOM
17354 case "$stdio_stream_array" in
17355 '')     $cat >try.c <<EOCP
17356 #include <stdio.h>
17357 int main() {
17358   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17359     printf("yes\n");
17360 }
17361 EOCP
17362         for s in _iob __iob __sF
17363         do
17364                 set try -DSTDIO_STREAM_ARRAY=$s
17365                 if eval $compile; then
17366                         case "`$run ./try`" in
17367                         yes)    stdio_stream_array=$s; break ;;
17368                         esac
17369                 fi
17370         done
17371         $rm_try
17372 esac
17373 case "$stdio_stream_array" in
17374 '')     $cat >&4 <<EOM
17375 I can't figure out how to access stdio streams by file descriptor number.
17376 EOM
17377         d_stdio_stream_array="$undef"
17378         ;;
17379 *)      $cat >&4 <<EOM
17380 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17381 EOM
17382         d_stdio_stream_array="$define"
17383         ;;
17384 esac
17385
17386 : see if strcoll exists
17387 set strcoll d_strcoll
17388 eval $inlibc
17389
17390 : check for structure copying
17391 echo " "
17392 echo "Checking to see if your C compiler can copy structs..." >&4
17393 $cat >try.c <<'EOCP'
17394 int main()
17395 {
17396         struct blurfl {
17397                 int dyick;
17398         } foo, bar;
17399
17400         foo = bar;
17401 }
17402 EOCP
17403 if $cc -c try.c >/dev/null 2>&1 ; then
17404         val="$define"
17405         echo "Yup, it can."
17406 else
17407         val="$undef"
17408         echo "Nope, it can't."
17409 fi
17410 set d_strctcpy
17411 eval $setvar
17412 $rm_try
17413
17414 : see if strerror and/or sys_errlist[] exist
17415 echo " "
17416 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17417     if set strerror val -f d_strerror; eval $csym; $val; then
17418                 echo 'strerror() found.' >&4
17419                 d_strerror="$define"
17420                 d_strerrm='strerror(e)'
17421                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17422                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17423                         d_syserrlst="$define"
17424                 else
17425                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17426                         d_syserrlst="$undef"
17427                 fi
17428     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17429                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17430                 echo 'strerror() found in string header.' >&4
17431                 d_strerror="$define"
17432                 d_strerrm='strerror(e)'
17433                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17434                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17435                                 d_syserrlst="$define"
17436                 else
17437                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17438                         d_syserrlst="$undef"
17439                 fi
17440     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17441                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17442                 d_strerror="$undef"
17443                 d_syserrlst="$define"
17444                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17445     else
17446                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17447                 d_strerror="$undef"
17448                 d_syserrlst="$undef"
17449                 d_strerrm='"unknown"'
17450     fi
17451 fi
17452
17453 : see if strerror_r exists
17454 set strerror_r d_strerror_r
17455 eval $inlibc
17456 case "$d_strerror_r" in
17457 "$define")
17458         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17459         case "$d_strerror_r_proto:$usethreads" in
17460         ":define")      d_strerror_r_proto=define
17461                 set d_strerror_r_proto strerror_r $hdrs
17462                 eval $hasproto ;;
17463         *)      ;;
17464         esac
17465         case "$d_strerror_r_proto" in
17466         define)
17467         case "$strerror_r_proto" in
17468         ''|0) try='int strerror_r(int, char*, size_t);'
17469         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17470         esac
17471         case "$strerror_r_proto" in
17472         ''|0) try='int strerror_r(int, char*, int);'
17473         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17474         esac
17475         case "$strerror_r_proto" in
17476         ''|0) try='char* strerror_r(int, char*, size_t);'
17477         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17478         esac
17479         case "$strerror_r_proto" in
17480         ''|0)   d_strerror_r=undef
17481                 strerror_r_proto=0
17482                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17483         * )     case "$strerror_r_proto" in
17484                 REENTRANT_PROTO*) ;;
17485                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17486                 esac
17487                 echo "Prototype: $try" ;;
17488         esac
17489         ;;
17490         *)      case "$usethreads" in
17491                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17492                 esac
17493                 d_strerror_r=undef
17494                 strerror_r_proto=0
17495                 ;;
17496         esac
17497         ;;
17498 *)      strerror_r_proto=0
17499         ;;
17500 esac
17501
17502 : see if strftime exists
17503 set strftime d_strftime
17504 eval $inlibc
17505
17506 : see if strlcat exists
17507 set strlcat d_strlcat
17508 eval $inlibc
17509
17510 : see if strlcpy exists
17511 set strlcpy d_strlcpy
17512 eval $inlibc
17513
17514 : see if strtod exists
17515 set strtod d_strtod
17516 eval $inlibc
17517
17518 : see if strtol exists
17519 set strtol d_strtol
17520 eval $inlibc
17521
17522 : see if strtold exists
17523 set strtold d_strtold
17524 eval $inlibc
17525
17526 : see if strtoll exists
17527 set strtoll d_strtoll
17528 eval $inlibc
17529
17530 case "$d_longlong-$d_strtoll" in
17531 "$define-$define")
17532         $cat <<EOM
17533 Checking whether your strtoll() works okay...
17534 EOM
17535         $cat >try.c <<'EOCP'
17536 #include <errno.h>
17537 #ifdef __hpux
17538 #define strtoll __strtoll
17539 #endif
17540 #ifdef __EMX__
17541 #define strtoll _strtoll
17542 #endif
17543 #include <stdio.h>
17544 extern long long int strtoll(char *s, char **, int); 
17545 static int bad = 0;
17546 int check(char *s, long long ell, int een) {
17547         long long gll;
17548         errno = 0;
17549         gll = strtoll(s, 0, 10);
17550         if (!((gll == ell) && (errno == een)))
17551                 bad++;
17552 }
17553 int main() {
17554         check(" 1",                                      1LL, 0);
17555         check(" 0",                                      0LL, 0);
17556         check("-1",                                     -1LL, 0);
17557         check("-9223372036854775808", -9223372036854775808LL, 0);
17558         check("-9223372036854775808", -9223372036854775808LL, 0);
17559         check(" 9223372036854775807",  9223372036854775807LL, 0);
17560         check("-9223372036854775808", -9223372036854775808LL, 0);
17561         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17562         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17563         if (!bad)
17564                 printf("ok\n");
17565 }
17566 EOCP
17567         set try
17568         if eval $compile; then
17569                 yyy=`$run ./try`
17570                 case "$yyy" in
17571                 ok) echo "Your strtoll() seems to be working okay." ;;
17572                 *) cat <<EOM >&4
17573 Your strtoll() doesn't seem to be working okay.
17574 EOM
17575                    d_strtoll="$undef"
17576                    ;;
17577                 esac
17578         else
17579                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17580                 d_strtoll="$undef"
17581         fi
17582         ;;
17583 esac
17584
17585 : see if strtoq exists
17586 set strtoq d_strtoq
17587 eval $inlibc
17588
17589 : see if strtoul exists
17590 set strtoul d_strtoul
17591 eval $inlibc
17592
17593 case "$d_strtoul" in
17594 "$define")
17595         $cat <<EOM
17596 Checking whether your strtoul() works okay...
17597 EOM
17598         $cat >try.c <<'EOCP'
17599 #include <errno.h>
17600 #include <stdio.h>
17601 extern unsigned long int strtoul(char *s, char **, int); 
17602 static int bad = 0;
17603 void check(char *s, unsigned long eul, int een) {
17604         unsigned long gul;
17605         errno = 0;
17606         gul = strtoul(s, 0, 10);
17607         if (!((gul == eul) && (errno == een)))
17608                 bad++;
17609 }
17610 int main() {
17611         check(" 1", 1L, 0);
17612         check(" 0", 0L, 0);
17613 EOCP
17614         case "$longsize" in
17615         8)
17616             $cat >>try.c <<'EOCP'
17617         check("18446744073709551615", 18446744073709551615UL, 0);
17618         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17619 #if 0 /* strtoul() for /^-/ strings is undefined. */
17620         check("-1", 18446744073709551615UL, 0);
17621         check("-18446744073709551614", 2, 0);
17622         check("-18446744073709551615", 1, 0);
17623         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17624         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17625 #endif
17626 EOCP
17627                 ;;
17628         4)
17629                     $cat >>try.c <<'EOCP'
17630         check("4294967295", 4294967295UL, 0);
17631         check("4294967296", 4294967295UL, ERANGE);
17632 #if 0 /* strtoul() for /^-/ strings is undefined. */
17633         check("-1", 4294967295UL, 0);
17634         check("-4294967294", 2, 0);
17635         check("-4294967295", 1, 0);
17636         check("-4294967296", 4294967295UL, ERANGE);
17637         check("-4294967297", 4294967295UL, ERANGE);
17638 #endif
17639 EOCP
17640                 ;;
17641         *)
17642 : Should we write these tests to be more portable by sprintf-ing
17643 : ~0 and then manipulating that char string as input for strtol?
17644                 ;;
17645         esac
17646         $cat >>try.c <<'EOCP'
17647         if (!bad)
17648                 printf("ok\n");
17649         return 0;
17650 }
17651 EOCP
17652         set try
17653         if eval $compile; then
17654                 case "`$run ./try`" in
17655                 ok) echo "Your strtoul() seems to be working okay." ;;
17656                 *) cat <<EOM >&4
17657 Your strtoul() doesn't seem to be working okay.
17658 EOM
17659                    d_strtoul="$undef"
17660                    ;;
17661                 esac
17662         else
17663                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17664                 d_strtoul="$undef"
17665         fi
17666         ;;
17667 esac
17668
17669 : see if strtoull exists
17670 set strtoull d_strtoull
17671 eval $inlibc
17672
17673 case "$d_longlong-$d_strtoull" in
17674 "$define-$define")
17675         $cat <<EOM
17676 Checking whether your strtoull() works okay...
17677 EOM
17678         $cat >try.c <<'EOCP'
17679 #include <errno.h>
17680 #ifdef __hpux
17681 #define strtoull __strtoull
17682 #endif
17683 #include <stdio.h>
17684 extern unsigned long long int strtoull(char *s, char **, int); 
17685 static int bad = 0;
17686 int check(char *s, long long eull, int een) {
17687         long long gull;
17688         errno = 0;
17689         gull = strtoull(s, 0, 10);
17690         if (!((gull == eull) && (errno == een)))
17691                 bad++;
17692 }
17693 int main() {
17694         check(" 1",                                        1LL, 0);
17695         check(" 0",                                        0LL, 0);
17696         check("18446744073709551615",  18446744073709551615ULL, 0);
17697         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17698 #if 0 /* strtoull() for /^-/ strings is undefined. */
17699         check("-1",                    18446744073709551615ULL, 0);
17700         check("-18446744073709551614",                     2LL, 0);
17701         check("-18446744073709551615",                     1LL, 0);
17702         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17703         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17704 #endif
17705         if (!bad)
17706                 printf("ok\n");
17707 }
17708 EOCP
17709         set try
17710         if eval $compile; then
17711                 case "`$run ./try`" in
17712                 ok) echo "Your strtoull() seems to be working okay." ;;
17713                 *) cat <<EOM >&4
17714 Your strtoull() doesn't seem to be working okay.
17715 EOM
17716                    d_strtoull="$undef"
17717                    ;;
17718                 esac
17719         else
17720                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17721                 d_strtoull="$undef"
17722         fi
17723         ;;
17724 esac
17725
17726 : see if strtouq exists
17727 set strtouq d_strtouq
17728 eval $inlibc
17729
17730 case "$d_strtouq" in
17731 "$define")
17732         $cat <<EOM
17733 Checking whether your strtouq() works okay...
17734 EOM
17735         $cat >try.c <<'EOCP'
17736 #include <errno.h>
17737 #include <stdio.h>
17738 extern unsigned long long int strtouq(char *s, char **, int); 
17739 static int bad = 0;
17740 void check(char *s, unsigned long long eull, int een) {
17741         unsigned long long gull;
17742         errno = 0;
17743         gull = strtouq(s, 0, 10);
17744         if (!((gull == eull) && (errno == een)))
17745                 bad++;
17746 }
17747 int main() {
17748         check(" 1",                                        1LL, 0);
17749         check(" 0",                                        0LL, 0);
17750         check("18446744073709551615",  18446744073709551615ULL, 0);
17751         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17752 #if 0 /* strtouq() for /^-/ strings is undefined. */
17753         check("-1",                    18446744073709551615ULL, 0);
17754         check("-18446744073709551614",                     2LL, 0);
17755         check("-18446744073709551615",                     1LL, 0);
17756         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17757         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17758 #endif
17759         if (!bad)
17760                 printf("ok\n");
17761         return 0;
17762 }
17763 EOCP
17764         set try
17765         if eval $compile; then
17766                 case "`$run ./try`" in
17767                 ok) echo "Your strtouq() seems to be working okay." ;;
17768                 *) cat <<EOM >&4
17769 Your strtouq() doesn't seem to be working okay.
17770 EOM
17771                    d_strtouq="$undef"
17772                    ;;
17773                 esac
17774         else
17775                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17776                 d_strtouq="$undef"
17777         fi
17778         ;;
17779 esac
17780
17781 : see if strxfrm exists
17782 set strxfrm d_strxfrm
17783 eval $inlibc
17784
17785 : see if symlink exists
17786 set symlink d_symlink
17787 eval $inlibc
17788
17789 : see if syscall exists
17790 set syscall d_syscall
17791 eval $inlibc
17792
17793 : see if prototype for syscall is available
17794 echo " "
17795 set d_syscallproto syscall $i_unistd unistd.h
17796 eval $hasproto
17797
17798 : see if sysconf exists
17799 set sysconf d_sysconf
17800 eval $inlibc
17801
17802 : see if system exists
17803 set system d_system
17804 eval $inlibc
17805
17806 : see if tcgetpgrp exists
17807 set tcgetpgrp d_tcgetpgrp
17808 eval $inlibc
17809
17810 : see if tcsetpgrp exists
17811 set tcsetpgrp d_tcsetpgrp
17812 eval $inlibc
17813
17814 : see if prototype for telldir is available
17815 echo " "
17816 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17817 eval $hasproto
17818
17819 : see if time exists
17820 echo " "
17821 if test "X$d_time" = X -o X"$timetype" = X; then
17822     if set time val -f d_time; eval $csym; $val; then
17823                 echo 'time() found.' >&4
17824                 val="$define"
17825                 rp="What is the type returned by time() on this system?"
17826                 set time_t timetype long stdio.h sys/types.h
17827                 eval $typedef_ask
17828     else
17829                 echo 'time() not found, hope that will do.' >&4
17830                 val="$undef"
17831                 timetype='int';
17832     fi
17833     set d_time
17834     eval $setvar
17835 fi
17836
17837 : see if this is a sys/times.h system
17838 set sys/times.h i_systimes
17839 eval $inhdr
17840
17841 : see if times exists
17842 echo " "
17843 if set times val -f d_times; eval $csym; $val; then
17844         echo 'times() found.' >&4
17845         d_times="$define"
17846         inc=''
17847         case "$i_systimes" in
17848         "$define") inc='sys/times.h';;
17849         esac
17850         rp="What is the type returned by times() on this system?"
17851         set clock_t clocktype long stdio.h sys/types.h $inc
17852         eval $typedef_ask
17853 else
17854         echo 'times() NOT found, hope that will do.' >&4
17855         d_times="$undef"
17856         clocktype='int'
17857 fi
17858
17859 : see if tmpnam_r exists
17860 set tmpnam_r d_tmpnam_r
17861 eval $inlibc
17862 case "$d_tmpnam_r" in
17863 "$define")
17864         hdrs="$i_systypes sys/types.h define stdio.h "
17865         case "$d_tmpnam_r_proto:$usethreads" in
17866         ":define")      d_tmpnam_r_proto=define
17867                 set d_tmpnam_r_proto tmpnam_r $hdrs
17868                 eval $hasproto ;;
17869         *)      ;;
17870         esac
17871         case "$d_tmpnam_r_proto" in
17872         define)
17873         case "$tmpnam_r_proto" in
17874         ''|0) try='char* tmpnam_r(char*);'
17875         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17876         esac
17877         case "$tmpnam_r_proto" in
17878         ''|0)   d_tmpnam_r=undef
17879                 tmpnam_r_proto=0
17880                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17881         * )     case "$tmpnam_r_proto" in
17882                 REENTRANT_PROTO*) ;;
17883                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17884                 esac
17885                 echo "Prototype: $try" ;;
17886         esac
17887         ;;
17888         *)      case "$usethreads" in
17889                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17890                 esac
17891                 d_tmpnam_r=undef
17892                 tmpnam_r_proto=0
17893                 ;;
17894         esac
17895         ;;
17896 *)      tmpnam_r_proto=0
17897         ;;
17898 esac
17899
17900 : see if truncate exists
17901 set truncate d_truncate
17902 eval $inlibc
17903
17904 : see if ttyname_r exists
17905 set ttyname_r d_ttyname_r
17906 eval $inlibc
17907 case "$d_ttyname_r" in
17908 "$define")
17909         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17910         case "$d_ttyname_r_proto:$usethreads" in
17911         ":define")      d_ttyname_r_proto=define
17912                 set d_ttyname_r_proto ttyname_r $hdrs
17913                 eval $hasproto ;;
17914         *)      ;;
17915         esac
17916         case "$d_ttyname_r_proto" in
17917         define)
17918         case "$ttyname_r_proto" in
17919         ''|0) try='int ttyname_r(int, char*, size_t);'
17920         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17921         esac
17922         case "$ttyname_r_proto" in
17923         ''|0) try='int ttyname_r(int, char*, int);'
17924         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17925         esac
17926         case "$ttyname_r_proto" in
17927         ''|0) try='char* ttyname_r(int, char*, int);'
17928         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17929         esac
17930         case "$ttyname_r_proto" in
17931         ''|0)   d_ttyname_r=undef
17932                 ttyname_r_proto=0
17933                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17934         * )     case "$ttyname_r_proto" in
17935                 REENTRANT_PROTO*) ;;
17936                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17937                 esac
17938                 echo "Prototype: $try" ;;
17939         esac
17940         ;;
17941         *)      case "$usethreads" in
17942                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17943                 esac
17944                 d_ttyname_r=undef
17945                 ttyname_r_proto=0
17946                 ;;
17947         esac
17948         ;;
17949 *)      ttyname_r_proto=0
17950         ;;
17951 esac
17952
17953 : see if tzname[] exists
17954 echo " "
17955 if set tzname val -a d_tzname; eval $csym; $val; then
17956         val="$define"
17957         echo 'tzname[] found.' >&4
17958 else
17959         val="$undef"
17960         echo 'tzname[] NOT found.' >&4
17961 fi
17962 set d_tzname
17963 eval $setvar
17964
17965 case "$osname" in
17966 next|rhapsody|darwin) multiarch="$define" ;;
17967 esac
17968 case "$multiarch" in
17969 ''|[nN]*) multiarch="$undef" ;;
17970 esac
17971
17972 : check for ordering of bytes in a UV
17973 echo " "
17974 case "$usecrosscompile$multiarch" in
17975 *$define*)
17976         $cat <<EOM
17977 You seem to be either cross-compiling or doing a multiarchitecture build,
17978 skipping the byteorder check.
17979
17980 EOM
17981         byteorder='ffff'
17982         ;;
17983 *)
17984         case "$byteorder" in
17985         '')
17986                 $cat <<'EOM'
17987 In the following, larger digits indicate more significance.  A big-endian
17988 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17989 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17990 machines may have weird orders like 3412.  A Cray will report 87654321,
17991 an Alpha will report 12345678. If the test program works the default is
17992 probably right.
17993 I'm now running the test program...
17994 EOM
17995                 $cat >try.c <<EOCP
17996 #include <stdio.h>
17997 #$i_stdlib I_STDLIB
17998 #ifdef I_STDLIB
17999 #include <stdlib.h>
18000 #endif
18001 #include <sys/types.h>
18002 typedef $uvtype UV;
18003 int main()
18004 {
18005         int i;
18006         union {
18007                 UV l;
18008                 char c[$uvsize];
18009         } u;
18010
18011         if ($uvsize > 4)
18012                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18013         else
18014                 u.l = (UV)0x04030201;
18015         for (i = 0; i < $uvsize; i++)
18016                 printf("%c", u.c[i]+'0');
18017         printf("\n");
18018         exit(0);
18019 }
18020 EOCP
18021                 xxx_prompt=y
18022                 set try
18023                 if eval $compile && $run ./try > /dev/null; then
18024                         dflt=`$run ./try`
18025                         case "$dflt" in
18026                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18027                                 echo "(The test program ran ok.)"
18028                                 echo "byteorder=$dflt"
18029                                 xxx_prompt=n
18030                         ;;
18031                         ????|????????) echo "(The test program ran ok.)" ;;
18032                         *) echo "(The test program didn't run right for some reason.)" ;;
18033                         esac
18034                 else
18035                         dflt='4321'
18036                         cat <<'EOM'
18037 (I can't seem to compile the test program.  Guessing big-endian...)
18038 EOM
18039                 fi
18040                 case "$xxx_prompt" in
18041                 y)
18042                         rp="What is the order of bytes in $uvtype?"
18043                         . ./myread
18044                         byteorder="$ans"
18045                         ;;
18046                 *)      byteorder=$dflt
18047                         ;;
18048                 esac
18049                 ;;
18050         esac
18051         $rm_try
18052         ;;
18053 esac
18054
18055 $cat <<EOM
18056
18057 Checking to see whether you can access character data unalignedly...
18058 EOM
18059 case "$d_u32align" in
18060 '')   $cat >try.c <<EOCP
18061 #include <stdio.h>
18062 #$i_stdlib I_STDLIB
18063 #ifdef I_STDLIB
18064 #include <stdlib.h>
18065 #endif
18066 #define U32 $u32type
18067 #define BYTEORDER 0x$byteorder
18068 #define U8 $u8type
18069 #include <signal.h>
18070 #ifdef SIGBUS
18071 $signal_t bletch(int s) { exit(4); }
18072 #endif
18073 int main() {
18074 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18075     U8 buf[8];
18076     U32 *up;
18077     int i;
18078
18079     if (sizeof(U32) != 4) {
18080         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18081         exit(1);
18082     }
18083
18084     fflush(stdout);
18085
18086 #ifdef SIGBUS
18087     signal(SIGBUS, bletch);
18088 #endif
18089
18090     buf[0] = 0;
18091     buf[1] = 0;
18092     buf[2] = 0;
18093     buf[3] = 1;
18094     buf[4] = 0;
18095     buf[5] = 0;
18096     buf[6] = 0;
18097     buf[7] = 1;
18098
18099     for (i = 0; i < 4; i++) {
18100         up = (U32*)(buf + i);
18101         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18102                (*up == 1 << (8*(3-i)))  /* little-endian */
18103               )
18104            )
18105         {
18106             printf("read failed (%x)\n", *up);
18107             exit(2);
18108         }
18109     }
18110
18111     /* write test */
18112     for (i = 0; i < 4; i++) {
18113         up = (U32*)(buf + i);
18114         *up = 0xBeef;
18115         if (*up != 0xBeef) {
18116             printf("write failed (%x)\n", *up);
18117             exit(3);
18118         }
18119     }
18120
18121     exit(0);
18122 #else
18123     printf("1\n");
18124     exit(1);
18125 #endif
18126     return 0;
18127 }
18128 EOCP
18129 set try
18130 if eval $compile_ok; then
18131         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18132         $run ./try 2>&1 >/dev/null
18133         case "$?" in
18134         0)      cat >&4 <<EOM
18135 You can access character data pretty unalignedly.
18136 EOM
18137                 d_u32align="$undef"
18138                 ;;
18139         *)      cat >&4 <<EOM
18140 It seems that you must access character data in an aligned manner.
18141 EOM
18142                 d_u32align="$define"
18143                 ;;
18144         esac
18145 else
18146         rp='Can you access character data at unaligned addresses?'
18147         dflt='n'
18148         . ./myread
18149         case "$ans" in
18150         [yY]*)  d_u32align="$undef"  ;;
18151         *)      d_u32align="$define" ;;
18152         esac
18153 fi
18154 $rm_try
18155 ;;
18156 esac
18157
18158 : see if ualarm exists
18159 set ualarm d_ualarm
18160 eval $inlibc
18161
18162 : see if umask exists
18163 set umask d_umask
18164 eval $inlibc
18165
18166 : see if unordered exists
18167 set unordered d_unordered
18168 eval $inlibc
18169
18170 : see if unsetenv exists
18171 set unsetenv d_unsetenv
18172 eval $inlibc
18173
18174 : see if usleep exists
18175 set usleep d_usleep
18176 eval $inlibc
18177
18178 : see if prototype for usleep is available
18179 echo " "
18180 set d_usleepproto usleep $i_unistd unistd.h
18181 eval $hasproto
18182
18183 : see if ustat exists
18184 set ustat d_ustat
18185 eval $inlibc
18186
18187 : see if closedir exists
18188 set closedir d_closedir
18189 eval $inlibc
18190
18191 case "$d_closedir" in
18192 "$define")
18193         echo " "
18194         echo "Checking whether closedir() returns a status..." >&4
18195         cat > try.c <<EOM
18196 #$i_dirent I_DIRENT             /**/
18197 #$i_sysdir I_SYS_DIR            /**/
18198 #$i_sysndir I_SYS_NDIR          /**/
18199 #$i_systypes I_SYS_TYPES        /**/
18200
18201 #if defined(I_SYS_TYPES)
18202 #include <sys/types.h>
18203 #endif
18204 #if defined(I_DIRENT)
18205 #include <dirent.h>
18206 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18207 #include <sys/dir.h>
18208 #endif
18209 #else
18210 #ifdef I_SYS_NDIR
18211 #include <sys/ndir.h>
18212 #else
18213 #ifdef I_SYS_DIR
18214 #ifdef hp9000s500
18215 #include <ndir.h>       /* may be wrong in the future */
18216 #else
18217 #include <sys/dir.h>
18218 #endif
18219 #endif
18220 #endif
18221 #endif
18222 int main() { return closedir(opendir(".")); }
18223 EOM
18224         set try
18225         if eval $compile_ok; then
18226                 if $run ./try > /dev/null 2>&1 ; then
18227                         echo "Yes, it does."
18228                         val="$undef"
18229                 else
18230                         echo "No, it doesn't."
18231                         val="$define"
18232                 fi
18233         else
18234                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18235                 val="$define"
18236         fi
18237         ;;
18238 *)
18239         val="$undef";
18240         ;;
18241 esac
18242 set d_void_closedir
18243 eval $setvar
18244 $rm_try
18245
18246 : see if there is a wait4
18247 set wait4 d_wait4
18248 eval $inlibc
18249
18250 : see if waitpid exists
18251 set waitpid d_waitpid
18252 eval $inlibc
18253
18254 : see if wcstombs exists
18255 set wcstombs d_wcstombs
18256 eval $inlibc
18257
18258 : see if wctomb exists
18259 set wctomb d_wctomb
18260 eval $inlibc
18261
18262 : see if writev exists
18263 set writev d_writev
18264 eval $inlibc
18265
18266 : preserve RCS keywords in files with variable substitution, grrr
18267 Date='$Date'
18268 Id='$Id'
18269 Log='$Log'
18270 RCSfile='$RCSfile'
18271 Revision='$Revision'
18272
18273 : check for alignment requirements
18274 echo " "
18275 case "$usecrosscompile$multiarch" in
18276 *$define*)
18277         $cat <<EOM
18278 You seem to be either cross-compiling or doing a multiarchitecture build,
18279 skipping the memory alignment check.
18280
18281 EOM
18282         case "$alignbytes" in
18283         '') alignbytes=8 ;;
18284         esac
18285         ;;
18286 *)
18287         case "$alignbytes" in
18288         '') echo "Checking alignment constraints..." >&4
18289                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18290                         $cat >try.c <<'EOCP'
18291 typedef long double NV;
18292 EOCP
18293                 else
18294                         $cat >try.c <<'EOCP'
18295 typedef double NV;
18296 EOCP
18297                 fi
18298                 $cat >>try.c <<'EOCP'
18299 #include <stdio.h>
18300 struct foobar {
18301         char foo;
18302         NV bar;
18303 } try_algn;
18304 int main()
18305 {
18306     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18307     return(0);
18308 }
18309 EOCP
18310                 set try
18311                 if eval $compile_ok; then
18312                         dflt=`$run ./try`
18313                 else
18314                         dflt='8'
18315                         echo "(I can't seem to compile the test program...)"
18316                 fi
18317                 ;;
18318         *) dflt="$alignbytes"
18319                 ;;
18320         esac
18321         rp="Doubles must be aligned on a how-many-byte boundary?"
18322         . ./myread
18323         alignbytes="$ans"
18324         $rm_try
18325         ;;
18326 esac
18327
18328
18329 : set the base revision
18330 baserev=5.0
18331
18332 : how do we concatenate cpp tokens here?
18333 echo " "
18334 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18335 $cat >cpp_stuff.c <<'EOCP'
18336 #define RCAT(a,b)a/**/b
18337 #define ACAT(a,b)a ## b
18338 RCAT(Rei,ser)
18339 ACAT(Cir,cus)
18340 EOCP
18341 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18342 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18343         echo "Oh!  Smells like ANSI's been here." >&4
18344         echo "We can catify or stringify, separately or together!"
18345         cpp_stuff=42
18346 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18347         echo "Ah, yes!  The good old days!" >&4
18348         echo "However, in the good old days we don't know how to stringify and"
18349         echo "catify at the same time."
18350         cpp_stuff=1
18351 else
18352         $cat >&4 <<EOM
18353 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18354 You're going to have to edit the values of CAT[2-5] in config.h...
18355 EOM
18356         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18357 fi
18358 $rm -f cpp_stuff.*
18359
18360 : see if this is a db.h system
18361 set db.h i_db
18362 eval $inhdr
18363
18364 case "$i_db" in
18365 $define)
18366         : Check db version.
18367         echo " "
18368         echo "Checking Berkeley DB version ..." >&4
18369         $cat >try.c <<EOCP
18370 #$d_const HASCONST
18371 #ifndef HASCONST
18372 #define const
18373 #endif
18374 #include <sys/types.h>
18375 #include <stdio.h>
18376 #$i_stdlib I_STDLIB
18377 #ifdef I_STDLIB
18378 #include <stdlib.h>
18379 #endif
18380 #include <db.h>
18381 int main(int argc, char *argv[])
18382 {
18383 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18384     int Major, Minor, Patch ;
18385     unsigned long Version ;
18386     (void)db_version(&Major, &Minor, &Patch) ;
18387     if (argc == 2) {
18388         printf("%d %d %d %d %d %d\n",
18389                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18390                Major, Minor, Patch);
18391         exit(0);
18392     }
18393     printf("You have Berkeley DB Version 2 or greater.\n");
18394
18395     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18396                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18397     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18398                 Major, Minor, Patch) ;
18399
18400     /* check that db.h & libdb are compatible */
18401     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18402         printf("db.h and libdb are incompatible.\n") ;
18403         exit(3);
18404     }
18405
18406     printf("db.h and libdb are compatible.\n") ;
18407
18408     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18409                 + DB_VERSION_PATCH ;
18410
18411     /* needs to be >= 2.3.4 */
18412     if (Version < 2003004) {
18413     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18414         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18415         exit(2);
18416     }
18417
18418     exit(0);
18419 #else
18420 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18421     if (argc == 2) {
18422         printf("1 0 0\n");
18423         exit(0);
18424     }
18425     printf("You have Berkeley DB Version 1.\n");
18426     exit(0);    /* DB version < 2: the coast is clear. */
18427 #else
18428     exit(1);    /* <db.h> not Berkeley DB? */
18429 #endif
18430 #endif
18431 }
18432 EOCP
18433         set try
18434         if eval $compile_ok && $run ./try; then
18435                 echo 'Looks OK.' >&4
18436                 set `$run ./try 1`
18437                 db_version_major=$1
18438                 db_version_minor=$2
18439                 db_version_patch=$3
18440         else
18441                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18442                 i_db=$undef
18443                 case " $libs " in
18444                 *"-ldb "*)
18445                         : Remove db from list of libraries to use
18446                         echo "Removing unusable -ldb from library list" >&4
18447                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18448                         shift
18449                         libs="$*"
18450                         echo "libs = $libs" >&4
18451                         ;;
18452                 esac
18453         fi
18454         $rm_try
18455         ;;
18456 esac
18457
18458 case "$i_db" in
18459 define)
18460         : Check the return type needed for hash
18461         echo " "
18462         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18463         $cat >try.c <<EOCP
18464 #$d_const HASCONST
18465 #ifndef HASCONST
18466 #define const
18467 #endif
18468 #include <sys/types.h>
18469 #include <db.h>
18470
18471 #ifndef DB_VERSION_MAJOR
18472 u_int32_t hash_cb (ptr, size)
18473 const void *ptr;
18474 size_t size;
18475 {
18476 }
18477 HASHINFO info;
18478 int main()
18479 {
18480         info.hash = hash_cb;
18481 }
18482 #endif
18483 EOCP
18484         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18485                 if $contains warning try.out >>/dev/null 2>&1 ; then
18486                         db_hashtype='int'
18487                 else
18488                         db_hashtype='u_int32_t'
18489                 fi
18490         else
18491                 : XXX Maybe we should just give up here.
18492                 db_hashtype=u_int32_t
18493                 $cat try.out >&4
18494                 echo "Help:  I can't seem to compile the db test program." >&4
18495                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18496         fi
18497         $rm_try
18498         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18499         ;;
18500 *)      db_hashtype=u_int32_t
18501         ;;
18502 esac
18503 case "$i_db" in
18504 define)
18505         : Check the return type needed for prefix
18506         echo " "
18507         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18508         cat >try.c <<EOCP
18509 #$d_const HASCONST
18510 #ifndef HASCONST
18511 #define const
18512 #endif
18513 #include <sys/types.h>
18514 #include <db.h>
18515
18516 #ifndef DB_VERSION_MAJOR
18517 size_t prefix_cb (key1, key2)
18518 const DBT *key1;
18519 const DBT *key2;
18520 {
18521 }
18522 BTREEINFO info;
18523 int main()
18524 {
18525         info.prefix = prefix_cb;
18526 }
18527 #endif
18528 EOCP
18529         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18530                 if $contains warning try.out >>/dev/null 2>&1 ; then
18531                         db_prefixtype='int'
18532                 else
18533                         db_prefixtype='size_t'
18534                 fi
18535         else
18536                 db_prefixtype='size_t'
18537                 : XXX Maybe we should just give up here.
18538                 $cat try.out >&4
18539                 echo "Help:  I can't seem to compile the db test program." >&4
18540                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18541         fi
18542         $rm_try
18543         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18544         ;;
18545 *)      db_prefixtype='size_t'
18546         ;;
18547 esac
18548
18549 : How can we generate normalized random numbers ?
18550 echo " "
18551 echo "Looking for a random number function..." >&4
18552 case "$randfunc" in
18553 '')
18554         if set drand48 val -f; eval $csym; $val; then
18555                 dflt="drand48"
18556                 echo "Good, found drand48()." >&4
18557         elif set random val -f; eval $csym; $val; then
18558                 dflt="random"
18559                 echo "OK, found random()." >&4
18560         else
18561                 dflt="rand"
18562                 echo "Yick, looks like I have to use rand()." >&4
18563         fi
18564         echo " "
18565         ;;
18566 *)
18567         dflt="$randfunc"
18568         ;;
18569 esac
18570 cont=true
18571
18572 case "$ccflags" in
18573 *-Dmy_rand=*|*-Dmy_srand=*)
18574         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18575         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18576         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18577         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18578         ;;
18579 esac
18580
18581 while $test "$cont"; do
18582         rp="Use which function to generate random numbers?"
18583         . ./myread
18584         if $test "$ans" = "$dflt"; then
18585                 : null
18586         else
18587                 randbits=''
18588         fi
18589         randfunc="$ans"
18590         if set $ans val -f; eval $csym; $val; then
18591                 cont=''
18592         else
18593                 dflt=y
18594                 rp="I cannot find function $ans. Use that name anyway?"
18595                 . ./myread
18596                 dflt=rand
18597                 case "$ans" in
18598                         [yY]*) cont='';;
18599                 esac
18600         fi
18601         case "$cont" in
18602         '')
18603                 case "$randfunc" in
18604                 drand48)
18605                         drand01="drand48()"
18606                         seedfunc="srand48"
18607                         randbits=48
18608                         randseedtype=long
18609                         ;;
18610                 rand|random)
18611                         case "$randbits" in
18612                         '')
18613 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18614                                 $cat >try.c <<EOCP
18615 #$i_unistd I_UNISTD
18616 #$i_stdlib I_STDLIB
18617 #include <stdio.h>
18618 #ifdef I_UNISTD
18619 #  include <unistd.h>
18620 #endif
18621 #ifdef I_STDLIB
18622 #  include <stdlib.h>
18623 #endif
18624 int main()
18625 {
18626         register int i;
18627         register unsigned long tmp;
18628         register unsigned long max = 0L;
18629
18630         for (i = 1000; i; i--) {
18631                 tmp = (unsigned long) $randfunc();
18632                 if (tmp > max) max = tmp;
18633         }
18634         for (i = 0; max; i++)
18635                 max /= 2;
18636         printf("%d\n",i);
18637 }
18638 EOCP
18639                                 set try
18640                                 if eval $compile_ok; then
18641                                         dflt=`try`
18642                                 else
18643                                         dflt='?'
18644                                         echo "(I can't seem to compile the test program...)"
18645                                 fi
18646                                 ;;
18647                         *)
18648                                 dflt="$randbits"
18649                                 ;;
18650                         esac
18651                         rp="How many bits does your $randfunc() function produce?"
18652                         . ./myread
18653                         randbits="$ans"
18654                         $rm_try
18655                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18656                         seedfunc="s$randfunc"
18657                         randseedtype=unsigned
18658                         ;;
18659                 *)
18660                         dflt="31"
18661                         rp="How many bits does your $randfunc() function produce?"
18662                         . ./myread
18663                         randbits="$ans"
18664                         seedfunc="s$randfunc"
18665                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18666                         if set $seedfunc val -f; eval $csym; $val; then
18667                                 echo "(Using $seedfunc() to seed random generator)"
18668                         else
18669                                 echo "(Warning: no $seedfunc() to seed random generator)"
18670                                 seedfunc=rand
18671                         fi
18672                         randseedtype=unsigned
18673                         ;;
18674                 esac
18675                 ;;
18676         esac
18677 done
18678
18679 echo " "
18680 echo "Determining whether or not we are on an EBCDIC system..." >&4
18681 $cat >try.c <<'EOM'
18682 int main()
18683 {
18684   if ('M'==0xd4) return 0;
18685   return 1;
18686 }
18687 EOM
18688
18689 val=$undef
18690 set try
18691 if eval $compile_ok; then
18692         if $run ./try; then
18693                 echo "You seem to speak EBCDIC." >&4
18694                 val="$define"
18695         else
18696                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18697         fi
18698 else
18699         echo "I'm unable to compile the test program." >&4
18700         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18701 fi
18702 $rm_try
18703 set ebcdic
18704 eval $setvar
18705
18706 echo " "
18707 $cat >&4 <<EOM
18708 Checking how to flush all pending stdio output...
18709 EOM
18710 # I only know how to find the first 32 possibly open files on SunOS.
18711 # See also hints/sunos_4_1.sh and util.c  --AD
18712 case "$osname" in
18713 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18714 esac
18715 $cat >>try.c <<EOCP
18716 #include <stdio.h>
18717 #$i_stdlib I_STDLIB
18718 #ifdef I_STDLIB
18719 #include <stdlib.h>
18720 #endif
18721 #$i_unistd I_UNISTD
18722 #ifdef I_UNISTD
18723 # include <unistd.h>
18724 #endif
18725 #$d_sysconf HAS_SYSCONF
18726 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18727 #ifdef HAS_STDIO_STREAM_ARRAY
18728 # define STDIO_STREAM_ARRAY $stdio_stream_array
18729 #endif
18730 int main() {
18731   FILE* p;
18732   unlink("try.out");
18733   p = fopen("try.out", "w");
18734 #ifdef TRY_FPUTC
18735   fputc('x', p);
18736 #else
18737 # ifdef TRY_FPRINTF
18738   fprintf(p, "x");
18739 # endif
18740 #endif
18741 #ifdef TRY_FFLUSH_NULL
18742   fflush(NULL);
18743 #endif
18744 #ifdef TRY_FFLUSH_ALL
18745   {
18746     long open_max = -1;
18747 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18748     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18749 # else
18750 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18751     open_max = sysconf(_SC_OPEN_MAX);
18752 #  else
18753 #   ifdef FOPEN_MAX
18754     open_max = FOPEN_MAX;
18755 #   else
18756 #    ifdef OPEN_MAX
18757     open_max = OPEN_MAX;
18758 #    else
18759 #     ifdef _NFILE
18760     open_max = _NFILE;
18761 #     endif
18762 #    endif
18763 #   endif
18764 #  endif
18765 # endif
18766 # ifdef HAS_STDIO_STREAM_ARRAY
18767     if (open_max > 0) {
18768       long i;
18769       for (i = 0; i < open_max; i++)
18770             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18771                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18772                 STDIO_STREAM_ARRAY[i]._flag)
18773                 fflush(&STDIO_STREAM_ARRAY[i]);
18774     }
18775   }
18776 # endif
18777 #endif
18778   _exit(42);
18779 }
18780 EOCP
18781 : first we have to find out how _not_ to flush
18782 $to try.c
18783 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18784     output=''
18785     set try -DTRY_FPUTC
18786     if eval $compile; then
18787             $run ./try 2>/dev/null
18788             code="$?"
18789             $from try.out
18790             if $test ! -s try.out -a "X$code" = X42; then
18791                 output=-DTRY_FPUTC
18792             fi
18793     fi
18794     case "$output" in
18795     '')
18796             set try -DTRY_FPRINTF
18797             if eval $compile; then
18798                     $run ./try 2>/dev/null
18799                     code="$?"
18800                     $from try.out
18801                     if $test ! -s try.out -a "X$code" = X42; then
18802                         output=-DTRY_FPRINTF
18803                     fi
18804             fi
18805         ;;
18806     esac
18807 fi
18808 : check for fflush NULL behaviour
18809 case "$fflushNULL" in
18810 '')     set try -DTRY_FFLUSH_NULL $output
18811         if eval $compile; then
18812                 $run ./try 2>/dev/null
18813                 code="$?"
18814                 $from try.out
18815                 if $test -s try.out -a "X$code" = X42; then
18816                         fflushNULL="`$cat try.out`"
18817                 else
18818                         if $test "X$code" != X42; then
18819                                 $cat >&4 <<EOM
18820 (If this test failed, don't worry, we'll try another method shortly.)
18821 EOM
18822                         fi
18823                 fi
18824         fi
18825         $rm_try
18826         case "$fflushNULL" in
18827         x)      $cat >&4 <<EOM
18828 Your fflush(NULL) works okay for output streams.
18829 Let's see if it clobbers input pipes...
18830 EOM
18831 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18832 # bug that improperly flushes the input end of pipes.  So we avoid the
18833 # autoflush on fork/system/exec support for now. :-(
18834 $cat >tryp.c <<EOCP
18835 #include <stdio.h>
18836 int
18837 main(int argc, char **argv)
18838 {
18839     char buf[1024];
18840     int i;
18841     char *bp = buf;
18842     while (1) {
18843         while ((i = getc(stdin)) != -1
18844                && (*bp++ = i) != '\n'
18845                && bp < &buf[1024])
18846         /* DO NOTHING */ ;
18847         *bp = '\0';
18848         fprintf(stdout, "%s", buf);
18849         fflush(NULL);
18850         if (i == -1)
18851             return 0;
18852         bp = buf;
18853     }
18854 }
18855 EOCP
18856                 fflushNULL="$define"
18857                 set tryp
18858                 if eval $compile; then
18859                     $rm -f tryp.out
18860                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18861                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18862                        $cat >&4 <<EOM
18863 fflush(NULL) seems to behave okay with input streams.
18864 EOM
18865                         fflushNULL="$define"
18866                     else
18867                         $cat >&4 <<EOM
18868 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18869 EOM
18870                         fflushNULL="$undef"
18871                     fi
18872                 fi
18873                 $rm -f core tryp.c tryp.core core.tryp.*
18874                 ;;
18875         '')     $cat >&4 <<EOM
18876 Your fflush(NULL) isn't working (contrary to ANSI C).
18877 EOM
18878                 fflushNULL="$undef"
18879                 ;;
18880         *)      $cat >&4 <<EOM
18881 Cannot figure out whether your fflush(NULL) works or not.
18882 I'm assuming it doesn't (contrary to ANSI C).
18883 EOM
18884                 fflushNULL="$undef"
18885                 ;;
18886         esac
18887         ;;
18888 $define|true|[yY]*)
18889         fflushNULL="$define"
18890         ;;
18891 *)
18892         fflushNULL="$undef"
18893         ;;
18894 esac
18895 : check explicit looping only if NULL did not work, and if the pipe
18896 : bug does not show up on an explicit flush too
18897 case "$fflushNULL" in
18898 "$undef")
18899         $cat >tryp.c <<EOCP
18900 #include <stdio.h>
18901 int
18902 main(int argc, char **argv)
18903 {
18904     char buf[1024];
18905     int i;
18906     char *bp = buf;
18907     while (1) {
18908         while ((i = getc(stdin)) != -1
18909                && (*bp++ = i) != '\n'
18910                && bp < &buf[1024])
18911         /* DO NOTHING */ ;
18912         *bp = '\0';
18913         fprintf(stdout, "%s", buf);
18914         fflush(stdin);
18915         if (i == -1)
18916             return 0;
18917         bp = buf;
18918     }
18919 }
18920 EOCP
18921         set tryp
18922         if eval $compile; then
18923             $rm -f tryp.out
18924             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18925             if cmp tryp.c tryp.out >/dev/null 2>&1; then
18926                $cat >&4 <<EOM
18927 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18928 EOM
18929                 : now check for fflushall behaviour
18930                 case "$fflushall" in
18931                 '')     set try -DTRY_FFLUSH_ALL $output
18932                         if eval $compile; then
18933                                 $cat >&4 <<EOM
18934 (Now testing the other method--but note that this also may fail.)
18935 EOM
18936                                 $run ./try 2>/dev/null
18937                                 code=$?
18938                                 $from try.out
18939                                 if $test -s try.out -a "X$code" = X42; then
18940                                         fflushall="`$cat try.out`"
18941                                 fi
18942                         fi
18943                         $rm_try
18944                         case "$fflushall" in
18945                         x)      $cat >&4 <<EOM
18946 Whew. Flushing explicitly all the stdio streams works.
18947 EOM
18948                                 fflushall="$define"
18949                                 ;;
18950                         '')     $cat >&4 <<EOM
18951 Sigh. Flushing explicitly all the stdio streams doesn't work.
18952 EOM
18953                                 fflushall="$undef"
18954                                 ;;
18955                         *)      $cat >&4 <<EOM
18956 Cannot figure out whether flushing stdio streams explicitly works or not.
18957 I'm assuming it doesn't.
18958 EOM
18959                                 fflushall="$undef"
18960                                 ;;
18961                         esac
18962                         ;;
18963                 "$define"|true|[yY]*)
18964                         fflushall="$define"
18965                         ;;
18966                 *)
18967                         fflushall="$undef"
18968                         ;;
18969                 esac
18970             else
18971                 $cat >&4 <<EOM
18972 All is futile.  Even fflush(stdin) clobbers input pipes!
18973 EOM
18974                 fflushall="$undef"
18975             fi
18976         else
18977             fflushall="$undef"
18978         fi
18979         $rm -f core tryp.c tryp.core core.tryp.*
18980         ;;
18981 *)      fflushall="$undef"
18982         ;;
18983 esac
18984
18985 case "$fflushNULL$fflushall" in
18986 undefundef)
18987         $cat <<EOM
18988 OK, I give up.  I cannot figure out how to flush pending stdio output.
18989 We won't be flushing handles at all before fork/exec/popen.
18990 EOM
18991         ;;
18992 esac
18993 $rm_try
18994
18995 : Store the full pathname to the ar program for use in the C program
18996 : Respect a hint or command line value for full_ar.
18997 case "$full_ar" in
18998 '') full_ar=$ar ;;
18999 esac
19000
19001 : Store the full pathname to the sed program for use in the C program
19002 full_sed=$sed
19003
19004 : see what type gids are declared as in the kernel
19005 echo " "
19006 echo "Looking for the type for group ids returned by getgid()."
19007 set gid_t gidtype xxx stdio.h sys/types.h
19008 eval $typedef
19009 case "$gidtype" in
19010 xxx)
19011         xxx=`./findhdr sys/user.h`
19012         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19013         case $1 in
19014         unsigned) dflt="$1 $2" ;;
19015         *) dflt="$1" ;;
19016         esac
19017         ;;
19018 *) dflt="$gidtype";;
19019 esac
19020 case "$gidtype" in
19021 gid_t) echo "gid_t found." ;;
19022 *)      rp="What is the type for group ids returned by getgid()?"
19023         . ./myread
19024         gidtype="$ans"
19025         ;;
19026 esac
19027
19028 echo " "
19029 case "$gidtype" in
19030 *_t) zzz="$gidtype"     ;;
19031 *)   zzz="gid"          ;;
19032 esac
19033 echo "Checking the size of $zzz..." >&4 
19034 cat > try.c <<EOCP
19035 #include <sys/types.h>
19036 #include <stdio.h>
19037 #$i_stdlib I_STDLIB
19038 #ifdef I_STDLIB
19039 #include <stdlib.h>
19040 #endif
19041 int main() {
19042     printf("%d\n", (int)sizeof($gidtype));
19043     exit(0);
19044 }
19045 EOCP
19046 set try
19047 if eval $compile_ok; then
19048         yyy=`$run ./try`
19049         case "$yyy" in
19050         '')     gidsize=4
19051                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19052                 ;;
19053         *)      gidsize=$yyy
19054                 echo "Your $zzz is $gidsize bytes long."
19055                 ;;
19056         esac
19057 else
19058         gidsize=4
19059         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19060 fi
19061
19062
19063 echo " "
19064 case "$gidtype" in
19065 *_t) zzz="$gidtype"     ;;
19066 *)   zzz="gid"          ;;
19067 esac
19068 echo "Checking the sign of $zzz..." >&4 
19069 cat > try.c <<EOCP
19070 #include <sys/types.h>
19071 #include <stdio.h>
19072 int main() {
19073         $gidtype foo = -1;
19074         if (foo < 0)
19075                 printf("-1\n");
19076         else
19077                 printf("1\n");
19078 }
19079 EOCP
19080 set try
19081 if eval $compile; then
19082         yyy=`$run ./try`
19083         case "$yyy" in
19084         '')     gidsign=1
19085                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19086                 ;;
19087         *)      gidsign=$yyy
19088                 case "$gidsign" in
19089                  1) echo "Your $zzz is unsigned." ;;
19090                 -1) echo "Your $zzz is signed."   ;;
19091                 esac
19092                 ;;
19093         esac
19094 else
19095         gidsign=1
19096         echo "(I can't compile the test program--guessing unsigned.)" >&4
19097 fi
19098
19099
19100 echo " "
19101
19102 if $test X"$quadtype" != X; then
19103
19104 echo "Checking how to print 64-bit integers..." >&4
19105
19106 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19107         $cat >try.c <<'EOCP'
19108 #include <sys/types.h>
19109 #include <stdio.h>
19110 int main() {
19111   int q = 12345678901;
19112   printf("%ld\n", q);
19113 }
19114 EOCP
19115         set try
19116         if eval $compile; then
19117                 yyy=`$run ./try`
19118                 case "$yyy" in
19119                 12345678901)
19120                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19121                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19122                         echo "We will use %d."
19123                         ;;
19124                 esac
19125         fi
19126 fi
19127
19128 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19129         $cat >try.c <<'EOCP'
19130 #include <sys/types.h>
19131 #include <stdio.h>
19132 int main() {
19133   long q = 12345678901;
19134   printf("%ld\n", q);
19135 }
19136 EOCP
19137         set try
19138         if eval $compile; then
19139                 yyy=`$run ./try`
19140                 case "$yyy" in
19141                 12345678901)
19142                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19143                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19144                         echo "We will use %ld."
19145                         ;;
19146                 esac
19147         fi
19148 fi
19149
19150 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19151         $cat >try.c <<'EOCP'
19152 #include <sys/types.h>
19153 #include <inttypes.h>
19154 #include <stdio.h>
19155 int main() {
19156   int64_t q = 12345678901;
19157   printf("%" PRId64 "\n", q);
19158 }
19159 EOCP
19160         set try
19161         if eval $compile; then
19162                 yyy=`$run ./try`
19163                 case "$yyy" in
19164                 12345678901)
19165                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19166                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19167                         echo "We will use the C9X style."
19168                         ;;
19169                 esac
19170         fi
19171 fi
19172
19173 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19174         $cat >try.c <<EOCP
19175 #include <sys/types.h>
19176 #include <stdio.h>
19177 int main() {
19178   $quadtype q = 12345678901;
19179   printf("%Ld\n", q);
19180 }
19181 EOCP
19182         set try
19183         if eval $compile; then
19184                 yyy=`$run ./try`
19185                 case "$yyy" in
19186                 12345678901)
19187                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19188                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19189                         echo "We will use %Ld."
19190                         ;;
19191                 esac
19192         fi
19193 fi
19194
19195 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19196         $cat >try.c <<'EOCP'
19197 #include <sys/types.h>
19198 #include <stdio.h>
19199 int main() {
19200   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19201   printf("%lld\n", q);
19202 }
19203 EOCP
19204         set try
19205         if eval $compile; then
19206                 yyy=`$run ./try`
19207                 case "$yyy" in
19208                 12345678901)
19209                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19210                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19211                         echo "We will use the %lld style."
19212                         ;;
19213                 esac
19214         fi
19215 fi
19216
19217 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19218         $cat >try.c <<EOCP
19219 #include <sys/types.h>
19220 #include <stdio.h>
19221 int main() {
19222   $quadtype q = 12345678901;
19223   printf("%qd\n", q);
19224 }
19225 EOCP
19226         set try
19227         if eval $compile; then
19228                 yyy=`$run ./try`
19229                 case "$yyy" in
19230                 12345678901)
19231                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19232                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19233                         echo "We will use %qd."
19234                         ;;
19235                 esac
19236         fi
19237 fi
19238
19239 if $test X"$sPRId64" = X; then
19240         echo "Cannot figure out how to print 64-bit integers." >&4
19241 fi
19242 $rm_try
19243
19244 fi
19245
19246 case "$sPRId64" in
19247 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19248         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19249         ;;
19250 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19251         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19252         ;;
19253 esac
19254
19255
19256 echo " "
19257 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19258
19259 if $test X"$ivsize" = X8; then
19260         ivdformat="$sPRId64"
19261         uvuformat="$sPRIu64"
19262         uvoformat="$sPRIo64"
19263         uvxformat="$sPRIx64"
19264         uvXUformat="$sPRIXU64"
19265 else
19266         if $test X"$ivsize" = X"$longsize"; then
19267                 ivdformat='"ld"'
19268                 uvuformat='"lu"'
19269                 uvoformat='"lo"'
19270                 uvxformat='"lx"'
19271                 uvXUformat='"lX"'
19272         else
19273                 if $test X"$ivsize" = X"$intsize"; then
19274                         ivdformat='"d"'
19275                         uvuformat='"u"'
19276                         uvoformat='"o"'
19277                         uvxformat='"x"'
19278                         uvXUformat='"X"'
19279                 else
19280                         : far out
19281                         if $test X"$ivsize" = X"$shortsize"; then
19282                                 ivdformat='"hd"'
19283                                 uvuformat='"hu"'
19284                                 uvoformat='"ho"'
19285                                 uvxformat='"hx"'
19286                                 uvXUformat='"hX"'
19287                         fi
19288                 fi
19289         fi
19290 fi
19291
19292 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19293         nveformat="$sPRIeldbl"
19294         nvfformat="$sPRIfldbl"
19295         nvgformat="$sPRIgldbl"
19296         nvEUformat="$sPRIEUldbl"
19297         nvFUformat="$sPRIFUldbl"
19298         nvGUformat="$sPRIGUldbl"
19299 else
19300         nveformat='"e"'
19301         nvfformat='"f"'
19302         nvgformat='"g"'
19303         nvEUformat='"E"'
19304         nvFUformat='"F"'
19305         nvGUformat='"G"'
19306 fi
19307
19308 case "$ivdformat" in
19309 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19310     exit 1
19311     ;;
19312 esac
19313
19314
19315 echo " "
19316 $echo "Checking the format string to be used for gids..." >&4
19317
19318 case "$gidsign" in
19319 -1)     if $test X"$gidsize" = X"$ivsize"; then
19320                 gidformat="$ivdformat"
19321         else
19322                 if $test X"$gidsize" = X"$longsize"; then
19323                         gidformat='"ld"'
19324                 else
19325                         if $test X"$gidsize" = X"$intsize"; then
19326                                 gidformat='"d"'
19327                         else
19328                                 if $test X"$gidsize" = X"$shortsize"; then
19329                                         gidformat='"hd"'
19330                                 fi
19331                         fi
19332                 fi
19333         fi
19334         ;;
19335 *)      if $test X"$gidsize" = X"$uvsize"; then
19336                 gidformat="$uvuformat"
19337         else
19338                 if $test X"$gidsize" = X"$longsize"; then
19339                         gidformat='"lu"'
19340                 else
19341                         if $test X"$gidsize" = X"$intsize"; then
19342                                 gidformat='"u"'
19343                         else
19344                                 if $test X"$gidsize" = X"$shortsize"; then
19345                                         gidformat='"hu"'
19346                                 fi
19347                         fi
19348                 fi
19349         fi
19350         ;;
19351 esac
19352
19353 : see if getgroups exists
19354 set getgroups d_getgrps
19355 eval $inlibc
19356
19357 : see if setgroups exists
19358 set setgroups d_setgrps
19359 eval $inlibc
19360
19361
19362 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19363 echo " "
19364 case "$d_getgrps$d_setgrps" in
19365 *define*)
19366         case "$groupstype" in
19367         '') dflt="$gidtype" ;;
19368         *)  dflt="$groupstype" ;;
19369         esac
19370         $cat <<EOM
19371 What type of pointer is the second argument to getgroups() and setgroups()?
19372 Usually this is the same as group ids, $gidtype, but not always.
19373
19374 EOM
19375         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19376         . ./myread
19377         groupstype="$ans"
19378         ;;
19379 *)  groupstype="$gidtype";;
19380 esac
19381
19382
19383 if $test $patchlevel -lt 9; then
19384 : MAD is not available in 5.8.x or earlier.
19385     ans=n;
19386 else
19387     case "$mad" in
19388     $define|true|[yY]*) dflt='y' ;;
19389     *)                  dflt='n' ;;
19390     esac
19391     cat <<EOM
19392
19393 Would you like to build with Misc Attribute Decoration? This is development
19394 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19395 overhead on the interpreter.
19396
19397 If this doesn't make any sense to you, just accept the default '$dflt'.
19398 EOM
19399     rp='Build Perl with MAD?'
19400     . ./myread
19401 fi
19402 case "$ans" in
19403 y|Y)    val="$define"
19404         madlyh='madly.h madly.act madly.tab'
19405         madlysrc='madly.c'
19406         madlyobj="madly$_o" ;;
19407 *)      val="$undef"
19408         madlyh=''
19409         madlysrc=''
19410         madlyobj='' ;;
19411 esac
19412 set mad
19413 eval $setvar
19414
19415 echo " "
19416 echo "Checking if your $make program sets \$(MAKE)..." >&4
19417 case "$make_set_make" in
19418 '')
19419         $sed 's/^X //' > testmake.mak << 'EOF'
19420 Xall:
19421 X       @echo 'maketemp="$(MAKE)"'
19422 EOF
19423         case "`$make -f testmake.mak 2>/dev/null`" in
19424         *maketemp=*) make_set_make='#' ;;
19425         *)      make_set_make="MAKE=$make" ;;
19426         esac
19427         $rm -f testmake.mak
19428         ;;
19429 esac
19430 case "$make_set_make" in
19431 '#') echo "Yup, it does.";;
19432 *) echo "Nope, it doesn't.";;
19433 esac
19434
19435 : see what type is used for mode_t
19436 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19437 set mode_t modetype int stdio.h sys/types.h
19438 eval $typedef_ask
19439
19440 : see if we need va_copy
19441 echo " "
19442 case "$i_stdarg" in
19443 "$define")
19444         $cat >try.c <<EOCP
19445 #include <stdarg.h>
19446 #include <stdio.h>
19447 #$i_stdlib I_STDLIB
19448 #ifdef I_STDLIB
19449 #include <stdlib.h>
19450 #endif
19451 #include <signal.h>
19452
19453 int
19454 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19455 {
19456   return vfprintf(f, fmt, *valp);
19457 }
19458
19459 int
19460 myvfprintf(FILE *f, const  char *fmt, va_list val)
19461 {
19462   return ivfprintf(f, fmt, &val);
19463 }
19464
19465 int
19466 myprintf(char *fmt, ...)
19467 {
19468   va_list val;
19469   va_start(val, fmt);
19470   return myvfprintf(stdout, fmt, val);
19471 }
19472
19473 int
19474 main(int ac, char **av)
19475 {
19476   signal(SIGSEGV, exit);
19477
19478   myprintf("%s%cs all right, then\n", "that", '\'');
19479   exit(0);
19480 }
19481 EOCP
19482         set try
19483         if eval $compile && $run ./try 2>&1 >/dev/null; then
19484                 case "`$run ./try`" in
19485                 "that's all right, then")
19486                         okay=yes
19487                         ;;
19488                 esac
19489         fi
19490         case "$okay" in
19491         yes)    echo "It seems that you don't need va_copy()." >&4
19492                 need_va_copy="$undef"
19493                 ;;
19494         *)      echo "It seems that va_copy() or similar will be needed." >&4
19495                 need_va_copy="$define"
19496                 ;;
19497         esac
19498         $rm_try
19499         ;;
19500 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19501         ;;
19502 esac
19503
19504 : see what type is used for size_t
19505 rp="What is the type used for the length parameter for string functions?"
19506 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19507 eval $typedef_ask
19508
19509 : check for type of arguments to gethostbyaddr. 
19510 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19511         case "$d_gethbyaddr" in
19512         $define)
19513                 $cat <<EOM
19514
19515 Checking to see what type of arguments are accepted by gethostbyaddr().
19516 EOM
19517                 hdrs="$define sys/types.h
19518                         $d_socket sys/socket.h 
19519                         $i_niin netinet/in.h 
19520                         $i_netdb netdb.h
19521                         $i_unistd unistd.h"
19522                 : The first arg can 'char *' or 'void *'
19523                 : The second arg is some of integral type
19524                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19525                         for yyy in size_t long int; do
19526                                 case "$netdb_host_type" in
19527                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19528                                         if ./protochk "$try" $hdrs; then
19529                                                 echo "Your system accepts $xxx for the first arg."
19530                                                 echo "...and $yyy for the second arg."
19531                                                 netdb_host_type="$xxx"
19532                                                 netdb_hlen_type="$yyy"
19533                                         fi
19534                                         ;;
19535                                 esac
19536                         done
19537                 done
19538                 : In case none of those worked, prompt the user.
19539                 case "$netdb_host_type" in
19540                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19541                         dflt='char *'
19542                         . ./myread
19543                         netdb_host_type=$ans
19544                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19545                         dflt="$sizetype"
19546                         . ./myread
19547                         netdb_hlen_type=$ans
19548                         ;;
19549                 esac
19550                 ;;
19551         *)      : no gethostbyaddr, so pick harmless defaults
19552                 netdb_host_type='char *'
19553                 netdb_hlen_type="$sizetype"
19554                 ;;
19555         esac
19556         # Remove the "const" if needed. -- but then we'll have a 
19557         # prototype clash!
19558         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19559 fi
19560
19561 : check for type of argument to gethostbyname. 
19562 if test "X$netdb_name_type" = X ; then
19563         case "$d_gethbyname" in
19564         $define)
19565                 $cat <<EOM
19566
19567 Checking to see what type of argument is accepted by gethostbyname().
19568 EOM
19569                 hdrs="$define sys/types.h
19570                         $d_socket sys/socket.h 
19571                         $i_niin netinet/in.h 
19572                         $i_netdb netdb.h
19573                         $i_unistd unistd.h"
19574                 for xxx in "const char *" "char *"; do
19575                         case "$netdb_name_type" in
19576                         '')     try="extern struct hostent *gethostbyname($xxx);"
19577                                 if ./protochk "$try" $hdrs; then
19578                                         echo "Your system accepts $xxx."
19579                                         netdb_name_type="$xxx"
19580                                 fi
19581                                 ;;
19582                         esac
19583                 done
19584                 : In case none of those worked, prompt the user.
19585                 case "$netdb_name_type" in
19586                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19587                         dflt='char *'
19588                         . ./myread
19589                         netdb_name_type=$ans
19590                         ;;
19591                 esac
19592                 ;;
19593         *)      : no gethostbyname, so pick harmless default
19594                 netdb_name_type='char *'
19595                 ;;
19596         esac
19597 fi
19598
19599 : check for type of 1st argument to getnetbyaddr. 
19600 if test "X$netdb_net_type" = X ; then
19601         case "$d_getnbyaddr" in
19602         $define)
19603                 $cat <<EOM
19604
19605 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19606 EOM
19607                 hdrs="$define sys/types.h
19608                         $d_socket sys/socket.h 
19609                         $i_niin netinet/in.h 
19610                         $i_netdb netdb.h
19611                         $i_unistd unistd.h"
19612                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19613                         case "$netdb_net_type" in
19614                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19615                                 if ./protochk "$try" $hdrs; then
19616                                         echo "Your system accepts $xxx."
19617                                         netdb_net_type="$xxx"
19618                                 fi
19619                                 ;;
19620                         esac
19621                 done
19622                 : In case none of those worked, prompt the user.
19623                 case "$netdb_net_type" in
19624                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19625                         dflt='long'
19626                         . ./myread
19627                         netdb_net_type=$ans
19628                         ;;
19629                 esac
19630                 ;;
19631         *)      : no getnetbyaddr, so pick harmless default
19632                 netdb_net_type='long'
19633                 ;;
19634         esac
19635 fi
19636 : locate the preferred pager for this system
19637 fn=f/
19638 case "$pager" in
19639 '')
19640         dflt=''
19641         case "$pg" in
19642         /*) dflt=$pg;;
19643         [a-zA-Z]:/*) dflt=$pg;;
19644         esac
19645         case "$more" in
19646         /*) dflt=$more;;
19647         [a-zA-Z]:/*) dflt=$more;;
19648         esac
19649         case "$less" in
19650         /*) dflt=$less;;
19651         [a-zA-Z]:/*) dflt=$less;;
19652         esac
19653         case "$dflt" in
19654         '') dflt=/usr/ucb/more;;
19655         esac
19656         ;;
19657 *)      dflt="$pager"
19658         : Instruct ./getfile to trust the hinted or previous pager value,
19659         : even if it does not begin with a slash.  For example, on os2,
19660         : pager might be cmd /c more.  See comments in UU/getfile.
19661         fn="f/($pager)"
19662         ;;
19663 esac
19664 echo " "
19665 rp='What pager is used on your system?'
19666 . ./getfile
19667 pager="$ans"
19668
19669 : see what type pids are declared as in the kernel
19670 rp="What is the type of process ids on this system?"
19671 set pid_t pidtype int stdio.h sys/types.h
19672 eval $typedef_ask
19673
19674 : see if ar generates random libraries by itself
19675 echo " "
19676 echo "Checking how to generate random libraries on your machine..." >&4
19677 echo 'int bar1() { return bar2(); }' > bar1.c
19678 echo 'int bar2() { return 2; }' > bar2.c
19679 $cat > foo.c <<EOP
19680 #$i_stdlib I_STDLIB
19681 #ifdef I_STDLIB
19682 #include <stdlib.h>
19683 #endif
19684 int main() { printf("%d\n", bar1()); exit(0); }
19685 EOP
19686 $cc $ccflags -c bar1.c >/dev/null 2>&1
19687 $cc $ccflags -c bar2.c >/dev/null 2>&1
19688 $cc $ccflags -c foo.c >/dev/null 2>&1
19689 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19690 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19691         $run ./foobar >/dev/null 2>&1; then
19692         echo "$ar appears to generate random libraries itself."
19693         orderlib=false
19694         if [ "X$ranlib" = "X" ]; then
19695             ranlib=":"
19696         fi
19697 elif $ar s bar$_a >/dev/null 2>&1 &&
19698         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19699         $run ./foobar >/dev/null 2>&1; then
19700                 echo "a table of contents needs to be added with '$ar s'."
19701                 orderlib=false
19702                 ranlib="$ar s"
19703 elif $ar ts bar$_a >/dev/null 2>&1 &&
19704         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19705         $run ./foobar >/dev/null 2>&1; then
19706                 echo "a table of contents needs to be added with '$ar ts'."
19707                 orderlib=false
19708                 ranlib="$ar ts"
19709 else
19710         case "$ranlib" in
19711         :) ranlib='';;
19712         '')
19713                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19714                 $test -f $ranlib || ranlib=''
19715                 ;;
19716         esac
19717         if $test -n "$ranlib"; then
19718                 echo "your system has '$ranlib'; we'll use that."
19719                 orderlib=false
19720         else
19721                 echo "your system doesn't seem to support random libraries"
19722                 echo "so we'll use lorder and tsort to order the libraries."
19723                 orderlib=true
19724                 ranlib=":"
19725         fi
19726 fi
19727 $rm -f foo* bar*
19728
19729 : check for type of arguments to select. 
19730 case "$selecttype" in
19731 '') case "$d_select" in
19732         $define)
19733                 echo " "
19734                 $cat <<EOM
19735 Checking to see what type of arguments are accepted by select().
19736 EOM
19737                 hdrs="$define sys/types.h
19738                         $i_systime sys/time.h 
19739                         $i_sysselct sys/select.h
19740                         $d_socket sys/socket.h"
19741                 : The first arg can be int, unsigned, or size_t
19742                 : The last arg may or may not be 'const'
19743                 val=''
19744                 : void pointer has been seen but using that
19745                 : breaks the selectminbits test
19746                 for xxx in 'fd_set *' 'int *'; do
19747                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19748                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19749                                         case "$val" in
19750                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19751                                                 if ./protochk "$try" $hdrs; then
19752                                                         echo "Your system accepts $xxx."
19753                                                         val="$xxx"
19754                                                 fi
19755                                                 ;;
19756                                         esac
19757                                 done
19758                         done
19759                 done
19760                 case "$val" in
19761                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19762                         case "$d_fd_set" in
19763                                 $define) dflt="fd_set *" ;;
19764                                 *)              dflt="int *" ;;
19765                         esac
19766                         . ./myread
19767                         val=$ans
19768                         ;;
19769                 esac
19770                 selecttype="$val"
19771                 ;;
19772         *)      : no select, so pick a harmless default
19773                 selecttype='int *'
19774                 ;;
19775         esac
19776         ;;
19777 esac
19778
19779 : check for the select 'width'
19780 case "$selectminbits" in
19781 '') safebits=`expr $ptrsize \* 8`
19782     case "$d_select" in
19783         $define)
19784                 $cat <<EOM
19785
19786 Checking to see on how many bits at a time your select() operates...
19787 EOM
19788                 $cat >try.c <<EOCP
19789 #include <sys/types.h>
19790 #$i_time I_TIME
19791 #$i_systime I_SYS_TIME
19792 #$i_systimek I_SYS_TIME_KERNEL
19793 #ifdef I_TIME
19794 #   include <time.h>
19795 #endif
19796 #ifdef I_SYS_TIME
19797 #   ifdef I_SYS_TIME_KERNEL
19798 #       define KERNEL
19799 #   endif
19800 #   include <sys/time.h>
19801 #   ifdef I_SYS_TIME_KERNEL
19802 #       undef KERNEL
19803 #   endif
19804 #endif
19805 #$i_sysselct I_SYS_SELECT
19806 #ifdef I_SYS_SELECT
19807 #include <sys/select.h>
19808 #endif
19809 #$d_socket HAS_SOCKET
19810 #ifdef HAS_SOCKET
19811 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19812 #endif
19813 #include <stdio.h>
19814 #$i_stdlib I_STDLIB
19815 #ifdef I_STDLIB
19816 #include <stdlib.h>
19817 #endif
19818 $selecttype b;
19819 #define S sizeof(*(b))
19820 #define MINBITS 64
19821 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19822 #define NBITS  (NBYTES * 8)
19823 int main() {
19824     char *s = (char *)malloc(NBYTES);
19825     struct timeval t;
19826     int i;
19827     FILE* fp;
19828     int fd;
19829
19830     if (!s)
19831         exit(1);
19832     fclose(stdin);
19833     fp = fopen("try.c", "r");
19834     if (fp == 0)
19835       exit(2);
19836     fd = fileno(fp);
19837     if (fd < 0)
19838       exit(3);
19839     b = ($selecttype)s;
19840     for (i = 0; i < NBITS; i++)
19841         FD_SET(i, b);
19842     t.tv_sec  = 0;
19843     t.tv_usec = 0;
19844     select(fd + 1, b, 0, 0, &t);
19845     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19846     free(s);
19847     printf("%d\n", i + 1);
19848     return 0;
19849 }
19850 EOCP
19851                 set try
19852                 if eval $compile_ok; then
19853                         selectminbits=`$run ./try`
19854                         case "$selectminbits" in
19855                         '')     cat >&4 <<EOM
19856 Cannot figure out on how many bits at a time your select() operates.
19857 I'll play safe and guess it is $safebits bits.
19858 EOM
19859                                 selectminbits=$safebits
19860                                 bits="$safebits bits"
19861                                 ;;
19862                         1)      bits="1 bit" ;;
19863                         *)      bits="$selectminbits bits" ;;
19864                         esac
19865                         echo "Your select() operates on $bits at a time." >&4
19866                 else
19867                         rp='What is the minimum number of bits your select() operates on?'
19868                         case "$byteorder" in
19869                         12345678)       dflt=64 ;;
19870                         1234)           dflt=32 ;;
19871                         *)              dflt=1  ;;
19872                         esac
19873                         . ./myread
19874                         val=$ans
19875                         selectminbits="$val"
19876                 fi
19877                 $rm_try
19878                 ;;
19879         *)      : no select, so pick a harmless default
19880                 selectminbits=$safebits
19881                 ;;
19882         esac
19883         ;;
19884 esac
19885
19886 : Trace out the files included by signal.h, then look for SIGxxx names.
19887 : Remove SIGARRAYSIZE used by HPUX.
19888 : Remove SIGSTKSIZE used by Linux.
19889 : Remove SIGSTKSZ used by Posix.
19890 : Remove SIGTYP void lines used by OS2.
19891 : Some cpps, like os390, dont give the file name anywhere
19892 if [ "X$fieldn" = X ]; then
19893         : Just make some guesses.  We check them later.
19894         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19895 else
19896         xxx=`echo '#include <signal.h>' |
19897         $cppstdin $cppminus $cppflags 2>/dev/null |
19898         $grep '^[       ]*#.*include' | 
19899         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19900 fi
19901 : Check this list of files to be sure we have parsed the cpp output ok.
19902 : This will also avoid potentially non-existent files, such 
19903 : as ../foo/bar.h
19904 xxxfiles=''
19905 for xx in $xxx /dev/null ; do
19906         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19907 done
19908 : If we have found no files, at least try signal.h
19909 case "$xxxfiles" in
19910 '')     xxxfiles=`./findhdr signal.h` ;;
19911 esac
19912 xxx=`awk '
19913 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19914         print substr($2, 4, 20)
19915 }
19916 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19917         print substr($3, 4, 20)
19918 }' $xxxfiles`
19919 : Append some common names just in case the awk scan failed.
19920 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19921 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19922 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19923 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19924 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19925
19926 : generate a few handy files for later
19927 $cat > signal.c <<EOCP
19928 #include <sys/types.h>
19929 #include <signal.h>
19930 #$i_stdlib I_STDLIB
19931 #ifdef I_STDLIB
19932 #include <stdlib.h>
19933 #endif
19934 #include <stdio.h>
19935 int main() {
19936
19937 /* Strange style to avoid deeply-nested #if/#else/#endif */
19938 #ifndef NSIG
19939 #  ifdef _NSIG
19940 #    define NSIG (_NSIG)
19941 #  endif
19942 #endif
19943
19944 #ifndef NSIG
19945 #  ifdef SIGMAX
19946 #    define NSIG (SIGMAX+1)
19947 #  endif
19948 #endif
19949
19950 #ifndef NSIG
19951 #  ifdef SIG_MAX
19952 #    define NSIG (SIG_MAX+1)
19953 #  endif
19954 #endif
19955
19956 #ifndef NSIG
19957 #  ifdef _SIG_MAX
19958 #    define NSIG (_SIG_MAX+1)
19959 #  endif
19960 #endif
19961
19962 #ifndef NSIG
19963 #  ifdef MAXSIG
19964 #    define NSIG (MAXSIG+1)
19965 #  endif
19966 #endif
19967
19968 #ifndef NSIG
19969 #  ifdef MAX_SIG
19970 #    define NSIG (MAX_SIG+1)
19971 #  endif
19972 #endif
19973
19974 #ifndef NSIG
19975 #  ifdef SIGARRAYSIZE
19976 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19977 #  endif
19978 #endif
19979
19980 #ifndef NSIG
19981 #  ifdef _sys_nsig
19982 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19983 #  endif
19984 #endif
19985
19986 /* Default to some arbitrary number that's big enough to get most
19987    of the common signals.
19988 */
19989 #ifndef NSIG
19990 #    define NSIG 50
19991 #endif
19992
19993 printf("NSIG %d\n", NSIG);
19994
19995 #ifndef JUST_NSIG
19996
19997 EOCP
19998
19999 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20000 {
20001         printf "#ifdef SIG"; printf $1; printf "\n"
20002         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20003         printf $1; printf ");\n"
20004         printf "#endif\n"
20005 }
20006 END {
20007         printf "#endif /* JUST_NSIG */\n";
20008         printf "exit(0);\n}\n";
20009 }
20010 ' >>signal.c
20011 $cat >signal.awk <<'EOP'
20012 BEGIN { ndups = 0 }
20013 $1 ~ /^NSIG$/ { nsig = $2 }
20014 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20015     if ($2 > maxsig) { maxsig = $2 }
20016     if (sig_name[$2]) {
20017         dup_name[ndups] = $1
20018         dup_num[ndups] = $2
20019         ndups++ 
20020     }
20021     else {
20022         sig_name[$2] = $1
20023         sig_num[$2] = $2
20024     }
20025 }
20026 END { 
20027     if (nsig == 0) {
20028         nsig = maxsig + 1
20029     }
20030     printf("NSIG %d\n", nsig);
20031     for (n = 1; n < nsig; n++) {
20032         if (sig_name[n]) {
20033             printf("%s %d\n", sig_name[n], sig_num[n])
20034         }
20035         else {
20036             printf("NUM%d %d\n", n, n) 
20037         }
20038     }
20039     for (n = 0; n < ndups; n++) {
20040         printf("%s %d\n", dup_name[n], dup_num[n])
20041     }
20042 }
20043 EOP
20044 $cat >signal_cmd <<EOS
20045 $startsh
20046 if $test -s signal.lst; then
20047     echo "Using your existing signal.lst file"
20048         exit 0
20049 fi
20050 xxx="$xxx"
20051 EOS
20052 $cat >>signal_cmd <<'EOS'
20053
20054 set signal
20055 if eval $compile_ok; then
20056         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20057 else
20058         echo "(I can't seem be able to compile the whole test program)" >&4
20059         echo "(I'll try it in little pieces.)" >&4
20060         set signal -DJUST_NSIG
20061         if eval $compile_ok; then
20062                 $run ./signal$_exe > signal.nsg
20063                 $cat signal.nsg
20064         else
20065                 echo "I can't seem to figure out how many signals you have." >&4
20066                 echo "Guessing 50." >&4
20067                 echo 'NSIG 50' > signal.nsg
20068         fi
20069         : Now look at all the signal names, one at a time.
20070         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20071                 $cat > signal.c <<EOCP
20072 #include <sys/types.h>
20073 #include <signal.h>
20074 #include <stdio.h>
20075 int main() {
20076 printf("$xx %d\n", SIG${xx});
20077 return 0;
20078 }
20079 EOCP
20080                 set signal
20081                 if eval $compile; then
20082                         echo "SIG${xx} found."
20083                         $run ./signal$_exe  >> signal.ls1
20084                 else
20085                         echo "SIG${xx} NOT found."
20086                 fi
20087         done
20088         if $test -s signal.ls1; then
20089                 $cat signal.nsg signal.ls1 |
20090                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20091         fi
20092
20093 fi
20094 if $test -s signal.lst; then
20095         :
20096 else
20097         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20098         echo 'kill -l' >signal
20099         set X `csh -f <signal`
20100         $rm -f signal
20101         shift
20102         case $# in
20103         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20104         esac
20105         echo $@ | $tr ' ' $trnl | \
20106             $awk '{ printf "%s %d\n", $1, ++s; }
20107                   END { printf "NSIG %d\n", ++s }' >signal.lst
20108 fi
20109 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20110 EOS
20111 chmod a+x signal_cmd
20112 $eunicefix signal_cmd
20113
20114 : generate list of signal names
20115 echo " "
20116 case "$sig_name_init" in
20117 '') doinit=yes ;;
20118 *)  case "$sig_num_init" in
20119     ''|*,*) doinit=yes ;;
20120     esac ;;
20121 esac
20122 case "$doinit" in
20123 yes)
20124         echo "Generating a list of signal names and numbers..." >&4
20125         . ./signal_cmd
20126         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20127         sig_name=`$awk 'BEGIN { printf "ZERO " }
20128                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20129         sig_num=`$awk  'BEGIN { printf "0 " }
20130                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20131         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20132                              !/^NSIG/   { printf "\"%s\", ", $1 }
20133                              END        { printf "0\n" }' signal.lst`
20134         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20135                              !/^NSIG/   { printf "%d, ", $2}
20136                              END        { printf "0\n"}' signal.lst`
20137         ;;
20138 esac
20139 echo "The following $sig_count signals are available:"
20140 echo " "
20141 echo $sig_name | $awk \
20142 'BEGIN { linelen = 0 }
20143 {
20144         for (i = 1; i <= NF; i++) {
20145                 name = "SIG" $i " "
20146                 linelen = linelen + length(name)
20147                 if (linelen > 70) {
20148                         printf "\n"
20149                         linelen = length(name)
20150                 }
20151                 printf "%s", name
20152         }
20153         printf "\n"
20154 }'
20155 sig_size=`echo $sig_name | awk '{print NF}'`
20156 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
20157
20158 echo " "
20159 case "$sizetype" in
20160 *_t) zzz="$sizetype"    ;;
20161 *)   zzz="filesize"     ;;
20162 esac
20163 echo "Checking the size of $zzz..." >&4 
20164 cat > try.c <<EOCP
20165 #include <sys/types.h>
20166 #include <stdio.h>
20167 #$i_stdlib I_STDLIB
20168 #ifdef I_STDLIB
20169 #include <stdlib.h>
20170 #endif
20171 int main() {
20172     printf("%d\n", (int)sizeof($sizetype));
20173     exit(0);
20174 }
20175 EOCP
20176 set try
20177 if eval $compile_ok; then
20178         yyy=`$run ./try`
20179         case "$yyy" in
20180         '')     sizesize=4
20181                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20182                 ;;
20183         *)      sizesize=$yyy
20184                 echo "Your $zzz size is $sizesize bytes."
20185                 ;;
20186         esac
20187 else
20188         sizesize=4
20189         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20190 fi
20191
20192
20193 : check for socklen_t
20194 echo " "
20195 echo "Checking to see if you have socklen_t..." >&4
20196 $cat >try.c <<EOCP
20197 #include <sys/types.h>
20198 #$d_socket HAS_SOCKET
20199 #ifdef HAS_SOCKET
20200 #include <sys/socket.h>
20201 #endif
20202 int main() { socklen_t x = 16; }
20203 EOCP
20204 set try
20205 if eval $compile; then
20206         val="$define"
20207         echo "You have socklen_t."
20208 else
20209         val="$undef"
20210         echo "You do not have socklen_t."
20211         case "$sizetype" in
20212         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20213         esac
20214 fi
20215 $rm_try
20216 set d_socklen_t
20217 eval $setvar
20218
20219 : see if this is a socks.h system
20220 set socks.h i_socks
20221 eval $inhdr
20222
20223 : check for type of the size argument to socket calls
20224 case "$d_socket" in
20225 "$define")
20226         $cat <<EOM
20227
20228 Checking to see what type is the last argument of accept().
20229 EOM
20230         yyy=''
20231         case "$d_socklen_t" in
20232         "$define") yyy="$yyy socklen_t"
20233         esac
20234         yyy="$yyy $sizetype int long unsigned"
20235         for xxx in $yyy; do
20236                 case "$socksizetype" in
20237                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20238                         case "$usesocks" in
20239                         "$define")
20240                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20241                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20242                                         socksizetype="$xxx"
20243                                 fi
20244                                 ;;
20245                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20246                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20247                                         socksizetype="$xxx"
20248                                 fi
20249                                 ;;
20250                         esac
20251                         ;;
20252                 esac
20253         done
20254 : In case none of those worked, prompt the user.
20255         case "$socksizetype" in
20256         '')     rp='What is the type for socket address structure sizes?'
20257                 dflt='int'
20258                 . ./myread
20259                 socksizetype=$ans
20260                 ;;
20261         esac
20262         ;;
20263 *)      : no sockets, so pick relatively harmless default
20264         socksizetype='int'
20265         ;;
20266 esac
20267
20268 : see what type is used for signed size_t
20269 set ssize_t ssizetype int stdio.h sys/types.h
20270 eval $typedef
20271 dflt="$ssizetype"
20272 $cat > try.c <<EOM
20273 #include <stdio.h>
20274 #$i_stdlib I_STDLIB
20275 #ifdef I_STDLIB
20276 #include <stdlib.h>
20277 #endif
20278 #include <sys/types.h>
20279 #define Size_t $sizetype
20280 #define SSize_t $dflt
20281 int main()
20282 {
20283         if (sizeof(Size_t) == sizeof(SSize_t))
20284                 printf("$dflt\n");
20285         else if (sizeof(Size_t) == sizeof(int))
20286                 printf("int\n");
20287         else
20288                 printf("long\n");
20289         exit(0);
20290 }
20291 EOM
20292 echo " "
20293 set try
20294 if eval $compile_ok && $run ./try > /dev/null; then
20295         ssizetype=`$run ./try`
20296         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20297 else
20298         $cat >&4 <<EOM
20299 Help! I can't compile and run the ssize_t test program: please enlighten me!
20300 (This is probably a misconfiguration in your system or libraries, and
20301 you really ought to fix it.  Still, I'll try anyway.)
20302
20303 I need a type that is the same size as $sizetype, but is guaranteed to
20304 be signed.  Common values are ssize_t, int and long.
20305
20306 EOM
20307         rp="What signed type is the same size as $sizetype?"
20308         . ./myread
20309         ssizetype="$ans"
20310 fi
20311 $rm_try
20312
20313 : see what type of char stdio uses.
20314 echo " "
20315 echo '#include <stdio.h>' > stdio.c
20316 $cppstdin $cppminus < stdio.c > stdioh
20317 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20318         echo "Your stdio uses unsigned chars." >&4
20319         stdchar="unsigned char"
20320 else
20321         echo "Your stdio uses signed chars." >&4
20322         stdchar="char"
20323 fi
20324 $rm -f stdio.* stdioh
20325
20326 : see what type uids are declared as in the kernel
20327 echo " "
20328 echo "Looking for the type for user ids returned by getuid()."
20329 set uid_t uidtype xxx stdio.h sys/types.h
20330 eval $typedef
20331 case "$uidtype" in
20332 xxx)
20333         xxx=`./findhdr sys/user.h`
20334         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20335         case $1 in
20336         unsigned) dflt="$1 $2" ;;
20337         *) dflt="$1" ;;
20338         esac
20339         ;;
20340 *) dflt="$uidtype";;
20341 esac
20342 case "$uidtype" in
20343 uid_t)  echo "uid_t found." ;;
20344 *)      rp="What is the type for user ids returned by getuid()?"
20345         . ./myread
20346         uidtype="$ans"
20347         ;;
20348 esac
20349
20350 echo " "
20351 case "$uidtype" in
20352 *_t) zzz="$uidtype"     ;;
20353 *)   zzz="uid"          ;;
20354 esac
20355 echo "Checking the size of $zzz..." >&4 
20356 cat > try.c <<EOCP
20357 #include <sys/types.h>
20358 #include <stdio.h>
20359 #$i_stdlib I_STDLIB
20360 #ifdef I_STDLIB
20361 #include <stdlib.h>
20362 #endif
20363 int main() {
20364     printf("%d\n", (int)sizeof($uidtype));
20365     exit(0);
20366 }
20367 EOCP
20368 set try
20369 if eval $compile_ok; then
20370         yyy=`$run ./try`
20371         case "$yyy" in
20372         '')     uidsize=4
20373                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20374                 ;;
20375         *)      uidsize=$yyy
20376                 echo "Your $zzz is $uidsize bytes long."
20377                 ;;
20378         esac
20379 else
20380         uidsize=4
20381         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20382 fi
20383
20384 echo " "
20385 case "$uidtype" in
20386 *_t) zzz="$uidtype"     ;;
20387 *)   zzz="uid"          ;;
20388 esac
20389 echo "Checking the sign of $zzz..." >&4
20390 cat > try.c <<EOCP
20391 #include <sys/types.h>
20392 #include <stdio.h>
20393 int main() {
20394         $uidtype foo = -1;
20395         if (foo < 0)
20396                 printf("-1\n");
20397         else
20398                 printf("1\n");
20399 }
20400 EOCP
20401 set try
20402 if eval $compile; then
20403         yyy=`$run ./try`
20404         case "$yyy" in
20405         '')     uidsign=1
20406                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20407                 ;;
20408         *)      uidsign=$yyy
20409                 case "$uidsign" in
20410                  1) echo "Your $zzz is unsigned." ;;
20411                 -1) echo "Your $zzz is signed."   ;;
20412                 esac
20413                 ;;
20414         esac
20415 else
20416         uidsign=1
20417         echo "(I can't compile the test program--guessing unsigned.)" >&4
20418 fi
20419
20420
20421
20422 echo " "
20423 $echo "Checking the format string to be used for uids..." >&4
20424
20425 case "$uidsign" in
20426 -1)     if $test X"$uidsize" = X"$ivsize"; then
20427                 uidformat="$ivdformat"
20428         else
20429                 if $test X"$uidsize" = X"$longsize"; then
20430                         uidformat='"ld"'
20431                 else
20432                         if $test X"$uidsize" = X"$intsize"; then
20433                                 uidformat='"d"'
20434                         else
20435                                 if $test X"$uidsize" = X"$shortsize"; then
20436                                         uidformat='"hd"'
20437                                 fi
20438                         fi
20439                 fi
20440         fi
20441         ;;
20442 *)      if $test X"$uidsize" = X"$uvsize"; then
20443                 uidformat="$uvuformat"
20444         else
20445                 if $test X"$uidsize" = X"$longsize"; then
20446                         uidformat='"lu"'
20447                 else
20448                         if $test X"$uidsize" = X"$intsize"; then
20449                                 uidformat='"u"'
20450                         else
20451                                 if $test X"$uidsize" = X"$shortsize"; then
20452                                         uidformat='"hu"'
20453                                 fi
20454                         fi
20455                 fi
20456         fi
20457         ;;
20458 esac
20459
20460
20461 case "$usesitecustomize" in
20462     $define|true|[Yy]*)
20463         usesitecustomize="$define"
20464         ;;
20465     *)
20466         usesitecustomize="$undef"
20467         ;;
20468     esac
20469
20470 : determine compiler compiler
20471 case "$yacc" in
20472 '')
20473         dflt=yacc;;
20474 *)
20475         dflt="$yacc";;
20476 esac
20477 echo " "
20478 comp='yacc'
20479 if $test -f "$byacc$_exe"; then
20480         dflt="$byacc"
20481         comp="byacc or $comp"
20482 fi
20483 if $test -f "$bison$_exe"; then
20484         comp="$comp or bison -y"
20485 fi
20486 rp="Which compiler compiler ($comp) shall I use?"
20487 . ./myread
20488 yacc="$ans"
20489 case "$yacc" in
20490 *bis*)
20491         case "$yacc" in
20492         *-y*) ;;
20493         *)
20494                 yacc="$yacc -y"
20495                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20496                 ;;
20497         esac
20498         ;;
20499 esac
20500
20501 : see if this is a fp.h system
20502 set fp.h i_fp
20503 eval $inhdr
20504
20505 : see if this is a fp_class.h system
20506 set fp_class.h i_fp_class
20507 eval $inhdr
20508
20509 : see if gdbm.h is available
20510 set gdbm.h t_gdbm
20511 eval $inhdr
20512 case "$t_gdbm" in
20513 $define)
20514         : see if gdbm_open exists
20515         set gdbm_open d_gdbm_open
20516         eval $inlibc
20517         case "$d_gdbm_open" in
20518         $undef)
20519                 t_gdbm="$undef"
20520                 echo "We won't be including <gdbm.h>"
20521                 ;;
20522         esac
20523         ;;
20524 esac
20525 val="$t_gdbm"
20526 set i_gdbm
20527 eval $setvar
20528
20529 : see if this is a ieeefp.h system
20530 case "$i_ieeefp" in
20531 '' ) set ieeefp.h i_ieeefp
20532      eval $inhdr
20533      ;;
20534 esac
20535
20536 : see if this is a libutil.h system
20537 set libutil.h i_libutil
20538 eval $inhdr
20539
20540 : see if mach cthreads are available
20541 if test "X$usethreads" = "X$define"; then
20542         set mach/cthreads.h i_machcthr
20543         eval $inhdr
20544 else
20545         i_machcthr="$undef"
20546 fi
20547
20548
20549
20550 : see if this is a mntent.h system
20551 set mntent.h i_mntent
20552 eval $inhdr
20553
20554 : see if ndbm.h is available
20555 set ndbm.h t_ndbm
20556 eval $inhdr
20557
20558 case "$t_ndbm" in
20559 $undef)
20560     # Some Linux distributions such as RedHat 7.1 put the
20561     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20562     if $test -f /usr/include/gdbm/ndbm.h; then
20563         echo '<gdbm/ndbm.h> found.'
20564         ccflags="$ccflags -I/usr/include/gdbm"
20565         cppflags="$cppflags -I/usr/include/gdbm"
20566         t_ndbm=$define
20567     fi
20568     ;;
20569 esac
20570
20571 case "$t_ndbm" in
20572 $define)
20573         : see if dbm_open exists
20574         set dbm_open d_dbm_open
20575         eval $inlibc
20576         case "$d_dbm_open" in
20577         $undef)
20578                 t_ndbm="$undef"
20579                 echo "We won't be including <ndbm.h>"
20580                 ;;
20581         esac
20582         ;;
20583 esac
20584 val="$t_ndbm"
20585 set i_ndbm
20586 eval $setvar
20587
20588 : see if net/errno.h is available
20589 val=''
20590 set net/errno.h val
20591 eval $inhdr
20592
20593 : Unfortunately, it causes problems on some systems.  Arrgh.
20594 case "$val" in
20595 $define)
20596         cat > try.c <<'EOM'
20597 #include <stdio.h>
20598 #include <errno.h>
20599 #include <net/errno.h>
20600 int func()
20601 {
20602         return ENOTSOCK;
20603 }
20604 EOM
20605         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20606                 echo "We'll be including <net/errno.h>." >&4
20607         else
20608                 echo "We won't be including <net/errno.h>." >&4
20609                 val="$undef"
20610         fi
20611         $rm_try
20612         ;;
20613 esac
20614 set i_neterrno
20615 eval $setvar
20616
20617 : see if netinet/tcp.h is available
20618 set netinet/tcp.h i_netinettcp
20619 eval $inhdr
20620
20621 : see if this is a poll.h system
20622 set poll.h i_poll
20623 eval $inhdr
20624
20625 : see if this is a prot.h system
20626 set prot.h i_prot
20627 eval $inhdr
20628
20629 echo " "
20630 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20631 $cat <<'EOSH' > Cppsym.know
20632 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20633 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20634 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20635 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20636 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20637 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20638 bull c cadmus clipper CMU COFF COMPILER_VERSION
20639 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20640 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20641 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20642 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20643 GLIBC GLIBC_MINOR
20644 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20645 H3050R H3050RX hbullx20 hcx host_mips
20646 hp200 hp300 hp700 HP700 hp800 hp9000
20647 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20648 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20649 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20650 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20651 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20652 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20653 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20654 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20655 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20656 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20657 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20658 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20659 MATH_HAS_NO_SIDE_EFFECTS
20660 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20661 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20662 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20663 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20664 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20665 NetBSD news1500 news1700 news1800 news1900 news3700
20666 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20667 ns32016 ns32332 ns32k nsc32000
20668 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20669 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20670 pc532 pdp11 PGC PIC plexus PORTAR posix
20671 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20672 POSIX_C_SOURCE POSIX_SOURCE POWER
20673 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20674 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20675 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20676 sony sony_news sonyrisc sparc sparclite spectrum
20677 stardent stdc STDC_EXT stratos sun sun3 sun386
20678 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20679 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20680 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20681 sysV68 sysV88 Tek4132 Tek4300 titan
20682 TM3200 TM5400 TM5600
20683 tower tower32 tower32_200 tower32_600 tower32_700
20684 tower32_800 tower32_850 tss
20685 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20686 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20687 unix UNIX95 UNIX99 unixpc unos
20688 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20689 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20690 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20691 USGr4 USGr4_2
20692 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20693 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20694 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20695 z8000
20696 EOSH
20697 # Maybe put other stuff here too.
20698 cat <<EOSH >>Cppsym.know
20699 $osname
20700 EOSH
20701 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20702 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20703 $cat Cppsym.know > Cppsym.c
20704 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20705 $rm -f Cppsym.a Cppsym.b Cppsym.c
20706 cat <<EOSH > Cppsym
20707 $startsh
20708 if $test \$# -gt 0; then
20709     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20710     if $test -s Cppsym.got; then
20711         $rm -f Cppsym.got
20712         exit 0
20713     fi
20714     $rm -f Cppsym.got
20715     exit 1
20716 else
20717     $tr " " "$trnl" | ./Cppsym.try
20718     exit 0
20719 fi
20720 EOSH
20721 chmod +x Cppsym
20722 $eunicefix Cppsym
20723 cat <<EOSH > Cppsym.try
20724 $startsh
20725 cat <<'EOCP' > try.c
20726 #include <stdio.h>
20727 #if cpp_stuff == 1
20728 #define STRINGIFY(a)    "a"
20729 #endif
20730 #if cpp_stuff == 42
20731 #define StGiFy(a)  #a
20732 #define STRINGIFY(a)    StGiFy(a)
20733 #endif
20734 #if $cpp_stuff != 1 && $cpp_stuff != 42
20735 #   include "Bletch: How does this C preprocessor stringify macros?"
20736 #endif
20737 int main() {
20738 EOCP
20739 $awk \\
20740 EOSH
20741 cat <<'EOSH' >> Cppsym.try
20742 'length($1) > 0 {
20743     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20744     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20745     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20746     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20747 }'       >> try.c
20748 echo 'return 0;}' >> try.c
20749 EOSH
20750 cat <<EOSH >> Cppsym.try
20751 ccflags="$ccflags"
20752 case "$osname-$gccversion" in
20753 irix-) ccflags="\$ccflags -woff 1178" ;;
20754 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20755 esac
20756 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20757 EOSH
20758 chmod +x Cppsym.try
20759 $eunicefix Cppsym.try
20760 ./Cppsym < Cppsym.know > Cppsym.true
20761 : Add in any linux cpp "predefined macros":
20762 case "$osname::$gccversion" in
20763   *linux*::*.*)
20764     tHdrH=_tmpHdr
20765     rm -f $tHdrH'.h' $tHdrH
20766     touch $tHdrH'.h'
20767     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20768        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20769        if [ -s $tHdrH'_cppsym.real' ]; then
20770           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20771        fi
20772     fi
20773     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20774   ;;
20775 esac
20776 : now check the C compiler for additional symbols
20777 postprocess_cc_v=''
20778 case "$osname" in
20779 aix) postprocess_cc_v="|$tr , ' '" ;;
20780 esac
20781 $cat >ccsym <<EOS
20782 $startsh
20783 $cat >tmp.c <<EOF
20784 extern int foo;
20785 EOF
20786 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20787 do
20788         case "\$i" in
20789         -D*) echo "\$i" | $sed 's/^-D//';;
20790         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20791         esac
20792 done
20793 $rm_try
20794 EOS
20795 postprocess_cc_v=''
20796 chmod +x ccsym
20797 $eunicefix ccsym
20798 ./ccsym > ccsym1.raw
20799 if $test -s ccsym1.raw; then
20800        $sort ccsym1.raw | $uniq >ccsym.raw
20801 else
20802        mv ccsym1.raw ccsym.raw
20803 fi
20804
20805 $awk '/\=/ { print $0; next }
20806         { print $0"=1" }' ccsym.raw >ccsym.list
20807 $comm -13 Cppsym.true ccsym.list >ccsym.own
20808 $comm -12 Cppsym.true ccsym.list >ccsym.com
20809 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20810 also=''
20811 if $test -z ccsym.raw; then
20812         echo "Your C compiler doesn't seem to define any symbols!" >&4
20813         echo " "
20814         echo "However, your C preprocessor defines the following symbols:"
20815         $cat Cppsym.true
20816         ccsymbols=''
20817         cppsymbols=`$cat Cppsym.true`
20818         cppsymbols=`echo $cppsymbols`
20819         cppccsymbols="$cppsymbols"
20820 else
20821         if $test -s ccsym.com; then
20822                 echo "Your C compiler and pre-processor define these symbols:"
20823                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20824                 also='also '
20825                 symbols='ones'
20826                 cppccsymbols=`$cat ccsym.com`
20827                 cppccsymbols=`echo $cppccsymbols`
20828                 $test "$silent" || sleep 1
20829         fi
20830         if $test -s ccsym.cpp; then
20831                 $test "$also" && echo " "
20832                 echo "Your C pre-processor ${also}defines the following symbols:"
20833                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20834                 also='further '
20835                 cppsymbols=`$cat ccsym.cpp`
20836                 cppsymbols=`echo $cppsymbols`
20837                 $test "$silent" || sleep 1
20838         fi
20839         if $test -s ccsym.own; then
20840                 $test "$also" && echo " "
20841                 echo "Your C compiler ${also}defines the following cpp symbols:"
20842                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20843                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20844                 ccsymbols=`$cat ccsym.own`
20845                 ccsymbols=`echo $ccsymbols`
20846                 $test "$silent" || sleep 1
20847         fi
20848 fi
20849
20850 : see if this is a termio system
20851 val="$undef"
20852 val2="$undef"
20853 val3="$undef"
20854 if $test `./findhdr termios.h`; then
20855         set tcsetattr i_termios
20856         eval $inlibc
20857         val3="$i_termios"
20858 fi
20859 echo " "
20860 case "$val3" in
20861 "$define") echo "You have POSIX termios.h... good!" >&4;;
20862 *) if ./Cppsym pyr; then
20863                 case "`/bin/universe`" in
20864                 ucb) if $test `./findhdr sgtty.h`; then
20865                                 val2="$define"
20866                                 echo "<sgtty.h> found." >&4
20867                         else
20868                                 echo "System is pyramid with BSD universe."
20869                                 echo "<sgtty.h> not found--you could have problems." >&4
20870                         fi;;
20871                 *) if $test `./findhdr termio.h`; then
20872                                 val="$define"
20873                                 echo "<termio.h> found." >&4
20874                         else
20875                                 echo "System is pyramid with USG universe."
20876                                 echo "<termio.h> not found--you could have problems." >&4
20877                         fi;;
20878                 esac
20879         elif ./usg; then
20880                 if $test `./findhdr termio.h`; then
20881                         echo "<termio.h> found." >&4
20882                         val="$define"
20883                 elif $test `./findhdr sgtty.h`; then
20884                         echo "<sgtty.h> found." >&4
20885                         val2="$define"
20886                 else
20887 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20888                 fi
20889         else
20890                 if $test `./findhdr sgtty.h`; then
20891                         echo "<sgtty.h> found." >&4
20892                         val2="$define"
20893                 elif $test `./findhdr termio.h`; then
20894                         echo "<termio.h> found." >&4
20895                         val="$define"
20896                 else
20897 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20898                 fi
20899         fi;;
20900 esac
20901 set i_termio; eval $setvar
20902 val=$val2; set i_sgtty; eval $setvar
20903 val=$val3; set i_termios; eval $setvar
20904
20905 : see if stddef is available
20906 set stddef.h i_stddef
20907 eval $inhdr
20908
20909 : see if sys/access.h is available
20910 set sys/access.h i_sysaccess
20911 eval $inhdr
20912
20913 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20914 set sys/filio.h i_sysfilio
20915 eval $inhdr
20916 echo " "
20917 if $test `./findhdr sys/ioctl.h`; then
20918         val="$define"
20919         echo '<sys/ioctl.h> found.' >&4
20920 else
20921         val="$undef"
20922         if $test $i_sysfilio = "$define"; then
20923             echo '<sys/ioctl.h> NOT found.' >&4
20924         else
20925                 $test $i_sgtty = "$define" && xxx="sgtty.h"
20926                 $test $i_termio = "$define" && xxx="termio.h"
20927                 $test $i_termios = "$define" && xxx="termios.h"
20928 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20929         fi
20930 fi
20931 set i_sysioctl
20932 eval $setvar
20933
20934 : see if socket ioctl defs are in sys/sockio.h
20935 echo " "
20936 xxx=`./findhdr sys/sockio.h`
20937 if $test "$xxx"; then
20938         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20939                 val="$define"
20940                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20941         else
20942                 val="$undef"
20943                 echo "No socket ioctls found in <sys/sockio.h>." >&4
20944         fi
20945 else
20946         val="$undef"
20947         $cat <<EOM
20948 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20949 EOM
20950 fi
20951 set i_syssockio
20952 eval $setvar
20953
20954
20955 : see if this is a syslog.h system
20956 set syslog.h i_syslog
20957 eval $inhdr
20958
20959
20960 : see if this is a sys/mode.h system
20961 set sys/mode.h i_sysmode
20962 eval $inhdr
20963
20964 : see if sys/resource.h has to be included
20965 set sys/resource.h i_sysresrc
20966 eval $inhdr
20967
20968 : see if sys/security.h is available
20969 set sys/security.h i_syssecrt
20970 eval $inhdr
20971
20972 : see if this is a sys/statvfs.h system
20973 set sys/statvfs.h i_sysstatvfs
20974 eval $inhdr
20975
20976 : see if this is a sys/un.h system
20977 set sys/un.h i_sysun
20978 eval $inhdr
20979
20980
20981 : see if this is a sys/utsname.h system
20982 set sys/utsname.h i_sysutsname
20983 eval $inhdr
20984
20985 : see if this is a syswait system
20986 set sys/wait.h i_syswait
20987 eval $inhdr
20988
20989 : see if this is a ustat.h system
20990 set ustat.h i_ustat
20991 eval $inhdr
20992
20993 : see if this is an utime system
20994 set utime.h i_utime
20995 eval $inhdr
20996
20997 : see if this is a values.h system
20998 set values.h i_values
20999 eval $inhdr
21000
21001 : see if this is a vfork system
21002 case "$d_vfork" in
21003 "$define")
21004         set vfork.h i_vfork
21005         eval $inhdr
21006         ;;
21007 *)
21008         i_vfork="$undef"
21009         ;;
21010 esac
21011
21012 echo " "
21013 echo "Looking for extensions..." >&4
21014 : If we are using the old config.sh, known_extensions may contain
21015 : old or inaccurate or duplicate values.
21016 known_extensions=''
21017 nonxs_extensions=''
21018 : We do not use find because it might not be available.
21019 : We do not just use MANIFEST because the user may have dropped
21020 : some additional extensions into the source tree and expect them
21021 : to be built.
21022
21023 : Function to recursively find available extensions, ignoring DynaLoader
21024 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21025 find_extensions='
21026     for xxx in *; do
21027         case "$xxx" in
21028             DynaLoader|dynaload) ;;
21029             *)
21030             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21031                 known_extensions="$known_extensions $1$xxx";
21032             elif $test -f $xxx/Makefile.PL; then
21033                 nonxs_extensions="$nonxs_extensions $1$xxx";
21034             else
21035                 if $test -d $xxx -a $# -lt 10; then
21036                     set $1$xxx/ $*;
21037                     cd "$xxx";
21038                     eval $find_extensions;
21039                     cd ..;
21040                     shift;
21041                 fi;
21042             fi
21043             ;;
21044         esac;
21045     done'
21046 tdir=`pwd`
21047 cd "$rsrc/ext"
21048 set X
21049 shift
21050 eval $find_extensions
21051 # Special case:  Add in threads/shared since it is not picked up by the
21052 # recursive find above (and adding in general recursive finding breaks
21053 # SDBM_File/sdbm).  A.D.  10/25/2001.
21054 known_extensions="$known_extensions threads/shared"
21055 set X $known_extensions
21056 shift
21057 known_extensions="$*"
21058 set X $nonxs_extensions
21059 shift
21060 nonxs_extensions="$*"
21061 cd "$tdir"
21062
21063 : Now see which are supported on this system.
21064 avail_ext=''
21065 for xxx in $known_extensions ; do
21066         case "$xxx" in
21067         DB_File|db_file)
21068                 case "$i_db" in
21069                 $define) avail_ext="$avail_ext $xxx" ;;
21070                 esac
21071                 ;;
21072         GDBM_File|gdbm_fil)
21073                 case "$i_gdbm" in
21074                 $define) avail_ext="$avail_ext $xxx" ;;
21075                 esac
21076                 ;;
21077         I18N/Langinfo|i18n_lan)
21078                 case "$i_langinfo$d_nl_langinfo" in
21079                 $define$define) avail_ext="$avail_ext $xxx" ;;
21080                 esac
21081                 ;;
21082         NDBM_File|ndbm_fil)
21083                 case "$i_ndbm" in
21084                 $define)
21085                     case "$osname-$use64bitint" in
21086                     hpux-define)
21087                         case "$libs" in
21088                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21089                         esac
21090                         ;;
21091                     *) avail_ext="$avail_ext $xxx" ;;
21092                     esac
21093                     ;;
21094                 esac
21095                 ;;
21096         ODBM_File|odbm_fil)
21097                 case "${i_dbm}${i_rpcsvcdbm}" in
21098                 *"${define}"*)
21099                     case "$osname-$use64bitint" in
21100                     hpux-define)
21101                         case "$libs" in
21102                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21103                         esac
21104                         ;;
21105                     *) avail_ext="$avail_ext $xxx" ;;
21106                     esac
21107                     ;;
21108                 esac
21109                 ;;
21110         POSIX|posix)
21111                 case "$useposix" in
21112                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21113                 esac
21114                 ;;
21115         Opcode|opcode)
21116                 case "$useopcode" in
21117                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21118                 esac
21119                 ;;
21120         Socket|socket)
21121                 case "$d_socket" in
21122                 true|$define|y)
21123                     case "$osname" in
21124                     beos) ;; # not unless BONE
21125                     *) avail_ext="$avail_ext $xxx" ;;
21126                     esac
21127                     ;;
21128                 esac
21129                 ;;
21130         Sys/Syslog|sys/syslog)
21131                 : XXX syslog requires socket
21132                 case "$d_socket" in
21133                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21134                 esac
21135                 ;;
21136         Thread|thread)
21137                 case "$usethreads" in
21138                 true|$define|y)
21139                         case "$use5005threads" in
21140                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21141                         esac
21142                 esac
21143                 ;;
21144         Win32*)
21145                 case "$osname" in
21146                 cygwin) avail_ext="$avail_ext $xxx" ;;
21147                 esac
21148                 ;;
21149         XS/APItest|xs/apitest)
21150                 # This is just for testing.  Skip it unless we have dynamic loading.
21151
21152                 case "$usedl" in
21153                 $define) avail_ext="$avail_ext $xxx" ;;
21154                 esac
21155                 ;;
21156         XS/Typemap|xs/typemap)
21157                 # This is just for testing.  Skip it unless we have dynamic loading.
21158                 case "$usedl" in
21159                 $define) avail_ext="$avail_ext $xxx" ;;
21160                 esac
21161                 ;;
21162         threads|threads/shared)
21163                 # threads and threads::shared are special cases.
21164                 # To stop people from asking "Perl 5.8.0 was supposed
21165                 # to have this new fancy threads implementation but my
21166                 # perl doesn't have it" and from people trying to
21167                 # (re)install the threads module using CPAN.pm and
21168                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21169                 # the threads.pm and threads/shared.pm will always be
21170                 # there, croaking informatively ("you need to rebuild
21171                 # all of Perl with threads, sorry") when threads haven't
21172                 # been compiled in.
21173                 # --jhi
21174                 avail_ext="$avail_ext $xxx"
21175                 ;;
21176         IPC/SysV|ipc/sysv)
21177                 : XXX Do we need a useipcsysv variable here
21178                 case "${d_msg}${d_sem}${d_shm}" in
21179                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21180                 esac
21181                 ;;
21182         *)      avail_ext="$avail_ext $xxx"
21183                 ;;
21184         esac
21185 done
21186
21187 set X $avail_ext
21188 shift
21189 avail_ext="$*"
21190
21191 case "$onlyextensions" in
21192 '') ;;
21193 *)  keepextensions=''
21194     echo "You have requested that only certains extensions be included..." >&4
21195     for i in $onlyextensions; do
21196         case " $avail_ext " in
21197         *" $i "*)
21198             echo "Keeping extension $i."
21199             keepextensions="$keepextensions $i"
21200             ;;
21201         *) echo "Ignoring extension $i." ;;
21202         esac
21203     done
21204     avail_ext="$keepextensions"
21205     ;;
21206 esac
21207
21208 case "$noextensions" in
21209 '') ;;
21210 *)  keepextensions=''
21211     echo "You have requested that certain extensions be ignored..." >&4
21212     for i in $avail_ext; do
21213         case " $noextensions " in
21214         *" $i "*) echo "Ignoring extension $i." ;;
21215         *) echo "Keeping extension $i.";
21216            keepextensions="$keepextensions $i"
21217            ;;
21218         esac
21219     done
21220     avail_ext="$keepextensions"
21221     ;;
21222 esac
21223
21224 : Now see which nonxs extensions are supported on this system.
21225 : For now assume all are.
21226 nonxs_ext=''
21227 for xxx in $nonxs_extensions ; do
21228         case "$xxx" in
21229         *)      nonxs_ext="$nonxs_ext $xxx"
21230                 ;;
21231         esac
21232 done
21233
21234 set X $nonxs_ext
21235 shift
21236 nonxs_ext="$*"
21237
21238 case $usedl in
21239 $define)
21240         $cat <<EOM
21241 A number of extensions are supplied with $package.  You may choose to
21242 compile these extensions for dynamic loading (the default), compile
21243 them into the $package executable (static loading), or not include
21244 them at all.  Answer "none" to include no extensions.
21245 Note that DynaLoader is always built and need not be mentioned here.
21246
21247 EOM
21248         case "$dynamic_ext" in
21249         '')
21250                 : Exclude those listed in static_ext
21251                 dflt=''
21252                 for xxx in $avail_ext; do
21253                         case " $static_ext " in
21254                         *" $xxx "*) ;;
21255                         *) dflt="$dflt $xxx" ;;
21256                         esac
21257                 done
21258                 set X $dflt
21259                 shift
21260                 dflt="$*"
21261                 ;;
21262         *)      dflt="$dynamic_ext"
21263                 # Perhaps we are reusing an old out-of-date config.sh.
21264                 case "$hint" in
21265                 previous)
21266                         if test X"$dynamic_ext" != X"$avail_ext"; then
21267                                 $cat <<EOM
21268 NOTICE:  Your previous config.sh list may be incorrect.
21269 The extensions now available to you are
21270         ${avail_ext}
21271 but the default list from your previous config.sh is
21272         ${dynamic_ext}
21273
21274 EOM
21275                         fi
21276                         ;;
21277                 esac
21278                 ;;
21279         esac
21280         case "$dflt" in
21281         '')     dflt=none;;
21282         esac
21283         rp="What extensions do you wish to load dynamically?"
21284         . ./myread
21285         case "$ans" in
21286         none) dynamic_ext=' ' ;;
21287         *) dynamic_ext="$ans" ;;
21288         esac
21289
21290         case "$static_ext" in
21291         '')
21292                 : Exclude those already listed in dynamic linking
21293                 dflt=''
21294                 for xxx in $avail_ext; do
21295                         case " $dynamic_ext " in
21296                         *" $xxx "*) ;;
21297                         *) dflt="$dflt $xxx" ;;
21298                         esac
21299                 done
21300                 set X $dflt
21301                 shift
21302                 dflt="$*"
21303                 ;;
21304         *)  dflt="$static_ext"
21305                 ;;
21306         esac
21307
21308         case "$dflt" in
21309         '')     dflt=none;;
21310         esac
21311         rp="What extensions do you wish to load statically?"
21312         . ./myread
21313         case "$ans" in
21314         none) static_ext=' ' ;;
21315         *) static_ext="$ans" ;;
21316         esac
21317         ;;
21318 *)
21319         $cat <<EOM
21320 A number of extensions are supplied with $package.  Answer "none"
21321 to include no extensions.
21322 Note that DynaLoader is always built and need not be mentioned here.
21323
21324 EOM
21325         case "$static_ext" in
21326         '') dflt="$avail_ext" ;;
21327         *)      dflt="$static_ext"
21328                 # Perhaps we are reusing an old out-of-date config.sh.
21329                 case "$hint" in
21330                 previous)
21331                         if test X"$static_ext" != X"$avail_ext"; then
21332                                 $cat <<EOM
21333 NOTICE:  Your previous config.sh list may be incorrect.
21334 The extensions now available to you are
21335         ${avail_ext}
21336 but the default list from your previous config.sh is
21337         ${static_ext}
21338
21339 EOM
21340                         fi
21341                         ;;
21342                 esac
21343                 ;;
21344         esac
21345         : Exclude those that are not xs extensions
21346         case "$dflt" in
21347         '')     dflt=none;;
21348         esac
21349         rp="What extensions do you wish to include?"
21350         . ./myread
21351         case "$ans" in
21352         none) static_ext=' ' ;;
21353         *) static_ext="$ans" ;;
21354         esac
21355         ;;
21356 esac
21357 #
21358 # Encode is a special case.  If we are building Encode as a static
21359 # extension, we need to explicitly list its subextensions as well.
21360 # For other nested extensions, this is handled automatically by
21361 # the appropriate Makefile.PL.
21362 case " $static_ext " in
21363         *" Encode "*) # Add the subextensions of Encode
21364         cd "$rsrc/ext"
21365         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21366                 static_ext="$static_ext Encode/$xxx"
21367         done
21368         cd "$tdir"
21369         ;;
21370 esac
21371
21372 set X $dynamic_ext $static_ext $nonxs_ext
21373 shift
21374 extensions="$*"
21375
21376 # Sanity check:  We require an extension suitable for use with
21377 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21378 # should show up as failures in the test suite, but it's helpful to
21379 # catch them now.) The 'extensions' list is normally sorted
21380 # alphabetically, so we need to accept either
21381 #    DB_File ... Fcntl ... IO  ....
21382 # or something like
21383 #    Fcntl ... NDBM_File ... IO  ....
21384 case " $extensions"  in
21385 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21386 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21387 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21388 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21389    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21390    ;;
21391 esac
21392
21393 : Remove libraries needed only for extensions
21394 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21395 : The exception is SunOS 4.x, which needs them.
21396 case "${osname}X${osvers}" in
21397 sunos*X4*)
21398     perllibs="$libs"
21399     ;;
21400 *) case "$usedl" in
21401     $define|true|[yY]*)
21402             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21403             shift
21404             perllibs="$*"
21405             ;;
21406     *)  perllibs="$libs"
21407             ;;
21408     esac
21409     ;;
21410 esac
21411
21412 : Remove build directory name from cppstdin so it can be used from
21413 : either the present location or the final installed location.
21414 echo " "
21415 : Get out of the UU directory to get correct path name.
21416 cd ..
21417 case "$cppstdin" in
21418 `pwd`/cppstdin)
21419         echo "Stripping down cppstdin path name"
21420         cppstdin=cppstdin
21421         ;;
21422 esac
21423 cd UU
21424
21425 : end of configuration questions
21426 echo " "
21427 echo "End of configuration questions."
21428 echo " "
21429
21430 : back to where it started
21431 if test -d ../UU; then
21432         cd ..
21433 fi
21434
21435 : configuration may be patched via a 'config.arch' file
21436 if $test -f config.arch; then
21437         echo "I see a config.arch file, loading it."
21438         . ./config.arch
21439 fi
21440
21441 : configuration may be patched via a 'config.over' file
21442 if $test -f config.over; then
21443         echo " "
21444         dflt=y
21445         rp='I see a config.over file.  Do you wish to load it?'
21446         . UU/myread
21447         case "$ans" in
21448         n*) echo "OK, I'll ignore it.";;
21449         *)      . ./config.over
21450                 echo "Configuration override changes have been loaded."
21451                 ;;
21452         esac
21453 fi
21454
21455 : in case they want portability, strip down executable paths
21456 case "$d_portable" in
21457 "$define")
21458         echo " "
21459         echo "Stripping down executable paths..." >&4
21460         for file in $loclist $trylist; do
21461                 eval temp=\$$file
21462                 eval $file=`basename $temp`
21463         done
21464         ;;
21465 esac
21466
21467 : create config.sh file
21468 echo " "
21469 echo "Creating config.sh..." >&4
21470 $spitshell <<EOT >config.sh
21471 $startsh
21472 #
21473 # This file was produced by running the Configure script. It holds all the
21474 # definitions figured out by Configure. Should you modify one of these values,
21475 # do not forget to propagate your changes by running "Configure -der". You may
21476 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21477 #
21478
21479 # Package name      : $package
21480 # Source directory  : $src
21481 # Configuration time: $cf_time
21482 # Configured by     : $cf_by
21483 # Target system     : $myuname
21484
21485 Author='$Author'
21486 Date='$Date'
21487 Header='$Header'
21488 Id='$Id'
21489 Locker='$Locker'
21490 Log='$Log'
21491 Mcc='$Mcc'
21492 RCSfile='$RCSfile'
21493 Revision='$Revision'
21494 Source='$Source'
21495 State='$State'
21496 _a='$_a'
21497 _exe='$_exe'
21498 _o='$_o'
21499 afs='$afs'
21500 afsroot='$afsroot'
21501 alignbytes='$alignbytes'
21502 ansi2knr='$ansi2knr'
21503 aphostname='$aphostname'
21504 api_revision='$api_revision'
21505 api_subversion='$api_subversion'
21506 api_version='$api_version'
21507 api_versionstring='$api_versionstring'
21508 ar='$ar'
21509 archlib='$archlib'
21510 archlibexp='$archlibexp'
21511 archname64='$archname64'
21512 archname='$archname'
21513 archobjs='$archobjs'
21514 asctime_r_proto='$asctime_r_proto'
21515 awk='$awk'
21516 baserev='$baserev'
21517 bash='$bash'
21518 bin='$bin'
21519 binexp='$binexp'
21520 bison='$bison'
21521 byacc='$byacc'
21522 byteorder='$byteorder'
21523 c='$c'
21524 castflags='$castflags'
21525 cat='$cat'
21526 cc='$cc'
21527 cccdlflags='$cccdlflags'
21528 ccdlflags='$ccdlflags'
21529 ccflags='$ccflags'
21530 ccflags_uselargefiles='$ccflags_uselargefiles'
21531 ccname='$ccname'
21532 ccsymbols='$ccsymbols'
21533 ccversion='$ccversion'
21534 cf_by='$cf_by'
21535 cf_email='$cf_email'
21536 cf_time='$cf_time'
21537 charsize='$charsize'
21538 chgrp='$chgrp'
21539 chmod='$chmod'
21540 chown='$chown'
21541 clocktype='$clocktype'
21542 comm='$comm'
21543 compress='$compress'
21544 contains='$contains'
21545 cp='$cp'
21546 cpio='$cpio'
21547 cpp='$cpp'
21548 cpp_stuff='$cpp_stuff'
21549 cppccsymbols='$cppccsymbols'
21550 cppflags='$cppflags'
21551 cpplast='$cpplast'
21552 cppminus='$cppminus'
21553 cpprun='$cpprun'
21554 cppstdin='$cppstdin'
21555 cppsymbols='$cppsymbols'
21556 crypt_r_proto='$crypt_r_proto'
21557 cryptlib='$cryptlib'
21558 csh='$csh'
21559 ctermid_r_proto='$ctermid_r_proto'
21560 ctime_r_proto='$ctime_r_proto'
21561 d_Gconvert='$d_Gconvert'
21562 d_PRIEUldbl='$d_PRIEUldbl'
21563 d_PRIFUldbl='$d_PRIFUldbl'
21564 d_PRIGUldbl='$d_PRIGUldbl'
21565 d_PRIXU64='$d_PRIXU64'
21566 d_PRId64='$d_PRId64'
21567 d_PRIeldbl='$d_PRIeldbl'
21568 d_PRIfldbl='$d_PRIfldbl'
21569 d_PRIgldbl='$d_PRIgldbl'
21570 d_PRIi64='$d_PRIi64'
21571 d_PRIo64='$d_PRIo64'
21572 d_PRIu64='$d_PRIu64'
21573 d_PRIx64='$d_PRIx64'
21574 d_SCNfldbl='$d_SCNfldbl'
21575 d__fwalk='$d__fwalk'
21576 d_access='$d_access'
21577 d_accessx='$d_accessx'
21578 d_aintl='$d_aintl'
21579 d_alarm='$d_alarm'
21580 d_archlib='$d_archlib'
21581 d_asctime_r='$d_asctime_r'
21582 d_atolf='$d_atolf'
21583 d_atoll='$d_atoll'
21584 d_attribute_format='$d_attribute_format'
21585 d_attribute_malloc='$d_attribute_malloc'
21586 d_attribute_nonnull='$d_attribute_nonnull'
21587 d_attribute_noreturn='$d_attribute_noreturn'
21588 d_attribute_pure='$d_attribute_pure'
21589 d_attribute_unused='$d_attribute_unused'
21590 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21591 d_bcmp='$d_bcmp'
21592 d_bcopy='$d_bcopy'
21593 d_bsd='$d_bsd'
21594 d_bsdgetpgrp='$d_bsdgetpgrp'
21595 d_bsdsetpgrp='$d_bsdsetpgrp'
21596 d_builtin_choose_expr='$d_builtin_choose_expr'
21597 d_builtin_expect='$d_builtin_expect'
21598 d_bzero='$d_bzero'
21599 d_c99_variadic_macros='$d_c99_variadic_macros'
21600 d_casti32='$d_casti32'
21601 d_castneg='$d_castneg'
21602 d_charvspr='$d_charvspr'
21603 d_chown='$d_chown'
21604 d_chroot='$d_chroot'
21605 d_chsize='$d_chsize'
21606 d_class='$d_class'
21607 d_clearenv='$d_clearenv'
21608 d_closedir='$d_closedir'
21609 d_cmsghdr_s='$d_cmsghdr_s'
21610 d_const='$d_const'
21611 d_copysignl='$d_copysignl'
21612 d_cplusplus='$d_cplusplus'
21613 d_crypt='$d_crypt'
21614 d_crypt_r='$d_crypt_r'
21615 d_csh='$d_csh'
21616 d_ctermid='$d_ctermid'
21617 d_ctermid_r='$d_ctermid_r'
21618 d_ctime_r='$d_ctime_r'
21619 d_cuserid='$d_cuserid'
21620 d_dbl_dig='$d_dbl_dig'
21621 d_dbminitproto='$d_dbminitproto'
21622 d_difftime='$d_difftime'
21623 d_dir_dd_fd='$d_dir_dd_fd'
21624 d_dirfd='$d_dirfd'
21625 d_dirnamlen='$d_dirnamlen'
21626 d_dlerror='$d_dlerror'
21627 d_dlopen='$d_dlopen'
21628 d_dlsymun='$d_dlsymun'
21629 d_dosuid='$d_dosuid'
21630 d_drand48_r='$d_drand48_r'
21631 d_drand48proto='$d_drand48proto'
21632 d_dup2='$d_dup2'
21633 d_eaccess='$d_eaccess'
21634 d_endgrent='$d_endgrent'
21635 d_endgrent_r='$d_endgrent_r'
21636 d_endhent='$d_endhent'
21637 d_endhostent_r='$d_endhostent_r'
21638 d_endnent='$d_endnent'
21639 d_endnetent_r='$d_endnetent_r'
21640 d_endpent='$d_endpent'
21641 d_endprotoent_r='$d_endprotoent_r'
21642 d_endpwent='$d_endpwent'
21643 d_endpwent_r='$d_endpwent_r'
21644 d_endsent='$d_endsent'
21645 d_endservent_r='$d_endservent_r'
21646 d_eofnblk='$d_eofnblk'
21647 d_eunice='$d_eunice'
21648 d_faststdio='$d_faststdio'
21649 d_fchdir='$d_fchdir'
21650 d_fchmod='$d_fchmod'
21651 d_fchown='$d_fchown'
21652 d_fcntl='$d_fcntl'
21653 d_fcntl_can_lock='$d_fcntl_can_lock'
21654 d_fd_macros='$d_fd_macros'
21655 d_fd_set='$d_fd_set'
21656 d_fds_bits='$d_fds_bits'
21657 d_fgetpos='$d_fgetpos'
21658 d_finite='$d_finite'
21659 d_finitel='$d_finitel'
21660 d_flexfnam='$d_flexfnam'
21661 d_flock='$d_flock'
21662 d_flockproto='$d_flockproto'
21663 d_fork='$d_fork'
21664 d_fp_class='$d_fp_class'
21665 d_fpathconf='$d_fpathconf'
21666 d_fpclass='$d_fpclass'
21667 d_fpclassify='$d_fpclassify'
21668 d_fpclassl='$d_fpclassl'
21669 d_fpos64_t='$d_fpos64_t'
21670 d_frexpl='$d_frexpl'
21671 d_fs_data_s='$d_fs_data_s'
21672 d_fseeko='$d_fseeko'
21673 d_fsetpos='$d_fsetpos'
21674 d_fstatfs='$d_fstatfs'
21675 d_fstatvfs='$d_fstatvfs'
21676 d_fsync='$d_fsync'
21677 d_ftello='$d_ftello'
21678 d_ftime='$d_ftime'
21679 d_futimes='$d_futimes'
21680 d_getcwd='$d_getcwd'
21681 d_getespwnam='$d_getespwnam'
21682 d_getfsstat='$d_getfsstat'
21683 d_getgrent='$d_getgrent'
21684 d_getgrent_r='$d_getgrent_r'
21685 d_getgrgid_r='$d_getgrgid_r'
21686 d_getgrnam_r='$d_getgrnam_r'
21687 d_getgrps='$d_getgrps'
21688 d_gethbyaddr='$d_gethbyaddr'
21689 d_gethbyname='$d_gethbyname'
21690 d_gethent='$d_gethent'
21691 d_gethname='$d_gethname'
21692 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21693 d_gethostbyname_r='$d_gethostbyname_r'
21694 d_gethostent_r='$d_gethostent_r'
21695 d_gethostprotos='$d_gethostprotos'
21696 d_getitimer='$d_getitimer'
21697 d_getlogin='$d_getlogin'
21698 d_getlogin_r='$d_getlogin_r'
21699 d_getmnt='$d_getmnt'
21700 d_getmntent='$d_getmntent'
21701 d_getnbyaddr='$d_getnbyaddr'
21702 d_getnbyname='$d_getnbyname'
21703 d_getnent='$d_getnent'
21704 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21705 d_getnetbyname_r='$d_getnetbyname_r'
21706 d_getnetent_r='$d_getnetent_r'
21707 d_getnetprotos='$d_getnetprotos'
21708 d_getpagsz='$d_getpagsz'
21709 d_getpbyname='$d_getpbyname'
21710 d_getpbynumber='$d_getpbynumber'
21711 d_getpent='$d_getpent'
21712 d_getpgid='$d_getpgid'
21713 d_getpgrp2='$d_getpgrp2'
21714 d_getpgrp='$d_getpgrp'
21715 d_getppid='$d_getppid'
21716 d_getprior='$d_getprior'
21717 d_getprotobyname_r='$d_getprotobyname_r'
21718 d_getprotobynumber_r='$d_getprotobynumber_r'
21719 d_getprotoent_r='$d_getprotoent_r'
21720 d_getprotoprotos='$d_getprotoprotos'
21721 d_getprpwnam='$d_getprpwnam'
21722 d_getpwent='$d_getpwent'
21723 d_getpwent_r='$d_getpwent_r'
21724 d_getpwnam_r='$d_getpwnam_r'
21725 d_getpwuid_r='$d_getpwuid_r'
21726 d_getsbyname='$d_getsbyname'
21727 d_getsbyport='$d_getsbyport'
21728 d_getsent='$d_getsent'
21729 d_getservbyname_r='$d_getservbyname_r'
21730 d_getservbyport_r='$d_getservbyport_r'
21731 d_getservent_r='$d_getservent_r'
21732 d_getservprotos='$d_getservprotos'
21733 d_getspnam='$d_getspnam'
21734 d_getspnam_r='$d_getspnam_r'
21735 d_gettimeod='$d_gettimeod'
21736 d_gmtime_r='$d_gmtime_r'
21737 d_gnulibc='$d_gnulibc'
21738 d_grpasswd='$d_grpasswd'
21739 d_hasmntopt='$d_hasmntopt'
21740 d_htonl='$d_htonl'
21741 d_ilogbl='$d_ilogbl'
21742 d_inc_version_list='$d_inc_version_list'
21743 d_index='$d_index'
21744 d_inetaton='$d_inetaton'
21745 d_int64_t='$d_int64_t'
21746 d_isascii='$d_isascii'
21747 d_isfinite='$d_isfinite'
21748 d_isinf='$d_isinf'
21749 d_isnan='$d_isnan'
21750 d_isnanl='$d_isnanl'
21751 d_killpg='$d_killpg'
21752 d_lchown='$d_lchown'
21753 d_ldbl_dig='$d_ldbl_dig'
21754 d_libm_lib_version='$d_libm_lib_version'
21755 d_link='$d_link'
21756 d_localtime_r='$d_localtime_r'
21757 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21758 d_locconv='$d_locconv'
21759 d_lockf='$d_lockf'
21760 d_longdbl='$d_longdbl'
21761 d_longlong='$d_longlong'
21762 d_lseekproto='$d_lseekproto'
21763 d_lstat='$d_lstat'
21764 d_madvise='$d_madvise'
21765 d_malloc_good_size='$d_malloc_good_size'
21766 d_malloc_size='$d_malloc_size'
21767 d_mblen='$d_mblen'
21768 d_mbstowcs='$d_mbstowcs'
21769 d_mbtowc='$d_mbtowc'
21770 d_memchr='$d_memchr'
21771 d_memcmp='$d_memcmp'
21772 d_memcpy='$d_memcpy'
21773 d_memmove='$d_memmove'
21774 d_memset='$d_memset'
21775 d_mkdir='$d_mkdir'
21776 d_mkdtemp='$d_mkdtemp'
21777 d_mkfifo='$d_mkfifo'
21778 d_mkstemp='$d_mkstemp'
21779 d_mkstemps='$d_mkstemps'
21780 d_mktime='$d_mktime'
21781 d_mmap='$d_mmap'
21782 d_modfl='$d_modfl'
21783 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21784 d_modflproto='$d_modflproto'
21785 d_mprotect='$d_mprotect'
21786 d_msg='$d_msg'
21787 d_msg_ctrunc='$d_msg_ctrunc'
21788 d_msg_dontroute='$d_msg_dontroute'
21789 d_msg_oob='$d_msg_oob'
21790 d_msg_peek='$d_msg_peek'
21791 d_msg_proxy='$d_msg_proxy'
21792 d_msgctl='$d_msgctl'
21793 d_msgget='$d_msgget'
21794 d_msghdr_s='$d_msghdr_s'
21795 d_msgrcv='$d_msgrcv'
21796 d_msgsnd='$d_msgsnd'
21797 d_msync='$d_msync'
21798 d_munmap='$d_munmap'
21799 d_mymalloc='$d_mymalloc'
21800 d_nice='$d_nice'
21801 d_nl_langinfo='$d_nl_langinfo'
21802 d_nv_preserves_uv='$d_nv_preserves_uv'
21803 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21804 d_off64_t='$d_off64_t'
21805 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21806 d_oldpthreads='$d_oldpthreads'
21807 d_oldsock='$d_oldsock'
21808 d_open3='$d_open3'
21809 d_pathconf='$d_pathconf'
21810 d_pause='$d_pause'
21811 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21812 d_phostname='$d_phostname'
21813 d_pipe='$d_pipe'
21814 d_poll='$d_poll'
21815 d_portable='$d_portable'
21816 d_printf_format_null='$d_printf_format_null'
21817 d_procselfexe='$d_procselfexe'
21818 d_pseudofork='$d_pseudofork'
21819 d_pthread_atfork='$d_pthread_atfork'
21820 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21821 d_pthread_yield='$d_pthread_yield'
21822 d_pwage='$d_pwage'
21823 d_pwchange='$d_pwchange'
21824 d_pwclass='$d_pwclass'
21825 d_pwcomment='$d_pwcomment'
21826 d_pwexpire='$d_pwexpire'
21827 d_pwgecos='$d_pwgecos'
21828 d_pwpasswd='$d_pwpasswd'
21829 d_pwquota='$d_pwquota'
21830 d_qgcvt='$d_qgcvt'
21831 d_quad='$d_quad'
21832 d_random_r='$d_random_r'
21833 d_readdir64_r='$d_readdir64_r'
21834 d_readdir='$d_readdir'
21835 d_readdir_r='$d_readdir_r'
21836 d_readlink='$d_readlink'
21837 d_readv='$d_readv'
21838 d_recvmsg='$d_recvmsg'
21839 d_rename='$d_rename'
21840 d_rewinddir='$d_rewinddir'
21841 d_rmdir='$d_rmdir'
21842 d_safebcpy='$d_safebcpy'
21843 d_safemcpy='$d_safemcpy'
21844 d_sanemcmp='$d_sanemcmp'
21845 d_sbrkproto='$d_sbrkproto'
21846 d_scalbnl='$d_scalbnl'
21847 d_sched_yield='$d_sched_yield'
21848 d_scm_rights='$d_scm_rights'
21849 d_seekdir='$d_seekdir'
21850 d_select='$d_select'
21851 d_sem='$d_sem'
21852 d_semctl='$d_semctl'
21853 d_semctl_semid_ds='$d_semctl_semid_ds'
21854 d_semctl_semun='$d_semctl_semun'
21855 d_semget='$d_semget'
21856 d_semop='$d_semop'
21857 d_sendmsg='$d_sendmsg'
21858 d_setegid='$d_setegid'
21859 d_seteuid='$d_seteuid'
21860 d_setgrent='$d_setgrent'
21861 d_setgrent_r='$d_setgrent_r'
21862 d_setgrps='$d_setgrps'
21863 d_sethent='$d_sethent'
21864 d_sethostent_r='$d_sethostent_r'
21865 d_setitimer='$d_setitimer'
21866 d_setlinebuf='$d_setlinebuf'
21867 d_setlocale='$d_setlocale'
21868 d_setlocale_r='$d_setlocale_r'
21869 d_setnent='$d_setnent'
21870 d_setnetent_r='$d_setnetent_r'
21871 d_setpent='$d_setpent'
21872 d_setpgid='$d_setpgid'
21873 d_setpgrp2='$d_setpgrp2'
21874 d_setpgrp='$d_setpgrp'
21875 d_setprior='$d_setprior'
21876 d_setproctitle='$d_setproctitle'
21877 d_setprotoent_r='$d_setprotoent_r'
21878 d_setpwent='$d_setpwent'
21879 d_setpwent_r='$d_setpwent_r'
21880 d_setregid='$d_setregid'
21881 d_setresgid='$d_setresgid'
21882 d_setresuid='$d_setresuid'
21883 d_setreuid='$d_setreuid'
21884 d_setrgid='$d_setrgid'
21885 d_setruid='$d_setruid'
21886 d_setsent='$d_setsent'
21887 d_setservent_r='$d_setservent_r'
21888 d_setsid='$d_setsid'
21889 d_setvbuf='$d_setvbuf'
21890 d_sfio='$d_sfio'
21891 d_shm='$d_shm'
21892 d_shmat='$d_shmat'
21893 d_shmatprototype='$d_shmatprototype'
21894 d_shmctl='$d_shmctl'
21895 d_shmdt='$d_shmdt'
21896 d_shmget='$d_shmget'
21897 d_sigaction='$d_sigaction'
21898 d_signbit='$d_signbit'
21899 d_sigprocmask='$d_sigprocmask'
21900 d_sigsetjmp='$d_sigsetjmp'
21901 d_sitearch='$d_sitearch'
21902 d_snprintf='$d_snprintf'
21903 d_sockatmark='$d_sockatmark'
21904 d_sockatmarkproto='$d_sockatmarkproto'
21905 d_socket='$d_socket'
21906 d_socklen_t='$d_socklen_t'
21907 d_sockpair='$d_sockpair'
21908 d_socks5_init='$d_socks5_init'
21909 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21910 d_sqrtl='$d_sqrtl'
21911 d_srand48_r='$d_srand48_r'
21912 d_srandom_r='$d_srandom_r'
21913 d_sresgproto='$d_sresgproto'
21914 d_sresuproto='$d_sresuproto'
21915 d_statblks='$d_statblks'
21916 d_statfs_f_flags='$d_statfs_f_flags'
21917 d_statfs_s='$d_statfs_s'
21918 d_statvfs='$d_statvfs'
21919 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21920 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21921 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21922 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21923 d_stdio_stream_array='$d_stdio_stream_array'
21924 d_stdiobase='$d_stdiobase'
21925 d_stdstdio='$d_stdstdio'
21926 d_strchr='$d_strchr'
21927 d_strcoll='$d_strcoll'
21928 d_strctcpy='$d_strctcpy'
21929 d_strerrm='$d_strerrm'
21930 d_strerror='$d_strerror'
21931 d_strerror_r='$d_strerror_r'
21932 d_strftime='$d_strftime'
21933 d_strlcat='$d_strlcat'
21934 d_strlcpy='$d_strlcpy'
21935 d_strtod='$d_strtod'
21936 d_strtol='$d_strtol'
21937 d_strtold='$d_strtold'
21938 d_strtoll='$d_strtoll'
21939 d_strtoq='$d_strtoq'
21940 d_strtoul='$d_strtoul'
21941 d_strtoull='$d_strtoull'
21942 d_strtouq='$d_strtouq'
21943 d_strxfrm='$d_strxfrm'
21944 d_suidsafe='$d_suidsafe'
21945 d_symlink='$d_symlink'
21946 d_syscall='$d_syscall'
21947 d_syscallproto='$d_syscallproto'
21948 d_sysconf='$d_sysconf'
21949 d_sysernlst='$d_sysernlst'
21950 d_syserrlst='$d_syserrlst'
21951 d_system='$d_system'
21952 d_tcgetpgrp='$d_tcgetpgrp'
21953 d_tcsetpgrp='$d_tcsetpgrp'
21954 d_telldir='$d_telldir'
21955 d_telldirproto='$d_telldirproto'
21956 d_time='$d_time'
21957 d_times='$d_times'
21958 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21959 d_tm_tm_zone='$d_tm_tm_zone'
21960 d_tmpnam_r='$d_tmpnam_r'
21961 d_truncate='$d_truncate'
21962 d_ttyname_r='$d_ttyname_r'
21963 d_tzname='$d_tzname'
21964 d_u32align='$d_u32align'
21965 d_ualarm='$d_ualarm'
21966 d_umask='$d_umask'
21967 d_uname='$d_uname'
21968 d_union_semun='$d_union_semun'
21969 d_unordered='$d_unordered'
21970 d_unsetenv='$d_unsetenv'
21971 d_usleep='$d_usleep'
21972 d_usleepproto='$d_usleepproto'
21973 d_ustat='$d_ustat'
21974 d_vendorarch='$d_vendorarch'
21975 d_vendorbin='$d_vendorbin'
21976 d_vendorlib='$d_vendorlib'
21977 d_vendorscript='$d_vendorscript'
21978 d_vfork='$d_vfork'
21979 d_void_closedir='$d_void_closedir'
21980 d_voidsig='$d_voidsig'
21981 d_voidtty='$d_voidtty'
21982 d_volatile='$d_volatile'
21983 d_vprintf='$d_vprintf'
21984 d_vsnprintf='$d_vsnprintf'
21985 d_wait4='$d_wait4'
21986 d_waitpid='$d_waitpid'
21987 d_wcstombs='$d_wcstombs'
21988 d_wctomb='$d_wctomb'
21989 d_writev='$d_writev'
21990 d_xenix='$d_xenix'
21991 date='$date'
21992 db_hashtype='$db_hashtype'
21993 db_prefixtype='$db_prefixtype'
21994 db_version_major='$db_version_major'
21995 db_version_minor='$db_version_minor'
21996 db_version_patch='$db_version_patch'
21997 defvoidused='$defvoidused'
21998 direntrytype='$direntrytype'
21999 dlext='$dlext'
22000 dlsrc='$dlsrc'
22001 doublesize='$doublesize'
22002 drand01='$drand01'
22003 drand48_r_proto='$drand48_r_proto'
22004 dynamic_ext='$dynamic_ext'
22005 eagain='$eagain'
22006 ebcdic='$ebcdic'
22007 echo='$echo'
22008 egrep='$egrep'
22009 emacs='$emacs'
22010 endgrent_r_proto='$endgrent_r_proto'
22011 endhostent_r_proto='$endhostent_r_proto'
22012 endnetent_r_proto='$endnetent_r_proto'
22013 endprotoent_r_proto='$endprotoent_r_proto'
22014 endpwent_r_proto='$endpwent_r_proto'
22015 endservent_r_proto='$endservent_r_proto'
22016 eunicefix='$eunicefix'
22017 exe_ext='$exe_ext'
22018 expr='$expr'
22019 extensions='$extensions'
22020 extras='$extras'
22021 fflushNULL='$fflushNULL'
22022 fflushall='$fflushall'
22023 find='$find'
22024 firstmakefile='$firstmakefile'
22025 flex='$flex'
22026 fpossize='$fpossize'
22027 fpostype='$fpostype'
22028 freetype='$freetype'
22029 from='$from'
22030 full_ar='$full_ar'
22031 full_csh='$full_csh'
22032 full_sed='$full_sed'
22033 gccansipedantic='$gccansipedantic'
22034 gccosandvers='$gccosandvers'
22035 gccversion='$gccversion'
22036 getgrent_r_proto='$getgrent_r_proto'
22037 getgrgid_r_proto='$getgrgid_r_proto'
22038 getgrnam_r_proto='$getgrnam_r_proto'
22039 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22040 gethostbyname_r_proto='$gethostbyname_r_proto'
22041 gethostent_r_proto='$gethostent_r_proto'
22042 getlogin_r_proto='$getlogin_r_proto'
22043 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22044 getnetbyname_r_proto='$getnetbyname_r_proto'
22045 getnetent_r_proto='$getnetent_r_proto'
22046 getprotobyname_r_proto='$getprotobyname_r_proto'
22047 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22048 getprotoent_r_proto='$getprotoent_r_proto'
22049 getpwent_r_proto='$getpwent_r_proto'
22050 getpwnam_r_proto='$getpwnam_r_proto'
22051 getpwuid_r_proto='$getpwuid_r_proto'
22052 getservbyname_r_proto='$getservbyname_r_proto'
22053 getservbyport_r_proto='$getservbyport_r_proto'
22054 getservent_r_proto='$getservent_r_proto'
22055 getspnam_r_proto='$getspnam_r_proto'
22056 gidformat='$gidformat'
22057 gidsign='$gidsign'
22058 gidsize='$gidsize'
22059 gidtype='$gidtype'
22060 glibpth='$glibpth'
22061 gmake='$gmake'
22062 gmtime_r_proto='$gmtime_r_proto'
22063 gnulibc_version='$gnulibc_version'
22064 grep='$grep'
22065 groupcat='$groupcat'
22066 groupstype='$groupstype'
22067 gzip='$gzip'
22068 h_fcntl='$h_fcntl'
22069 h_sysfile='$h_sysfile'
22070 hint='$hint'
22071 hostcat='$hostcat'
22072 html1dir='$html1dir'
22073 html1direxp='$html1direxp'
22074 html3dir='$html3dir'
22075 html3direxp='$html3direxp'
22076 i16size='$i16size'
22077 i16type='$i16type'
22078 i32size='$i32size'
22079 i32type='$i32type'
22080 i64size='$i64size'
22081 i64type='$i64type'
22082 i8size='$i8size'
22083 i8type='$i8type'
22084 i_arpainet='$i_arpainet'
22085 i_bsdioctl='$i_bsdioctl'
22086 i_crypt='$i_crypt'
22087 i_db='$i_db'
22088 i_dbm='$i_dbm'
22089 i_dirent='$i_dirent'
22090 i_dld='$i_dld'
22091 i_dlfcn='$i_dlfcn'
22092 i_fcntl='$i_fcntl'
22093 i_float='$i_float'
22094 i_fp='$i_fp'
22095 i_fp_class='$i_fp_class'
22096 i_gdbm='$i_gdbm'
22097 i_grp='$i_grp'
22098 i_ieeefp='$i_ieeefp'
22099 i_inttypes='$i_inttypes'
22100 i_langinfo='$i_langinfo'
22101 i_libutil='$i_libutil'
22102 i_limits='$i_limits'
22103 i_locale='$i_locale'
22104 i_machcthr='$i_machcthr'
22105 i_malloc='$i_malloc'
22106 i_math='$i_math'
22107 i_memory='$i_memory'
22108 i_mntent='$i_mntent'
22109 i_ndbm='$i_ndbm'
22110 i_netdb='$i_netdb'
22111 i_neterrno='$i_neterrno'
22112 i_netinettcp='$i_netinettcp'
22113 i_niin='$i_niin'
22114 i_poll='$i_poll'
22115 i_prot='$i_prot'
22116 i_pthread='$i_pthread'
22117 i_pwd='$i_pwd'
22118 i_rpcsvcdbm='$i_rpcsvcdbm'
22119 i_sfio='$i_sfio'
22120 i_sgtty='$i_sgtty'
22121 i_shadow='$i_shadow'
22122 i_socks='$i_socks'
22123 i_stdarg='$i_stdarg'
22124 i_stddef='$i_stddef'
22125 i_stdlib='$i_stdlib'
22126 i_string='$i_string'
22127 i_sunmath='$i_sunmath'
22128 i_sysaccess='$i_sysaccess'
22129 i_sysdir='$i_sysdir'
22130 i_sysfile='$i_sysfile'
22131 i_sysfilio='$i_sysfilio'
22132 i_sysin='$i_sysin'
22133 i_sysioctl='$i_sysioctl'
22134 i_syslog='$i_syslog'
22135 i_sysmman='$i_sysmman'
22136 i_sysmode='$i_sysmode'
22137 i_sysmount='$i_sysmount'
22138 i_sysndir='$i_sysndir'
22139 i_sysparam='$i_sysparam'
22140 i_sysresrc='$i_sysresrc'
22141 i_syssecrt='$i_syssecrt'
22142 i_sysselct='$i_sysselct'
22143 i_syssockio='$i_syssockio'
22144 i_sysstat='$i_sysstat'
22145 i_sysstatfs='$i_sysstatfs'
22146 i_sysstatvfs='$i_sysstatvfs'
22147 i_systime='$i_systime'
22148 i_systimek='$i_systimek'
22149 i_systimes='$i_systimes'
22150 i_systypes='$i_systypes'
22151 i_sysuio='$i_sysuio'
22152 i_sysun='$i_sysun'
22153 i_sysutsname='$i_sysutsname'
22154 i_sysvfs='$i_sysvfs'
22155 i_syswait='$i_syswait'
22156 i_termio='$i_termio'
22157 i_termios='$i_termios'
22158 i_time='$i_time'
22159 i_unistd='$i_unistd'
22160 i_ustat='$i_ustat'
22161 i_utime='$i_utime'
22162 i_values='$i_values'
22163 i_varargs='$i_varargs'
22164 i_varhdr='$i_varhdr'
22165 i_vfork='$i_vfork'
22166 ignore_versioned_solibs='$ignore_versioned_solibs'
22167 inc_version_list='$inc_version_list'
22168 inc_version_list_init='$inc_version_list_init'
22169 incpath='$incpath'
22170 inews='$inews'
22171 initialinstalllocation='$initialinstalllocation'
22172 installarchlib='$installarchlib'
22173 installbin='$installbin'
22174 installhtml1dir='$installhtml1dir'
22175 installhtml3dir='$installhtml3dir'
22176 installman1dir='$installman1dir'
22177 installman3dir='$installman3dir'
22178 installprefix='$installprefix'
22179 installprefixexp='$installprefixexp'
22180 installprivlib='$installprivlib'
22181 installscript='$installscript'
22182 installsitearch='$installsitearch'
22183 installsitebin='$installsitebin'
22184 installsitehtml1dir='$installsitehtml1dir'
22185 installsitehtml3dir='$installsitehtml3dir'
22186 installsitelib='$installsitelib'
22187 installsiteman1dir='$installsiteman1dir'
22188 installsiteman3dir='$installsiteman3dir'
22189 installsitescript='$installsitescript'
22190 installstyle='$installstyle'
22191 installusrbinperl='$installusrbinperl'
22192 installvendorarch='$installvendorarch'
22193 installvendorbin='$installvendorbin'
22194 installvendorhtml1dir='$installvendorhtml1dir'
22195 installvendorhtml3dir='$installvendorhtml3dir'
22196 installvendorlib='$installvendorlib'
22197 installvendorman1dir='$installvendorman1dir'
22198 installvendorman3dir='$installvendorman3dir'
22199 installvendorscript='$installvendorscript'
22200 intsize='$intsize'
22201 issymlink='$issymlink'
22202 ivdformat='$ivdformat'
22203 ivsize='$ivsize'
22204 ivtype='$ivtype'
22205 known_extensions='$known_extensions'
22206 ksh='$ksh'
22207 ld='$ld'
22208 lddlflags='$lddlflags'
22209 ldflags='$ldflags'
22210 ldflags_uselargefiles='$ldflags_uselargefiles'
22211 ldlibpthname='$ldlibpthname'
22212 less='$less'
22213 lib_ext='$lib_ext'
22214 libc='$libc'
22215 libperl='$libperl'
22216 libpth='$libpth'
22217 libs='$libs'
22218 libsdirs='$libsdirs'
22219 libsfiles='$libsfiles'
22220 libsfound='$libsfound'
22221 libspath='$libspath'
22222 libswanted='$libswanted'
22223 libswanted_uselargefiles='$libswanted_uselargefiles'
22224 line='$line'
22225 lint='$lint'
22226 lkflags='$lkflags'
22227 ln='$ln'
22228 lns='$lns'
22229 localtime_r_proto='$localtime_r_proto'
22230 locincpth='$locincpth'
22231 loclibpth='$loclibpth'
22232 longdblsize='$longdblsize'
22233 longlongsize='$longlongsize'
22234 longsize='$longsize'
22235 lp='$lp'
22236 lpr='$lpr'
22237 ls='$ls'
22238 lseeksize='$lseeksize'
22239 lseektype='$lseektype'
22240 mad='$mad'
22241 madlyh='$madlyh'
22242 madlyobj='$madlyobj'
22243 madlysrc='$madlysrc'
22244 mail='$mail'
22245 mailx='$mailx'
22246 make='$make'
22247 make_set_make='$make_set_make'
22248 mallocobj='$mallocobj'
22249 mallocsrc='$mallocsrc'
22250 malloctype='$malloctype'
22251 man1dir='$man1dir'
22252 man1direxp='$man1direxp'
22253 man1ext='$man1ext'
22254 man3dir='$man3dir'
22255 man3direxp='$man3direxp'
22256 man3ext='$man3ext'
22257 mips_type='$mips_type'
22258 mistrustnm='$mistrustnm'
22259 mkdir='$mkdir'
22260 mmaptype='$mmaptype'
22261 modetype='$modetype'
22262 more='$more'
22263 multiarch='$multiarch'
22264 mv='$mv'
22265 myarchname='$myarchname'
22266 mydomain='$mydomain'
22267 myhostname='$myhostname'
22268 myuname='$myuname'
22269 n='$n'
22270 need_va_copy='$need_va_copy'
22271 netdb_hlen_type='$netdb_hlen_type'
22272 netdb_host_type='$netdb_host_type'
22273 netdb_name_type='$netdb_name_type'
22274 netdb_net_type='$netdb_net_type'
22275 nm='$nm'
22276 nm_opt='$nm_opt'
22277 nm_so_opt='$nm_so_opt'
22278 nonxs_ext='$nonxs_ext'
22279 nroff='$nroff'
22280 nvEUformat='$nvEUformat'
22281 nvFUformat='$nvFUformat'
22282 nvGUformat='$nvGUformat'
22283 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22284 nveformat='$nveformat'
22285 nvfformat='$nvfformat'
22286 nvgformat='$nvgformat'
22287 nvsize='$nvsize'
22288 nvtype='$nvtype'
22289 o_nonblock='$o_nonblock'
22290 obj_ext='$obj_ext'
22291 old_pthread_create_joinable='$old_pthread_create_joinable'
22292 optimize='$optimize'
22293 orderlib='$orderlib'
22294 osname='$osname'
22295 osvers='$osvers'
22296 otherlibdirs='$otherlibdirs'
22297 package='$package'
22298 pager='$pager'
22299 passcat='$passcat'
22300 patchlevel='$patchlevel'
22301 path_sep='$path_sep'
22302 perl5='$perl5'
22303 perl='$perl'
22304 perl_patchlevel='$perl_patchlevel'
22305 perladmin='$perladmin'
22306 perllibs='$perllibs'
22307 perlpath='$perlpath'
22308 pg='$pg'
22309 phostname='$phostname'
22310 pidtype='$pidtype'
22311 plibpth='$plibpth'
22312 pmake='$pmake'
22313 pr='$pr'
22314 prefix='$prefix'
22315 prefixexp='$prefixexp'
22316 privlib='$privlib'
22317 privlibexp='$privlibexp'
22318 procselfexe='$procselfexe'
22319 prototype='$prototype'
22320 ptrsize='$ptrsize'
22321 quadkind='$quadkind'
22322 quadtype='$quadtype'
22323 randbits='$randbits'
22324 randfunc='$randfunc'
22325 random_r_proto='$random_r_proto'
22326 randseedtype='$randseedtype'
22327 ranlib='$ranlib'
22328 rd_nodata='$rd_nodata'
22329 readdir64_r_proto='$readdir64_r_proto'
22330 readdir_r_proto='$readdir_r_proto'
22331 revision='$revision'
22332 rm='$rm'
22333 rm_try='$rm_try'
22334 rmail='$rmail'
22335 run='$run'
22336 runnm='$runnm'
22337 sPRIEUldbl='$sPRIEUldbl'
22338 sPRIFUldbl='$sPRIFUldbl'
22339 sPRIGUldbl='$sPRIGUldbl'
22340 sPRIXU64='$sPRIXU64'
22341 sPRId64='$sPRId64'
22342 sPRIeldbl='$sPRIeldbl'
22343 sPRIfldbl='$sPRIfldbl'
22344 sPRIgldbl='$sPRIgldbl'
22345 sPRIi64='$sPRIi64'
22346 sPRIo64='$sPRIo64'
22347 sPRIu64='$sPRIu64'
22348 sPRIx64='$sPRIx64'
22349 sSCNfldbl='$sSCNfldbl'
22350 sched_yield='$sched_yield'
22351 scriptdir='$scriptdir'
22352 scriptdirexp='$scriptdirexp'
22353 sed='$sed'
22354 seedfunc='$seedfunc'
22355 selectminbits='$selectminbits'
22356 selecttype='$selecttype'
22357 sendmail='$sendmail'
22358 setgrent_r_proto='$setgrent_r_proto'
22359 sethostent_r_proto='$sethostent_r_proto'
22360 setlocale_r_proto='$setlocale_r_proto'
22361 setnetent_r_proto='$setnetent_r_proto'
22362 setprotoent_r_proto='$setprotoent_r_proto'
22363 setpwent_r_proto='$setpwent_r_proto'
22364 setservent_r_proto='$setservent_r_proto'
22365 sh='$sh'
22366 shar='$shar'
22367 sharpbang='$sharpbang'
22368 shmattype='$shmattype'
22369 shortsize='$shortsize'
22370 shrpenv='$shrpenv'
22371 shsharp='$shsharp'
22372 sig_count='$sig_count'
22373 sig_name='$sig_name'
22374 sig_name_init='$sig_name_init'
22375 sig_num='$sig_num'
22376 sig_num_init='$sig_num_init'
22377 sig_size='$sig_size'
22378 signal_t='$signal_t'
22379 sitearch='$sitearch'
22380 sitearchexp='$sitearchexp'
22381 sitebin='$sitebin'
22382 sitebinexp='$sitebinexp'
22383 sitehtml1dir='$sitehtml1dir'
22384 sitehtml1direxp='$sitehtml1direxp'
22385 sitehtml3dir='$sitehtml3dir'
22386 sitehtml3direxp='$sitehtml3direxp'
22387 sitelib='$sitelib'
22388 sitelib_stem='$sitelib_stem'
22389 sitelibexp='$sitelibexp'
22390 siteman1dir='$siteman1dir'
22391 siteman1direxp='$siteman1direxp'
22392 siteman3dir='$siteman3dir'
22393 siteman3direxp='$siteman3direxp'
22394 siteprefix='$siteprefix'
22395 siteprefixexp='$siteprefixexp'
22396 sitescript='$sitescript'
22397 sitescriptexp='$sitescriptexp'
22398 sizesize='$sizesize'
22399 sizetype='$sizetype'
22400 sleep='$sleep'
22401 smail='$smail'
22402 so='$so'
22403 sockethdr='$sockethdr'
22404 socketlib='$socketlib'
22405 socksizetype='$socksizetype'
22406 sort='$sort'
22407 spackage='$spackage'
22408 spitshell='$spitshell'
22409 srand48_r_proto='$srand48_r_proto'
22410 srandom_r_proto='$srandom_r_proto'
22411 src='$src'
22412 ssizetype='$ssizetype'
22413 startperl='$startperl'
22414 startsh='$startsh'
22415 static_ext='$static_ext'
22416 stdchar='$stdchar'
22417 stdio_base='$stdio_base'
22418 stdio_bufsiz='$stdio_bufsiz'
22419 stdio_cnt='$stdio_cnt'
22420 stdio_filbuf='$stdio_filbuf'
22421 stdio_ptr='$stdio_ptr'
22422 stdio_stream_array='$stdio_stream_array'
22423 strerror_r_proto='$strerror_r_proto'
22424 strings='$strings'
22425 submit='$submit'
22426 subversion='$subversion'
22427 sysman='$sysman'
22428 tail='$tail'
22429 tar='$tar'
22430 targetarch='$targetarch'
22431 tbl='$tbl'
22432 tee='$tee'
22433 test='$test'
22434 timeincl='$timeincl'
22435 timetype='$timetype'
22436 tmpnam_r_proto='$tmpnam_r_proto'
22437 to='$to'
22438 touch='$touch'
22439 tr='$tr'
22440 trnl='$trnl'
22441 troff='$troff'
22442 ttyname_r_proto='$ttyname_r_proto'
22443 u16size='$u16size'
22444 u16type='$u16type'
22445 u32size='$u32size'
22446 u32type='$u32type'
22447 u64size='$u64size'
22448 u64type='$u64type'
22449 u8size='$u8size'
22450 u8type='$u8type'
22451 uidformat='$uidformat'
22452 uidsign='$uidsign'
22453 uidsize='$uidsize'
22454 uidtype='$uidtype'
22455 uname='$uname'
22456 uniq='$uniq'
22457 uquadtype='$uquadtype'
22458 use5005threads='$use5005threads'
22459 use64bitall='$use64bitall'
22460 use64bitint='$use64bitint'
22461 usecrosscompile='$usecrosscompile'
22462 usedl='$usedl'
22463 usefaststdio='$usefaststdio'
22464 useithreads='$useithreads'
22465 uselargefiles='$uselargefiles'
22466 uselongdouble='$uselongdouble'
22467 usemallocwrap='$usemallocwrap'
22468 usemorebits='$usemorebits'
22469 usemultiplicity='$usemultiplicity'
22470 usemymalloc='$usemymalloc'
22471 usenm='$usenm'
22472 useopcode='$useopcode'
22473 useperlio='$useperlio'
22474 useposix='$useposix'
22475 usereentrant='$usereentrant'
22476 userelocatableinc='$userelocatableinc'
22477 usesfio='$usesfio'
22478 useshrplib='$useshrplib'
22479 usesitecustomize='$usesitecustomize'
22480 usesocks='$usesocks'
22481 usethreads='$usethreads'
22482 usevendorprefix='$usevendorprefix'
22483 usevfork='$usevfork'
22484 usrinc='$usrinc'
22485 uuname='$uuname'
22486 uvXUformat='$uvXUformat'
22487 uvoformat='$uvoformat'
22488 uvsize='$uvsize'
22489 uvtype='$uvtype'
22490 uvuformat='$uvuformat'
22491 uvxformat='$uvxformat'
22492 vendorarch='$vendorarch'
22493 vendorarchexp='$vendorarchexp'
22494 vendorbin='$vendorbin'
22495 vendorbinexp='$vendorbinexp'
22496 vendorhtml1dir='$vendorhtml1dir'
22497 vendorhtml1direxp='$vendorhtml1direxp'
22498 vendorhtml3dir='$vendorhtml3dir'
22499 vendorhtml3direxp='$vendorhtml3direxp'
22500 vendorlib='$vendorlib'
22501 vendorlib_stem='$vendorlib_stem'
22502 vendorlibexp='$vendorlibexp'
22503 vendorman1dir='$vendorman1dir'
22504 vendorman1direxp='$vendorman1direxp'
22505 vendorman3dir='$vendorman3dir'
22506 vendorman3direxp='$vendorman3direxp'
22507 vendorprefix='$vendorprefix'
22508 vendorprefixexp='$vendorprefixexp'
22509 vendorscript='$vendorscript'
22510 vendorscriptexp='$vendorscriptexp'
22511 version='$version'
22512 version_patchlevel_string='$version_patchlevel_string'
22513 versiononly='$versiononly'
22514 vi='$vi'
22515 voidflags='$voidflags'
22516 xlibpth='$xlibpth'
22517 yacc='$yacc'
22518 yaccflags='$yaccflags'
22519 zcat='$zcat'
22520 zip='$zip'
22521 EOT
22522
22523 : Add in command line options if available
22524 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22525
22526 : add special variables
22527 $test -f $src/patchlevel.h && \
22528 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22529 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22530 echo "PERL_CONFIG_SH=true" >>config.sh
22531
22532 : propagate old symbols
22533 if $test -f UU/config.sh; then
22534         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22535         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22536         $sort | $uniq -u >UU/oldsyms
22537         set X `cat UU/oldsyms`
22538         shift
22539         case $# in
22540         0) ;;
22541         *)
22542                 cat <<EOM
22543 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22544 EOM
22545                 echo "# Variables propagated from previous config.sh file." >>config.sh
22546                 for sym in `cat UU/oldsyms`; do
22547                         echo "    Propagating $hint variable "'$'"$sym..."
22548                         eval 'tmp="$'"${sym}"'"'
22549                         echo "$tmp" | \
22550                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22551                 done
22552                 ;;
22553         esac
22554 fi
22555
22556 : Finish up by extracting the .SH files
22557 case "$alldone" in
22558 exit)
22559         $rm -rf UU
22560         echo "Extraction done."
22561         exit 0
22562         ;;
22563 cont)
22564         ;;
22565 '')
22566         dflt=''
22567         nostick=true
22568         $cat <<EOM
22569
22570 If you'd like to make any changes to the config.sh file before I begin
22571 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22572
22573 EOM
22574         rp="Press return or use a shell escape to edit config.sh:"
22575         . UU/myread
22576         nostick=''
22577         case "$ans" in
22578         '') ;;
22579         *) : in case they cannot read
22580                 sh 1>&4 -c "$ans";;
22581         esac
22582         ;;
22583 esac
22584
22585 : if this fails, just run all the .SH files by hand
22586 . ./config.sh
22587
22588 echo " "
22589 exec 1>&4
22590 pwd=`pwd`
22591 . ./UU/extract
22592 cd "$pwd"
22593
22594 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22595         dflt=y
22596         case "$silent" in
22597         true) ;;
22598         *)
22599                 $cat <<EOM
22600
22601 Now you need to generate make dependencies by running "$make depend".
22602 You might prefer to run it in background: "$make depend > makedepend.out &"
22603 It can take a while, so you might not want to run it right now.
22604
22605 EOM
22606                 ;;
22607         esac
22608         rp="Run $make depend now?"
22609         . UU/myread
22610         case "$ans" in
22611         y*)
22612                 $make depend && echo "Now you must run '$make'."
22613                 ;;
22614         *)
22615                 echo "You must run '$make depend' then '$make'."
22616                 ;;
22617         esac
22618 elif test -f [Mm]akefile; then
22619         echo " "
22620         echo "Now you must run a $make."
22621 else
22622         echo "Configure done."
22623 fi
22624
22625 if $test -f Policy.sh; then
22626     $cat <<EOM
22627
22628 If you compile $package on a different machine or from a different object
22629 directory, copy the Policy.sh file from this object directory to the
22630 new one before you run Configure -- this will help you with most of
22631 the policy defaults.
22632
22633 EOM
22634 fi
22635 if $test -f config.msg; then
22636     echo "Hmm.  I also noted the following information while running:"
22637     echo " "
22638     $cat config.msg >&4
22639     $rm -f config.msg
22640 fi
22641 $rm -f kit*isdone ark*isdone
22642 $rm -rf UU
22643
22644 : End of Configure
22645