Add the madly parser. I believe that this is all the C code. Now to
[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 Wed Mar  8 09:08:03 CET 2006 [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 : compute my invocation name
69 me=$0
70 case "$0" in
71 */*)
72         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
73         test "$me" || me=$0
74         ;;
75 esac
76
77 : Proper separator for the PATH environment variable
78 p_=:
79 : On OS/2 this directory should exist if this is not floppy only system :-]
80 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
81     if test -n "$OS2_SHELL"; then
82                 p_=\;
83                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
84                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
85                 is_os2=yes
86         elif test -n "$DJGPP"; then
87                 case "X${MACHTYPE:-nonesuchmach}" in
88                 *cygwin) ;;
89                 *) p_=\; ;;
90                 esac
91         fi
92 fi
93
94 : Proper PATH setting
95 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
96 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
97 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
98 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
99 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
100 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
101 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
102 paths="$paths /sbin /usr/sbin /usr/libexec"
103 paths="$paths /system/gnu_library/bin"
104
105 for p in $paths
106 do
107         case "$p_$PATH$p_" in
108         *$p_$p$p_*) ;;
109         *) test -d $p && PATH=$PATH$p_$p ;;
110         esac
111 done
112
113 PATH=.$p_$PATH
114 export PATH
115
116 : shall we be using ksh?
117 inksh=''
118 needksh=''
119 avoidksh=''
120 newsh=/bin/ksh
121 changesh=''
122 if (PATH=.; alias -x) >/dev/null 2>&1; then
123                 inksh=true
124 fi
125 if test -f /hp-ux -a -f /bin/ksh; then
126         needksh='to avoid sh bug in "here document" expansion'
127 fi
128 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
129         if test X`/usr/bin/uname -v` = X4; then
130                 avoidksh="to avoid AIX 4's /bin/sh"
131                 newsh=/usr/bin/bsh
132         fi
133 fi
134 if test -f /osf_boot -a -f /usr/sbin/setld; then
135         if test X`/usr/bin/uname -s` = XOSF1; then
136                 avoidksh="to avoid Digital UNIX' ksh"
137                 newsh=/bin/sh
138                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
139         fi
140 fi
141 case "$inksh/$needksh" in
142 /[a-z]*)
143                 ENV=''
144                 changesh=true
145                 reason="$needksh"
146         ;;
147 esac
148 case "$inksh/$avoidksh" in
149 true/[a-z]*)
150         changesh=true
151         reason="$avoidksh"
152         ;;
153 esac
154 case "$inksh/$needksh-$avoidksh-" in
155 true/--)
156                 cat <<EOM
157 (I see you are using the Korn shell.  Some ksh's blow up on $me,
158 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
159 EOM
160         ;;
161 esac
162 case "$changesh" in
163 true)
164         export newsh
165         echo "(Feeding myself to $newsh $reason.)"
166         case "$0" in
167         Configure|*/Configure) exec $newsh $0 "$@";;
168         *) exec $newsh Configure "$@";;
169         esac
170         ;;
171 esac
172
173 : if needed set CDPATH to a harmless value that is not chatty
174 : avoid bash 2.02 problems with empty CDPATH.
175 case "$CDPATH" in
176 '')     ;;
177 *)      case "$SHELL" in
178         *bash*) CDPATH='.' ;;
179         *)              CDPATH='' ;;
180         esac
181         ;;
182 esac
183 : Configure runs within the UU subdirectory
184 test -d UU || mkdir UU
185 cd UU && rm -f ./*
186
187 ccname=''
188 ccversion=''
189 ccsymbols=''
190 cppccsymbols=''
191 cppsymbols=''
192 from=''
193 run=''
194 targetarch=''
195 to=''
196 usecrosscompile=''
197 mistrustnm=''
198 perllibs=''
199 dynamic_ext=''
200 extensions=''
201 known_extensions=''
202 nonxs_ext=''
203 static_ext=''
204 useopcode=''
205 useposix=''
206 extras=''
207 d_bsd=''
208 d_eunice=''
209 d_xenix=''
210 eunicefix=''
211 Mcc=''
212 ar=''
213 awk=''
214 bash=''
215 bison=''
216 byacc=''
217 cat=''
218 chgrp=''
219 chmod=''
220 chown=''
221 comm=''
222 compress=''
223 cp=''
224 cpio=''
225 cpp=''
226 csh=''
227 date=''
228 echo=''
229 egrep=''
230 emacs=''
231 expr=''
232 find=''
233 flex=''
234 gmake=''
235 grep=''
236 gzip=''
237 inews=''
238 ksh=''
239 less=''
240 line=''
241 lint=''
242 ln=''
243 lp=''
244 lpr=''
245 ls=''
246 mail=''
247 mailx=''
248 make=''
249 mkdir=''
250 more=''
251 mv=''
252 nm=''
253 nroff=''
254 perl=''
255 pg=''
256 pmake=''
257 pr=''
258 rm=''
259 rmail=''
260 sed=''
261 sendmail=''
262 shar=''
263 sleep=''
264 smail=''
265 sort=''
266 submit=''
267 tail=''
268 tar=''
269 tbl=''
270 tee=''
271 test=''
272 touch=''
273 tr=''
274 troff=''
275 uname=''
276 uniq=''
277 uuname=''
278 vi=''
279 zcat=''
280 zip=''
281 full_ar=''
282 full_sed=''
283 libswanted=''
284 hint=''
285 myuname=''
286 osname=''
287 osvers=''
288 Author=''
289 Date=''
290 Header=''
291 Id=''
292 Locker=''
293 Log=''
294 RCSfile=''
295 Revision=''
296 Source=''
297 State=''
298 _a=''
299 _exe=''
300 _o=''
301 archobjs=''
302 exe_ext=''
303 firstmakefile=''
304 lib_ext=''
305 obj_ext=''
306 path_sep=''
307 afs=''
308 afsroot=''
309 alignbytes=''
310 ansi2knr=''
311 archlib=''
312 archlibexp=''
313 d_archlib=''
314 installarchlib=''
315 archname=''
316 myarchname=''
317 d_atolf=''
318 d_atoll=''
319 baserev=''
320 bin=''
321 binexp=''
322 installbin=''
323 byteorder=''
324 cc=''
325 ccflags=''
326 cppflags=''
327 ldflags=''
328 lkflags=''
329 locincpth=''
330 optimize=''
331 cf_email=''
332 cf_by=''
333 cf_time=''
334 charsize=''
335 contains=''
336 cpp_stuff=''
337 cpplast=''
338 cppminus=''
339 cpprun=''
340 cppstdin=''
341 d__fwalk=''
342 d_access=''
343 d_accessx=''
344 d_aintl=''
345 d_alarm=''
346 asctime_r_proto=''
347 d_asctime_r=''
348 d_attribute_format=''
349 d_attribute_malloc=''
350 d_attribute_nonnull=''
351 d_attribute_noreturn=''
352 d_attribute_pure=''
353 d_attribute_unused=''
354 d_attribute_warn_unused_result=''
355 d_bcmp=''
356 d_bcopy=''
357 d_builtin_choose_expr=''
358 d_builtin_expect=''
359 d_bzero=''
360 d_casti32=''
361 castflags=''
362 d_castneg=''
363 d_chown=''
364 d_chroot=''
365 d_chsize=''
366 d_class=''
367 d_clearenv=''
368 d_closedir=''
369 d_void_closedir=''
370 d_cmsghdr_s=''
371 d_const=''
372 d_copysignl=''
373 cryptlib=''
374 d_crypt=''
375 crypt_r_proto=''
376 d_crypt_r=''
377 d_csh=''
378 full_csh=''
379 ctermid_r_proto=''
380 d_ctermid_r=''
381 ctime_r_proto=''
382 d_ctime_r=''
383 d_cuserid=''
384 d_dbl_dig=''
385 d_dbminitproto=''
386 d_difftime=''
387 d_dirfd=''
388 d_dlerror=''
389 d_dlopen=''
390 d_dlsymun=''
391 d_dosuid=''
392 d_suidsafe=''
393 d_drand48_r=''
394 drand48_r_proto=''
395 d_drand48proto=''
396 d_dup2=''
397 d_eaccess=''
398 d_endgrent=''
399 d_endgrent_r=''
400 endgrent_r_proto=''
401 d_endhent=''
402 d_endhostent_r=''
403 endhostent_r_proto=''
404 d_endnent=''
405 d_endnetent_r=''
406 endnetent_r_proto=''
407 d_endpent=''
408 d_endprotoent_r=''
409 endprotoent_r_proto=''
410 d_endpwent=''
411 d_endpwent_r=''
412 endpwent_r_proto=''
413 d_endsent=''
414 d_endservent_r=''
415 endservent_r_proto=''
416 d_faststdio=''
417 d_fchdir=''
418 d_fchmod=''
419 d_fchown=''
420 d_fcntl=''
421 d_fcntl_can_lock=''
422 d_fd_macros=''
423 d_fd_set=''
424 d_fds_bits=''
425 d_fgetpos=''
426 d_finite=''
427 d_finitel=''
428 d_flexfnam=''
429 d_flock=''
430 d_flockproto=''
431 d_fork=''
432 d_fp_class=''
433 d_fpclass=''
434 d_fpclassify=''
435 d_fpclassl=''
436 d_fpos64_t=''
437 d_frexpl=''
438 d_fs_data_s=''
439 d_fseeko=''
440 d_fsetpos=''
441 d_fstatfs=''
442 d_fsync=''
443 d_ftello=''
444 d_ftime=''
445 d_gettimeod=''
446 d_futimes=''
447 d_Gconvert=''
448 d_getcwd=''
449 d_getespwnam=''
450 d_getfsstat=''
451 d_getgrent=''
452 d_getgrent_r=''
453 getgrent_r_proto=''
454 d_getgrgid_r=''
455 getgrgid_r_proto=''
456 d_getgrnam_r=''
457 getgrnam_r_proto=''
458 d_getgrps=''
459 d_gethbyaddr=''
460 d_gethbyname=''
461 d_gethent=''
462 aphostname=''
463 d_gethname=''
464 d_phostname=''
465 d_uname=''
466 d_gethostbyaddr_r=''
467 gethostbyaddr_r_proto=''
468 d_gethostbyname_r=''
469 gethostbyname_r_proto=''
470 d_gethostent_r=''
471 gethostent_r_proto=''
472 d_gethostprotos=''
473 d_getitimer=''
474 d_getlogin=''
475 d_getlogin_r=''
476 getlogin_r_proto=''
477 d_getmnt=''
478 d_getmntent=''
479 d_getnbyaddr=''
480 d_getnbyname=''
481 d_getnent=''
482 d_getnetbyaddr_r=''
483 getnetbyaddr_r_proto=''
484 d_getnetbyname_r=''
485 getnetbyname_r_proto=''
486 d_getnetent_r=''
487 getnetent_r_proto=''
488 d_getnetprotos=''
489 d_getpagsz=''
490 d_getpent=''
491 d_getpgid=''
492 d_getpgrp2=''
493 d_bsdgetpgrp=''
494 d_getpgrp=''
495 d_getppid=''
496 d_getprior=''
497 d_getpbyname=''
498 d_getpbynumber=''
499 d_getprotobyname_r=''
500 getprotobyname_r_proto=''
501 d_getprotobynumber_r=''
502 getprotobynumber_r_proto=''
503 d_getprotoent_r=''
504 getprotoent_r_proto=''
505 d_getprotoprotos=''
506 d_getprpwnam=''
507 d_getpwent=''
508 d_getpwent_r=''
509 getpwent_r_proto=''
510 d_getpwnam_r=''
511 getpwnam_r_proto=''
512 d_getpwuid_r=''
513 getpwuid_r_proto=''
514 d_getsent=''
515 d_getservbyname_r=''
516 getservbyname_r_proto=''
517 d_getservbyport_r=''
518 getservbyport_r_proto=''
519 d_getservent_r=''
520 getservent_r_proto=''
521 d_getservprotos=''
522 d_getspnam=''
523 d_getspnam_r=''
524 getspnam_r_proto=''
525 d_getsbyname=''
526 d_getsbyport=''
527 d_gmtime_r=''
528 gmtime_r_proto=''
529 d_gnulibc=''
530 gnulibc_version=''
531 d_hasmntopt=''
532 d_htonl=''
533 d_ilogbl=''
534 d_inetaton=''
535 d_int64_t=''
536 d_isascii=''
537 d_isfinite=''
538 d_isinf=''
539 d_isnan=''
540 d_isnanl=''
541 d_killpg=''
542 d_lchown=''
543 d_ldbl_dig=''
544 d_libm_lib_version=''
545 d_link=''
546 d_localtime_r=''
547 localtime_r_proto=''
548 d_locconv=''
549 d_lockf=''
550 d_longdbl=''
551 longdblsize=''
552 d_longlong=''
553 longlongsize=''
554 d_lseekproto=''
555 d_lstat=''
556 d_madvise=''
557 d_malloc_good_size=''
558 d_malloc_size=''
559 d_mblen=''
560 d_mbstowcs=''
561 d_mbtowc=''
562 d_memchr=''
563 d_memcmp=''
564 d_memcpy=''
565 d_memmove=''
566 d_memset=''
567 d_mkdir=''
568 d_mkdtemp=''
569 d_mkfifo=''
570 d_mkstemp=''
571 d_mkstemps=''
572 d_mktime=''
573 d_mmap=''
574 mmaptype=''
575 d_modfl=''
576 d_modfl_pow32_bug=''
577 d_modflproto=''
578 d_mprotect=''
579 d_msg=''
580 d_msgctl=''
581 d_msgget=''
582 d_msghdr_s=''
583 d_msgrcv=''
584 d_msgsnd=''
585 d_msync=''
586 d_munmap=''
587 d_nice=''
588 d_nl_langinfo=''
589 d_off64_t=''
590 d_open3=''
591 d_fpathconf=''
592 d_pathconf=''
593 d_pause=''
594 d_pipe=''
595 d_poll=''
596 d_portable=''
597 d_procselfexe=''
598 procselfexe=''
599 d_old_pthread_create_joinable=''
600 old_pthread_create_joinable=''
601 d_pthread_atfork=''
602 d_pthread_attr_setscope=''
603 d_pthread_yield=''
604 d_sched_yield=''
605 sched_yield=''
606 d_qgcvt=''
607 d_random_r=''
608 random_r_proto=''
609 d_readdir64_r=''
610 readdir64_r_proto=''
611 d_readdir=''
612 d_rewinddir=''
613 d_seekdir=''
614 d_telldir=''
615 d_readdir_r=''
616 readdir_r_proto=''
617 d_readlink=''
618 d_readv=''
619 d_recvmsg=''
620 d_rename=''
621 d_rmdir=''
622 d_safebcpy=''
623 d_safemcpy=''
624 d_sanemcmp=''
625 d_sbrkproto=''
626 d_scalbnl=''
627 d_select=''
628 d_sem=''
629 d_semctl=''
630 d_semget=''
631 d_semop=''
632 d_sendmsg=''
633 d_setegid=''
634 d_seteuid=''
635 d_setgrent=''
636 d_setgrent_r=''
637 setgrent_r_proto=''
638 d_setgrps=''
639 d_sethent=''
640 d_sethostent_r=''
641 sethostent_r_proto=''
642 d_setitimer=''
643 d_setlinebuf=''
644 d_setlocale=''
645 d_setlocale_r=''
646 setlocale_r_proto=''
647 d_setnent=''
648 d_setnetent_r=''
649 setnetent_r_proto=''
650 d_setpent=''
651 d_setpgid=''
652 d_setpgrp2=''
653 d_bsdsetpgrp=''
654 d_setpgrp=''
655 d_setprior=''
656 d_setproctitle=''
657 d_setprotoent_r=''
658 setprotoent_r_proto=''
659 d_setpwent=''
660 d_setpwent_r=''
661 setpwent_r_proto=''
662 d_setregid=''
663 d_setresgid=''
664 d_setresuid=''
665 d_setreuid=''
666 d_setrgid=''
667 d_setruid=''
668 d_setsent=''
669 d_setservent_r=''
670 setservent_r_proto=''
671 d_setsid=''
672 d_setvbuf=''
673 d_sfio=''
674 usesfio=''
675 d_shm=''
676 d_shmat=''
677 d_shmatprototype=''
678 shmattype=''
679 d_shmctl=''
680 d_shmdt=''
681 d_shmget=''
682 d_sigaction=''
683 d_sigprocmask=''
684 d_sigsetjmp=''
685 usesitecustomize=''
686 d_snprintf=''
687 d_vsnprintf=''
688 d_sockatmark=''
689 d_sockatmarkproto=''
690 d_msg_ctrunc=''
691 d_msg_dontroute=''
692 d_msg_oob=''
693 d_msg_peek=''
694 d_msg_proxy=''
695 d_oldsock=''
696 d_scm_rights=''
697 d_socket=''
698 d_sockpair=''
699 sockethdr=''
700 socketlib=''
701 d_socklen_t=''
702 d_socks5_init=''
703 d_sprintf_returns_strlen=''
704 d_sqrtl=''
705 d_srand48_r=''
706 srand48_r_proto=''
707 d_srandom_r=''
708 srandom_r_proto=''
709 d_sresgproto=''
710 d_sresuproto=''
711 d_statblks=''
712 d_statfs_f_flags=''
713 d_statfs_s=''
714 d_fstatvfs=''
715 d_statvfs=''
716 d_stdio_cnt_lval=''
717 d_stdio_ptr_lval=''
718 d_stdio_ptr_lval_nochange_cnt=''
719 d_stdio_ptr_lval_sets_cnt=''
720 d_stdiobase=''
721 d_stdstdio=''
722 stdio_base=''
723 stdio_bufsiz=''
724 stdio_cnt=''
725 stdio_filbuf=''
726 stdio_ptr=''
727 d_index=''
728 d_strchr=''
729 d_strcoll=''
730 d_strctcpy=''
731 d_strerrm=''
732 d_strerror=''
733 d_sysernlst=''
734 d_syserrlst=''
735 d_strerror_r=''
736 strerror_r_proto=''
737 d_strftime=''
738 d_strlcat=''
739 d_strlcpy=''
740 d_strtod=''
741 d_strtol=''
742 d_strtold=''
743 d_strtoll=''
744 d_strtoq=''
745 d_strtoul=''
746 d_strtoull=''
747 d_strtouq=''
748 d_strxfrm=''
749 d_symlink=''
750 d_syscall=''
751 d_syscallproto=''
752 d_sysconf=''
753 d_system=''
754 d_tcgetpgrp=''
755 d_tcsetpgrp=''
756 d_telldirproto=''
757 d_time=''
758 timetype=''
759 clocktype=''
760 d_times=''
761 d_tmpnam_r=''
762 tmpnam_r_proto=''
763 d_truncate=''
764 d_ttyname_r=''
765 ttyname_r_proto=''
766 d_tzname=''
767 d_u32align=''
768 d_ualarm=''
769 d_umask=''
770 d_semctl_semid_ds=''
771 d_semctl_semun=''
772 d_union_semun=''
773 d_unordered=''
774 d_unsetenv=''
775 d_usleep=''
776 d_usleepproto=''
777 d_ustat=''
778 d_vfork=''
779 usevfork=''
780 d_voidsig=''
781 signal_t=''
782 d_volatile=''
783 d_charvspr=''
784 d_vprintf=''
785 d_wait4=''
786 d_waitpid=''
787 d_wcstombs=''
788 d_wctomb=''
789 d_writev=''
790 dlext=''
791 cccdlflags=''
792 ccdlflags=''
793 dlsrc=''
794 ld=''
795 lddlflags=''
796 usedl=''
797 doublesize=''
798 ebcdic=''
799 fflushNULL=''
800 fflushall=''
801 fpossize=''
802 fpostype=''
803 gccansipedantic=''
804 gccosandvers=''
805 gccversion=''
806 gidformat=''
807 gidsign=''
808 gidsize=''
809 gidtype=''
810 groupstype=''
811 h_fcntl=''
812 h_sysfile=''
813 html1dir=''
814 html1direxp=''
815 installhtml1dir=''
816 html3dir=''
817 html3direxp=''
818 installhtml3dir=''
819 i_arpainet=''
820 i_crypt=''
821 db_hashtype=''
822 db_prefixtype=''
823 db_version_major=''
824 db_version_minor=''
825 db_version_patch=''
826 i_db=''
827 i_dbm=''
828 i_rpcsvcdbm=''
829 d_dirnamlen=''
830 direntrytype=''
831 i_dirent=''
832 i_dld=''
833 i_dlfcn=''
834 i_fcntl=''
835 i_float=''
836 i_fp=''
837 i_fp_class=''
838 i_gdbm=''
839 d_grpasswd=''
840 i_grp=''
841 i_ieeefp=''
842 i_inttypes=''
843 i_langinfo=''
844 i_libutil=''
845 i_limits=''
846 i_locale=''
847 i_machcthr=''
848 i_malloc=''
849 i_math=''
850 i_memory=''
851 i_mntent=''
852 i_ndbm=''
853 i_netdb=''
854 i_neterrno=''
855 i_netinettcp=''
856 i_niin=''
857 i_sysin=''
858 i_poll=''
859 i_prot=''
860 i_pthread=''
861 d_pwage=''
862 d_pwchange=''
863 d_pwclass=''
864 d_pwcomment=''
865 d_pwexpire=''
866 d_pwgecos=''
867 d_pwpasswd=''
868 d_pwquota=''
869 i_pwd=''
870 i_sfio=''
871 i_shadow=''
872 i_socks=''
873 i_stddef=''
874 i_stdlib=''
875 i_string=''
876 strings=''
877 i_sunmath=''
878 i_sysaccess=''
879 i_sysdir=''
880 i_sysfile=''
881 d_voidtty=''
882 i_bsdioctl=''
883 i_sysfilio=''
884 i_sysioctl=''
885 i_syssockio=''
886 i_syslog=''
887 i_sysmman=''
888 i_sysmode=''
889 i_sysmount=''
890 i_sysndir=''
891 i_sysparam=''
892 i_sysresrc=''
893 i_syssecrt=''
894 i_sysselct=''
895 i_sysstat=''
896 i_sysstatfs=''
897 i_sysstatvfs=''
898 i_systimes=''
899 i_systypes=''
900 i_sysuio=''
901 i_sysun=''
902 i_sysutsname=''
903 i_sysvfs=''
904 i_syswait=''
905 i_sgtty=''
906 i_termio=''
907 i_termios=''
908 d_tm_tm_gmtoff=''
909 d_tm_tm_zone=''
910 i_systime=''
911 i_systimek=''
912 i_time=''
913 timeincl=''
914 i_unistd=''
915 i_ustat=''
916 i_utime=''
917 i_values=''
918 i_stdarg=''
919 i_varargs=''
920 i_varhdr=''
921 i_vfork=''
922 inc_version_list=''
923 inc_version_list_init=''
924 installprefix=''
925 installprefixexp=''
926 installstyle=''
927 installusrbinperl=''
928 intsize=''
929 longsize=''
930 shortsize=''
931 issymlink=''
932 libc=''
933 ldlibpthname=''
934 libperl=''
935 shrpenv=''
936 useshrplib=''
937 glibpth=''
938 libpth=''
939 loclibpth=''
940 plibpth=''
941 xlibpth=''
942 ignore_versioned_solibs=''
943 libs=''
944 libsdirs=''
945 libsfiles=''
946 libsfound=''
947 libspath=''
948 lns=''
949 d_PRIEUldbl=''
950 d_PRIFUldbl=''
951 d_PRIGUldbl=''
952 d_PRIeldbl=''
953 d_PRIfldbl=''
954 d_PRIgldbl=''
955 d_SCNfldbl=''
956 sPRIEUldbl=''
957 sPRIFUldbl=''
958 sPRIGUldbl=''
959 sPRIeldbl=''
960 sPRIfldbl=''
961 sPRIgldbl=''
962 sSCNfldbl=''
963 lseeksize=''
964 lseektype=''
965 mad=''
966 make_set_make=''
967 d_mymalloc=''
968 freetype=''
969 madlyh=''
970 madlyobj=''
971 madlysrc=''
972 mallocobj=''
973 mallocsrc=''
974 malloctype=''
975 usemallocwrap=''
976 usemymalloc=''
977 installman1dir=''
978 man1dir=''
979 man1direxp=''
980 man1ext=''
981 installman3dir=''
982 man3dir=''
983 man3direxp=''
984 man3ext=''
985 modetype=''
986 multiarch=''
987 mydomain=''
988 myhostname=''
989 phostname=''
990 c=''
991 n=''
992 d_eofnblk=''
993 eagain=''
994 o_nonblock=''
995 rd_nodata=''
996 need_va_copy=''
997 netdb_hlen_type=''
998 netdb_host_type=''
999 netdb_name_type=''
1000 netdb_net_type=''
1001 groupcat=''
1002 hostcat=''
1003 passcat=''
1004 orderlib=''
1005 ranlib=''
1006 d_perl_otherlibdirs=''
1007 otherlibdirs=''
1008 package=''
1009 spackage=''
1010 pager=''
1011 api_revision=''
1012 api_subversion=''
1013 api_version=''
1014 api_versionstring=''
1015 patchlevel=''
1016 perl_patchlevel=''
1017 revision=''
1018 subversion=''
1019 version=''
1020 version_patchlevel_string=''
1021 perl5=''
1022 perladmin=''
1023 perlpath=''
1024 d_nv_preserves_uv=''
1025 d_nv_zero_is_allbits_zero=''
1026 i16size=''
1027 i16type=''
1028 i32size=''
1029 i32type=''
1030 i64size=''
1031 i64type=''
1032 i8size=''
1033 i8type=''
1034 ivsize=''
1035 ivtype=''
1036 nv_preserves_uv_bits=''
1037 nvsize=''
1038 nvtype=''
1039 u16size=''
1040 u16type=''
1041 u32size=''
1042 u32type=''
1043 u64size=''
1044 u64type=''
1045 u8size=''
1046 u8type=''
1047 uvsize=''
1048 uvtype=''
1049 ivdformat=''
1050 nvEUformat=''
1051 nvFUformat=''
1052 nvGUformat=''
1053 nveformat=''
1054 nvfformat=''
1055 nvgformat=''
1056 uvXUformat=''
1057 uvoformat=''
1058 uvuformat=''
1059 uvxformat=''
1060 pidtype=''
1061 prefix=''
1062 prefixexp=''
1063 installprivlib=''
1064 privlib=''
1065 privlibexp=''
1066 prototype=''
1067 ptrsize=''
1068 d_PRIXU64=''
1069 d_PRId64=''
1070 d_PRIi64=''
1071 d_PRIo64=''
1072 d_PRIu64=''
1073 d_PRIx64=''
1074 sPRIXU64=''
1075 sPRId64=''
1076 sPRIi64=''
1077 sPRIo64=''
1078 sPRIu64=''
1079 sPRIx64=''
1080 d_quad=''
1081 quadkind=''
1082 quadtype=''
1083 uquadtype=''
1084 drand01=''
1085 randbits=''
1086 randfunc=''
1087 randseedtype=''
1088 seedfunc=''
1089 installscript=''
1090 scriptdir=''
1091 scriptdirexp=''
1092 selectminbits=''
1093 selecttype=''
1094 sh=''
1095 sig_count=''
1096 sig_name=''
1097 sig_name_init=''
1098 sig_num=''
1099 sig_num_init=''
1100 sig_size=''
1101 installsitearch=''
1102 sitearch=''
1103 sitearchexp=''
1104 installsitebin=''
1105 sitebin=''
1106 sitebinexp=''
1107 installsitehtml1dir=''
1108 sitehtml1dir=''
1109 sitehtml1direxp=''
1110 installsitehtml3dir=''
1111 sitehtml3dir=''
1112 sitehtml3direxp=''
1113 installsitelib=''
1114 sitelib=''
1115 sitelib_stem=''
1116 sitelibexp=''
1117 installsiteman1dir=''
1118 siteman1dir=''
1119 siteman1direxp=''
1120 installsiteman3dir=''
1121 siteman3dir=''
1122 siteman3direxp=''
1123 siteprefix=''
1124 siteprefixexp=''
1125 installsitescript=''
1126 sitescript=''
1127 sitescriptexp=''
1128 sizesize=''
1129 sizetype=''
1130 so=''
1131 socksizetype=''
1132 sharpbang=''
1133 shsharp=''
1134 spitshell=''
1135 src=''
1136 ssizetype=''
1137 startperl=''
1138 startsh=''
1139 stdchar=''
1140 d_stdio_stream_array=''
1141 stdio_stream_array=''
1142 sysman=''
1143 trnl=''
1144 uidformat=''
1145 uidsign=''
1146 uidsize=''
1147 uidtype=''
1148 archname64=''
1149 use64bitall=''
1150 use64bitint=''
1151 usefaststdio=''
1152 ccflags_uselargefiles=''
1153 ldflags_uselargefiles=''
1154 libswanted_uselargefiles=''
1155 uselargefiles=''
1156 uselongdouble=''
1157 usemorebits=''
1158 usemultiplicity=''
1159 nm_opt=''
1160 nm_so_opt=''
1161 runnm=''
1162 usenm=''
1163 useperlio=''
1164 userelocatableinc=''
1165 usesocks=''
1166 d_oldpthreads=''
1167 use5005threads=''
1168 useithreads=''
1169 usereentrant=''
1170 usethreads=''
1171 incpath=''
1172 mips_type=''
1173 usrinc=''
1174 d_vendorarch=''
1175 installvendorarch=''
1176 vendorarch=''
1177 vendorarchexp=''
1178 d_vendorbin=''
1179 installvendorbin=''
1180 vendorbin=''
1181 vendorbinexp=''
1182 installvendorhtml1dir=''
1183 vendorhtml1dir=''
1184 vendorhtml1direxp=''
1185 installvendorhtml3dir=''
1186 vendorhtml3dir=''
1187 vendorhtml3direxp=''
1188 d_vendorlib=''
1189 installvendorlib=''
1190 vendorlib=''
1191 vendorlib_stem=''
1192 vendorlibexp=''
1193 installvendorman1dir=''
1194 vendorman1dir=''
1195 vendorman1direxp=''
1196 installvendorman3dir=''
1197 vendorman3dir=''
1198 vendorman3direxp=''
1199 usevendorprefix=''
1200 vendorprefix=''
1201 vendorprefixexp=''
1202 d_vendorscript=''
1203 installvendorscript=''
1204 vendorscript=''
1205 vendorscriptexp=''
1206 versiononly=''
1207 defvoidused=''
1208 voidflags=''
1209 yacc=''
1210 yaccflags=''
1211 CONFIG=''
1212
1213 define='define'
1214 undef='undef'
1215 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1216 rmlist=''
1217
1218 : We must find out about Eunice early
1219 eunicefix=':'
1220 if test -f /etc/unixtovms; then
1221         eunicefix=/etc/unixtovms
1222 fi
1223 if test -f /etc/unixtovms.exe; then
1224         eunicefix=/etc/unixtovms.exe
1225 fi
1226
1227 : Set executable suffix now -- needed before hints available
1228 if test -f "/libs/version.library"; then
1229 : Amiga OS
1230     _exe=""
1231 elif test -f "/system/gnu_library/bin/ar.pm"; then
1232 : Stratus VOS
1233     _exe=".pm"
1234 elif test -n "$DJGPP"; then
1235 : DOS DJGPP
1236     _exe=".exe"
1237 elif test -d c:/. -o -n "$is_os2" ; then
1238 : OS/2 or cygwin
1239     _exe=".exe"
1240 fi
1241
1242 i_whoami=''
1243 ccname=''
1244 ccversion=''
1245 perllibs=''
1246 : set useposix=false in your hint file to disable the POSIX extension.
1247 useposix=true
1248 : set useopcode=false in your hint file to disable the Opcode extension.
1249 useopcode=true
1250 : Trailing extension.  Override this in a hint file, if needed.
1251 : Extra object files, if any, needed on this platform.
1252 archobjs=''
1253 archname=''
1254 : Possible local include directories to search.
1255 : Set locincpth to "" in a hint file to defeat local include searches.
1256 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1257 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1258 :
1259 : no include file wanted by default
1260 inclwanted=''
1261
1262 groupstype=''
1263 libnames=''
1264 : change the next line if compiling for Xenix/286 on Xenix/386
1265 xlibpth='/usr/lib/386 /lib/386'
1266 : Possible local library directories to search.
1267 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1268 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1269
1270 : general looking path for locating libraries
1271 glibpth="/lib /usr/lib $xlibpth"
1272 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1273 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1274 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1275
1276 : Private path used by Configure to find libraries.  Its value
1277 : is prepended to libpth. This variable takes care of special
1278 : machines, like the mips.  Usually, it should be empty.
1279 plibpth=''
1280
1281 : default library list
1282 libswanted=''
1283 : some systems want to use only the non-versioned libso:s
1284 ignore_versioned_solibs=''
1285 siteman1dir=''
1286 siteman3dir=''
1287 sitescript=''
1288 archname64=''
1289 ccflags_uselargefiles=''
1290 ldflags_uselargefiles=''
1291 libswanted_uselargefiles=''
1292 : set usemultiplicity on the Configure command line to enable multiplicity.
1293 : set usesocks on the Configure command line to enable socks.
1294 : set usethreads on the Configure command line to enable threads.
1295 usereentrant='undef'
1296 : full support for void wanted by default
1297 defvoidused=15
1298
1299 : List of libraries we want.
1300 : If anyone needs extra -lxxx, put those in a hint file.
1301 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1302 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1303 : We probably want to search /usr/shlib before most other libraries.
1304 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1305 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1306 glibpth="/usr/shlib $glibpth"
1307 : Do not use vfork unless overridden by a hint file.
1308 usevfork=false
1309
1310 : Find the basic shell for Bourne shell scripts
1311 case "$sh" in
1312 '')
1313         case "$SYSTYPE" in
1314         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1315         *) xxx='/bin/sh';;
1316         esac
1317         if test -f "$xxx"; then
1318                 sh="$xxx"
1319         else
1320                 : Build up a list and do a single loop so we can 'break' out.
1321                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1322                 for xxx in sh bash ksh pdksh ash; do
1323                         for p in $pth; do
1324                                 try="$try ${p}/${xxx}"
1325                         done
1326                 done
1327                 for xxx in $try; do
1328                         if test -f "$xxx"; then
1329                                 sh="$xxx";
1330                                 break
1331                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1332                                 sh="$xxx";
1333                                 break
1334                         elif test -f "$xxx.exe"; then
1335                                 sh="$xxx";
1336                                 break
1337                         fi
1338                 done
1339         fi
1340         ;;
1341 esac
1342
1343 case "$sh" in
1344 '')     cat >&2 <<EOM
1345 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1346
1347 Usually it's in /bin/sh.  How did you even get this far?
1348 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1349 we'll try to straighten this all out.
1350 EOM
1351         exit 1
1352         ;;
1353 esac
1354
1355 : see if sh knows # comments
1356 if `$sh -c '#' >/dev/null 2>&1`; then
1357         shsharp=true
1358         spitshell=cat
1359         xcat=/bin/cat
1360         test -f $xcat$_exe || xcat=/usr/bin/cat
1361         if test ! -f $xcat$_exe; then
1362                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1363                         if test -f $p/cat$_exe; then
1364                                 xcat=$p/cat
1365                                 break
1366                         fi
1367                 done
1368                 if test ! -f $xcat$_exe; then
1369                         echo "Can't find cat anywhere!"
1370                         exit 1
1371                 fi
1372         fi
1373         echo "#!$xcat" >sharp
1374         $eunicefix sharp
1375         chmod +x sharp
1376         ./sharp > today
1377         if test -s today; then
1378                 sharpbang='#!'
1379         else
1380                 echo "#! $xcat" > sharp
1381                 $eunicefix sharp
1382                 chmod +x sharp
1383                 ./sharp > today
1384                 if test -s today; then
1385                         sharpbang='#! '
1386                 else
1387                         sharpbang=': use '
1388                 fi
1389         fi
1390 else
1391         echo " "
1392         echo "Your $sh doesn't grok # comments--I will strip them later on."
1393         shsharp=false
1394         cd ..
1395         echo "exec grep -v '^[  ]*#'" >spitshell
1396         chmod +x spitshell
1397         $eunicefix spitshell
1398         spitshell=`pwd`/spitshell
1399         cd UU
1400         echo "I presume that if # doesn't work, #! won't work either!"
1401         sharpbang=': use '
1402 fi
1403 rm -f sharp today
1404
1405 : figure out how to guarantee sh startup
1406 case "$startsh" in
1407 '') startsh=${sharpbang}${sh} ;;
1408 *)
1409 esac
1410 cat >sharp <<EOSS
1411 $startsh
1412 set abc
1413 test "$?abc" != 1
1414 EOSS
1415
1416 chmod +x sharp
1417 $eunicefix sharp
1418 if ./sharp; then
1419         : echo "Yup, it does."
1420 else
1421         echo "Hmm... '$startsh' does not guarantee sh startup..."
1422         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1423 fi
1424 rm -f sharp
1425
1426
1427 : Save command line options in file UU/cmdline.opt for later use in
1428 : generating config.sh.
1429 cat > cmdline.opt <<EOSH
1430 # Configure command line arguments.
1431 config_arg0='$0'
1432 config_args='$*'
1433 config_argc=$#
1434 EOSH
1435 argn=1
1436 args_exp=''
1437 args_sep=''
1438 for arg in "$@"; do
1439         cat >>cmdline.opt <<EOSH
1440 config_arg$argn='$arg'
1441 EOSH
1442         # Extreme backslashitis: replace each ' by '"'"'
1443         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1444 $arg
1445 EOC
1446         arg_exp=`cat cmdl.opt`
1447         args_exp="$args_exp$args_sep'$arg_exp'"
1448         argn=`expr $argn + 1`
1449         args_sep=' '
1450 done
1451 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1452 # used by ./hints/os2.sh
1453 rm -f cmdl.opt
1454
1455 : produce awk script to parse command line options
1456 cat >options.awk <<'EOF'
1457 BEGIN {
1458         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1459
1460         len = length(optstr);
1461         for (i = 1; i <= len; i++) {
1462                 c = substr(optstr, i, 1);
1463                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1464                 if (a == ":") {
1465                         arg[c] = 1;
1466                         i++;
1467                 }
1468                 opt[c] = 1;
1469         }
1470 }
1471 {
1472         expect = 0;
1473         str = $0;
1474         if (substr(str, 1, 1) != "-") {
1475                 printf("'%s'\n", str);
1476                 next;
1477         }
1478         len = length($0);
1479         for (i = 2; i <= len; i++) {
1480                 c = substr(str, i, 1);
1481                 if (!opt[c]) {
1482                         printf("-%s\n", substr(str, i));
1483                         next;
1484                 }
1485                 printf("-%s\n", c);
1486                 if (arg[c]) {
1487                         if (i < len)
1488                                 printf("'%s'\n", substr(str, i + 1));
1489                         else
1490                                 expect = 1;
1491                         next;
1492                 }
1493         }
1494 }
1495 END {
1496         if (expect)
1497                 print "?";
1498 }
1499 EOF
1500
1501 : process the command line options
1502 set X `for arg in "$@"; do echo "X$arg"; done |
1503         sed -e s/X// | awk -f options.awk`
1504 eval "set $*"
1505 shift
1506 rm -f options.awk
1507
1508 : set up default values
1509 fastread=''
1510 reuseval=false
1511 config_sh=''
1512 alldone=''
1513 error=''
1514 silent=''
1515 extractsh=''
1516 override=''
1517 knowitall=''
1518 rm -f optdef.sh posthint.sh
1519 cat >optdef.sh <<EOS
1520 $startsh
1521 EOS
1522
1523
1524 : option parsing
1525 while test $# -gt 0; do
1526         case "$1" in
1527         -d) shift; fastread=yes;;
1528         -e) shift; alldone=cont;;
1529         -f)
1530                 shift
1531                 cd ..
1532                 if test -r "$1"; then
1533                         config_sh="$1"
1534                 else
1535                         echo "$me: cannot read config file $1." >&2
1536                         error=true
1537                 fi
1538                 cd UU
1539                 shift;;
1540         -h) shift; error=true;;
1541         -r) shift; reuseval=true;;
1542         -s) shift; silent=true; realsilent=true;;
1543         -E) shift; alldone=exit;;
1544         -K) shift; knowitall=true;;
1545         -O) shift; override=true;;
1546         -S) shift; silent=true; extractsh=true;;
1547         -D)
1548                 shift
1549                 case "$1" in
1550                 *=)
1551                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1552                         echo "$me: ignoring -D $1" >&2
1553                         ;;
1554                 *=*) echo "$1" | \
1555                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1556                 *) echo "$1='define'" >> optdef.sh;;
1557                 esac
1558                 shift
1559                 ;;
1560         -U)
1561                 shift
1562                 case "$1" in
1563                 *=) echo "$1" >> optdef.sh;;
1564                 *=*)
1565                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1566                         echo "$me: ignoring -U $1" >&2
1567                         ;;
1568                 *) echo "$1='undef'" >> optdef.sh;;
1569                 esac
1570                 shift
1571                 ;;
1572         -A)
1573             shift
1574             xxx=''
1575             yyy="$1"
1576             zzz=''
1577             uuu=undef
1578             case "$yyy" in
1579             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1580                  case "$zzz" in
1581                  *:*) zzz='' ;;
1582                  *)   xxx=append
1583                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1584                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1585                  esac
1586                  ;;
1587             esac
1588             case "$xxx" in
1589             '')  case "$yyy" in
1590                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1591                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1592                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1593                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1594                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1595                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1596                  esac
1597                  ;;       
1598             esac
1599             case "$xxx" in
1600             append)
1601                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1602             clear)
1603                 echo "$yyy=''"                  >> posthint.sh ;;
1604             define)
1605                 case "$zzz" in
1606                 '') zzz=define ;;
1607                 esac
1608                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1609             eval)
1610                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1611             prepend)
1612                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1613             undef)
1614                 case "$zzz" in
1615                 '') zzz="$uuu" ;;
1616                 esac
1617                 echo "$yyy=$zzz"                >> posthint.sh ;;
1618             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1619             esac
1620             shift
1621             ;;
1622         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1623             exit 0;;
1624         --) break;;
1625         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1626         *) break;;
1627         esac
1628 done
1629
1630 case "$error" in
1631 true)
1632         cat >&2 <<EOM
1633 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1634                  [-U symbol] [-U symbol=] [-A command:symbol...]
1635   -d : use defaults for all answers.
1636   -e : go on without questioning past the production of config.sh.
1637   -f : specify an alternate default configuration file.
1638   -h : print this help message and exit (with an error status).
1639   -r : reuse C symbols value if possible (skips costly nm extraction).
1640   -s : silent mode, only echoes questions and essential information.
1641   -D : define symbol to have some value:
1642          -D symbol         symbol gets the value 'define'
1643          -D symbol=value   symbol gets the value 'value'
1644   -E : stop at the end of questions, after having produced config.sh.
1645   -K : do not use unless you know what you are doing.
1646   -O : let -D and -U override definitions from loaded configuration file.
1647   -S : perform variable substitutions on all .SH files (can mix with -f)
1648   -U : undefine symbol:
1649          -U symbol    symbol gets the value 'undef'
1650          -U symbol=   symbol gets completely empty
1651   -A : manipulate symbol after the platform specific hints have been applied:
1652          -A symbol=value                append " "value to symbol
1653          -A append:symbol=value         append value to symbol
1654          -A define:symbol=value         define symbol to have value
1655          -A clear:symbol                define symbol to be ''
1656          -A define:symbol               define symbol to be 'define'
1657          -A eval:symbol=value           define symbol to be eval of value
1658          -A prepend:symbol=value        prepend value to symbol
1659          -A undef:symbol                define symbol to be 'undef'
1660          -A undef:symbol=               define symbol to be ''
1661   -V : print version number and exit (with a zero status).
1662 EOM
1663         exit 1
1664         ;;
1665 esac
1666
1667 : Sanity checks
1668 case "$fastread$alldone" in
1669 yescont|yesexit) ;;
1670 *)
1671         case "$extractsh" in
1672         true) ;;
1673         *)
1674                 if test ! -t 0; then
1675                         echo "Say 'sh Configure', not 'sh <Configure'"
1676                         exit 1
1677                 fi
1678                 ;;
1679         esac
1680         ;;
1681 esac
1682
1683 exec 4>&1
1684 case "$silent" in
1685 true) exec 1>/dev/null;;
1686 esac
1687
1688 : run the defines and the undefines, if any, but leave the file out there...
1689 touch optdef.sh
1690 . ./optdef.sh
1691 : create the posthint manipulation script and leave the file out there...
1692 touch posthint.sh
1693
1694 : set package name
1695 package=perl5
1696 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1697 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1698 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1699 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1700 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1701 esac
1702
1703 : Some greps do not return status, grrr.
1704 echo "grimblepritz" >grimble
1705 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1706         contains=contains
1707 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1708         contains=grep
1709 else
1710         contains=contains
1711 fi
1712 rm -f grimble
1713 : the following should work in any shell
1714 case "$contains" in
1715 contains*)
1716         echo " "
1717         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1718         cat >contains <<'EOSS'
1719 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1720 EOSS
1721 chmod +x contains
1722 esac
1723
1724 : Find the path to the source tree
1725 case "$src" in
1726 '') case "$0" in
1727     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1728          case "$src" in
1729          /*)    ;;
1730          .)     ;;
1731          *)     src=`cd ../$src && pwd` ;;
1732          esac
1733          ;;
1734     *)   src='.';;
1735     esac;;
1736 esac
1737 case "$src" in
1738 '')     src=/
1739         rsrc=/
1740         ;;
1741 /*) rsrc="$src";;
1742 *) rsrc="../$src";;
1743 esac
1744 if test -f $rsrc/Configure && \
1745         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1746 then
1747    : found it, so we are ok.
1748 else
1749         rsrc=''
1750         for src in . .. ../.. ../../.. ../../../..; do
1751                 if test -f ../$src/Configure && \
1752                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1753                 then
1754                         rsrc=../$src
1755                         break
1756                 fi
1757         done
1758 fi
1759 case "$rsrc" in
1760 '')
1761         cat <<EOM >&4
1762
1763 Sorry, I can't seem to locate the source dir for $package.  Please start
1764 Configure with an explicit path -- i.e. /some/path/Configure.
1765
1766 EOM
1767         exit 1
1768         ;;
1769 ../.)   rsrc='..';;
1770 *)
1771         echo " "
1772         echo "Sources for $package found in \"$src\"." >&4
1773         ;;
1774 esac
1775
1776 : script used to extract .SH files with variable substitutions
1777 cat >extract <<'EOS'
1778 PERL_CONFIG_SH=true
1779 echo "Doing variable substitutions on .SH files..."
1780 if test -f MANIFEST; then
1781         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1782 else
1783         echo "(Looking for .SH files under the source directory.)"
1784         set x `(cd "$src"; find . -name "*.SH" -print)`
1785 fi
1786 shift
1787 case $# in
1788 0) set x `(cd "$src"; echo *.SH)`; shift;;
1789 esac
1790 if test ! -f "$src/$1"; then
1791         shift
1792 fi
1793 mkdir_p='
1794 name=$1;
1795 create="";
1796 while test $name; do
1797         if test ! -d "$name"; then
1798                 create="$name $create";
1799                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1800                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1801         else
1802                 name="";
1803         fi;
1804 done;
1805 for file in $create; do
1806         mkdir $file;
1807 done
1808 '
1809 for file in $*; do
1810         case "$src" in
1811         ".")
1812                 case "$file" in
1813                 */*)
1814                         dir=`expr X$file : 'X\(.*\)/'`
1815                         file=`expr X$file : 'X.*/\(.*\)'`
1816                         (cd "$dir" && . ./$file)
1817                         ;;
1818                 *)
1819                         . ./$file
1820                         ;;
1821                 esac
1822                 ;;
1823         *)
1824                 case "$file" in
1825                 */*)
1826                         dir=`expr X$file : 'X\(.*\)/'`
1827                         file=`expr X$file : 'X.*/\(.*\)'`
1828                         (set x $dir; shift; eval $mkdir_p)
1829                         sh <"$src/$dir/$file"
1830                         ;;
1831                 *)
1832                         sh <"$src/$file"
1833                         ;;
1834                 esac
1835                 ;;
1836         esac
1837 done
1838 if test -f "$src/config_h.SH"; then
1839         if test ! -f config.h; then
1840         : oops, they left it out of MANIFEST, probably, so do it anyway.
1841         . "$src/config_h.SH"
1842         fi
1843 fi
1844 EOS
1845
1846 : extract files and exit if asked to do so
1847 case "$extractsh" in
1848 true)
1849         case "$realsilent" in
1850         true) ;;
1851         *) exec 1>&4;;
1852         esac
1853         case "$config_sh" in
1854         '') config_sh='config.sh';;
1855         esac
1856         echo " "
1857         echo "Fetching answers from $config_sh..."
1858         cd ..
1859         . $config_sh
1860         test "$override" && . ./optdef.sh
1861         echo " "
1862         . UU/extract
1863         rm -rf UU
1864         echo "Extraction done."
1865         exit 0
1866         ;;
1867 esac
1868
1869 : Eunice requires " " instead of "", can you believe it
1870 echo " "
1871 : Here we go...
1872 echo "Beginning of configuration questions for $package."
1873
1874 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1875
1876 : first determine how to suppress newline on echo command
1877 echo " "
1878 echo "Checking echo to see how to suppress newlines..."
1879 (echo "hi there\c" ; echo " ") >.echotmp
1880 if $contains c .echotmp >/dev/null 2>&1 ; then
1881         echo "...using -n."
1882         n='-n'
1883         c=''
1884 else
1885         cat <<'EOM'
1886 ...using \c
1887 EOM
1888         n=''
1889         c='\c'
1890 fi
1891 echo $n "The star should be here-->$c"
1892 echo '*'
1893 rm -f .echotmp
1894
1895 : Now test for existence of everything in MANIFEST
1896 echo " "
1897 if test -f "$rsrc/MANIFEST"; then
1898         echo "First let's make sure your kit is complete.  Checking..." >&4
1899         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1900         rm -f missing
1901         tmppwd=`pwd`
1902         for filelist in x??; do
1903                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1904         done
1905         if test -s missing; then
1906                 cat missing >&4
1907                 cat >&4 <<'EOM'
1908
1909 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1910
1911 You have the option of continuing the configuration process, despite the
1912 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1913 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1914 and contact the author (perlbug@perl.org).
1915
1916 EOM
1917                 echo $n "Continue? [n] $c" >&4
1918                 read ans
1919                 case "$ans" in
1920                 y*)
1921                         echo "Continuing..." >&4
1922                         rm -f missing
1923                         ;;
1924                 *)
1925                         echo "ABORTING..." >&4
1926                         kill $$
1927                         ;;
1928                 esac
1929         else
1930                 echo "Looks good..."
1931         fi
1932 else
1933         echo "There is no MANIFEST file.  I hope your kit is complete !"
1934 fi
1935 rm -f missing x??
1936
1937 echo " "
1938 : Find the appropriate value for a newline for tr
1939 if test -n "$DJGPP"; then
1940        trnl='\012'
1941 fi
1942 if test X"$trnl" = X; then
1943         case "`echo foo|tr '\n' x 2>/dev/null`" in
1944         foox) trnl='\n' ;;
1945         esac
1946 fi
1947 if test X"$trnl" = X; then
1948         case "`echo foo|tr '\012' x 2>/dev/null`" in
1949         foox) trnl='\012' ;;
1950         esac
1951 fi
1952 if test X"$trnl" = X; then
1953        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1954        fooxy) trnl='\n\r' ;;
1955        esac
1956 fi
1957 if test X"$trnl" = X; then
1958         cat <<EOM >&2
1959
1960 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1961
1962 EOM
1963         exit 1
1964 fi
1965
1966 : compute the number of columns on the terminal for proper question formatting
1967 case "$COLUMNS" in
1968 '') COLUMNS='80';;
1969 esac
1970
1971 : set up the echo used in my read
1972 myecho="case \"\$xxxm\" in
1973 '') echo $n \"\$rp $c\" >&4;;
1974 *) case \"\$rp\" in
1975         '') echo $n \"[\$xxxm] $c\";;
1976         *)
1977                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1978                         echo \"\$rp\" >&4
1979                         echo $n \"[\$xxxm] $c\" >&4
1980                 else
1981                         echo $n \"\$rp [\$xxxm] $c\" >&4
1982                 fi
1983                 ;;
1984         esac;;
1985 esac"
1986
1987 : now set up to do reads with possible shell escape and default assignment
1988 cat <<EOSC >myread
1989 $startsh
1990 xxxm=\$dflt
1991 $myecho
1992 ans='!'
1993 case "\$fastread" in
1994 yes) case "\$dflt" in
1995         '') ;;
1996         *) ans='';
1997                 case "\$silent-\$rp" in
1998                 true-) ;;
1999                 *) echo " " >&4;;
2000                 esac;;
2001         esac;;
2002 *) case "\$silent" in
2003         true) case "\$rp" in
2004                 '') ans='';;
2005                 esac;;
2006         esac;;
2007 esac
2008 while expr "X\$ans" : "X!" >/dev/null; do
2009         read answ
2010         set x \$xxxm
2011         shift
2012         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2013         case  "\$answ" in
2014         "!")
2015                 sh 1>&4
2016                 echo " "
2017                 $myecho
2018                 ;;
2019         !*)
2020                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2021                 shift
2022                 sh 1>&4 -c "\$*"
2023                 echo " "
2024                 $myecho
2025                 ;;
2026         "\$ans")
2027                 case "\$ans" in
2028                 \\&*)
2029                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2030                         shift
2031                         case "\$1" in
2032                         -d)
2033                                 fastread=yes
2034                                 echo "(OK, I'll run with -d after this question.)" >&4
2035                                 ;;
2036                         -*)
2037                                 echo "*** Sorry, \$1 not supported yet." >&4
2038                                 ;;
2039                         esac
2040                         $myecho
2041                         ans=!
2042                         ;;
2043                 esac;;
2044         *)
2045                 case "\$aok" in
2046                 y)
2047                         echo "*** Substitution done -- please confirm."
2048                         xxxm="\$ans"
2049                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2050                         xxxm="\$ans"
2051                         ans=!
2052                         ;;
2053                 *)
2054                         echo "*** Error -- try again."
2055                         ans=!
2056                         ;;
2057                 esac
2058                 $myecho
2059                 ;;
2060         esac
2061         case "\$ans\$xxxm\$nostick" in
2062         '')
2063                 ans=!
2064                 $myecho
2065                 ;;
2066         esac
2067 done
2068 case "\$ans" in
2069 '') ans="\$xxxm";;
2070 esac
2071 EOSC
2072
2073 : create .config dir to save info across Configure sessions
2074 test -d ../.config || mkdir ../.config
2075 cat >../.config/README <<EOF
2076 This directory created by Configure to save information that should
2077 persist across sessions for $package.
2078
2079 You may safely delete it if you wish.
2080 EOF
2081
2082 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2083 case "$usedevel" in
2084 $define|true|[yY]*) ;;
2085 *) case "$xversion" in
2086    *[13579])
2087         cat >&4 <<EOH
2088 *** WHOA THERE!!! ***
2089
2090     This is an UNSTABLE DEVELOPMENT release.
2091     The version of this $package distribution is $xversion, that is, odd,
2092     (as opposed to even) and that signifies a development release.
2093     If you want a maintenance release, you want an even-numbered version.
2094
2095     Do ***NOT*** install this into production use.
2096     Data corruption and crashes are possible.
2097
2098     It is most seriously suggested that you do not continue any further
2099     unless you want to help in developing and debugging Perl.
2100
2101     If you *still* want to build perl, you can answer 'y' now,
2102     or pass -Dusedevel to Configure.
2103
2104 EOH
2105         rp='Do you really want to continue?'
2106         dflt='n'
2107         . ./myread
2108         case "$ans" in
2109         [yY]) echo >&4 "Okay, continuing."
2110               usedevel="$define" ;;
2111         *) echo >&4 "Okay, bye."
2112            exit 1
2113            ;;
2114         esac
2115         ;;
2116     esac
2117     ;;
2118 esac
2119 case "$usedevel" in
2120 $define|true|[yY]*)
2121         case "$versiononly" in
2122         '') versiononly="$define" ;;
2123         esac
2124         case "$installusrbinperl" in
2125         '') installusrbinperl="$undef" ;;
2126         esac
2127         ;;
2128 esac
2129
2130 : general instructions
2131 needman=true
2132 firsttime=true
2133 user=`(logname) 2>/dev/null`
2134 case "$user" in
2135 '') user=`whoami 2>&1`;;
2136 esac
2137 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2138         firsttime=false
2139         echo " "
2140         rp='Would you like to see the instructions?'
2141         dflt=n
2142         . ./myread
2143         case "$ans" in
2144         [yY]*) ;;
2145         *) needman=false;;
2146         esac
2147 fi
2148 if $needman; then
2149         cat <<EOH
2150
2151 This installation shell script will examine your system and ask you questions
2152 to determine how the perl5 package should be installed. If you get
2153 stuck on a question, you may use a ! shell escape to start a subshell or
2154 execute a command.  Many of the questions will have default answers in square
2155 brackets; typing carriage return will give you the default.
2156
2157 On some of the questions which ask for file or directory names you are allowed
2158 to use the ~name construct to specify the login directory belonging to "name",
2159 even if you don't have a shell which knows about that.  Questions where this is
2160 allowed will be marked "(~name ok)".
2161
2162 EOH
2163         rp=''
2164         dflt='Type carriage return to continue'
2165         . ./myread
2166         cat <<'EOH'
2167
2168 The prompter used in this script allows you to use shell variables and
2169 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2170 in the default answer, as if the default line was a set of arguments given to a
2171 script shell.  This means you may also use $* to repeat the whole default line,
2172 so you do not have to re-type everything to add something to the default.
2173
2174 Everytime there is a substitution, you will have to confirm.  If there is an
2175 error (e.g. an unmatched backtick), the default answer will remain unchanged
2176 and you will be prompted again.
2177
2178 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2179 the questions and use the computed defaults (or the previous answers if there
2180 was already a config.sh file). Type 'Configure -h' for a list of options.
2181 You may also start interactively and then answer '& -d' at any prompt to turn
2182 on the non-interactive behaviour for the remainder of the execution.
2183
2184 EOH
2185         . ./myread
2186         cat <<EOH
2187
2188 Much effort has been expended to ensure that this shell script will run on any
2189 Unix system.  If despite that it blows up on yours, your best bet is to edit
2190 Configure and run it again.  If you can't run Configure for some reason,
2191 you'll have to generate a config.sh file by hand.  Whatever problems you
2192 have, let me (perlbug@perl.org) know how I blew it.
2193
2194 This installation script affects things in two ways:
2195
2196 1) it may do direct variable substitutions on some of the files included
2197    in this kit.
2198 2) it builds a config.h file for inclusion in C programs.  You may edit
2199    any of these files as the need arises after running this script.
2200
2201 If you make a mistake on a question, there is no easy way to back up to it
2202 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2203 files.  Configure will offer to let you do this before it runs the SH files.
2204
2205 EOH
2206         dflt='Type carriage return to continue'
2207         . ./myread
2208         case "$firsttime" in
2209         true) echo $user >>../.config/instruct;;
2210         esac
2211 fi
2212
2213 : find out where common programs are
2214 echo " "
2215 echo "Locating common programs..." >&4
2216 cat <<EOSC >loc
2217 $startsh
2218 case \$# in
2219 0) exit 1;;
2220 esac
2221 thing=\$1
2222 shift
2223 dflt=\$1
2224 shift
2225 for dir in \$*; do
2226         case "\$thing" in
2227         .)
2228         if test -d \$dir/\$thing; then
2229                 echo \$dir
2230                 exit 0
2231         fi
2232         ;;
2233         *)
2234         for thisthing in \$dir/\$thing; do
2235                 : just loop through to pick last item
2236         done
2237         if test -f \$thisthing; then
2238                 echo \$thisthing
2239                 exit 0
2240         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2241                 echo \$thisthing
2242                 exit 0
2243         elif test -f \$dir/\$thing.exe; then
2244                 if test -n "$DJGPP"; then
2245                         echo \$dir/\$thing.exe
2246                 elif test "$eunicefix" != ":"; then
2247                         : on Eunice apparently
2248                         echo \$dir/\$thing
2249                         exit 0
2250                 fi
2251                 exit 0
2252         fi
2253         ;;
2254         esac
2255 done
2256 echo \$dflt
2257 exit 1
2258 EOSC
2259 chmod +x loc
2260 $eunicefix loc
2261 loclist="
2262 awk
2263 cat
2264 chmod
2265 comm
2266 cp
2267 echo
2268 expr
2269 grep
2270 ls
2271 mkdir
2272 rm
2273 sed
2274 sort
2275 touch
2276 tr
2277 uniq
2278 "
2279 trylist="
2280 Mcc
2281 ar
2282 bison
2283 byacc
2284 cpp
2285 csh
2286 date
2287 egrep
2288 gmake
2289 gzip
2290 less
2291 ln
2292 make
2293 more
2294 nm
2295 nroff
2296 pg
2297 test
2298 uname
2299 zip
2300 "
2301 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2302 pth="$pth /lib /usr/lib"
2303 for file in $loclist; do
2304         eval xxx=\$$file
2305         case "$xxx" in
2306         /*|?:[\\/]*)
2307                 if test -f "$xxx"; then
2308                         : ok
2309                 else
2310                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2311                         xxx=`./loc $file $file $pth`
2312                 fi
2313                 ;;
2314         '') xxx=`./loc $file $file $pth`;;
2315         *) xxx=`./loc $xxx $xxx $pth`;;
2316         esac
2317         eval $file=$xxx$_exe
2318         eval _$file=$xxx
2319         case "$xxx" in
2320         /*)
2321                 echo $file is in $xxx.
2322                 ;;
2323         ?:[\\/]*)
2324                 echo $file is in $xxx.
2325                 ;;
2326         *)
2327                 echo "I don't know where '$file' is, and my life depends on it." >&4
2328                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2329                 exit 1
2330                 ;;
2331         esac
2332 done
2333 echo " "
2334 echo "Don't worry if any of the following aren't found..."
2335 say=offhand
2336 for file in $trylist; do
2337         eval xxx=\$$file
2338         case "$xxx" in
2339         /*|?:[\\/]*)
2340                 if test -f "$xxx"; then
2341                         : ok
2342                 else
2343                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2344                         xxx=`./loc $file $file $pth`
2345                 fi
2346                 ;;
2347         '') xxx=`./loc $file $file $pth`;;
2348         *) xxx=`./loc $xxx $xxx $pth`;;
2349         esac
2350         eval $file=$xxx$_exe
2351         eval _$file=$xxx
2352         case "$xxx" in
2353         /*)
2354                 echo $file is in $xxx.
2355                 ;;
2356         ?:[\\/]*)
2357                 echo $file is in $xxx.
2358                 ;;
2359         *)
2360                 echo "I don't see $file out there, $say."
2361                 say=either
2362                 ;;
2363         esac
2364 done
2365 case "$egrep" in
2366 egrep)
2367         echo "Substituting grep for egrep."
2368         egrep=$grep
2369         _egrep=$grep
2370         ;;
2371 esac
2372 case "$ln" in
2373 ln)
2374         echo "Substituting cp for ln."
2375         ln=$cp
2376         _ln=$cp
2377         ;;
2378 esac
2379 case "$make" in
2380 make)   
2381         case "$gmake" in
2382         gmake)
2383         echo "I can't find make or gmake, and my life depends on it." >&4
2384         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2385         exit 1
2386         ;;
2387         esac
2388         ;;
2389 esac    
2390 case "$gmake" in
2391 gmake)  ;;
2392 *)      # We can't have osname yet.
2393         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2394                 # Assume that gmake, if found, is definitely GNU make
2395                 # and prefer it over the system make.
2396                 echo "Substituting gmake for make."
2397                 make=$gmake
2398                 _make=$gmake
2399         fi
2400         ;;
2401 esac
2402 case "$test" in
2403 test)
2404         echo "Hopefully test is built into your sh."
2405         ;;
2406 *)
2407         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2408                 echo "Using the test built into your sh."
2409                 test=test
2410                 _test=test
2411         fi
2412         ;;
2413 esac
2414 case "$echo" in
2415 echo)
2416         echo "Hopefully echo is built into your sh."
2417         ;;
2418 '') ;;
2419 *)
2420         echo " "
2421 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2422         $echo $n "hi there$c" >foo1
2423         echo $n "hi there$c" >foo2
2424         if cmp foo1 foo2 >/dev/null 2>&1; then
2425                 echo "They are compatible.  In fact, they may be identical."
2426         else
2427                 case "$n" in
2428                 '-n') n='' c='\c';;
2429                 *) n='-n' c='';;
2430                 esac
2431                 cat <<FOO
2432 They are not compatible!  You are probably running ksh on a non-USG system.
2433 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2434 have echo built in and we may have to run some Bourne shell scripts.  That
2435 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2436
2437 FOO
2438                 $echo $n "The star should be here-->$c"
2439                 $echo "*"
2440         fi
2441         $rm -f foo1 foo2
2442         ;;
2443 esac
2444
2445 cat <<EOS >trygcc
2446 $startsh
2447 EOS
2448 cat <<'EOSC' >>trygcc
2449 case "$cc" in
2450 '') ;;
2451 *)  $rm -f try try.*
2452     $cat >try.c <<EOM
2453 int main(int argc, char *argv[]) {
2454   return 0;
2455 }
2456 EOM
2457     if $cc -o try $ccflags $ldflags try.c; then
2458        :
2459     else
2460         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2461         despair=yes
2462         trygcc=yes
2463         case "$cc" in
2464         *gcc*) trygcc=no ;;
2465         esac
2466         case "`$cc -v -c try.c 2>&1`" in
2467         *gcc*) trygcc=no ;;
2468         esac
2469         if $test X"$trygcc" = Xyes; then
2470             if gcc -o try -c try.c; then
2471                 echo " "
2472                 echo "You seem to have a working gcc, though." >&4
2473                 rp="Would you like to use it?"
2474                 dflt=y
2475                 if $test -f myread; then
2476                     . ./myread
2477                 else
2478                     if $test -f UU/myread; then
2479                         . ./UU/myread
2480                     else
2481                         echo "Cannot find myread, sorry.  Aborting." >&2
2482                         exit 1
2483                     fi
2484                 fi  
2485                 case "$ans" in
2486                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2487                        if $test -f usethreads.cbu; then
2488                            $cat >&4 <<EOM 
2489
2490 *** However, any setting of the C compiler flags (e.g. for thread support)
2491 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2492 *** (together with e.g. -Dusethreads).
2493
2494 EOM
2495                        fi;;
2496                 esac
2497             fi
2498         fi
2499     fi
2500     $rm -f try try.*
2501     ;;
2502 esac
2503 EOSC
2504
2505 cat <<EOS >checkcc
2506 $startsh
2507 EOS
2508 cat <<'EOSC' >>checkcc
2509 case "$cc" in        
2510 '') ;;
2511 *)  $rm -f try try.*              
2512     $cat >try.c <<EOM
2513 int main(int argc, char *argv[]) {
2514   return 0;
2515 }
2516 EOM
2517     if $cc -o try $ccflags $ldflags try.c; then
2518        :
2519     else
2520         if $test X"$despair" = Xyes; then
2521            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2522         fi
2523         $cat >&4 <<EOM         
2524 You need to find a working C compiler.
2525 Either (purchase and) install the C compiler supplied by your OS vendor,
2526 or for a free C compiler try http://gcc.gnu.org/
2527 I cannot continue any further, aborting.
2528 EOM
2529         exit 1
2530     fi
2531     $rm -f try try.*
2532     ;;
2533 esac
2534 EOSC
2535
2536 : determine whether symbolic links are supported
2537 echo " "
2538 $touch blurfl
2539 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2540         echo "Symbolic links are supported." >&4
2541         lns="$ln -s"
2542 else
2543         echo "Symbolic links are NOT supported." >&4
2544         lns="$ln"
2545 fi
2546 $rm -f blurfl sym
2547
2548 : determine whether symbolic links are supported
2549 echo " "
2550 case "$lns" in
2551 *"ln"*" -s")
2552         echo "Checking how to test for symbolic links..." >&4
2553         $lns blurfl sym
2554         if $test "X$issymlink" = X; then
2555                 case "$newsh" in
2556                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2557                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2558                 esac
2559                 if test $? = 0; then
2560                         issymlink="test -h"
2561                 else
2562                         echo "Your builtin 'test -h' may be broken." >&4
2563                         case "$test" in
2564                         /*)     ;;
2565                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2566                                 for p in $pth
2567                                 do
2568                                         if test -f "$p/$test"; then
2569                                                 test="$p/$test"
2570                                                 break
2571                                         fi
2572                                 done
2573                                 ;;
2574                         esac
2575                         case "$test" in
2576                         /*)
2577                                 echo "Trying external '$test -h'." >&4
2578                                 issymlink="$test -h"
2579                                 if $test ! -h sym >/dev/null 2>&1; then
2580                                         echo "External '$test -h' is broken, too." >&4
2581                                         issymlink=''
2582                                 fi
2583                                 ;;
2584                         *)      issymlink='' ;;
2585                         esac
2586                 fi              
2587         fi
2588         if $test "X$issymlink" = X; then
2589                 if $test -L sym 2>/dev/null; then
2590                         issymlink="$test -L"
2591                         echo "The builtin '$test -L' worked." >&4
2592                 fi
2593         fi
2594         if $test "X$issymlink" != X; then
2595                 echo "You can test for symbolic links with '$issymlink'." >&4
2596         else
2597                 echo "I do not know how you can test for symbolic links." >&4
2598         fi
2599         $rm -f blurfl sym
2600         ;;
2601 *)      echo "No symbolic links, so not testing for their testing..." >&4
2602         ;;
2603 esac
2604 echo " "
2605
2606
2607 case "$mksymlinks" in
2608 $define|true|[yY]*)
2609         case "$src" in
2610         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2611                 exit 1
2612                 ;;
2613         *)      case "$lns:$issymlink" in
2614                 *"ln"*" -s:"*"test -"?)
2615                         echo "Creating the symbolic links..." >&4
2616                         echo "(First creating the subdirectories...)" >&4
2617                         cd ..
2618                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2619                                 read directory
2620                                 test -z "$directory" && break
2621                                 mkdir -p $directory
2622                         done
2623                         # Sanity check 1.
2624                         if test ! -d t/base; then
2625                                 echo "Failed to create the subdirectories.  Aborting." >&4
2626                                 exit 1
2627                         fi
2628                         echo "(Then creating the symlinks...)" >&4
2629                         awk '{print $1}' $src/MANIFEST | while true; do
2630                                 read filename
2631                                 test -z "$filename" && break
2632                                 if test -f $filename; then
2633                                         if $issymlink $filename; then
2634                                                 rm -f $filename
2635                                         fi
2636                                 fi
2637                                 if test -f $filename; then
2638                                         echo "$filename already exists, not symlinking."
2639                                 else
2640                                         ln -s $src/$filename $filename
2641                                 fi
2642                         done
2643                         # Sanity check 2.
2644                         if test ! -f t/base/lex.t; then
2645                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2646                                 exit 1
2647                         fi
2648                         cd UU
2649                         ;;
2650                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2651                         ;;
2652                 esac
2653                 ;;
2654         esac
2655         ;;
2656 esac
2657
2658
2659 case "$usecrosscompile" in
2660 $define|true|[yY]*)
2661         $echo "Cross-compiling..."
2662         croak=''
2663         case "$cc" in
2664         *-*-gcc) # A cross-compiling gcc, probably.
2665             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2666             ar=$targetarch-ar
2667             # leave out ld, choosing it is more complex
2668             nm=$targetarch-nm
2669             ranlib=$targetarch-ranlib
2670             $echo 'extern int foo;' > try.c
2671             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2672             shift
2673             if $test $# -gt 0; then
2674                 incpth="$incpth $*"
2675                 incpth="`$echo $incpth|$sed 's/^ //'`"
2676                 echo "Guessing incpth '$incpth'." >&4
2677                 for i in $*; do
2678                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2679                     if $test -d $j; then
2680                         libpth="$libpth $j"
2681                     fi
2682                 done   
2683                 libpth="`$echo $libpth|$sed 's/^ //'`"
2684                 echo "Guessing libpth '$libpth'." >&4
2685             fi
2686             $rm -f try.c
2687             ;;
2688         esac
2689         case "$targetarch" in
2690         '') echo "Targetarch not defined." >&4; croak=y ;;
2691         *)  echo "Using targetarch $targetarch." >&4 ;;
2692         esac
2693         case "$incpth" in
2694         '') echo "Incpth not defined." >&4; croak=y ;;
2695         *)  echo "Using incpth '$incpth'." >&4 ;;
2696         esac
2697         case "$libpth" in
2698         '') echo "Libpth not defined." >&4; croak=y ;;
2699         *)  echo "Using libpth '$libpth'." >&4 ;;
2700         esac
2701         case "$usrinc" in
2702         '') for i in $incpth; do
2703                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2704                     usrinc=$i
2705                     echo "Guessing usrinc $usrinc." >&4
2706                     break
2707                 fi
2708             done
2709             case "$usrinc" in
2710             '') echo "Usrinc not defined." >&4; croak=y ;;
2711             esac
2712             ;;
2713         *)  echo "Using usrinc $usrinc." >&4 ;;
2714         esac
2715         case "$targethost" in
2716         '') echo "Targethost not defined." >&4; croak=y ;;
2717         *)  echo "Using targethost $targethost." >&4
2718         esac
2719         locincpth=' '
2720         loclibpth=' '
2721         case "$croak" in
2722         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2723         esac
2724         case "$src" in
2725         /*) run=$src/Cross/run
2726             targetmkdir=$src/Cross/mkdir
2727             to=$src/Cross/to
2728             from=$src/Cross/from
2729             ;;
2730         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2731             run=$pwd/Cross/run
2732             targetmkdir=$pwd/Cross/mkdir
2733             to=$pwd/Cross/to
2734             from=$pwd/Cross/from
2735             ;;
2736         esac
2737         case "$targetrun" in
2738         '') targetrun=ssh ;;
2739         esac
2740         case "$targetto" in
2741         '') targetto=scp ;;
2742         esac
2743         case "$targetfrom" in
2744         '') targetfrom=scp ;;
2745         esac
2746         run=$run-$targetrun
2747         to=$to-$targetto
2748         from=$from-$targetfrom
2749         case "$targetdir" in
2750         '')  targetdir=/tmp
2751              echo "Guessing targetdir $targetdir." >&4
2752              ;;
2753         esac
2754         case "$targetuser" in
2755         '')  targetuser=root
2756              echo "Guessing targetuser $targetuser." >&4
2757              ;;
2758         esac
2759         case "$targetfrom" in
2760         scp)    q=-q ;;
2761         *)      q='' ;;
2762         esac
2763         case "$targetrun" in
2764         ssh|rsh)
2765             cat >$run <<EOF
2766 #!/bin/sh
2767 case "\$1" in
2768 -cwd)
2769   shift
2770   cwd=\$1
2771   shift
2772   ;;
2773 esac
2774 case "\$cwd" in
2775 '') cwd=$targetdir ;;
2776 esac
2777 exe=\$1
2778 shift
2779 if $test ! -f \$exe.xok; then
2780   $to \$exe
2781   $touch \$exe.xok
2782 fi
2783 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2784 EOF
2785             ;;
2786         *)  echo "Unknown targetrun '$targetrun'" >&4
2787             exit 1
2788             ;;
2789         esac
2790         case "$targetmkdir" in
2791         */Cross/mkdir)
2792             cat >$targetmkdir <<EOF
2793 #!/bin/sh
2794 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2795 EOF
2796             $chmod a+rx $targetmkdir
2797             ;;
2798         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2799             exit 1
2800             ;;
2801         esac
2802         case "$targetto" in
2803         scp|rcp)
2804             cat >$to <<EOF
2805 #!/bin/sh
2806 for f in \$@
2807 do
2808   case "\$f" in
2809   /*)
2810     $targetmkdir \`dirname \$f\`
2811     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2812     ;;
2813   *)
2814     $targetmkdir $targetdir/\`dirname \$f\`
2815     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2816     ;;
2817   esac
2818 done
2819 exit 0
2820 EOF
2821             ;;
2822         cp) cat >$to <<EOF
2823 #!/bin/sh
2824 for f in \$@
2825 do
2826   case "\$f" in
2827   /*)
2828     $mkdir -p $targetdir/\`dirname \$f\`
2829     $cp \$f $targetdir/\$f || exit 1
2830     ;;
2831   *)
2832     $targetmkdir $targetdir/\`dirname \$f\`
2833     $cp \$f $targetdir/\$f || exit 1
2834     ;;
2835   esac
2836 done
2837 exit 0
2838 EOF
2839             ;;
2840         *)  echo "Unknown targetto '$targetto'" >&4
2841             exit 1
2842             ;;
2843         esac
2844         case "$targetfrom" in
2845         scp|rcp)
2846           cat >$from <<EOF
2847 #!/bin/sh
2848 for f in \$@
2849 do
2850   $rm -f \$f
2851   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2852 done
2853 exit 0
2854 EOF
2855             ;;
2856         cp) cat >$from <<EOF
2857 #!/bin/sh
2858 for f in \$@
2859 do
2860   $rm -f \$f
2861   cp $targetdir/\$f . || exit 1
2862 done
2863 exit 0
2864 EOF
2865             ;;
2866         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2867             exit 1
2868             ;;
2869         esac
2870         if $test ! -f $run; then
2871             echo "Target 'run' script '$run' not found." >&4
2872         else
2873             $chmod a+rx $run
2874         fi
2875         if $test ! -f $to; then
2876             echo "Target 'to' script '$to' not found." >&4
2877         else
2878             $chmod a+rx $to
2879         fi
2880         if $test ! -f $from; then
2881             echo "Target 'from' script '$from' not found." >&4
2882         else
2883             $chmod a+rx $from
2884         fi
2885         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2886             exit 1
2887         fi
2888         cat >&4 <<EOF
2889 Using '$run' for remote execution,
2890 and '$from' and '$to'
2891 for remote file transfer.
2892 EOF
2893         ;;
2894 *)      run=''
2895         to=:
2896         from=:
2897         usecrosscompile='undef'
2898         targetarch=''
2899         ;;
2900 esac
2901
2902 : see whether [:lower:] and [:upper:] are supported character classes
2903 echo " "
2904 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2905 ABYZ)
2906         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2907         up='[:upper:]'
2908         low='[:lower:]'
2909         ;;
2910 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2911         # (0xd9 and 0xe2), therefore that is a nice testing point.
2912         if test "X$up" = X -o "X$low" = X; then
2913             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2914             rs) up='[A-Z]'
2915                 low='[a-z]'
2916                 ;;
2917             esac
2918         fi
2919         if test "X$up" = X -o "X$low" = X; then
2920             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2921             rs) up='A-Z'
2922                 low='a-z'
2923                 ;;
2924             esac
2925         fi
2926         if test "X$up" = X -o "X$low" = X; then
2927             case "`echo RS | od -x 2>/dev/null`" in
2928             *D9E2*|*d9e2*)
2929                 echo "Hey, this might be EBCDIC." >&4
2930                 if test "X$up" = X -o "X$low" = X; then
2931                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2932                     rs) up='[A-IJ-RS-Z]'
2933                         low='[a-ij-rs-z]'
2934                         ;;
2935                     esac
2936                 fi
2937                 if test "X$up" = X -o "X$low" = X; then
2938                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2939                     rs) up='A-IJ-RS-Z'
2940                         low='a-ij-rs-z'
2941                         ;;
2942                     esac
2943                 fi
2944                 ;;
2945             esac
2946         fi
2947 esac
2948 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2949 rs)
2950     echo "Using $up and $low to convert case." >&4
2951     ;;
2952 *)
2953     echo "I don't know how to translate letters from upper to lower case." >&4
2954     echo "Your tr is not acting any way I know of." >&4
2955     exit 1
2956     ;;
2957 esac
2958 : set up the translation script tr, must be called with ./tr of course
2959 cat >tr <<EOSC
2960 $startsh
2961 case "\$1\$2" in
2962 '[A-Z][a-z]') exec $tr '$up' '$low';;
2963 '[a-z][A-Z]') exec $tr '$low' '$up';;
2964 esac
2965 exec $tr "\$@"
2966 EOSC
2967 chmod +x tr
2968 $eunicefix tr
2969
2970 : Try to determine whether config.sh was made on this system
2971 case "$config_sh" in
2972 '')
2973 myuname=`$uname -a 2>/dev/null`
2974 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2975 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2976 # because the A-Z/a-z are not consecutive.
2977 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2978         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2979 newmyuname="$myuname"
2980 dflt=n
2981 case "$knowitall" in
2982 '')
2983         if test -f ../config.sh; then
2984                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2985                         eval "`grep myuname= ../config.sh`"
2986                 fi
2987                 if test "X$myuname" = "X$newmyuname"; then
2988                         dflt=y
2989                 fi
2990         fi
2991         ;;
2992 *) dflt=y;;
2993 esac
2994
2995 : Get old answers from old config file if Configure was run on the
2996 : same system, otherwise use the hints.
2997 hint=default
2998 cd ..
2999 if test -f config.sh; then
3000         echo " "
3001         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3002         . UU/myread
3003         case "$ans" in
3004         n*|N*) echo "OK, I'll ignore it."
3005                 mv config.sh config.sh.old
3006                 myuname="$newmyuname"
3007                 ;;
3008         *)  echo "Fetching default answers from your old config.sh file..." >&4
3009                 tmp_n="$n"
3010                 tmp_c="$c"
3011                 tmp_sh="$sh"
3012                 . ./config.sh
3013                 cp config.sh UU
3014                 n="$tmp_n"
3015                 c="$tmp_c"
3016                 : Older versions did not always set $sh.  Catch re-use of such
3017                 : an old config.sh.
3018                 case "$sh" in
3019                 '') sh="$tmp_sh" ;;
3020                 esac
3021                 hint=previous
3022                 ;;
3023         esac
3024 fi
3025 . ./UU/checkcc
3026 if test ! -f config.sh; then
3027         $cat <<EOM
3028
3029 First time through, eh?  I have some defaults handy for some systems
3030 that need some extra help getting the Configure answers right:
3031
3032 EOM
3033         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3034         dflt=''
3035         : Half the following guesses are probably wrong... If you have better
3036         : tests or hints, please send them to perlbug@perl.org
3037         : The metaconfig authors would also appreciate a copy...
3038         $test -f /irix && osname=irix
3039         $test -f /xenix && osname=sco_xenix
3040         $test -f /dynix && osname=dynix
3041         $test -f /dnix && osname=dnix
3042         $test -f /lynx.os && osname=lynxos
3043         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3044         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3045         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3046         $test -f /bin/mips && /bin/mips && osname=mips
3047         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3048                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3049         $test -d /usr/apollo/bin && osname=apollo
3050         $test -f /etc/saf/_sactab && osname=svr4
3051         $test -d /usr/include/minix && osname=minix
3052         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3053         if $test -d /MachTen -o -d /MachTen_Folder; then
3054                 osname=machten
3055                 if $test -x /sbin/version; then
3056                         osvers=`/sbin/version | $awk '{print $2}' |
3057                         $sed -e 's/[A-Za-z]$//'`
3058                 elif $test -x /usr/etc/version; then
3059                         osvers=`/usr/etc/version | $awk '{print $2}' |
3060                         $sed -e 's/[A-Za-z]$//'`
3061                 else
3062                         osvers="$2.$3"
3063                 fi
3064         fi
3065
3066         $test -f /sys/posix.dll &&
3067                 $test -f /usr/bin/what &&
3068                 set X `/usr/bin/what /sys/posix.dll` &&
3069                 $test "$3" = UWIN &&
3070                 osname=uwin &&
3071                 osvers="$5"
3072
3073         if $test -f $uname; then
3074                 set X $myuname
3075                 shift
3076
3077                 case "$5" in
3078                 fps*) osname=fps ;;
3079                 mips*)
3080                         case "$4" in
3081                         umips) osname=umips ;;
3082                         *) osname=mips ;;
3083                         esac;;
3084                 [23]100) osname=mips ;;
3085                 next*) osname=next ;;
3086                 i386*)
3087                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3088                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3089                                 osname='sco'
3090                                 osvers=$tmp
3091                         elif $test -f /etc/kconfig; then
3092                                 osname=isc
3093                                 if test "$lns" = "$ln -s"; then
3094                                         osvers=4
3095                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3096                                         osvers=3
3097                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3098                                         osvers=2
3099                                 fi
3100                         fi
3101                         tmp=''
3102                         ;;
3103                 pc*)
3104                         if test -n "$DJGPP"; then
3105                                 osname=dos
3106                                 osvers=djgpp
3107                         fi
3108                         ;;
3109                 esac
3110
3111                 case "$1" in
3112                 aix) osname=aix
3113                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3114                         case "$tmp" in
3115                         # oslevel can fail with:
3116                         # oslevel: Unable to acquire lock.
3117                         *not\ found) osvers="$4"."$3" ;;
3118                         '<3240'|'<>3240') osvers=3.2.0 ;;
3119                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3120                         '=3250'|'>3250') osvers=3.2.5 ;;
3121                         *) osvers=$tmp;;
3122                         esac
3123                         ;;
3124                 bsd386) osname=bsd386
3125                         osvers=`$uname -r`
3126                         ;;
3127                 cygwin*) osname=cygwin
3128                         osvers="$3"
3129                         ;;
3130                 *dc.osx) osname=dcosx
3131                         osvers="$3"
3132                         ;;
3133                 dnix) osname=dnix
3134                         osvers="$3"
3135                         ;;
3136                 domainos) osname=apollo
3137                         osvers="$3"
3138                         ;;
3139                 dgux)   osname=dgux
3140                         osvers="$3"
3141                         ;;
3142                 dragonfly) osname=dragonfly
3143                         osvers="$3"
3144                         ;;
3145                 dynixptx*) osname=dynixptx
3146                         osvers=`echo "$4"|sed 's/^v//'`
3147                         ;;
3148                 freebsd) osname=freebsd
3149                         osvers="$3" ;;
3150                 genix)  osname=genix ;;
3151                 gnu)    osname=gnu
3152                         osvers="$3" ;;
3153                 hp*)    osname=hpux
3154                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3155                         ;;
3156                 irix*)  osname=irix
3157                         case "$3" in
3158                         4*) osvers=4 ;;
3159                         5*) osvers=5 ;;
3160                         *)      osvers="$3" ;;
3161                         esac
3162                         ;;
3163                 linux)  osname=linux
3164                         case "$3" in
3165                         *)      osvers="$3" ;;
3166                         esac
3167                         ;;
3168                 MiNT)   osname=mint
3169                         ;;
3170                 netbsd*) osname=netbsd
3171                         osvers="$3"
3172                         ;;
3173                 news-os) osvers="$3"
3174                         case "$3" in
3175                         4*) osname=newsos4 ;;
3176                         *) osname=newsos ;;
3177                         esac
3178                         ;;
3179                 next*) osname=next ;;
3180                 nonstop-ux) osname=nonstopux ;;
3181                 openbsd) osname=openbsd
3182                         osvers="$3"
3183                         ;;
3184                 os2)    osname=os2
3185                         osvers="$4"
3186                         ;;
3187                 POSIX-BC | posix-bc ) osname=posix-bc
3188                         osvers="$3"
3189                         ;;
3190                 powerux | power_ux | powermax_os | powermaxos | \
3191                 powerunix | power_unix) osname=powerux
3192                         osvers="$3"
3193                         ;;
3194                 qnx) osname=qnx
3195                         osvers="$4"
3196                         ;;
3197                 solaris) osname=solaris
3198                         case "$3" in
3199                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3200                         *)      osvers="$3" ;;
3201                         esac
3202                         ;;
3203                 sunos) osname=sunos
3204                         case "$3" in
3205                         5*) osname=solaris
3206                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3207                         *)      osvers="$3" ;;
3208                         esac
3209                         ;;
3210                 titanos) osname=titanos
3211                         case "$3" in
3212                         1*) osvers=1 ;;
3213                         2*) osvers=2 ;;
3214                         3*) osvers=3 ;;
3215                         4*) osvers=4 ;;
3216                         *)      osvers="$3" ;;
3217                         esac
3218                         ;;
3219                 ultrix) osname=ultrix
3220                         osvers="$3"
3221                         ;;
3222                 osf1|mls+)      case "$5" in
3223                                 alpha)
3224                                         osname=dec_osf
3225                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3226                                         case "$osvers" in
3227                                         [1-9].[0-9]*) ;;
3228                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3229                                         esac
3230                                         ;;
3231                         hp*)    osname=hp_osf1  ;;
3232                         mips)   osname=mips_osf1 ;;
3233                         esac
3234                         ;;
3235                 # UnixWare 7.1.2 is known as Open UNIX 8
3236                 openunix|unixware) osname=svr5
3237                         osvers="$4"
3238                         ;;
3239                 uts)    osname=uts
3240                         osvers="$3"
3241                         ;;
3242                 vos) osvers="$3"
3243                         ;;
3244                 $2) case "$osname" in
3245                         *isc*) ;;
3246                         *freebsd*) ;;
3247                         svr*)
3248                                 : svr4.x or possibly later
3249                                 case "svr$3" in
3250                                 ${osname}*)
3251                                         osname=svr$3
3252                                         osvers=$4
3253                                         ;;
3254                                 esac
3255                                 case "$osname" in
3256                                 svr4.0)
3257                                         : Check for ESIX
3258                                         if test -f /stand/boot ; then
3259                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3260                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3261                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3262                                                         if test -n "$isesix"; then
3263                                                                 osname=esix4
3264                                                         fi
3265                                                 fi
3266                                         fi
3267                                         ;;
3268                                 esac
3269                                 ;;
3270                         *)      if test -f /etc/systemid; then
3271                                         osname=sco
3272                                         set `echo $3 | $sed 's/\./ /g'` $4
3273                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3274                                                 osvers=$1.$2.$3
3275                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3276                                                 osvers=$1.$2
3277                                         elif $test -f $src/hints/sco_$1.sh; then
3278                                                 osvers=$1
3279                                         fi
3280                                 else
3281                                         case "$osname" in
3282                                         '') : Still unknown.  Probably a generic Sys V.
3283                                                 osname="sysv"
3284                                                 osvers="$3"
3285                                                 ;;
3286                                         esac
3287                                 fi
3288                                 ;;
3289                         esac
3290                         ;;
3291                 *)      case "$osname" in
3292                         '') : Still unknown.  Probably a generic BSD.
3293                                 osname="$1"
3294                                 osvers="$3"
3295                                 ;;
3296                         esac
3297                         ;;
3298                 esac
3299         else
3300                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3301                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3302                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3303                                 osname=news_os
3304                         fi
3305                         $rm -f UU/kernel.what
3306                 elif test -d c:/. -o -n "$is_os2" ; then
3307                         set X $myuname
3308                         osname=os2
3309                         osvers="$5"
3310                 fi
3311         fi
3312
3313         case "$targetarch" in
3314         '') ;;
3315         *)  hostarch=$osname
3316             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3317             osvers=''
3318             ;;
3319         esac
3320
3321         : Now look for a hint file osname_osvers, unless one has been
3322         : specified already.
3323         case "$hintfile" in
3324         ''|' ')
3325                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3326                 : Also try without trailing minor version numbers.
3327                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3328                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3329                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3330                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3331                 case "$file" in
3332                 '') dflt=none ;;
3333                 *)  case "$osvers" in
3334                         '') dflt=$file
3335                                 ;;
3336                         *)  if $test -f $src/hints/$file.sh ; then
3337                                         dflt=$file
3338                                 elif $test -f $src/hints/$xfile.sh ; then
3339                                         dflt=$xfile
3340                                 elif $test -f $src/hints/$xxfile.sh ; then
3341                                         dflt=$xxfile
3342                                 elif $test -f $src/hints/$xxxfile.sh ; then
3343                                         dflt=$xxxfile
3344                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3345                                         dflt=$xxxxfile
3346                                 elif $test -f "$src/hints/${osname}.sh" ; then
3347                                         dflt="${osname}"
3348                                 else
3349                                         dflt=none
3350                                 fi
3351                                 ;;
3352                         esac
3353                         ;;
3354                 esac
3355                 if $test -f Policy.sh ; then
3356                         case "$dflt" in
3357                         *Policy*) ;;
3358                         none) dflt="Policy" ;;
3359                         *) dflt="Policy $dflt" ;;
3360                         esac
3361                 fi
3362                 ;;
3363         *)
3364                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3365                 ;;
3366         esac
3367
3368         if $test -f Policy.sh ; then
3369                 $cat <<EOM
3370
3371 There's also a Policy hint file available, which should make the
3372 site-specific (policy) questions easier to answer.
3373 EOM
3374
3375         fi
3376
3377         $cat <<EOM
3378
3379 You may give one or more space-separated answers, or "none" if appropriate.
3380 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3381 is a good thing.  DO NOT give a wrong version or a wrong OS.
3382
3383 EOM
3384
3385         rp="Which of these apply, if any?"
3386         . UU/myread
3387         tans=$ans
3388         for file in $tans; do
3389                 if $test X$file = XPolicy -a -f Policy.sh; then
3390                         . Policy.sh
3391                         $cat Policy.sh >> UU/config.sh
3392                 elif $test -f $src/hints/$file.sh; then
3393                         . $src/hints/$file.sh
3394                         $cat $src/hints/$file.sh >> UU/config.sh
3395                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3396                         : nothing
3397                 else
3398                         : Give one chance to correct a possible typo.
3399                         echo "$file.sh does not exist"
3400                         dflt=$file
3401                         rp="hint to use instead?"
3402                         . UU/myread
3403                         for file in $ans; do
3404                                 if $test -f "$src/hints/$file.sh"; then
3405                                         . $src/hints/$file.sh
3406                                         $cat $src/hints/$file.sh >> UU/config.sh
3407                                 elif $test X$ans = X -o X$ans = Xnone ; then
3408                                         : nothing
3409                                 else
3410                                         echo "$file.sh does not exist -- ignored."
3411                                 fi
3412                         done
3413                 fi
3414         done
3415
3416         hint=recommended
3417         : Remember our hint file for later.
3418         if $test -f "$src/hints/$file.sh" ; then
3419                 hintfile="$file"
3420         else
3421                 hintfile=''
3422         fi
3423 fi
3424 cd UU
3425 ;;
3426 *)
3427         echo " "
3428         echo "Fetching default answers from $config_sh..." >&4
3429         tmp_n="$n"
3430         tmp_c="$c"
3431         cd ..
3432         cp $config_sh config.sh 2>/dev/null
3433         chmod +w config.sh
3434         . ./config.sh
3435         cd UU
3436         cp ../config.sh .
3437         n="$tmp_n"
3438         c="$tmp_c"
3439         hint=previous
3440         ;;
3441 esac
3442 test "$override" && . ./optdef.sh
3443
3444 : Restore computed paths
3445 for file in $loclist $trylist; do
3446         eval $file="\$_$file"
3447 done
3448
3449 cat << EOM
3450
3451 Configure uses the operating system name and version to set some defaults.
3452 The default value is probably right if the name rings a bell. Otherwise,
3453 since spelling matters for me, either accept the default or answer "none"
3454 to leave it blank.
3455
3456 EOM
3457 case "$osname" in
3458         ''|' ')
3459                 case "$hintfile" in
3460                 ''|' '|none) dflt=none ;;
3461                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3462                 esac
3463                 ;;
3464         *) dflt="$osname" ;;
3465 esac
3466 rp="Operating system name?"
3467 . ./myread
3468 case "$ans" in
3469 none)  osname='' ;;
3470 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3471 esac
3472 echo " "
3473 case "$osvers" in
3474         ''|' ')
3475                 case "$hintfile" in
3476                 ''|' '|none) dflt=none ;;
3477                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3478                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3479                         case "$dflt" in
3480                         ''|' ') dflt=none ;;
3481                         esac
3482                         ;;
3483                 esac
3484                 ;;
3485         *) dflt="$osvers" ;;
3486 esac
3487 rp="Operating system version?"
3488 . ./myread
3489 case "$ans" in
3490 none)  osvers='' ;;
3491 *) osvers="$ans" ;;
3492 esac
3493
3494
3495 . ./posthint.sh
3496
3497 : who configured the system
3498 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3499 case "$cf_by" in
3500 "")
3501         cf_by=`(logname) 2>/dev/null`
3502         case "$cf_by" in
3503         "")
3504                 cf_by=`(whoami) 2>/dev/null`
3505                 case "$cf_by" in
3506                 "") cf_by=unknown ;;
3507                 esac ;;
3508         esac ;;
3509 esac
3510
3511 : set up the script used to warn in case of inconsistency
3512 cat <<EOS >whoa
3513 $startsh
3514 EOS
3515 cat <<'EOSC' >>whoa
3516 dflt=y
3517 echo " "
3518 echo "*** WHOA THERE!!! ***" >&4
3519 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3520 rp="    Keep the $hint value?"
3521 . ./myread
3522 case "$ans" in
3523 y) td=$was; tu=$was;;
3524 esac
3525 EOSC
3526
3527 : function used to set $1 to $val
3528 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3529 case "$val$was" in
3530 $define$undef) . ./whoa; eval "$var=\$td";;
3531 $undef$define) . ./whoa; eval "$var=\$tu";;
3532 *) eval "$var=$val";;
3533 esac'
3534
3535 case "$usesocks" in
3536 $define|true|[yY]*)     dflt='y';;
3537 *) dflt='n';;
3538 esac
3539 cat <<EOM
3540
3541 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3542 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3543 to use the PerlIO abstraction layer, this will be implicitly selected.
3544
3545 If this doesn't make any sense to you, just accept the default '$dflt'.
3546 EOM
3547 rp='Build Perl for SOCKS?'
3548 . ./myread
3549 case "$ans" in
3550 y|Y)    val="$define" ;;     
3551 *)      val="$undef" ;;
3552 esac
3553 set usesocks
3554 eval $setvar
3555
3556 case "$usesocks" in
3557 $define|true|[yY]*) useperlio="$define";;
3558 esac
3559
3560 case "$useperlio" in
3561 $define|true|[yY]*|'')  dflt='y';;
3562 *) dflt='n';;
3563 esac
3564 cat <<EOM
3565
3566 Previous version of $package used the standard IO mechanisms as
3567 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3568 alternate IO mechanisms via the PerlIO abstraction layer, but the
3569 stdio mechanism is still available if needed.  The abstraction layer
3570 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3571 Using PerlIO with sfio may cause problems with some extension modules.
3572
3573 If this doesn't make any sense to you, just accept the default '$dflt'.
3574 EOM
3575 rp='Use the PerlIO abstraction layer?'
3576 . ./myread
3577 case "$ans" in
3578 y|Y) 
3579         val="$define"
3580         ;;
3581 *)      
3582         echo "Ok, doing things the stdio way."
3583         val="$undef"
3584         ;;
3585 esac
3586 set useperlio
3587 eval $setvar 
3588
3589 case "$usesocks" in
3590 $define|true|[yY]*)
3591         case "$useperlio" in
3592         $define|true|[yY]*) ;;
3593         *)      cat >&4 <<EOM
3594
3595 You are using the SOCKS proxy protocol library which means that you
3596 should also use the PerlIO layer.  You may be headed for trouble.
3597
3598 EOM
3599                 ;;
3600         esac
3601         ;;
3602 esac
3603
3604         
3605 case "$usethreads" in
3606 $define|true|[yY]*)     dflt='y';;
3607 *)     # Catch case where user specified ithreads or 5005threads but
3608        # forgot -Dusethreads (A.D. 4/2002)
3609        case "$useithreads$use5005threads" in
3610        *$define*)      
3611                 case "$useperlio" in
3612                 "$define")      dflt='y' ;;
3613                 *)              dflt='n' ;;
3614                 esac
3615                 ;;
3616        *)       dflt='n';;
3617        esac
3618        ;;
3619 esac
3620 cat <<EOM
3621
3622 Perl can be built to take advantage of threads on some systems.
3623 To do so, Configure can be run with -Dusethreads.
3624
3625 Note that Perl built with threading support runs slightly slower
3626 and uses more memory than plain Perl. The current implementation
3627 is believed to be stable, but it is fairly new, and so should be
3628 treated with caution.
3629
3630 If this doesn't make any sense to you, just accept the default '$dflt'.
3631 EOM
3632 rp='Build a threading Perl?'
3633 . ./myread
3634 case "$ans" in
3635 y|Y)    val="$define" ;;
3636 *)      val="$undef" ;;
3637 esac
3638 set usethreads
3639 eval $setvar
3640
3641 case "$usethreads" in
3642 $define)
3643         $cat <<EOM
3644
3645 Since release 5.6, Perl has had two different threading implementations,
3646 the newer interpreter-based version (ithreads) with one interpreter per
3647 thread, and the older 5.005 version (5005threads).
3648 The 5005threads version is effectively unmaintained and will probably be
3649 removed in Perl 5.10, so there should be no need to build a Perl using it
3650 unless needed for backwards compatibility with some existing 5.005threads
3651 code.
3652
3653 EOM
3654         : Default to ithreads unless overridden on command line or with
3655         : old config.sh
3656         dflt='y'
3657         case "$use5005threads" in
3658                 $define|true|[yY]*) dflt='n';;
3659         esac
3660         case "$useithreads" in
3661                 $undef|false|[nN]*) dflt='n';;
3662         esac
3663         rp='Use the newer interpreter-based ithreads?'
3664         . ./myread
3665         case "$ans" in
3666         y|Y)    val="$define" ;;
3667         *)      val="$undef" ;;
3668         esac
3669         set useithreads
3670         eval $setvar
3671         : Now set use5005threads to the opposite value.
3672         case "$useithreads" in
3673         $define) val="$undef" ;;
3674         *) val="$define" ;;
3675         esac
3676         set use5005threads
3677         eval $setvar
3678         ;;
3679 *)
3680         useithreads="$undef"
3681         use5005threads="$undef"
3682         ;;
3683 esac
3684
3685 case "$useithreads$use5005threads" in
3686 "$define$define")
3687         $cat >&4 <<EOM
3688
3689 You cannot have both the ithreads and the 5.005 threads enabled
3690 at the same time.  Disabling the 5.005 threads since they are
3691 much less stable than the ithreads.
3692
3693 EOM
3694         use5005threads="$undef"
3695         ;;
3696 esac
3697
3698 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3699         cat >&4 <<EOF
3700 ***
3701 *** To build with ithreads you must also use the PerlIO layer.
3702 *** Cannot continue, aborting.
3703 ***
3704 EOF
3705         exit 1
3706 fi
3707
3708 case "$d_oldpthreads" in
3709 '')     : Configure tests would be welcome here.  For now, assume undef.
3710         val="$undef" ;;
3711 *)      val="$d_oldpthreads" ;;
3712 esac
3713 set d_oldpthreads
3714 eval $setvar
3715
3716
3717 : Look for a hint-file generated 'call-back-unit'.  If the
3718 : user has specified that a threading perl is to be built,
3719 : we may need to set or change some other defaults.
3720 if $test -f usethreads.cbu; then
3721     echo "Your platform has some specific hints regarding threaded builds, using them..."
3722     . ./usethreads.cbu
3723 else
3724     case "$usethreads" in
3725         "$define"|true|[yY]*)
3726                 $cat <<EOM
3727 (Your platform does not have any specific hints for threaded builds.
3728  Assuming POSIX threads, then.)
3729 EOM
3730         ;;
3731     esac
3732 fi
3733
3734 cat <<EOM
3735
3736 Perl can be built so that multiple Perl interpreters can coexist
3737 within the same Perl executable.
3738 EOM
3739
3740 case "$useithreads" in
3741 $define)
3742         cat <<EOM
3743 This multiple interpreter support is required for interpreter-based threads.
3744 EOM
3745         val="$define"
3746         ;;
3747 *)      case "$usemultiplicity" in
3748         $define|true|[yY]*)     dflt='y';;
3749         *) dflt='n';;
3750         esac
3751         echo " "
3752         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3753         rp='Build Perl for multiplicity?'
3754         . ./myread
3755         case "$ans" in
3756         y|Y)    val="$define" ;;
3757         *)      val="$undef" ;;
3758         esac
3759         ;;
3760 esac
3761 set usemultiplicity
3762 eval $setvar
3763
3764
3765 case "$usemorebits" in
3766 "$define"|true|[yY]*)
3767         use64bitint="$define"
3768         uselongdouble="$define"
3769         usemorebits="$define"
3770         ;;
3771 *)      usemorebits="$undef"
3772         ;;
3773 esac
3774
3775 : make some quick guesses about what we are up against
3776 echo " "
3777 $echo $n "Hmm...  $c"
3778 echo exit 1 >bsd
3779 echo exit 1 >usg
3780 echo exit 1 >v7
3781 echo exit 1 >osf1
3782 echo exit 1 >eunice
3783 echo exit 1 >xenix
3784 echo exit 1 >venix
3785 echo exit 1 >os2
3786 d_bsd="$undef"
3787 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3788 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3789 then
3790         echo "Looks kind of like an OSF/1 system, but we'll see..."
3791         echo exit 0 >osf1
3792 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3793         xxx=`./loc addbib blurfl $pth`
3794         if $test -f $xxx; then
3795         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3796                 echo exit 0 >bsd
3797                 echo exit 0 >usg
3798         else
3799                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3800                         echo "Looks kind of like an extended USG system, but we'll see..."
3801                 else
3802                         echo "Looks kind of like a USG system, but we'll see..."
3803                 fi
3804                 echo exit 0 >usg
3805         fi
3806 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3807         echo "Looks kind of like a BSD system, but we'll see..."
3808         d_bsd="$define"
3809         echo exit 0 >bsd
3810 else
3811         echo "Looks kind of like a Version 7 system, but we'll see..."
3812         echo exit 0 >v7
3813 fi
3814 case "$eunicefix" in
3815 *unixtovms*)
3816         $cat <<'EOI'
3817 There is, however, a strange, musty smell in the air that reminds me of
3818 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3819 EOI
3820         echo exit 0 >eunice
3821         d_eunice="$define"
3822 : it so happens the Eunice I know will not run shell scripts in Unix format
3823         ;;
3824 *)
3825         echo " "
3826         echo "Congratulations.  You aren't running Eunice."
3827         d_eunice="$undef"
3828         ;;
3829 esac
3830 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3831 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3832 : semicolon as a patch separator
3833 case "$p_" in
3834 :) ;;
3835 *)
3836         $cat <<'EOI'
3837 I have the feeling something is not exactly right, however...don't tell me...
3838 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3839 (Or you may be running DOS with DJGPP.)
3840 EOI
3841         echo exit 0 >os2
3842         ;;
3843 esac
3844 if test -f /xenix; then
3845         echo "Actually, this looks more like a XENIX system..."
3846         echo exit 0 >xenix
3847         d_xenix="$define"
3848 else
3849         echo " "
3850         echo "It's not Xenix..."
3851         d_xenix="$undef"
3852 fi
3853 chmod +x xenix
3854 $eunicefix xenix
3855 if test -f /venix; then
3856         echo "Actually, this looks more like a VENIX system..."
3857         echo exit 0 >venix
3858 else
3859         echo " "
3860         if ./xenix; then
3861                 : null
3862         else
3863                 echo "Nor is it Venix..."
3864         fi
3865 fi
3866 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3867 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3868 $rm -f foo
3869
3870 case "$cc" in
3871 '') dflt=cc;;
3872 *) dflt="$cc";;
3873 esac
3874 rp="Use which C compiler?"
3875 . ./myread
3876 cc="$ans"
3877
3878 : See if they have not cc but they do have gcc
3879 . ./trygcc
3880 : Look for a hint-file generated 'call-back-unit'.  Now that the
3881 : user has specified the compiler, we may need to set or change some
3882 : other defaults.
3883 if $test -f cc.cbu; then
3884     . ./cc.cbu
3885 fi
3886 . ./checkcc
3887
3888 echo " "
3889 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3890 $cat >try.c <<EOM
3891 #include <stdio.h>
3892 int main() {
3893 #ifdef __GNUC__
3894 #ifdef __VERSION__
3895         printf("%s\n", __VERSION__);
3896 #else
3897         printf("%s\n", "1");
3898 #endif
3899 #endif
3900         return(0);
3901 }
3902 EOM
3903 if $cc -o try $ccflags $ldflags try.c; then
3904         gccversion=`$run ./try`
3905         case "$gccversion" in
3906         '') echo "You are not using GNU cc." ;;
3907         *)  echo "You are using GNU cc $gccversion."
3908             ccname=gcc
3909             ;;
3910         esac
3911 else
3912         echo " "
3913         echo "*** WHOA THERE!!! ***" >&4
3914         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3915         case "$knowitall" in
3916         '')
3917         echo "    You'd better start hunting for one and let me know about it." >&4
3918                 exit 1
3919                 ;;
3920         esac
3921 fi
3922 $rm -f try try.*
3923 case "$gccversion" in
3924 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3925 esac
3926 case "$gccversion" in
3927 '') gccosandvers='' ;;
3928 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3929    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3930    gccshortvers=''
3931    case "$gccosandvers" in
3932    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3933    $osname$osvers) ;; # looking good
3934    $osname*) cat <<EOM >&4
3935
3936 *** WHOA THERE!!! ***
3937
3938     Your gcc has not been compiled for the exact release of
3939     your operating system ($gccosandvers versus $osname$osvers).
3940
3941     In general it is a good idea to keep gcc synchronized with
3942     the operating system because otherwise serious problems
3943     may ensue when trying to compile software, like Perl.
3944
3945     I'm trying to be optimistic here, though, and will continue.
3946     If later during the configuration and build icky compilation
3947     problems appear (headerfile conflicts being the most common
3948     manifestation), I suggest reinstalling the gcc to match
3949     your operating system release.
3950
3951 EOM
3952       ;;
3953    *) gccosandvers='' ;; # failed to parse, better be silent
3954    esac
3955    ;;
3956 esac
3957 case "$ccname" in
3958 '') ccname="$cc" ;;
3959 esac
3960
3961 # gcc 3.* complain about adding -Idirectories that they already know about,
3962 # so we will take those off from locincpth.
3963 case "$gccversion" in
3964 3*)
3965     echo "main(){}">try.c
3966     for incdir in $locincpth; do
3967        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3968              grep '^c[cp]p*[01]: warning: changing search order '`
3969        if test "X$warn" != X; then
3970            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3971        fi
3972     done
3973     $rm -f try try.*
3974 esac
3975
3976 : decide how portable to be.  Allow command line overrides.
3977 case "$d_portable" in
3978 "$undef") ;;
3979 *)      d_portable="$define" ;;
3980 esac
3981
3982 : set up shell script to do ~ expansion
3983 cat >filexp <<EOSS
3984 $startsh
3985 : expand filename
3986 case "\$1" in
3987  ~/*|~)
3988         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3989         ;;
3990  ~*)
3991         if $test -f /bin/csh; then
3992                 /bin/csh -f -c "glob \$1"
3993                 failed=\$?
3994                 echo ""
3995                 exit \$failed
3996         else
3997                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3998                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3999                 if $test ! -d "\$dir"; then
4000                         me=\`basename \$0\`
4001                         echo "\$me: can't locate home directory for: \$name" >&2
4002                         exit 1
4003                 fi
4004                 case "\$1" in
4005                 */*)
4006                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
4007                         ;;
4008                 *)
4009                         echo \$dir
4010                         ;;
4011                 esac
4012         fi
4013         ;;
4014 *)
4015         echo \$1
4016         ;;
4017 esac
4018 EOSS
4019 chmod +x filexp
4020 $eunicefix filexp
4021
4022 : now set up to get a file name
4023 cat <<EOS >getfile
4024 $startsh
4025 EOS
4026 cat <<'EOSC' >>getfile
4027 tilde=''
4028 fullpath=''
4029 already=''
4030 skip=''
4031 none_ok=''
4032 exp_file=''
4033 nopath_ok=''
4034 orig_rp="$rp"
4035 orig_dflt="$dflt"
4036 case "$gfpth" in
4037 '') gfpth='.' ;;
4038 esac
4039
4040 case "$fn" in
4041 *\(*)
4042         : getfile will accept an answer from the comma-separated list
4043         : enclosed in parentheses even if it does not meet other criteria.
4044         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4045         fn=`echo $fn | sed 's/(.*)//'`
4046         ;;
4047 esac
4048
4049 case "$fn" in
4050 *:*)
4051         loc_file=`expr $fn : '.*:\(.*\)'`
4052         fn=`expr $fn : '\(.*\):.*'`
4053         ;;
4054 esac
4055
4056 case "$fn" in
4057 *~*) tilde=true;;
4058 esac
4059 case "$fn" in
4060 */*) fullpath=true;;
4061 esac
4062 case "$fn" in
4063 *+*) skip=true;;
4064 esac
4065 case "$fn" in
4066 *n*) none_ok=true;;
4067 esac
4068 case "$fn" in
4069 *e*) exp_file=true;;
4070 esac
4071 case "$fn" in
4072 *p*) nopath_ok=true;;
4073 esac
4074
4075 case "$fn" in
4076 *f*) type='File';;
4077 *d*) type='Directory';;
4078 *l*) type='Locate';;
4079 esac
4080
4081 what="$type"
4082 case "$what" in
4083 Locate) what='File';;
4084 esac
4085
4086 case "$exp_file" in
4087 '')
4088         case "$d_portable" in
4089         "$define") ;;
4090         *) exp_file=true;;
4091         esac
4092         ;;
4093 esac
4094
4095 cd ..
4096 while test "$type"; do
4097         redo=''
4098         rp="$orig_rp"
4099         dflt="$orig_dflt"
4100         case "$tilde" in
4101         true) rp="$rp (~name ok)";;
4102         esac
4103         . UU/myread
4104         if test -f UU/getfile.ok && \
4105                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4106         then
4107                 value="$ans"
4108                 ansexp="$ans"
4109                 break
4110         fi
4111         case "$ans" in
4112         none)
4113                 value=''
4114                 ansexp=''
4115                 case "$none_ok" in
4116                 true) type='';;
4117                 esac
4118                 ;;
4119         *)
4120                 case "$tilde" in
4121                 '') value="$ans"
4122                         ansexp="$ans";;
4123                 *)
4124                         value=`UU/filexp $ans`
4125                         case $? in
4126                         0)
4127                                 if test "$ans" != "$value"; then
4128                                         echo "(That expands to $value on this system.)"
4129                                 fi
4130                                 ;;
4131                         *) value="$ans";;
4132                         esac
4133                         ansexp="$value"
4134                         case "$exp_file" in
4135                         '') value="$ans";;
4136                         esac
4137                         ;;
4138                 esac
4139                 case "$fullpath" in
4140                 true)
4141                         case "$ansexp" in
4142                         /*) value="$ansexp" ;;
4143                         [a-zA-Z]:/*) value="$ansexp" ;;
4144                         *)
4145                                 redo=true
4146                                 case "$already" in
4147                                 true)
4148                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4149                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4150                                         ;;
4151                                 *)
4152                                 echo "Please give a full path name, starting with slash." >&4
4153                                         case "$tilde" in
4154                                         true)
4155                                 echo "Note that using ~name is ok provided it expands well." >&4
4156                                                 already=true
4157                                                 ;;
4158                                         esac
4159                                 esac
4160                                 ;;
4161                         esac
4162                         ;;
4163                 esac
4164                 case "$redo" in
4165                 '')
4166                         case "$type" in
4167                         File)
4168                                 for fp in $gfpth; do
4169                                         if test "X$fp" = X.; then
4170                                             pf="$ansexp"
4171                                         else    
4172                                             pf="$fp/$ansexp"
4173                                         fi
4174                                         if test -f "$pf"; then
4175                                                 type=''
4176                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4177                                         then
4178                                                 echo "($value is not a plain file, but that's ok.)"
4179                                                 type=''
4180                                         fi
4181                                         if test X"$type" = X; then
4182                                             value="$pf"
4183                                             break
4184                                         fi
4185                                 done
4186                                 ;;
4187                         Directory)
4188                                 for fp in $gfpth; do
4189                                         if test "X$fp" = X.; then
4190                                             dir="$ans"
4191                                             direxp="$ansexp"
4192                                         else    
4193                                             dir="$fp/$ansexp"
4194                                             direxp="$fp/$ansexp"
4195                                         fi
4196                                         if test -d "$direxp"; then
4197                                                 type=''
4198                                                 value="$dir"
4199                                                 break
4200                                         fi
4201                                 done
4202                                 ;;
4203                         Locate)
4204                                 if test -d "$ansexp"; then
4205                                         echo "(Looking for $loc_file in directory $value.)"
4206                                         value="$value/$loc_file"
4207                                         ansexp="$ansexp/$loc_file"
4208                                 fi
4209                                 if test -f "$ansexp"; then
4210                                         type=''
4211                                 fi
4212                                 case "$nopath_ok" in
4213                                 true)   case "$value" in
4214                                         */*) ;;
4215                                         *)      echo "Assuming $value will be in people's path."
4216                                                 type=''
4217                                                 ;;
4218                                         esac
4219                                         ;;
4220                                 esac
4221                                 ;;
4222                         esac
4223
4224                         case "$skip" in
4225                         true) type='';
4226                         esac
4227
4228                         case "$type" in
4229                         '') ;;
4230                         *)
4231                                 if test "$fastread" = yes; then
4232                                         dflt=y
4233                                 else
4234                                         dflt=n
4235                                 fi
4236                                 rp="$what $value doesn't exist.  Use that name anyway?"
4237                                 . UU/myread
4238                                 dflt=''
4239                                 case "$ans" in
4240                                 y*) type='';;
4241                                 *) echo " ";;
4242                                 esac
4243                                 ;;
4244                         esac
4245                         ;;
4246                 esac
4247                 ;;
4248         esac
4249 done
4250 cd UU
4251 ans="$value"
4252 rp="$orig_rp"
4253 dflt="$orig_dflt"
4254 rm -f getfile.ok
4255 test "X$gfpthkeep" != Xy && gfpth=""
4256 EOSC
4257
4258 : What should the include directory be ?
4259 echo " "
4260 $echo $n "Hmm...  $c"
4261 dflt='/usr/include'
4262 incpath=''
4263 mips_type=''
4264 if $test -f /bin/mips && /bin/mips; then
4265         echo "Looks like a MIPS system..."
4266         $cat >usr.c <<'EOCP'
4267 #ifdef SYSTYPE_BSD43
4268 /bsd43
4269 #endif
4270 EOCP
4271         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4272                 dflt='/bsd43/usr/include'
4273                 incpath='/bsd43'
4274                 mips_type='BSD 4.3'
4275         else
4276                 mips_type='System V'
4277         fi
4278         $rm -f usr.c usr.out
4279         echo "and you're compiling with the $mips_type compiler and libraries."
4280         xxx_prompt=y
4281         echo "exit 0" >mips
4282 else
4283         echo "Doesn't look like a MIPS system."
4284         xxx_prompt=n
4285         echo "exit 1" >mips
4286 fi
4287 chmod +x mips
4288 $eunicefix mips
4289 case "$usrinc" in
4290 '') ;;
4291 *) dflt="$usrinc";;
4292 esac
4293 case "$xxx_prompt" in
4294 y)      fn=d/
4295         echo " "
4296         rp='Where are the include files you want to use?'
4297         . ./getfile
4298         usrinc="$ans"
4299         ;;
4300 *)      usrinc="$dflt"
4301         ;;
4302 esac
4303
4304 : see how we invoke the C preprocessor
4305 echo " "
4306 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4307 cat <<'EOT' >testcpp.c
4308 #define ABC abc
4309 #define XYZ xyz
4310 ABC.XYZ
4311 EOT
4312 cd ..
4313 if test ! -f cppstdin; then
4314         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4315                 # AIX cc -E doesn't show the absolute headerfile
4316                 # locations but we'll cheat by using the -M flag.
4317                 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
4318         else
4319                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4320         fi
4321 else
4322         echo "Keeping your $hint cppstdin wrapper."
4323 fi
4324 chmod 755 cppstdin
4325 wrapper=`pwd`/cppstdin
4326 ok='false'
4327 cd UU
4328
4329 if $test "X$cppstdin" != "X" && \
4330         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4331         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4332 then
4333         echo "You used to use $cppstdin $cppminus so we'll use that again."
4334         case "$cpprun" in
4335         '') echo "But let's see if we can live without a wrapper..." ;;
4336         *)
4337                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4338                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4339                 then
4340                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4341                         ok='true'
4342                 else
4343                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4344                 fi
4345                 ;;
4346         esac
4347 else
4348         case "$cppstdin" in
4349         '') ;;
4350         *)
4351                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4352                 ;;
4353         esac
4354 fi
4355
4356 if $ok; then
4357         : nothing
4358 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4359         $cc -E <testcpp.c >testcpp.out 2>&1; \
4360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361         echo "Yup, it does."
4362         x_cpp="$cc -E"
4363         x_minus='';
4364 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4365         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367         echo "Yup, it does."
4368         x_cpp="$cc -E"
4369         x_minus='-';
4370 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4371         $cc -P <testcpp.c >testcpp.out 2>&1; \
4372         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4373         echo "Yipee, that works!"
4374         x_cpp="$cc -P"
4375         x_minus='';
4376 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4377         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4378         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4379         echo "At long last!"
4380         x_cpp="$cc -P"
4381         x_minus='-';
4382 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4383         $cpp <testcpp.c >testcpp.out 2>&1; \
4384         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4385         echo "It works!"
4386         x_cpp="$cpp"
4387         x_minus='';
4388 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4389         $cpp - <testcpp.c >testcpp.out 2>&1; \
4390         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4391         echo "Hooray, it works!  I was beginning to wonder."
4392         x_cpp="$cpp"
4393         x_minus='-';
4394 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4395         $wrapper <testcpp.c >testcpp.out 2>&1; \
4396         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4397         x_cpp="$wrapper"
4398         x_minus=''
4399         echo "Eureka!"
4400 else
4401         dflt=''
4402         rp="No dice.  I can't find a C preprocessor.  Name one:"
4403         . ./myread
4404         x_cpp="$ans"
4405         x_minus=''
4406         $x_cpp <testcpp.c >testcpp.out 2>&1
4407         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4408                 echo "OK, that will do." >&4
4409         else
4410 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4411                 exit 1
4412         fi
4413 fi
4414
4415 case "$ok" in
4416 false)
4417         cppstdin="$x_cpp"
4418         cppminus="$x_minus"
4419         cpprun="$x_cpp"
4420         cpplast="$x_minus"
4421         set X $x_cpp
4422         shift
4423         case "$1" in
4424         "$cpp")
4425                 echo "Perhaps can we force $cc -E using a wrapper..."
4426                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4427                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4428                 then
4429                         echo "Yup, we can."
4430                         cppstdin="$wrapper"
4431                         cppminus='';
4432                 else
4433                         echo "Nope, we'll have to live without it..."
4434                 fi
4435                 ;;
4436         esac
4437         case "$cpprun" in
4438         "$wrapper")
4439                 cpprun=''
4440                 cpplast=''
4441                 ;;
4442         esac
4443         ;;
4444 esac
4445
4446 case "$cppstdin" in
4447 "$wrapper"|'cppstdin') ;;
4448 *) $rm -f $wrapper;;
4449 esac
4450 $rm -f testcpp.c testcpp.out
4451
4452 : Set private lib path
4453 case "$plibpth" in
4454 '') if ./mips; then
4455                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4456         fi;;
4457 esac
4458 case "$libpth" in
4459 ' ') dlist='';;
4460 '') dlist="$loclibpth $plibpth $glibpth";;
4461 *) dlist="$libpth";;
4462 esac
4463
4464 : Now check and see which directories actually exist, avoiding duplicates
4465 libpth=''
4466 for xxx in $dlist
4467 do
4468     if $test -d $xxx; then
4469                 case " $libpth " in
4470                 *" $xxx "*) ;;
4471                 *) libpth="$libpth $xxx";;
4472                 esac
4473     fi
4474 done
4475 $cat <<'EOM'
4476
4477 Some systems have incompatible or broken versions of libraries.  Among
4478 the directories listed in the question below, please remove any you
4479 know not to be holding relevant libraries, and add any that are needed.
4480 Say "none" for none.
4481
4482 EOM
4483 case "$libpth" in
4484 '') dflt='none';;
4485 *)
4486         set X $libpth
4487         shift
4488         dflt=${1+"$@"}
4489         ;;
4490 esac
4491 rp="Directories to use for library searches?"
4492 . ./myread
4493 case "$ans" in
4494 none) libpth=' ';;
4495 *) libpth="$ans";;
4496 esac
4497
4498 : compute shared library extension
4499 case "$so" in
4500 '')
4501         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4502                 dflt='sl'
4503         else
4504                 dflt='so'
4505         fi
4506         ;;
4507 *) dflt="$so";;
4508 esac
4509 $cat <<EOM
4510
4511 On some systems, shared libraries may be available.  Answer 'none' if
4512 you want to suppress searching of shared libraries for the remainder
4513 of this configuration.
4514
4515 EOM
4516 rp='What is the file extension used for shared libraries?'
4517 . ./myread
4518 so="$ans"
4519
4520 : Define several unixisms.
4521 : Hints files or command line option can be used to override them.
4522 : The convoluted testing is in case hints files set either the old
4523 : or the new name.
4524 case "$_exe" in
4525 '')     case "$exe_ext" in
4526         '')     ;;
4527         *)      _exe="$exe_ext" ;;
4528         esac
4529         ;;
4530 esac
4531 case "$_a" in
4532 '')     case "$lib_ext" in
4533     '') _a='.a';;
4534         *)      _a="$lib_ext" ;;
4535         esac
4536         ;;
4537 esac
4538 case "$_o" in
4539 '') case "$obj_ext" in
4540         '')     _o='.o';;
4541         *)      _o="$obj_ext";;
4542         esac
4543         ;;
4544 esac
4545 case "$p_" in
4546 '') case "$path_sep" in
4547         '')     p_=':';;
4548         *)      p_="$path_sep";;
4549         esac
4550         ;;
4551 esac
4552 exe_ext=$_exe
4553 lib_ext=$_a
4554 obj_ext=$_o
4555 path_sep=$p_
4556
4557 : Which makefile gets called first.  This is used by make depend.
4558 case "$firstmakefile" in
4559 '') firstmakefile='makefile';;
4560 esac
4561
4562 case "$ccflags" in
4563 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4564 esac
4565
4566 case "$uselongdouble" in
4567 $define|true|[yY]*)     dflt='y';;
4568 *) dflt='n';;
4569 esac
4570 cat <<EOM
4571
4572 Perl can be built to take advantage of long doubles which
4573 (if available) may give more accuracy and range for floating point numbers.
4574
4575 If this doesn't make any sense to you, just accept the default '$dflt'.
4576 EOM
4577 rp='Try to use long doubles if available?'
4578 . ./myread
4579 case "$ans" in
4580 y|Y)    val="$define"   ;;
4581 *)      val="$undef"    ;;
4582 esac
4583 set uselongdouble
4584 eval $setvar
4585
4586 case "$uselongdouble" in
4587 true|[yY]*) uselongdouble="$define" ;;
4588 esac
4589
4590 : Look for a hint-file generated 'call-back-unit'.  If the
4591 : user has specified that long doubles should be used,
4592 : we may need to set or change some other defaults.
4593 if $test -f uselongdouble.cbu; then
4594     echo "Your platform has some specific hints regarding long doubles, using them..."
4595     . ./uselongdouble.cbu
4596 else
4597     case "$uselongdouble" in
4598         $define)
4599                 $cat <<EOM
4600 (Your platform does not have any specific hints for long doubles.)
4601 EOM
4602         ;;
4603     esac
4604 fi
4605
4606 : Looking for optional libraries
4607 echo " "
4608 echo "Checking for optional libraries..." >&4
4609 case "$libs" in
4610 ' '|'') dflt='';;
4611 *) dflt="$libs";;
4612 esac
4613 case "$libswanted" in
4614 '') libswanted='c_s';;
4615 esac
4616 case "$usesocks" in
4617 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4618 esac
4619 libsfound=''
4620 libsfiles=''
4621 libsdirs=''
4622 libspath=''
4623 for thisdir in $libpth $xlibpth; do
4624   test -d $thisdir && libspath="$libspath $thisdir"
4625 done
4626 for thislib in $libswanted; do
4627         for thisdir in $libspath; do
4628             xxx=''
4629             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4630                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4631                 $test -f "$xxx" && eval $libscheck
4632                 $test -f "$xxx" && libstyle=shared
4633             fi
4634             if test ! -f "$xxx"; then
4635                 xxx=$thisdir/lib$thislib.$so
4636                 $test -f "$xxx" && eval $libscheck
4637                 $test -f "$xxx" && libstyle=shared
4638             fi  
4639             if test ! -f "$xxx"; then
4640                 xxx=$thisdir/lib$thislib$_a
4641                 $test -f "$xxx" && eval $libscheck
4642                 $test -f "$xxx" && libstyle=static
4643             fi
4644             if test ! -f "$xxx"; then
4645                 xxx=$thisdir/$thislib$_a
4646                 $test -f "$xxx" && eval $libscheck
4647                 $test -f "$xxx" && libstyle=static
4648             fi
4649             if test ! -f "$xxx"; then
4650                 xxx=$thisdir/lib${thislib}_s$_a
4651                 $test -f "$xxx" && eval $libscheck
4652                 $test -f "$xxx" && libstyle=static
4653                 $test -f "$xxx" && thislib=${thislib}_s
4654             fi
4655             if test ! -f "$xxx"; then
4656                 xxx=$thisdir/Slib$thislib$_a
4657                 $test -f "$xxx" && eval $libscheck
4658                 $test -f "$xxx" && libstyle=static
4659             fi
4660             if $test -f "$xxx"; then
4661                 case "$libstyle" in
4662                 shared) echo "Found -l$thislib (shared)." ;;
4663                 static) echo "Found -l$thislib." ;;
4664                 *)      echo "Found -l$thislib ($libstyle)." ;;
4665                 esac
4666                 case " $dflt " in
4667                 *"-l$thislib "*);;
4668                 *) dflt="$dflt -l$thislib"
4669                    libsfound="$libsfound $xxx"
4670                    yyy=`basename $xxx`
4671                    libsfiles="$libsfiles $yyy"
4672                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4673                    case " $libsdirs " in
4674                    *" $yyy "*) ;;
4675                    *) libsdirs="$libsdirs $yyy" ;;
4676                    esac
4677                    ;;
4678                 esac
4679                 break
4680             fi  
4681         done
4682         if $test ! -f "$xxx"; then
4683             echo "No -l$thislib."
4684         fi
4685 done
4686 set X $dflt
4687 shift
4688 dflt="$*"
4689 case "$libs" in
4690 '') dflt="$dflt";;
4691 *) dflt="$libs";;
4692 esac
4693 case "$dflt" in
4694 ' '|'') dflt='none';;
4695 esac
4696
4697 $cat <<EOM
4698
4699 In order to compile $package on your machine, a number of libraries
4700 are usually needed.  Include any other special libraries here as well.
4701 Say "none" for none.  The default list is almost always right.
4702 EOM
4703
4704 echo " "
4705 rp="What libraries to use?"
4706 . ./myread
4707 case "$ans" in
4708 none) libs=' ';;
4709 *) libs="$ans";;
4710 esac
4711
4712 : determine optimization, if desired, or use for debug flag also
4713 case "$optimize" in
4714 ' '|$undef) dflt='none';;
4715 '') dflt='-O';;
4716 *) dflt="$optimize";;
4717 esac
4718 $cat <<EOH
4719
4720 By default, $package compiles with the -O flag to use the optimizer.
4721 Alternately, you might want to use the symbolic debugger, which uses
4722 the -g flag (on traditional Unix systems).  Either flag can be
4723 specified here.  To use neither flag, specify the word "none".
4724
4725 EOH
4726 rp="What optimizer/debugger flag should be used?"
4727 . ./myread
4728 optimize="$ans"
4729 case "$optimize" in
4730 'none') optimize=" ";;
4731 esac
4732
4733 dflt=''
4734 : We will not override a previous value, but we might want to
4735 : augment a hint file
4736 case "$hint" in
4737 default|recommended)
4738         case "$gccversion" in
4739         1*) dflt='-fpcc-struct-return' ;;
4740         esac
4741         case "$optimize" in
4742         *-g*) dflt="$dflt -DDEBUGGING";;
4743         esac
4744         case "$gccversion" in
4745         2*) if test -d /etc/conf/kconfig.d &&
4746                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4747                 then
4748                         # Interactive Systems (ISC) POSIX mode.
4749                         dflt="$dflt -posix"
4750                 fi
4751                 ;;
4752         esac
4753         case "$gccversion" in
4754         1*) ;;
4755         2.[0-8]*) ;;
4756         ?*)     echo " "
4757                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4758                 echo 'int main(void) { return 0; }' > gcctest.c
4759                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4760                         echo "Yes, it does." 2>&1
4761                         case "$ccflags" in
4762                         *strict-aliasing*)
4763                                 echo "Leaving current flags $ccflags alone." 2>&1
4764                                 ;;
4765                         *) dflt="$dflt -fno-strict-aliasing" ;;
4766                         esac
4767                 else
4768                         echo "Nope, it doesn't, but that's ok." 2>&1
4769                 fi
4770                 ;;
4771         esac
4772         # For gcc, adding -pipe speeds up compilations for some, but apparently
4773         # some assemblers can't read from stdin.  (It also slows down compilations
4774         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
4775         case "$gccversion" in
4776         ?*)     echo " "
4777                 echo "Checking if your compiler accepts -pipe" 2>&1
4778                 echo 'int main(void) { return 0; }' > gcctest.c
4779                 if $cc -pipe -o gcctest gcctest.c; then
4780                         echo "Yes, it does." 2>&1
4781                         case "$ccflags" in
4782                         *-pipe*)
4783                                 echo "Leaving current flags $ccflags alone." 2>&1
4784                                 ;;
4785                         *) dflt="$dflt -pipe" ;;
4786                         esac
4787                 else
4788                         echo "Nope, it doesn't, but that's ok." 2>&1
4789                 fi
4790
4791                 echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
4792                 echo 'int main(void) { return 0; }' > gcctest.c
4793                 if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
4794                         echo "Yes, it does." 2>&1
4795                         case "$ccflags" in
4796                         *-Wdeclaration-after-statement*)
4797                                 echo "Leaving current flags $ccflags alone." 2>&1
4798                                 ;;
4799                         *) dflt="$dflt -Wdeclaration-after-statement" ;;
4800                         esac
4801                 else
4802                         echo "Nope, it doesn't, but that's ok." 2>&1
4803                 fi
4804                 ;;
4805         esac
4806         ;;
4807 esac
4808
4809 case "$mips_type" in
4810 *BSD*|'') inclwanted="$locincpth $usrinc";;
4811 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4812 esac
4813 for thisincl in $inclwanted; do
4814         if $test -d $thisincl; then
4815                 if $test x$thisincl != x$usrinc; then
4816                         case "$dflt" in
4817                         *" -I$thisincl "*);;
4818                         *) dflt="$dflt -I$thisincl ";;
4819                         esac
4820                 fi
4821         fi
4822 done
4823
4824 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4825         xxx=true;
4826 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4827         xxx=true;
4828 else
4829         xxx=false;
4830 fi;
4831 if $xxx; then
4832         case "$dflt" in
4833         *$2*);;
4834         *) dflt="$dflt -D$2";;
4835         esac;
4836 fi'
4837
4838 set signal.h LANGUAGE_C; eval $inctest
4839
4840 case "$usesocks" in
4841 $define)
4842         ccflags="$ccflags -DSOCKS"
4843         ;;
4844 esac
4845
4846 case "$hint" in
4847 default|recommended) dflt="$ccflags $dflt" ;;
4848 *) dflt="$ccflags";;
4849 esac
4850
4851 case "$dflt" in
4852 ''|' ') dflt=none;;
4853 esac
4854
4855 $cat <<EOH
4856
4857 Your C compiler may want other flags.  For this question you should include
4858 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4859 but you should NOT include libraries or ld flags like -lwhatever.  If you
4860 want $package to honor its debug switch, you should include -DDEBUGGING here.
4861 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4862
4863 To use no flags, specify the word "none".
4864
4865 EOH
4866 set X $dflt
4867 shift
4868 dflt=${1+"$@"}
4869 rp="Any additional cc flags?"
4870 . ./myread
4871 case "$ans" in
4872 none) ccflags='';;
4873 *) ccflags="$ans";;
4874 esac
4875
4876 : the following weeds options from ccflags that are of no interest to cpp
4877 case "$cppflags" in
4878 '') cppflags="$ccflags" ;;
4879 *)  cppflags="$cppflags $ccflags" ;;
4880 esac
4881 case "$gccversion" in
4882 1*) cppflags="$cppflags -D__GNUC__"
4883 esac
4884 case "$mips_type" in
4885 '');;
4886 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4887 esac
4888 case "$cppflags" in
4889 '');;
4890 *)
4891         echo " "
4892         echo "Let me guess what the preprocessor flags are..." >&4
4893         set X $cppflags
4894         shift
4895         cppflags=''
4896         $cat >cpp.c <<'EOM'
4897 #define BLURFL foo
4898
4899 BLURFL xx LFRULB
4900 EOM
4901         previous=''
4902         for flag in $*
4903         do
4904                 case "$flag" in
4905                 -*) ftry="$flag";;
4906                 *) ftry="$previous $flag";;
4907                 esac
4908                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4909                         >cpp1.out 2>/dev/null && \
4910                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4911                         >cpp2.out 2>/dev/null && \
4912                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4913                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4914                 then
4915                         cppflags="$cppflags $ftry"
4916                         previous=''
4917                 else
4918                         previous="$flag"
4919                 fi
4920         done
4921         set X $cppflags
4922         shift
4923         cppflags=${1+"$@"}
4924         case "$cppflags" in
4925         *-*)  echo "They appear to be: $cppflags";;
4926         esac
4927         $rm -f cpp.c cpp?.out
4928         ;;
4929 esac
4930
4931 : flags used in final linking phase
4932 case "$ldflags" in
4933 '') if ./venix; then
4934                 dflt='-i -z'
4935         else
4936                 dflt=''
4937         fi
4938         case "$ccflags" in
4939         *-posix*) dflt="$dflt -posix" ;;
4940         esac
4941         ;;
4942 *) dflt="$ldflags";;
4943 esac
4944
4945 : Try to guess additional flags to pick up local libraries.
4946 for thislibdir in $libpth; do
4947         case " $loclibpth " in
4948         *" $thislibdir "*)
4949                 case "$dflt " in
4950                 *"-L$thislibdir "*) ;;
4951                 *)  dflt="$dflt -L$thislibdir" ;;
4952                 esac
4953                 ;;
4954         esac
4955 done
4956
4957 case "$dflt" in
4958 '') dflt='none' ;;
4959 esac
4960
4961 $cat <<EOH
4962
4963 Your C linker may need flags.  For this question you should
4964 include -L/whatever and any other flags used by the C linker, but you
4965 should NOT include libraries like -lwhatever.
4966
4967 Make sure you include the appropriate -L/path flags if your C linker
4968 does not normally search all of the directories you specified above,
4969 namely
4970         $libpth
4971 To use no flags, specify the word "none".
4972
4973 EOH
4974
4975 rp="Any additional ld flags (NOT including libraries)?"
4976 . ./myread
4977 case "$ans" in
4978 none) ldflags='';;
4979 *) ldflags="$ans";;
4980 esac
4981 rmlist="$rmlist pdp11"
4982
4983 : coherency check
4984 echo " "
4985 echo "Checking your choice of C compiler and flags for coherency..." >&4
4986 $cat > try.c <<'EOF'
4987 #include <stdio.h>
4988 int main() { printf("Ok\n"); return(0); }
4989 EOF
4990 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4991 shift
4992 $cat >try.msg <<'EOM'
4993 I've tried to compile and run the following simple program:
4994
4995 EOM
4996 $cat try.c >> try.msg
4997
4998 $cat >> try.msg <<EOM
4999
5000 I used the command:
5001
5002         $*
5003         $run ./try
5004
5005 and I got the following output:
5006
5007 EOM
5008 dflt=y
5009 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5010         if $sh -c "$run ./try" >>try.msg 2>&1; then
5011                 xxx=`$run ./try`
5012                 case "$xxx" in
5013                 "Ok") dflt=n ;;
5014                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5015                         case " $libs " in
5016                         *" -lsfio "*)
5017                                 cat >> try.msg <<'EOQS'
5018 If $libs contains -lsfio, and sfio is mis-configured, then it
5019 sometimes (apparently) runs and exits with a 0 status, but with no
5020 output!  It may have to do with sfio's use of _exit vs. exit.
5021
5022 EOQS
5023                                 rp="You have a big problem.  Shall I abort Configure"
5024                                 dflt=y
5025                                 ;;
5026                         esac
5027                         ;;
5028                 esac
5029         else
5030                 echo "The program compiled OK, but exited with status $?." >>try.msg
5031                 rp="You have a problem.  Shall I abort Configure"
5032                 dflt=y
5033         fi
5034 else
5035         echo "I can't compile the test program." >>try.msg
5036         rp="You have a BIG problem.  Shall I abort Configure"
5037         dflt=y
5038 fi
5039 case "$dflt" in
5040 y)
5041         $cat try.msg >&4
5042         case "$knowitall" in
5043         '')
5044                 echo "(The supplied flags or libraries might be incorrect.)"
5045                 ;;
5046         *) dflt=n;;
5047         esac
5048         echo " "
5049         . ./myread
5050         case "$ans" in
5051         n*|N*) ;;
5052         *)      echo "Ok.  Stopping Configure." >&4
5053                 exit 1
5054                 ;;
5055         esac
5056         ;;
5057 n) echo "OK, that should do.";;
5058 esac
5059 $rm -f try try.* core
5060
5061 : define a shorthand compile call
5062 compile='
5063 mc_file=$1;
5064 shift;
5065 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5066 : define a shorthand compile call for compilations that should be ok.
5067 compile_ok='
5068 mc_file=$1;
5069 shift;
5070 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5071
5072 : determine filename position in cpp output
5073 echo " "
5074 echo "Computing filename position in cpp output for #include directives..." >&4
5075 case "$osname" in
5076 vos) testaccess=-e ;;
5077 *)   testaccess=-r ;;
5078 esac
5079 echo '#include <stdio.h>' > foo.c
5080 $cat >fieldn <<EOF
5081 $startsh
5082 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5083 $grep '^[       ]*#.*stdio\.h' | \
5084 while read cline; do
5085         pos=1
5086         set \$cline
5087         while $test \$# -gt 0; do
5088                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5089                         echo "\$pos"
5090                         exit 0
5091                 fi
5092                 shift
5093                 pos=\`expr \$pos + 1\`
5094         done
5095 done
5096 EOF
5097 chmod +x fieldn
5098 fieldn=`./fieldn`
5099 $rm -f foo.c fieldn
5100 case $fieldn in
5101 '') pos='???';;
5102 1) pos=first;;
5103 2) pos=second;;
5104 3) pos=third;;
5105 *) pos="${fieldn}th";;
5106 esac
5107 echo "Your cpp writes the filename in the $pos field of the line."
5108
5109 case "$osname" in
5110 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5111 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5112 *)   cppfilter='' ;;
5113 esac
5114 : locate header file
5115 $cat >findhdr <<EOF
5116 $startsh
5117 wanted=\$1
5118 name=''
5119 for usrincdir in $usrinc
5120 do
5121         if test -f \$usrincdir/\$wanted; then
5122                 echo "\$usrincdir/\$wanted"
5123                 exit 0
5124         fi
5125 done
5126 awkprg='{ print \$$fieldn }'
5127 echo "#include <\$wanted>" > foo\$\$.c
5128 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5129 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5130 while read cline; do
5131         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5132         case "\$name" in
5133         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5134         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5135         *) exit 2;;
5136         esac;
5137 done;
5138 #
5139 # status = 0: grep returned 0 lines, case statement not executed
5140 # status = 1: headerfile found
5141 # status = 2: while loop executed, no headerfile found
5142 #
5143 status=\$?
5144 $rm -f foo\$\$.c;
5145 if test \$status -eq 1; then
5146         exit 0;
5147 fi
5148 exit 1
5149 EOF
5150 chmod +x findhdr
5151
5152 : define an alternate in-header-list? function
5153 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5154 cont=true; xxf="echo \"<\$1> found.\" >&4";
5155 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5156 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5157 esac;
5158 case $# in 4) instead=instead;; *) instead="at last";; esac;
5159 while $test "$cont"; do
5160         xxx=`./findhdr $1`
5161         var=$2; eval "was=\$$2";
5162         if $test "$xxx" && $test -r "$xxx";
5163         then eval $xxf;
5164         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5165                 cont="";
5166         else eval $xxnf;
5167         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5168         set $yyy; shift; shift; yyy=$@;
5169         case $# in 0) cont="";;
5170         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5171                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5172         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5173                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5174         esac;
5175 done;
5176 while $test "$yyy";
5177 do set $yyy; var=$2; eval "was=\$$2";
5178         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5179         set $yyy; shift; shift; yyy=$@;
5180 done'
5181
5182 : see if stdlib is available
5183 set stdlib.h i_stdlib
5184 eval $inhdr
5185
5186 : check for lengths of integral types
5187 echo " "
5188 case "$intsize" in
5189 '')
5190         echo "Checking to see how big your integers are..." >&4
5191         $cat >try.c <<EOCP
5192 #include <stdio.h>
5193 #$i_stdlib I_STDLIB
5194 #ifdef I_STDLIB
5195 #include <stdlib.h>
5196 #endif
5197 int main()
5198 {
5199         printf("intsize=%d;\n", (int)sizeof(int));
5200         printf("longsize=%d;\n", (int)sizeof(long));
5201         printf("shortsize=%d;\n", (int)sizeof(short));
5202         exit(0);
5203 }
5204 EOCP
5205         set try
5206         if eval $compile_ok && $run ./try > /dev/null; then
5207                 eval `$run ./try`
5208                 echo "Your integers are $intsize bytes long."
5209                 echo "Your long integers are $longsize bytes long."
5210                 echo "Your short integers are $shortsize bytes long."
5211         else
5212                 $cat >&4 <<EOM
5213 !
5214 Help! I can't compile and run the intsize test program: please enlighten me!
5215 (This is probably a misconfiguration in your system or libraries, and
5216 you really ought to fix it.  Still, I'll try anyway.)
5217 !
5218 EOM
5219                 dflt=4
5220                 rp="What is the size of an integer (in bytes)?"
5221                 . ./myread
5222                 intsize="$ans"
5223                 dflt=$intsize
5224                 rp="What is the size of a long integer (in bytes)?"
5225                 . ./myread
5226                 longsize="$ans"
5227                 dflt=2
5228                 rp="What is the size of a short integer (in bytes)?"
5229                 . ./myread
5230                 shortsize="$ans"
5231         fi
5232         ;;
5233 esac
5234 $rm -f try try.*
5235
5236 : check for long long
5237 echo " "
5238 echo "Checking to see if you have long long..." >&4
5239 echo 'int main() { long long x = 7; return 0; }' > try.c
5240 set try
5241 if eval $compile; then
5242         val="$define"
5243         echo "You have long long."
5244 else
5245         val="$undef"
5246         echo "You do not have long long."
5247 fi
5248 $rm try.*
5249 set d_longlong
5250 eval $setvar
5251
5252 : check for length of long long
5253 case "${d_longlong}${longlongsize}" in
5254 $define)
5255         echo " "
5256         echo "Checking to see how big your long longs are..." >&4
5257         $cat >try.c <<'EOCP'
5258 #include <stdio.h>
5259 int main()
5260 {
5261     printf("%d\n", (int)sizeof(long long));
5262     return(0);
5263 }
5264 EOCP
5265         set try
5266         if eval $compile_ok; then
5267                 longlongsize=`$run ./try`
5268                 echo "Your long longs are $longlongsize bytes long."
5269         else
5270                 dflt='8'
5271                 echo " "
5272                 echo "(I can't seem to compile the test program.  Guessing...)"
5273                 rp="What is the size of a long long (in bytes)?"
5274                 . ./myread
5275                 longlongsize="$ans"
5276         fi
5277         if $test "X$longsize" = "X$longlongsize"; then
5278                 echo "(That isn't any different from an ordinary long.)"
5279         fi      
5280         ;;
5281 esac
5282 $rm -f try.* try
5283
5284 : see if inttypes.h is available
5285 : we want a real compile instead of Inhdr because some systems
5286 : have an inttypes.h which includes non-existent headers
5287 echo " "
5288 $cat >try.c <<EOCP
5289 #include <inttypes.h>
5290 int main() {
5291         static int32_t foo32 = 0x12345678;
5292 }
5293 EOCP
5294 set try
5295 if eval $compile; then
5296         echo "<inttypes.h> found." >&4
5297         val="$define"
5298 else
5299         echo "<inttypes.h> NOT found." >&4
5300         val="$undef"
5301 fi
5302 $rm -f try.c try
5303 set i_inttypes
5304 eval $setvar
5305
5306 : check for int64_t
5307 echo " "
5308 echo "Checking to see if you have int64_t..." >&4
5309 $cat >try.c <<EOCP
5310 #include <sys/types.h>
5311 #$i_inttypes I_INTTYPES
5312 #ifdef I_INTTYPES
5313 #include <inttypes.h>
5314 #endif
5315 int main() { int64_t x = 7; }
5316 EOCP
5317 set try
5318 if eval $compile; then
5319         val="$define"
5320         echo "You have int64_t."
5321 else
5322         val="$undef"
5323         echo "You do not have int64_t."
5324 fi
5325 $rm -f try try.*
5326 set d_int64_t
5327 eval $setvar
5328
5329
5330 echo " "
5331 echo "Checking which 64-bit integer type we could use..." >&4
5332
5333 case "$intsize" in
5334 8) val=int
5335    set quadtype
5336    eval $setvar
5337    val='"unsigned int"'
5338    set uquadtype
5339    eval $setvar
5340    quadkind=1
5341    ;;
5342 *) case "$longsize" in
5343    8) val=long
5344       set quadtype
5345       eval $setvar
5346       val='"unsigned long"'
5347       set uquadtype
5348       eval $setvar
5349       quadkind=2
5350       ;;
5351    *) case "$d_longlong:$longlongsize" in
5352       define:8)
5353         val='"long long"'
5354         set quadtype
5355         eval $setvar
5356         val='"unsigned long long"'
5357         set uquadtype
5358         eval $setvar
5359         quadkind=3
5360         ;;
5361       *) case "$d_int64_t" in
5362          define)
5363            val=int64_t
5364            set quadtype
5365            eval $setvar
5366            val=uint64_t
5367            set uquadtype
5368            eval $setvar
5369            quadkind=4
5370            ;;
5371          esac
5372          ;;
5373       esac
5374       ;;
5375    esac
5376    ;;
5377 esac
5378
5379 case "$quadtype" in
5380 '')     echo "Alas, no 64-bit integer types in sight." >&4
5381         d_quad="$undef"
5382         ;;
5383 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5384         d_quad="$define"
5385         ;;
5386 esac
5387
5388
5389 case "$uselonglong" in
5390 "$define"|true|[yY]*)
5391         cat <<EOM >&4
5392
5393 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5394 EOM
5395         use64bitint="$define"
5396         ;;
5397 esac                          
5398 case "$use64bits" in
5399 "$define"|true|[yY]*)
5400         cat <<EOM >&4
5401
5402 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5403 EOM
5404         use64bitint="$define"
5405         ;;
5406 esac                          
5407 case "$use64bitints" in
5408 "$define"|true|[yY]*)
5409         cat <<EOM >&4
5410
5411 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5412 EOM
5413         use64bitint="$define"
5414         ;;
5415 esac                          
5416 case "$use64bitsint" in
5417 "$define"|true|[yY]*)
5418         cat <<EOM >&4
5419
5420 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5421 EOM
5422         use64bitint="$define"
5423         ;;
5424 esac                          
5425 case "$uselonglongs" in
5426 "$define"|true|[yY]*)
5427         cat <<EOM >&4
5428
5429 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5430 EOM
5431         use64bitint="$define"
5432         ;;
5433 esac                          
5434 case "$use64bitsall" in
5435 "$define"|true|[yY]*)
5436         cat <<EOM >&4
5437
5438 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5439 EOM
5440         use64bitall="$define"
5441         ;;
5442 esac                          
5443
5444 case "$ccflags" in
5445 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5446 esac
5447 case "$use64bitall" in
5448 "$define"|true|[yY]*) use64bitint="$define" ;;
5449 esac
5450
5451 case "$longsize" in
5452 8) cat <<EOM
5453
5454 You have natively 64-bit long integers.
5455 EOM
5456    val="$define"
5457    ;;
5458 *) case "$use64bitint" in
5459    "$define"|true|[yY]*) dflt='y';;
5460    *) dflt='n';;
5461    esac
5462    case "$d_quad" in
5463    "$define") ;;
5464    *) dflt='n' ;;
5465    esac
5466    cat <<EOM
5467
5468 Perl can be built to take advantage of 64-bit integer types
5469 on some systems.  To do so, Configure can be run with -Duse64bitint.
5470 Choosing this option will most probably introduce binary incompatibilities.
5471
5472 If this doesn't make any sense to you, just accept the default '$dflt'.
5473 (The default has been chosen based on your configuration.)
5474 EOM
5475    rp='Try to use 64-bit integers, if available?'
5476    . ./myread
5477    case "$ans" in
5478    [yY]*) val="$define" ;;
5479    *)     val="$undef"  ;;
5480    esac
5481    ;;
5482 esac
5483 set use64bitint
5484 eval $setvar
5485
5486 case "$use64bitall" in
5487 "$define"|true|[yY]*) dflt='y' ;;
5488 *) case "$longsize" in
5489    8) dflt='y' ;;
5490    *) dflt='n' ;;
5491    esac
5492    ;;
5493 esac    
5494 cat <<EOM
5495
5496 You may also choose to try maximal 64-bitness.  It means using as much
5497 64-bitness as possible on the platform.  This in turn means even more
5498 binary incompatibilities.  On the other hand, your platform may not
5499 have any more 64-bitness available than what you already have chosen.
5500
5501 If this doesn't make any sense to you, just accept the default '$dflt'.
5502 (The default has been chosen based on your configuration.)
5503 EOM
5504 rp='Try to use maximal 64-bit support, if available?'
5505 . ./myread
5506 case "$ans" in
5507 [yY]*) val="$define" ;;
5508 *)     val="$undef"  ;;
5509 esac
5510 set use64bitall
5511 eval $setvar
5512 case "$use64bitall" in
5513 "$define")
5514         case "$use64bitint" in
5515         "$undef")
5516                 cat <<EOM
5517
5518 Since you have chosen a maximally 64-bit build, I'm also turning on
5519 the use of 64-bit integers.
5520 EOM
5521                 use64bitint="$define" ;;
5522         esac
5523         ;;
5524 esac
5525
5526 : Look for a hint-file generated 'call-back-unit'.  If the
5527 : user has specified that a 64-bit perl is to be built,
5528 : we may need to set or change some other defaults.
5529 if $test -f use64bitint.cbu; then
5530         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5531         . ./use64bitint.cbu
5532 fi
5533 case "$use64bitint" in
5534 "$define"|true|[yY]*)
5535         case "$longsize" in
5536         4) case "$archname64" in
5537            '') archname64=64int ;;
5538            esac
5539            ;;
5540         esac
5541         ;;
5542 esac
5543
5544 : Look for a hint-file generated 'call-back-unit'.  If the
5545 : user has specified that a maximally 64-bit perl is to be built,
5546 : we may need to set or change some other defaults.
5547 if $test -f use64bitall.cbu; then
5548         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5549         . ./use64bitall.cbu
5550 fi
5551 case "$use64bitall" in
5552 "$define"|true|[yY]*)
5553         case "$longsize" in
5554         4) case "$archname64" in
5555            ''|64int) archname64=64all ;;
5556            esac
5557            ;;
5558         esac
5559         ;;
5560 esac
5561
5562 case "$d_quad:$use64bitint" in
5563 $undef:$define)
5564         cat >&4 <<EOF
5565
5566 *** You have chosen to use 64-bit integers,
5567 *** but none can be found.
5568 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5569 *** Cannot continue, aborting.
5570
5571 EOF
5572         exit 1
5573         ;;
5574 esac
5575
5576 : check for length of double
5577 echo " "
5578 case "$doublesize" in
5579 '')
5580         echo "Checking to see how big your double precision numbers are..." >&4
5581         $cat >try.c <<EOCP
5582 #include <stdio.h>
5583 #$i_stdlib I_STDLIB
5584 #ifdef I_STDLIB
5585 #include <stdlib.h>
5586 #endif
5587 int main()
5588 {
5589     printf("%d\n", (int)sizeof(double));
5590     exit(0);
5591 }
5592 EOCP
5593         set try
5594         if eval $compile_ok; then
5595                 doublesize=`$run ./try`
5596                 echo "Your double is $doublesize bytes long."
5597         else
5598                 dflt='8'
5599                 echo "(I can't seem to compile the test program.  Guessing...)"
5600                 rp="What is the size of a double precision number (in bytes)?"
5601                 . ./myread
5602                 doublesize="$ans"
5603         fi
5604         ;;
5605 esac
5606 $rm -f try.c try
5607
5608 : check for long doubles
5609 echo " "
5610 echo "Checking to see if you have long double..." >&4
5611 echo 'int main() { long double x = 7.0; }' > try.c
5612 set try
5613 if eval $compile; then
5614         val="$define"
5615         echo "You have long double."
5616 else
5617         val="$undef"
5618         echo "You do not have long double."
5619 fi
5620 $rm try.*
5621 set d_longdbl
5622 eval $setvar
5623
5624 : check for length of long double
5625 case "${d_longdbl}${longdblsize}" in
5626 $define)
5627         echo " "
5628         echo "Checking to see how big your long doubles are..." >&4
5629         $cat >try.c <<'EOCP'
5630 #include <stdio.h>
5631 int main()
5632 {
5633         printf("%d\n", sizeof(long double));
5634 }
5635 EOCP
5636         set try
5637         set try
5638         if eval $compile; then
5639                 longdblsize=`$run ./try`
5640                 echo "Your long doubles are $longdblsize bytes long."
5641         else
5642                 dflt='8'
5643                 echo " "
5644                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5645                 rp="What is the size of a long double (in bytes)?"
5646                 . ./myread
5647                 longdblsize="$ans"
5648         fi
5649         if $test "X$doublesize" = "X$longdblsize"; then
5650                 echo "That isn't any different from an ordinary double."
5651                 echo "I'll keep your setting anyway, but you may see some"
5652                 echo "harmless compilation warnings."
5653         fi      
5654         ;;
5655 esac
5656 $rm -f try.* try
5657
5658 : determine the architecture name
5659 echo " "
5660 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5661         tarch=`arch`"-$osname"
5662 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5663         if uname -m > tmparch 2>&1 ; then
5664                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5665                         -e 's/$/'"-$osname/" tmparch`
5666         else
5667                 tarch="$osname"
5668         fi
5669         $rm -f tmparch
5670 else
5671         tarch="$osname"
5672 fi
5673 case "$myarchname" in
5674 ''|"$tarch") ;;
5675 *)
5676         echo "(Your architecture name used to be $myarchname.)"
5677         archname=''
5678         ;;
5679 esac
5680 case "$targetarch" in
5681 '') ;;
5682 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5683 esac
5684 myarchname="$tarch"
5685 case "$archname" in
5686 '') dflt="$tarch";;
5687 *) dflt="$archname";;
5688 esac
5689 rp='What is your architecture name'
5690 . ./myread
5691 archname="$ans"
5692 case "$usethreads" in
5693 $define)
5694         echo "Threads selected." >&4
5695         case "$archname" in
5696         *-thread*) echo "...and architecture name already has -thread." >&4
5697                 ;;
5698         *)      archname="$archname-thread"
5699                 echo "...setting architecture name to $archname." >&4
5700                 ;;
5701         esac
5702         ;;
5703 esac
5704 case "$usemultiplicity" in
5705 $define)
5706         echo "Multiplicity selected." >&4
5707         case "$archname" in
5708         *-multi*) echo "...and architecture name already has -multi." >&4
5709                 ;;
5710         *)      archname="$archname-multi"
5711                 echo "...setting architecture name to $archname." >&4
5712                 ;;
5713         esac
5714         ;;
5715 esac
5716 case "$use64bitint$use64bitall" in
5717 *"$define"*)
5718         case "$archname64" in
5719         '')
5720                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5721                 ;;
5722         *)
5723                 case "$use64bitint" in
5724                 "$define") echo "64 bit integers selected." >&4 ;;
5725                 esac
5726                 case "$use64bitall" in
5727                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5728                 esac
5729                 case "$archname" in
5730                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5731                         ;;
5732                 *)      archname="$archname-$archname64"
5733                         echo "...setting architecture name to $archname." >&4
5734                         ;;
5735                 esac
5736                 ;;
5737         esac
5738 esac
5739 case "$uselongdouble" in
5740 $define)
5741         echo "Long doubles selected." >&4
5742         case "$longdblsize" in
5743         $doublesize)
5744                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5745                 ;;
5746         *)
5747                 case "$archname" in
5748                 *-ld*) echo "...and architecture name already has -ld." >&4
5749                         ;;
5750                 *)      archname="$archname-ld"
5751                         echo "...setting architecture name to $archname." >&4
5752                         ;;
5753                 esac
5754                 ;;
5755         esac
5756         ;;
5757 esac
5758 case "$useperlio" in
5759 $define)
5760         echo "Perlio selected." >&4
5761         ;;
5762 *)
5763         echo "Perlio not selected, using stdio." >&4
5764         case "$archname" in
5765         *-stdio*) echo "...and architecture name already has -stdio." >&4
5766                 ;;
5767         *)      archname="$archname-stdio"
5768                 echo "...setting architecture name to $archname." >&4
5769                 ;;
5770         esac
5771         ;;
5772 esac
5773 if $test -f archname.cbu; then
5774         echo "Your platform has some specific hints for architecture name, using them..."
5775         . ./archname.cbu
5776 fi
5777
5778 : determine root of directory hierarchy where package will be installed.
5779 case "$prefix" in
5780 '')
5781         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5782         ;;
5783 *?/)
5784         dflt=`echo "$prefix" | sed 's/.$//'`
5785         ;;
5786 *)
5787         dflt="$prefix"
5788         ;;
5789 esac
5790 $cat <<EOM
5791
5792 By default, $package will be installed in $dflt/bin, manual pages
5793 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5794 installation directories. Typically this is something like /usr/local.
5795 If you wish to have binaries under /usr/bin but other parts of the
5796 installation under /usr/local, that's ok: you will be prompted
5797 separately for each of the installation directories, the prefix being
5798 only used to set the defaults.
5799
5800 EOM
5801 fn=d~
5802 rp='Installation prefix to use?'
5803 . ./getfile
5804 oldprefix=''
5805 case "$prefix" in
5806 '') ;;
5807 *)
5808         case "$ans" in
5809         "$prefix") ;;
5810         *) oldprefix="$prefix";;
5811         esac
5812         ;;
5813 esac
5814 prefix="$ans"
5815 prefixexp="$ansexp"
5816
5817 case "$afsroot" in
5818 '')     afsroot=/afs ;;
5819 *)      afsroot=$afsroot ;;
5820 esac
5821
5822 : is AFS running?
5823 echo " "
5824 case "$afs" in
5825 $define|true)   afs=true ;;
5826 $undef|false)   afs=false ;;
5827 *)      if test -d $afsroot; then
5828                 afs=true
5829         else
5830                 afs=false
5831         fi
5832         ;;
5833 esac
5834 if $afs; then
5835         echo "AFS may be running... I'll be extra cautious then..." >&4
5836 else
5837         echo "AFS does not seem to be running..." >&4
5838 fi
5839
5840 : determine installation prefix for where package is to be installed.
5841 if $afs; then 
5842 $cat <<EOM
5843
5844 Since you are running AFS, I need to distinguish the directory in which
5845 files will reside from the directory in which they are installed (and from
5846 which they are presumably copied to the former directory by occult means).
5847
5848 EOM
5849         case "$installprefix" in
5850         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5851         *) dflt="$installprefix";;
5852         esac
5853 else
5854 $cat <<EOM
5855
5856 In some special cases, particularly when building $package for distribution,
5857 it is convenient to distinguish the directory in which files should be
5858 installed from the directory ($prefix) in which they will
5859 eventually reside.  For most users, these two directories are the same.
5860
5861 EOM
5862         case "$installprefix" in
5863         '') dflt=$prefix ;;
5864         *) dflt=$installprefix;;
5865         esac
5866 fi
5867 fn=d~
5868 rp='What installation prefix should I use for installing files?'
5869 . ./getfile
5870 installprefix="$ans"
5871 installprefixexp="$ansexp"
5872
5873 : set the prefixit variable, to compute a suitable default value
5874 prefixit='case "$3" in
5875 ""|none)
5876         case "$oldprefix" in
5877         "") eval "$1=\"\$$2\"";;
5878         *)
5879                 case "$3" in
5880                 "") eval "$1=";;
5881                 none)
5882                         eval "tp=\"\$$2\"";
5883                         case "$tp" in
5884                         ""|" ") eval "$1=\"\$$2\"";;
5885                         *) eval "$1=";;
5886                         esac;;
5887                 esac;;
5888         esac;;
5889 *)
5890         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5891         case "$tp" in
5892         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5893         /*-$oldprefix/*|\~*-$oldprefix/*)
5894                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5895         *) eval "$1=\"\$$2\"";;
5896         esac;;
5897 esac'
5898
5899 : get the patchlevel
5900 echo " "
5901 echo "Getting the current patchlevel..." >&4
5902 if $test -r $rsrc/patchlevel.h;then
5903         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5904         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5905         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5906         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5907         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5908         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5909         perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5910 else
5911         revision=0
5912         patchlevel=0
5913         subversion=0
5914         api_revision=0
5915         api_version=0
5916         api_subversion=0
5917         perl_patchlevel=0
5918         $echo "(You do not have patchlevel.h.  Eek.)"
5919 fi
5920 if $test -r $rsrc/.patch ; then
5921         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5922                 perl_patchlevel=`cat $rsrc/.patch`
5923         fi
5924 fi
5925 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5926 version_patchlevel_string="version $patchlevel subversion $subversion"
5927 case "$perl_patchlevel" in
5928 0|'') ;;
5929 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5930 esac
5931
5932 $echo "(You have $package $version_patchlevel_string.)"
5933
5934 case "$osname" in
5935 dos|vms)
5936         : XXX Should be a Configure test for double-dots in filenames.
5937         version=`echo $revision $patchlevel $subversion | \
5938                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5939         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5940                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5941         ;;
5942 *)
5943         version=`echo $revision $patchlevel $subversion | \
5944                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5945         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5946                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5947         ;;
5948 esac
5949 : Special case the 5.005_xx maintenance series, which used 5.005
5950 : without any subversion label as a subdirectory in $sitelib
5951 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5952         api_versionstring='5.005'
5953 fi
5954
5955 : determine installation style
5956 : For now, try to deduce it from prefix unless it is already set.
5957 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5958 case "$installstyle" in
5959 '')     case "$prefix" in
5960                 *perl*) dflt='lib';;
5961                 *) dflt='lib/perl5' ;;
5962         esac
5963         ;;
5964 *)      dflt="$installstyle" ;;
5965 esac
5966 : Probably not worth prompting for this since we prompt for all
5967 : the directories individually, and the prompt would be too long and
5968 : confusing anyway.
5969 installstyle=$dflt
5970
5971 : determine where private library files go
5972 : Usual default is /usr/local/lib/perl5/$version.
5973 : Also allow things like /opt/perl/lib/$version, since 
5974 : /opt/perl/lib/perl5... would be redundant.
5975 : The default "style" setting is made in installstyle.U
5976 case "$installstyle" in
5977 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5978 *)       set dflt privlib lib/$version ;;
5979 esac
5980 eval $prefixit
5981 $cat <<EOM
5982
5983 There are some auxiliary files for $package that need to be put into a
5984 private library directory that is accessible by everyone.
5985
5986 EOM
5987 fn=d~+
5988 rp='Pathname where the private library files will reside?'
5989 . ./getfile
5990 privlib="$ans"
5991 privlibexp="$ansexp"
5992 : Change installation prefix, if necessary.
5993 if $test X"$prefix" != X"$installprefix"; then
5994         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5995 else
5996         installprivlib="$privlibexp"
5997 fi
5998
5999 : set the prefixup variable, to restore leading tilda escape
6000 prefixup='case "$prefixexp" in
6001 "$prefix") ;;
6002 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6003 esac'
6004
6005 : determine where public architecture dependent libraries go
6006 set archlib archlib
6007 eval $prefixit
6008 : privlib default is /usr/local/lib/$package/$version
6009 : archlib default is /usr/local/lib/$package/$version/$archname
6010 : privlib may have an optional trailing /share.
6011 tdflt=`echo $privlib | $sed 's,/share$,,'`
6012 tdflt=$tdflt/$archname
6013 case "$archlib" in
6014 '')     dflt=$tdflt
6015         ;;
6016 *)      dflt="$archlib"
6017     ;;
6018 esac
6019 $cat <<EOM
6020
6021 $spackage contains architecture-dependent library files.  If you are
6022 sharing libraries in a heterogeneous environment, you might store
6023 these files in a separate location.  Otherwise, you can just include
6024 them with the rest of the public library files.
6025
6026 EOM
6027 fn=d+~
6028 rp='Where do you want to put the public architecture-dependent libraries?'
6029 . ./getfile
6030 archlib="$ans"
6031 archlibexp="$ansexp"
6032 if $test X"$archlib" = X"$privlib"; then
6033         d_archlib="$undef"
6034 else
6035         d_archlib="$define"
6036 fi
6037 : Change installation prefix, if necessary.
6038 if $test X"$prefix" != X"$installprefix"; then
6039         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6040 else
6041         installarchlib="$archlibexp"
6042 fi
6043
6044 : see if setuid scripts can be secure
6045 $cat <<EOM
6046
6047 Some kernels have a bug that prevents setuid #! scripts from being
6048 secure.  Some sites have disabled setuid #! scripts because of this.
6049
6050 First let's decide if your kernel supports secure setuid #! scripts.
6051 (If setuid #! scripts would be secure but have been disabled anyway,
6052 don't say that they are secure if asked.)
6053
6054 EOM
6055
6056 val="$undef"
6057 if $test -d /dev/fd; then
6058         echo "#!$ls" >reflect
6059         chmod +x,u+s reflect
6060         ./reflect >flect 2>&1
6061         if $contains "/dev/fd" flect >/dev/null; then
6062                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6063                 val="$define"
6064         else
6065                 $cat <<EOM
6066 If you are not sure if they are secure, I can check but I'll need a
6067 username and password different from the one you are using right now.
6068 If you don't have such a username or don't want me to test, simply
6069 enter 'none'.
6070
6071 EOM
6072                 rp='Other username to test security of setuid scripts with?'
6073                 dflt='none'
6074                 . ./myread
6075                 case "$ans" in
6076                 n|none)
6077                         case "$d_suidsafe" in
6078                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6079                                 dflt=n;;
6080                         "$undef")
6081                                 echo "Well, the $hint value is *not* secure." >&4
6082                                 dflt=n;;
6083                         *)      echo "Well, the $hint value *is* secure." >&4
6084                                 dflt=y;;
6085                         esac
6086                         ;;
6087                 *)
6088                         $rm -f reflect flect
6089                         echo "#!$ls" >reflect
6090                         chmod +x,u+s reflect
6091                         echo >flect
6092                         chmod a+w flect
6093                         echo '"su" will (probably) prompt you for '"$ans's password."
6094                         su $ans -c './reflect >flect'
6095                         if $contains "/dev/fd" flect >/dev/null; then
6096                                 echo "Okay, it looks like setuid scripts are secure." >&4
6097                                 dflt=y
6098                         else
6099                                 echo "I don't think setuid scripts are secure." >&4
6100                                 dflt=n
6101                         fi
6102                         ;;
6103                 esac
6104                 rp='Does your kernel have *secure* setuid scripts?'
6105                 . ./myread
6106                 case "$ans" in
6107                 [yY]*)  val="$define";;
6108                 *)      val="$undef";;
6109                 esac
6110         fi
6111 else
6112         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6113         echo "(That's for file descriptors, not floppy disks.)"
6114         val="$undef"
6115 fi
6116 set d_suidsafe
6117 eval $setvar
6118
6119 $rm -f reflect flect
6120
6121 : now see if they want to do setuid emulation
6122 echo " "
6123 val="$undef"
6124 case "$d_suidsafe" in
6125 "$define")
6126         val="$undef"
6127         echo "No need to emulate SUID scripts since they are secure here." >&4
6128         ;;
6129 *)
6130         $cat <<EOM
6131 Some systems have disabled setuid scripts, especially systems where
6132 setuid scripts cannot be secure.  On systems where setuid scripts have
6133 been disabled, the setuid/setgid bits on scripts are currently
6134 useless.  It is possible for $package to detect those bits and emulate
6135 setuid/setgid in a secure fashion.  This emulation will only work if
6136 setuid scripts have been disabled in your kernel.
6137
6138 EOM
6139         case "$d_dosuid" in
6140         "$define") dflt=y ;;
6141         *) dflt=n ;;
6142         esac
6143         rp="Do you want to do setuid/setgid emulation?"
6144         . ./myread
6145         case "$ans" in
6146         [yY]*)  val="$define";;
6147         *)      val="$undef";;
6148         esac
6149         ;;
6150 esac
6151 set d_dosuid
6152 eval $setvar
6153
6154 : see if this is a malloc.h system
6155 : we want a real compile instead of Inhdr because some systems have a
6156 : malloc.h that just gives a compile error saying to use stdlib.h instead
6157 echo " "
6158 $cat >try.c <<EOCP
6159 #include <stdlib.h>
6160 #include <malloc.h>
6161 int main () { return 0; }
6162 EOCP
6163 set try
6164 if eval $compile; then
6165     echo "<malloc.h> found." >&4
6166     val="$define"
6167 else
6168     echo "<malloc.h> NOT found." >&4
6169     val="$undef"
6170 fi
6171 $rm -f try.c try
6172 set i_malloc
6173 eval $setvar
6174
6175 : check for void type
6176 echo " "
6177 echo "Checking to see how well your C compiler groks the void type..." >&4
6178 case "$voidflags" in
6179 '')
6180         $cat >try.c <<EOCP
6181 #$i_stdlib I_STDLIB
6182 #ifdef I_STDLIB
6183 #include <stdlib.h>
6184 #endif
6185 #if TRY & 1
6186 void sub() {
6187 #else
6188 sub() {
6189 #endif
6190         extern void moo();      /* function returning void */
6191         void (*goo)();          /* ptr to func returning void */
6192 #if TRY & 8
6193         void *hue;              /* generic ptr */
6194 #endif
6195 #if TRY & 2
6196         void (*foo[10])();
6197 #endif
6198
6199 #if TRY & 4
6200         if(goo == moo) {
6201                 exit(0);
6202         }
6203 #endif
6204         exit(0);
6205 }
6206 int main() { sub(); }
6207 EOCP
6208         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6209                 voidflags=$defvoidused
6210         echo "Good.  It appears to support void to the level $package wants.">&4
6211                 if $contains warning .out >/dev/null 2>&1; then
6212                         echo "However, you might get some warnings that look like this:"
6213                         $cat .out
6214                 fi
6215         else
6216 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6217                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6218                         echo "It supports 1..."
6219                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6220                                 echo "It also supports 2..."
6221                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6222                                         voidflags=7
6223                                         echo "And it supports 4 but not 8 definitely."
6224                                 else
6225                                         echo "It doesn't support 4..."
6226                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6227                                                 voidflags=11
6228                                                 echo "But it supports 8."
6229                                         else
6230                                                 voidflags=3
6231                                                 echo "Neither does it support 8."
6232                                         fi
6233                                 fi
6234                         else
6235                                 echo "It does not support 2..."
6236                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6237                                         voidflags=13
6238                                         echo "But it supports 4 and 8."
6239                                 else
6240                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6241                                                 voidflags=5
6242                                                 echo "And it supports 4 but has not heard about 8."
6243                                         else
6244                                                 echo "However it supports 8 but not 4."
6245                                         fi
6246                                 fi
6247                         fi
6248                 else
6249                         echo "There is no support at all for void."
6250                         voidflags=0
6251                 fi
6252         fi
6253 esac
6254 case "$voidflags" in
6255 "$defvoidused") ;;
6256 *)      $cat >&4 <<'EOM'
6257   Support flag bits are:
6258     1: basic void declarations.
6259     2: arrays of pointers to functions returning void.
6260     4: operations between pointers to and addresses of void functions.
6261     8: generic void pointers.
6262 EOM
6263         dflt="$voidflags";
6264         rp="Your void support flags add up to what?"
6265         . ./myread
6266         voidflags="$ans"
6267         ;;
6268 esac
6269 $rm -f try.* .out
6270
6271 : check for length of pointer
6272 echo " "
6273 case "$ptrsize" in
6274 '')
6275         echo "Checking to see how big your pointers are..." >&4
6276         if test "$voidflags" -gt 7; then
6277                 echo '#define VOID_PTR char *' > try.c
6278         else
6279                 echo '#define VOID_PTR void *' > try.c
6280         fi
6281         $cat >>try.c <<EOCP
6282 #include <stdio.h>
6283 #$i_stdlib I_STDLIB
6284 #ifdef I_STDLIB
6285 #include <stdlib.h>
6286 #endif
6287 int main()
6288 {
6289     printf("%d\n", (int)sizeof(VOID_PTR));
6290     exit(0);
6291 }
6292 EOCP
6293         set try
6294         if eval $compile_ok; then
6295                 ptrsize=`$run ./try`
6296                 echo "Your pointers are $ptrsize bytes long."
6297         else
6298                 dflt='4'
6299                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6300                 rp="What is the size of a pointer (in bytes)?"
6301                 . ./myread
6302                 ptrsize="$ans"
6303         fi
6304         ;;
6305 esac
6306 $rm -f try.c try
6307 case "$use64bitall" in
6308 "$define"|true|[yY]*)
6309         case "$ptrsize" in
6310         4)      cat <<EOM >&4
6311
6312 *** You have chosen a maximally 64-bit build,
6313 *** but your pointers are only 4 bytes wide.
6314 *** Please rerun Configure without -Duse64bitall.
6315 EOM
6316                 case "$d_quad" in
6317                 define)
6318                         cat <<EOM >&4
6319 *** Since you have quads, you could possibly try with -Duse64bitint.
6320 EOM
6321                         ;;
6322                 esac
6323                 cat <<EOM >&4
6324 *** Cannot continue, aborting.
6325
6326 EOM
6327
6328                 exit 1
6329                 ;;
6330         esac
6331         ;;
6332 esac
6333
6334
6335 : determine whether to use malloc wrapping
6336 echo " "
6337 case "$usemallocwrap" in
6338 [yY]*|true|$define)     dflt='y' ;;
6339 [nN]*|false|$undef)     dflt='n' ;;
6340 *)      case "$usedevel" in
6341         [yY]*|true|$define)     dflt='y' ;;
6342         *) dflt='n' ;;
6343         esac
6344         ;;
6345 esac
6346 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6347 . ./myread
6348 usemallocwrap="$ans"
6349 case "$ans" in
6350 y*|true)
6351         usemallocwrap="$define" ;;
6352 *)
6353         usemallocwrap="$undef" ;;
6354 esac
6355
6356 : determine which malloc to compile in
6357 echo " "
6358 case "$usemymalloc" in
6359 [yY]*|true|$define)     dflt='y' ;;
6360 [nN]*|false|$undef)     dflt='n' ;;
6361 *)      case "$ptrsize" in
6362         4) dflt='y' ;;
6363         *) dflt='n' ;;
6364         esac
6365         ;;
6366 esac
6367 rp="Do you wish to attempt to use the malloc that comes with $package?"
6368 . ./myread
6369 usemymalloc="$ans"
6370 case "$ans" in
6371 y*|true)
6372         usemymalloc='y'
6373         mallocsrc='malloc.c'
6374         mallocobj="malloc$_o"
6375         d_mymalloc="$define"
6376         case "$libs" in
6377         *-lmalloc*)
6378                 : Remove malloc from list of libraries to use
6379                 echo "Removing unneeded -lmalloc from library list" >&4
6380                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6381                 shift
6382                 libs="$*"
6383                 echo "libs = $libs" >&4
6384                 ;;
6385         esac
6386         ;;
6387 *)
6388         usemymalloc='n'
6389         mallocsrc=''
6390         mallocobj=''
6391         d_mymalloc="$undef"
6392         ;;
6393 esac
6394
6395 : compute the return types of malloc and free
6396 echo " "
6397 $cat >malloc.c <<END
6398 #$i_malloc I_MALLOC
6399 #$i_stdlib I_STDLIB
6400 #include <stdio.h>
6401 #include <sys/types.h>
6402 #ifdef I_MALLOC
6403 #include <malloc.h>
6404 #endif
6405 #ifdef I_STDLIB
6406 #include <stdlib.h>
6407 #endif
6408 #ifdef TRY_MALLOC
6409 void *malloc();
6410 #endif
6411 #ifdef TRY_FREE
6412 void free();
6413 #endif
6414 END
6415 case "$malloctype" in
6416 '')
6417         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6418                 malloctype='void *'
6419         else
6420                 malloctype='char *'
6421         fi
6422         ;;
6423 esac
6424 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6425
6426 case "$freetype" in
6427 '')
6428         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6429                 freetype='void'
6430         else
6431                 freetype='int'
6432         fi
6433         ;;
6434 esac
6435 echo "Your system uses $freetype free(), it would seem." >&4
6436 $rm -f malloc.[co]
6437 $cat <<EOM
6438
6439 After $package is installed, you may wish to install various
6440 add-on modules and utilities.  Typically, these add-ons will
6441 be installed under $prefix with the rest
6442 of this package.  However, you may wish to install such add-ons
6443 elsewhere under a different prefix.
6444
6445 If you do not wish to put everything under a single prefix, that's
6446 ok.  You will be prompted for the individual locations; this siteprefix
6447 is only used to suggest the defaults.
6448
6449 The default should be fine for most people.
6450
6451 EOM
6452 fn=d~+
6453 rp='Installation prefix to use for add-on modules and utilities?'
6454 : XXX Here might be another good place for an installstyle setting.
6455 case "$siteprefix" in
6456 '') dflt=$prefix ;;
6457 *)  dflt=$siteprefix ;;
6458 esac
6459 . ./getfile
6460 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6461 oldsiteprefix=''
6462 case "$siteprefix" in
6463 '') ;;
6464 *)      case "$ans" in
6465         "$prefix") ;;
6466         *) oldsiteprefix="$prefix";;
6467         esac
6468         ;;
6469 esac
6470 siteprefix="$ans"
6471 siteprefixexp="$ansexp"
6472
6473 : determine where site specific libraries go.
6474 : Usual default is /usr/local/lib/perl5/site_perl/$version
6475 : The default "style" setting is made in installstyle.U
6476 : XXX No longer works with Prefixit stuff.
6477 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6478 case "$sitelib" in
6479 '') case "$installstyle" in
6480         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6481         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6482         esac
6483         ;;
6484 *)      dflt="$sitelib"
6485         ;;
6486 esac
6487 $cat <<EOM
6488
6489 The installation process will create a directory for
6490 site-specific extensions and modules.  Most users find it convenient
6491 to place all site-specific files in this directory rather than in the
6492 main distribution directory.
6493
6494 EOM
6495 fn=d~+
6496 rp='Pathname for the site-specific library files?'
6497 . ./getfile
6498 sitelib="$ans"
6499 sitelibexp="$ansexp"
6500 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6501 : Change installation prefix, if necessary.
6502 if $test X"$prefix" != X"$installprefix"; then
6503         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6504 else
6505         installsitelib="$sitelibexp"
6506 fi
6507
6508 : determine where site specific architecture-dependent libraries go.
6509 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6510 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6511 : sitelib may have an optional trailing /share.
6512 case "$sitearch" in
6513 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6514         dflt="$dflt/$archname"
6515         ;;
6516 *)      dflt="$sitearch"
6517         ;;
6518 esac
6519 set sitearch sitearch none
6520 eval $prefixit
6521 $cat <<EOM
6522
6523 The installation process will also create a directory for
6524 architecture-dependent site-specific extensions and modules.
6525
6526 EOM
6527 fn=d~+
6528 rp='Pathname for the site-specific architecture-dependent library files?'
6529 . ./getfile
6530 sitearch="$ans"
6531 sitearchexp="$ansexp"
6532 : Change installation prefix, if necessary.
6533 if $test X"$prefix" != X"$installprefix"; then
6534         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6535 else
6536         installsitearch="$sitearchexp"
6537 fi
6538
6539 $cat <<EOM
6540
6541 The installation process will also create a directory for
6542 vendor-supplied add-ons.  Vendors who supply perl with their system
6543 may find it convenient to place all vendor-supplied files in this
6544 directory rather than in the main distribution directory.  This will
6545 ease upgrades between binary-compatible maintenance versions of perl.
6546
6547 Of course you may also use these directories in whatever way you see
6548 fit.  For example, you might use them to access modules shared over a
6549 company-wide network.
6550
6551 The default answer should be fine for most people.
6552 This causes further questions about vendor add-ons to be skipped
6553 and no vendor-specific directories will be configured for perl.
6554
6555 EOM
6556 rp='Do you want to configure vendor-specific add-on directories?'
6557 case "$usevendorprefix" in
6558 define|true|[yY]*) dflt=y ;;
6559 *)      : User may have set vendorprefix directly on Configure command line.
6560         case "$vendorprefix" in
6561         ''|' ') dflt=n ;;
6562         *)      dflt=y ;;
6563         esac
6564         ;;
6565 esac
6566 . ./myread
6567 case "$ans" in
6568 [yY]*)  fn=d~+
6569         rp='Installation prefix to use for vendor-supplied add-ons?'
6570         case "$vendorprefix" in
6571         '') dflt='' ;;
6572         *)  dflt=$vendorprefix ;;
6573         esac
6574         . ./getfile
6575         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6576         oldvendorprefix=''
6577         case "$vendorprefix" in
6578         '') ;;
6579         *)      case "$ans" in
6580                 "$prefix") ;;
6581                 *) oldvendorprefix="$prefix";;
6582                 esac
6583                 ;;
6584         esac
6585         usevendorprefix="$define"
6586         vendorprefix="$ans"
6587         vendorprefixexp="$ansexp"
6588         ;;
6589 *)      usevendorprefix="$undef"
6590         vendorprefix=''
6591         vendorprefixexp=''
6592         ;;
6593 esac
6594
6595 case "$vendorprefix" in
6596 '')     d_vendorlib="$undef"
6597         vendorlib=''
6598         vendorlibexp=''
6599         ;;
6600 *)      d_vendorlib="$define"
6601         : determine where vendor-supplied modules go.
6602         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6603         case "$vendorlib" in
6604         '')
6605                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6606                 case "$installstyle" in
6607                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6608                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6609                 esac
6610                 ;;
6611         *)      dflt="$vendorlib"
6612                 ;;
6613         esac
6614         fn=d~+
6615         rp='Pathname for the vendor-supplied library files?'
6616         . ./getfile
6617         vendorlib="$ans"
6618         vendorlibexp="$ansexp"
6619         ;;
6620 esac
6621 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6622 : Change installation prefix, if necessary.
6623 if $test X"$prefix" != X"$installprefix"; then
6624         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6625 else
6626         installvendorlib="$vendorlibexp"
6627 fi
6628
6629 case "$vendorprefix" in
6630 '')     d_vendorarch="$undef"
6631         vendorarch=''
6632         vendorarchexp=''
6633         ;;
6634 *)      d_vendorarch="$define"
6635         : determine where vendor-supplied architecture-dependent libraries go.
6636         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6637         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6638         : vendorlib may have an optional trailing /share.
6639         case "$vendorarch" in
6640         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6641                 dflt="$dflt/$archname"
6642                 ;;
6643         *)      dflt="$vendorarch" ;;
6644         esac
6645         fn=d~+
6646         rp='Pathname for vendor-supplied architecture-dependent files?'
6647         . ./getfile
6648         vendorarch="$ans"
6649         vendorarchexp="$ansexp"
6650         ;;
6651 esac
6652 : Change installation prefix, if necessary.
6653 if $test X"$prefix" != X"$installprefix"; then
6654         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6655 else
6656         installvendorarch="$vendorarchexp"
6657 fi
6658
6659 : Final catch-all directories to search
6660 $cat <<EOM
6661
6662 Lastly, you can have perl look in other directories for extensions and
6663 modules in addition to those already specified.
6664 These directories will be searched after 
6665         $sitearch 
6666         $sitelib 
6667 EOM
6668 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6669 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6670 echo ' '
6671 case "$otherlibdirs" in
6672 ''|' ') dflt='none' ;;
6673 *)      dflt="$otherlibdirs" ;;
6674 esac
6675 $cat <<EOM
6676 Enter a colon-separated set of extra paths to include in perl's @INC
6677 search path, or enter 'none' for no extra paths.
6678
6679 EOM
6680
6681 rp='Colon-separated list of additional directories for perl to search?'
6682 . ./myread
6683 case "$ans" in
6684 ' '|''|none)    otherlibdirs=' ' ;;     
6685 *)      otherlibdirs="$ans" ;;
6686 esac
6687 case "$otherlibdirs" in
6688 ' ') val=$undef ;;
6689 *)      val=$define ;;
6690 esac
6691 set d_perl_otherlibdirs
6692 eval $setvar
6693
6694 : Cruising for prototypes
6695 echo " "
6696 echo "Checking out function prototypes..." >&4
6697 $cat >prototype.c <<EOCP
6698 #$i_stdlib I_STDLIB
6699 #ifdef I_STDLIB
6700 #include <stdlib.h>
6701 #endif
6702 int main(int argc, char *argv[]) {
6703         exit(0);}
6704 EOCP
6705 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6706         echo "Your C compiler appears to support function prototypes."
6707         val="$define"
6708 else
6709         echo "Your C compiler doesn't seem to understand function prototypes."
6710         val="$undef"
6711 fi
6712 set prototype
6713 eval $setvar
6714 $rm -f prototype*
6715
6716 case "$prototype" in
6717 "$define") ;;
6718 *)      ansi2knr='ansi2knr'
6719         echo " "
6720         cat <<EOM >&4
6721
6722 $me:  FATAL ERROR:
6723 This version of $package can only be compiled by a compiler that 
6724 understands function prototypes.  Unfortunately, your C compiler 
6725         $cc $ccflags
6726 doesn't seem to understand them.  Sorry about that.
6727
6728 If GNU cc is available for your system, perhaps you could try that instead.  
6729
6730 Eventually, we hope to support building Perl with pre-ANSI compilers.
6731 If you would like to help in that effort, please contact <perlbug@perl.org>.
6732
6733 Aborting Configure now.
6734 EOM
6735         exit 2
6736         ;;
6737 esac
6738
6739 : determine where public executables go
6740 echo " "
6741 set dflt bin bin
6742 eval $prefixit
6743 fn=d~
6744 rp='Pathname where the public executables will reside?'
6745 . ./getfile
6746 if $test "X$ansexp" != "X$binexp"; then
6747         installbin=''
6748 fi
6749 bin="$ans"
6750 binexp="$ansexp"
6751 : Change installation prefix, if necessary.
6752 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6753 if $test X"$prefix" != X"$installprefix"; then
6754         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6755 else
6756         installbin="$binexp"
6757 fi
6758
6759 echo " "
6760 case "$extras" in
6761 '') dflt='n';;
6762 *) dflt='y';;
6763 esac
6764 cat <<EOM
6765 Perl can be built with extra modules or bundles of modules which
6766 will be fetched from the CPAN and installed alongside Perl.
6767
6768 Notice that you will need access to the CPAN; either via the Internet,
6769 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6770 be asked later to configure the CPAN.pm module which will in turn do
6771 the installation of the rest of the extra modules or bundles.)
6772
6773 Notice also that if the modules require any external software such as
6774 libraries and headers (the libz library and the zlib.h header for the
6775 Compress::Zlib module, for example) you MUST have any such software
6776 already installed, this configuration process will NOT install such
6777 things for you.
6778
6779 If this doesn't make any sense to you, just accept the default '$dflt'.
6780 EOM
6781 rp='Install any extra modules (y or n)?'
6782 . ./myread
6783 case "$ans" in
6784 y|Y)
6785         cat <<EOM
6786
6787 Please list any extra modules or bundles to be installed from CPAN,
6788 with spaces between the names.  The names can be in any format the
6789 'install' command of CPAN.pm will understand.  (Answer 'none',
6790 without the quotes, to install no extra modules or bundles.)
6791 EOM
6792         rp='Extras?'
6793         dflt="$extras"
6794         . ./myread
6795         extras="$ans"
6796 esac
6797 case "$extras" in
6798 ''|'none')
6799         val=''
6800         $rm -f ../extras.lst
6801         ;;
6802 *)      echo "(Saving the list of extras for later...)"
6803         echo "$extras" > ../extras.lst
6804         val="'$extras'"
6805         ;;
6806 esac
6807 set extras
6808 eval $setvar
6809 echo " "
6810
6811 : determine where html pages for programs go
6812 set html1dir html1dir none
6813 eval $prefixit
6814 $cat <<EOM
6815
6816 If you wish to install html files for programs in $spackage, indicate 
6817 the appropriate directory here.  To skip installing html files,
6818 answer "none".
6819 EOM
6820 case "$html1dir" in
6821 ''|none|$undef|' ') dflt=none ;;
6822 *) dflt=$html1dir ;;
6823 esac
6824 fn=dn+~
6825 rp="Directory for the main $spackage html pages?"
6826 . ./getfile
6827 html1dir="$ans"
6828 html1direxp="$ansexp"
6829 : Use ' ' for none so value is preserved next time through Configure
6830 $test X"$html1dir" = "X" && html1dir=' '
6831 : Change installation prefix, if necessary.
6832 if $test X"$prefix" != X"$installprefix"; then
6833         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6834 else
6835         installhtml1dir="$html1direxp"
6836 fi
6837
6838 : determine where html pages for libraries and modules go
6839 set html3dir html3dir none
6840 eval $prefixit
6841 $cat <<EOM
6842
6843 If you wish to install html files for modules associated with $spackage,
6844 indicate the appropriate directory here.  To skip installing html files,
6845 answer "none".
6846 EOM
6847 : There is no obvious default.  If they have specified html1dir, then
6848 : try to key off that, possibly changing .../html1 into .../html3.
6849 case "$html3dir" in
6850 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6851 *) dflt=$html3dir ;;
6852 esac
6853 fn=dn+~
6854 rp="Directory for the $spackage module html pages?"
6855 . ./getfile
6856 html3dir="$ans"
6857 html3direxp="$ansexp"
6858 : Use ' ' for none so value is preserved next time through Configure
6859 $test X"$html3dir" = "X" && html3dir=' '
6860 : Change installation prefix, if necessary.
6861 if $test X"$prefix" != X"$installprefix"; then
6862         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6863 else
6864         installhtml3dir="$html3direxp"
6865 fi
6866
6867 : Find perl5.005 or later.
6868 echo "Looking for a previously installed perl5.005 or later... "
6869 case "$perl5" in
6870 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6871                 : Check if this perl is recent and can load a simple module
6872                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6873                         perl5=$tdir/perl
6874                         break;
6875                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6876                         perl5=$tdir/perl5
6877                         break;
6878                 fi
6879         done
6880         ;;
6881 *)      perl5="$perl5"
6882         ;;
6883 esac
6884 case "$perl5" in
6885 '')     echo "None found.  That's ok.";;
6886 *)      echo "Using $perl5." ;;
6887 esac
6888
6889 : Determine list of previous versions to include in @INC
6890 $cat > getverlist <<EOPL
6891 #!$perl5 -w
6892 use File::Basename;
6893 \$api_versionstring = "$api_versionstring";
6894 \$version = "$version";
6895 \$stem = "$sitelib_stem";
6896 \$archname = "$archname";
6897 EOPL
6898         $cat >> getverlist <<'EOPL'
6899 # Can't have leading @ because metaconfig interprets it as a command!
6900 ;@inc_version_list=();
6901 # XXX Redo to do opendir/readdir? 
6902 if (-d $stem) {
6903     chdir($stem);
6904     ;@candidates = glob("5.*");
6905 }
6906 else {
6907     ;@candidates = ();
6908 }
6909
6910 # XXX ToDo:  These comparisons must be reworked when two-digit
6911 # subversions come along, so that 5.7.10 compares as greater than
6912 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6913 # widespread that we can use the built-in version vectors rather
6914 # than reinventing them here.  For 5.6.0, however, we must
6915 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6916 foreach $d (@candidates) {
6917     if ($d lt $version) {
6918         if ($d ge $api_versionstring) {
6919             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6920         }
6921         elsif ($d ge "5.005") {
6922             unshift(@inc_version_list, grep { -d } $d);
6923         }
6924     }
6925     else {
6926         # Skip newer version.  I.e. don't look in
6927         # 5.7.0 if we're installing 5.6.1.
6928     }
6929 }
6930
6931 if (@inc_version_list) {
6932     print join(' ', @inc_version_list);
6933 }
6934 else {
6935     # Blank space to preserve value for next Configure run.
6936     print " ";
6937 }
6938 EOPL
6939 chmod +x getverlist
6940 case "$inc_version_list" in
6941 '')     if test -x "$perl5$exe_ext"; then
6942                 dflt=`$perl5 getverlist`
6943         else
6944                 dflt='none'
6945         fi
6946         ;;
6947 $undef) dflt='none' ;;
6948 *)  eval dflt=\"$inc_version_list\" ;;
6949 esac
6950 case "$dflt" in
6951 ''|' ') dflt=none ;;
6952 esac
6953 case "$dflt" in
6954 5.005) dflt=none ;;
6955 esac
6956 $cat <<EOM
6957
6958 In order to ease the process of upgrading, this version of perl 
6959 can be configured to use modules built and installed with earlier 
6960 versions of perl that were installed under $prefix.  Specify here
6961 the list of earlier versions that this version of perl should check.
6962 If Configure detected no earlier versions of perl installed under
6963 $prefix, then the list will be empty.  Answer 'none' to tell perl
6964 to not search earlier versions.
6965
6966 The default should almost always be sensible, so if you're not sure,
6967 just accept the default.
6968 EOM
6969
6970 rp='List of earlier versions to include in @INC?'
6971 . ./myread
6972 case "$ans" in
6973 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6974 *) inc_version_list="$ans" ;;
6975 esac
6976 case "$inc_version_list" in
6977 ''|' ') 
6978         inc_version_list_init='0';;
6979 *)      inc_version_list_init=`echo $inc_version_list |
6980                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6981         ;;
6982 esac
6983 $rm -f getverlist
6984
6985 : determine whether to install perl also as /usr/bin/perl
6986
6987 echo " "
6988 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6989         $cat <<EOM
6990 Many scripts expect perl to be installed as /usr/bin/perl.
6991
6992 If you want to, I can install the perl you are about to compile
6993 as /usr/bin/perl (in addition to $bin/perl).
6994 EOM
6995         if test -f /usr/bin/perl; then
6996             $cat <<EOM
6997
6998 However, please note that because you already have a /usr/bin/perl,
6999 overwriting that with a new Perl would very probably cause problems.
7000 Therefore I'm assuming you don't want to do that (unless you insist).
7001
7002 EOM
7003             case "$installusrbinperl" in
7004             "$define"|[yY]*)    dflt='y';;
7005             *)                  dflt='n';;
7006             esac
7007         else
7008             $cat <<EOM
7009
7010 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7011
7012 EOM
7013             case "$installusrbinperl" in
7014             "$undef"|[nN]*)     dflt='n';;
7015             *)                  dflt='y';;
7016             esac
7017         fi
7018         rp="Do you want to install perl as /usr/bin/perl?"
7019         . ./myread
7020         case "$ans" in
7021         [yY]*)  val="$define";;
7022         *)      val="$undef" ;;
7023         esac
7024 else
7025         val="$undef"
7026 fi
7027 set installusrbinperl
7028 eval $setvar
7029
7030 echo " "
7031 echo "Checking for GNU C Library..." >&4
7032 cat >try.c <<'EOCP'
7033 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7034    alone are insufficient to distinguish different versions, such as
7035    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7036    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7037 */
7038 #include <stdio.h>
7039 int main(void)
7040 {
7041 #ifdef __GLIBC__
7042 #   ifdef __GLIBC_MINOR__
7043 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7044 #           include <gnu/libc-version.h>
7045             printf("%s\n",  gnu_get_libc_version());
7046 #       else
7047             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7048 #       endif
7049 #   else
7050         printf("%d\n",  __GLIBC__);
7051 #   endif
7052     return 0;
7053 #else
7054     return 1;
7055 #endif
7056 }
7057 EOCP
7058 set try
7059 if eval $compile_ok && $run ./try > glibc.ver; then
7060         val="$define"
7061         gnulibc_version=`$cat glibc.ver`
7062         echo "You are using the GNU C Library version $gnulibc_version"
7063 else
7064         val="$undef"
7065         gnulibc_version=''
7066         echo "You are not using the GNU C Library"
7067 fi
7068 $rm -f try try.* glibc.ver
7069 set d_gnulibc
7070 eval $setvar
7071
7072 : see if nm is to be used to determine whether a symbol is defined or not
7073 case "$usenm" in
7074 '')
7075         dflt=''
7076         case "$d_gnulibc" in
7077         "$define")
7078                 echo " "
7079                 echo "nm probably won't work on the GNU C Library." >&4
7080                 dflt=n
7081                 ;;
7082         esac
7083         case "$dflt" in
7084         '') 
7085                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7086                         echo " "
7087                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7088                         echo "'nm' won't be sufficient on this sytem." >&4
7089                         dflt=n
7090                 fi
7091                 ;;
7092         esac
7093         case "$dflt" in
7094         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7095                 if $test $dflt -gt 20; then
7096                         dflt=y
7097                 else
7098                         dflt=n
7099                 fi
7100                 ;;
7101         esac
7102         ;;
7103 *)
7104         case "$usenm" in
7105         true|$define) dflt=y;;
7106         *) dflt=n;;
7107         esac
7108         ;;
7109 esac
7110 $cat <<EOM
7111
7112 I can use $nm to extract the symbols from your C libraries. This
7113 is a time consuming task which may generate huge output on the disk (up
7114 to 3 megabytes) but that should make the symbols extraction faster. The
7115 alternative is to skip the 'nm' extraction part and to compile a small
7116 test program instead to determine whether each symbol is present. If
7117 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7118 this may be the best solution.
7119
7120 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7121
7122 EOM
7123 rp="Shall I use $nm to extract C symbols from the libraries?"
7124 . ./myread
7125 case "$ans" in
7126 [Nn]*) usenm=false;;
7127 *) usenm=true;;
7128 esac
7129
7130 runnm=$usenm
7131 case "$reuseval" in
7132 true) runnm=false;;
7133 esac
7134
7135 : nm options which may be necessary
7136 case "$nm_opt" in
7137 '') if $test -f /mach_boot; then
7138                 nm_opt=''       # Mach
7139         elif $test -d /usr/ccs/lib; then
7140                 nm_opt='-p'     # Solaris (and SunOS?)
7141         elif $test -f /dgux; then
7142                 nm_opt='-p'     # DG-UX
7143         elif $test -f /lib64/rld; then
7144                 nm_opt='-p'     # 64-bit Irix
7145         else
7146                 nm_opt=''
7147         fi;;
7148 esac
7149
7150 : nm options which may be necessary for shared libraries but illegal
7151 : for archive libraries.  Thank you, Linux.
7152 case "$nm_so_opt" in
7153 '')     case "$myuname" in
7154         *linux*|gnu*)
7155                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7156                         nm_so_opt='--dynamic'
7157                 fi
7158                 ;;
7159         esac
7160         ;;
7161 esac
7162
7163 case "$runnm" in
7164 true)
7165 : get list of predefined functions in a handy place
7166 echo " "
7167 case "$libc" in
7168 '') libc=unknown
7169         case "$libs" in
7170         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7171         esac
7172         ;;
7173 esac
7174 case "$libs" in
7175 '') ;;
7176 *)  for thislib in $libs; do
7177         case "$thislib" in
7178         -lc|-lc_s)
7179                 : Handle C library specially below.
7180                 ;;
7181         -l*)
7182                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7183                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7184                         :
7185                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7186                         :
7187                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7188                         :
7189                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7190                         :
7191                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7192                         :
7193                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7194                         :
7195                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7196                         :
7197                 else
7198                         try=''
7199                 fi
7200                 libnames="$libnames $try"
7201                 ;;
7202         *) libnames="$libnames $thislib" ;;
7203         esac
7204         done
7205         ;;
7206 esac
7207 xxx=normal
7208 case "$libc" in
7209 unknown)
7210         set /lib/libc.$so
7211         for xxx in $libpth; do
7212                 $test -r $1 || set $xxx/libc.$so
7213                 : The messy sed command sorts on library version numbers.
7214                 $test -r $1 || \
7215                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7216                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7217                                 h
7218                                 s/[0-9][0-9]*/0000&/g
7219                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7220                                 G
7221                                 s/\n/ /' | \
7222                          $sort | $sed -e 's/^.* //'`
7223                 eval set \$$#
7224         done
7225         $test -r $1 || set /usr/ccs/lib/libc.$so
7226         $test -r $1 || set /lib/libsys_s$_a
7227         ;;
7228 *)
7229         set blurfl
7230         ;;
7231 esac
7232 if $test -r "$1"; then
7233         echo "Your (shared) C library seems to be in $1."
7234         libc="$1"
7235 elif $test -r /lib/libc && $test -r /lib/clib; then
7236         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7237         xxx=apollo
7238         libc='/lib/clib /lib/libc'
7239         if $test -r /lib/syslib; then
7240                 echo "(Your math library is in /lib/syslib.)"
7241                 libc="$libc /lib/syslib"
7242         fi
7243 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7244         echo "Your C library seems to be in $libc, as you said before."
7245 elif $test -r $incpath/usr/lib/libc$_a; then
7246         libc=$incpath/usr/lib/libc$_a;
7247         echo "Your C library seems to be in $libc.  That's fine."
7248 elif $test -r /lib/libc$_a; then
7249         libc=/lib/libc$_a;
7250         echo "Your C library seems to be in $libc.  You're normal."
7251 else
7252         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7253                 :
7254         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7255                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7256         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7257                 :
7258         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7259                 :
7260         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7261                 :
7262         else
7263                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7264         fi
7265         if $test -r "$tans"; then
7266                 echo "Your C library seems to be in $tans, of all places."
7267                 libc=$tans
7268         else
7269                 libc='blurfl'
7270         fi
7271 fi
7272 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7273         dflt="$libc"
7274         cat <<EOM
7275
7276 If the guess above is wrong (which it might be if you're using a strange
7277 compiler, or your machine supports multiple models), you can override it here.
7278
7279 EOM
7280 else
7281         dflt=''
7282         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7283         cat >&4 <<EOM
7284 I can't seem to find your C library.  I've looked in the following places:
7285
7286 EOM
7287         $sed 's/^/      /' libpath
7288         cat <<EOM
7289
7290 None of these seems to contain your C library. I need to get its name...
7291
7292 EOM
7293 fi
7294 fn=f
7295 rp='Where is your C library?'
7296 . ./getfile
7297 libc="$ans"
7298
7299 echo " "
7300 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7301 set X `cat libnames`
7302 shift
7303 xxx=files
7304 case $# in 1) xxx=file; esac
7305 echo "Extracting names from the following $xxx for later perusal:" >&4
7306 echo " "
7307 $sed 's/^/      /' libnames >&4
7308 echo " "
7309 $echo $n "This may take a while...$c" >&4
7310
7311 for file in $*; do
7312         case $file in
7313         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7314         *) $nm $nm_opt $file 2>/dev/null;;
7315         esac
7316 done >libc.tmp
7317
7318 $echo $n ".$c"
7319 $grep fprintf libc.tmp > libc.ptf
7320 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7321 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7322 xxx='[ADTSIW]'
7323 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7324         eval $xscan;\
7325         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7326                 eval $xrun
7327 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7328         eval $xscan;\
7329         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7330                 eval $xrun
7331 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7332         eval $xscan;\
7333         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7334                 eval $xrun
7335 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7336         eval $xscan;\
7337         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7338                 eval $xrun
7339 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7340         eval $xscan;\
7341         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7342                 eval $xrun
7343 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7344         eval $xscan;\
7345         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7346                 eval $xrun
7347 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7348                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7349         eval $xscan;\
7350         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7351                 eval $xrun
7352 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7353         eval $xscan;\
7354         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7355                 eval $xrun
7356 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7357         eval $xscan;\
7358         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7359                 eval $xrun
7360 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7361         eval $xscan;\
7362         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7363                 eval $xrun
7364 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7365         eval $xscan;\
7366         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7367                 eval $xrun
7368 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7369         eval $xscan;\
7370         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7371                 eval $xrun
7372 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7373         eval $xscan;\
7374         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7375                 eval $xrun
7376 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7377         eval $xscan;\
7378         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7379                 eval $xrun
7380 else
7381         $nm -p $* 2>/dev/null >libc.tmp
7382         $grep fprintf libc.tmp > libc.ptf
7383         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7384                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7385         then
7386                 nm_opt='-p'
7387                 eval $xrun
7388         else
7389                 echo " "
7390                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7391                 com=''
7392                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7393                         for thisname in $libnames $libc; do
7394                                 $ar t $thisname >>libc.tmp
7395                         done
7396                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7397                         echo "Ok." >&4
7398                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7399                         # Repeat libc to extract forwarders to DLL entries too
7400                         for thisname in $libnames $libc; do
7401                                 $ar tv $thisname >>libc.tmp
7402                                 # Revision 50 of EMX has bug in $ar.
7403                                 # it will not extract forwarders to DLL entries
7404                                 # Use emximp which will extract exactly them.
7405                                 emximp -o tmp.imp $thisname \
7406                                     2>/dev/null && \
7407                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7408                                     < tmp.imp >>libc.tmp
7409                                 $rm tmp.imp
7410                         done
7411                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7412                         echo "Ok." >&4
7413                 else
7414                         echo "$ar didn't seem to work right." >&4
7415                         echo "Maybe this is a Cray...trying bld instead..." >&4
7416                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7417                         then
7418                                 for thisname in $libnames; do
7419                                         bld t $libnames | \
7420                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7421                                         $ar t $thisname >>libc.tmp
7422                                 done
7423                                 echo "Ok." >&4
7424                         else
7425                                 echo "That didn't work either.  Giving up." >&4
7426                                 exit 1
7427                         fi
7428                 fi
7429         fi
7430 fi
7431 nm_extract="$com"
7432 case "$PASE" in
7433 define)
7434     echo " "
7435     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7436     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7437     ;;
7438 *)  if $test -f /lib/syscalls.exp; then
7439         echo " "
7440         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7441         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7442     fi
7443     ;;
7444 esac
7445 ;;
7446 esac
7447 $rm -f libnames libpath
7448
7449 : see if dld is available
7450 set dld.h i_dld
7451 eval $inhdr
7452
7453 : is a C symbol defined?
7454 csym='tlook=$1;
7455 case "$3" in
7456 -v) tf=libc.tmp; tdc="";;
7457 -a) tf=libc.tmp; tdc="[]";;
7458 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7459 esac;
7460 tx=yes;
7461 case "$reuseval-$4" in
7462 true-) ;;
7463 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7464 esac;
7465 case "$tx" in
7466 yes)
7467         tval=false;
7468         if $test "$runnm" = true; then
7469                 if $contains $tlook $tf >/dev/null 2>&1; then
7470                         tval=true;
7471                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7472                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7473                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7474                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7475                         $rm -f try$_exe try.c core core.* try.core;
7476                 fi;
7477         else
7478                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7479                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7480                 $rm -f try$_exe try.c;
7481         fi;
7482         ;;
7483 *)
7484         case "$tval" in
7485         $define) tval=true;;
7486         *) tval=false;;
7487         esac;
7488         ;;
7489 esac;
7490 eval "$2=$tval"'
7491
7492 : define an is-in-libc? function
7493 inlibc='echo " "; td=$define; tu=$undef;
7494 sym=$1; var=$2; eval "was=\$$2";
7495 tx=yes;
7496 case "$reuseval$was" in
7497 true) ;;
7498 true*) tx=no;;
7499 esac;
7500 case "$tx" in
7501 yes)
7502         set $sym tres -f;
7503         eval $csym;
7504         case "$tres" in
7505         true)
7506                 echo "$sym() found." >&4;
7507                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7508         *)
7509                 echo "$sym() NOT found." >&4;
7510                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7511         esac;;
7512 *)
7513         case "$was" in
7514         $define) echo "$sym() found." >&4;;
7515         *) echo "$sym() NOT found." >&4;;
7516         esac;;
7517 esac'
7518
7519 : see if dlopen exists
7520 xxx_runnm="$runnm"
7521 runnm=false
7522 set dlopen d_dlopen
7523 eval $inlibc
7524 runnm="$xxx_runnm"
7525
7526 : determine which dynamic loading, if any, to compile in
7527 echo " "
7528 dldir="ext/DynaLoader"
7529 case "$usedl" in
7530 $define|y|true)
7531         dflt='y'
7532         usedl="$define"
7533         ;;
7534 $undef|n|false)
7535         dflt='n'
7536         usedl="$undef"
7537         ;;
7538 *) 
7539         dflt='n'
7540         case "$d_dlopen" in
7541             $define) dflt='y' ;;
7542         esac
7543         case "$i_dld" in
7544             $define) dflt='y' ;;
7545         esac
7546         : Does a dl_xxx.xs file exist for this operating system
7547         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7548         ;;
7549 esac
7550 rp="Do you wish to use dynamic loading?"
7551 . ./myread
7552 usedl="$ans"
7553 case "$ans" in
7554 y*) usedl="$define"
7555         case "$dlsrc" in
7556         '')
7557                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7558                         dflt="$dldir/dl_${osname}.xs"
7559                 elif $test "$d_dlopen" = "$define" ; then
7560                         dflt="$dldir/dl_dlopen.xs"
7561                 elif $test "$i_dld" = "$define" ; then
7562                         dflt="$dldir/dl_dld.xs"
7563                 else
7564                         dflt=''
7565                 fi
7566                 ;;
7567         *)      dflt="$dldir/$dlsrc"
7568                 ;;
7569         esac
7570     echo "The following dynamic loading files are available:"
7571         : Can not go over to $dldir because getfile has path hard-coded in.
7572         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7573         rp="Source file to use for dynamic loading"
7574         fn="fne"
7575         gfpth="$src"
7576         . ./getfile
7577         usedl="$define"
7578         : emulate basename
7579         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7580
7581         $cat << EOM
7582
7583 Some systems may require passing special flags to $cc -c to
7584 compile modules that will be used to create a shared library.
7585 To use no flags, say "none".
7586
7587 EOM
7588     case "$cccdlflags" in
7589     '') case "$gccversion" in
7590                 '') case "$osname" in
7591                         hpux)   dflt='+z' ;;
7592                         next)   dflt='none' ;;
7593                         irix*)  dflt='-KPIC' ;;
7594                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7595                         sunos)  dflt='-pic' ;;
7596                         *)      dflt='none' ;;
7597                     esac
7598                         ;;
7599                 *)  case "$osname" in
7600                         darwin) dflt='none' ;;
7601                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7602                         *)      dflt='-fpic' ;;
7603                     esac ;;
7604             esac ;;
7605         ' ') dflt='none' ;;
7606     *)  dflt="$cccdlflags" ;;
7607     esac
7608     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7609     . ./myread
7610     case "$ans" in
7611     none) cccdlflags=' ' ;;
7612     *) cccdlflags="$ans" ;;
7613     esac
7614
7615     cat << EOM
7616
7617 Some systems use ld to create libraries that can be dynamically loaded,
7618 while other systems (such as those using ELF) use $cc.
7619
7620 EOM
7621         case "$ld" in
7622         '')     $cat >try.c <<EOM
7623 /* Test for whether ELF binaries are produced */
7624 #include <fcntl.h>
7625 #$i_stdlib I_STDLIB
7626 #ifdef I_STDLIB
7627 #include <stdlib.h>
7628 #endif
7629 int main() {
7630         char b[4];
7631         int i = open("a.out",O_RDONLY);
7632         if(i == -1) 
7633                 exit(1); /* fail */
7634         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7635                 exit(0); /* succeed (yes, it's ELF) */
7636         else
7637                 exit(1); /* fail */
7638 }
7639 EOM
7640                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7641                         cat <<EOM
7642 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7643 EOM
7644                         dflt="$cc"
7645                 else
7646                         echo "I'll use ld to build dynamic libraries."
7647                         dflt='ld'
7648                 fi
7649                 rm -f try.c a.out
7650                 ;;
7651         *)      dflt="$ld"
7652                 ;;
7653         esac
7654
7655     rp="What command should be used to create dynamic libraries?"
7656     . ./myread
7657         ld="$ans"
7658
7659     cat << EOM
7660
7661 Some systems may require passing special flags to $ld to create a
7662 library that can be dynamically loaded.  If your ld flags include
7663 -L/other/path options to locate libraries outside your loader's normal
7664 search path, you may need to specify those -L options here as well.  To
7665 use no flags, say "none".
7666
7667 EOM
7668     case "$lddlflags" in
7669     '') case "$osname" in
7670                         beos) dflt='-nostart' ;;
7671                         hpux) dflt='-b';
7672                               case "$gccversion" in
7673                               '') dflt="$dflt +vnocompatwarnings" ;;
7674                               esac
7675                               ;;        
7676                         linux|irix*|gnu*)       dflt='-shared' ;;
7677                         next)  dflt='none' ;;
7678                         solaris) dflt='-G' ;;
7679                         sunos) dflt='-assert nodefinitions' ;;
7680                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7681                 *)     dflt='none' ;;
7682                         esac
7683                         ;;
7684     *) dflt="$lddlflags" ;;
7685     esac
7686
7687         : Try to guess additional flags to pick up local libraries.
7688         : Be careful not to append to a plain 'none'
7689         case "$dflt" in
7690         none) dflt='' ;;
7691         esac
7692         for thisflag in $ldflags; do
7693                 case "$thisflag" in
7694                 -L*|-R*|-Wl,-R*)
7695                         case " $dflt " in
7696                         *" $thisflag "*) ;;
7697                         *) dflt="$dflt $thisflag" ;;
7698                         esac
7699                         ;;
7700                 esac
7701         done
7702
7703         case "$dflt" in
7704         ''|' ') dflt='none' ;;
7705         esac
7706
7707     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7708     . ./myread
7709     case "$ans" in
7710     none) lddlflags=' ' ;;
7711     *) lddlflags="$ans" ;;
7712     esac
7713
7714         cat <<EOM
7715
7716 Some systems may require passing special flags to $cc to indicate that
7717 the resulting executable will use dynamic linking.  To use no flags,
7718 say "none".
7719
7720 EOM
7721     case "$ccdlflags" in
7722     '') case "$osname" in
7723             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7724             next|sunos) dflt='none' ;;
7725             *)          dflt='none' ;;
7726             esac ;;
7727     ' ')  dflt='none' ;;
7728     *)  dflt="$ccdlflags" ;;
7729     esac
7730     rp="Any special flags to pass to $cc to use dynamic linking?"
7731     . ./myread
7732     case "$ans" in
7733     none) ccdlflags=' ' ;;
7734     *) ccdlflags="$ans" ;;
7735     esac
7736     ;;
7737 *)  usedl="$undef"
7738         ld='ld'
7739     dlsrc='dl_none.xs'
7740     lddlflags=''
7741     ccdlflags=''
7742     ;;
7743 esac
7744
7745 also=''
7746 case "$usedl" in
7747 $undef)
7748         # No dynamic loading being used, so don't bother even to prompt.
7749         useshrplib='false'
7750         ;;
7751 *)      case "$useshrplib" in
7752         '')     case "$osname" in
7753                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7754                         dflt=y
7755                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7756                         ;;
7757                 next*)
7758                         case "$osvers" in
7759                         4*)     dflt=y
7760                                 also='Building a shared libperl is needed for MAB support.'
7761                                 ;;
7762                         *)      dflt=n
7763                                 ;;
7764                         esac
7765                         ;;
7766                 *)      dflt=n
7767                         ;;
7768                 esac
7769                 ;;
7770         $define|true|[Yy]*)
7771                 dflt=y
7772                 ;;
7773         *)      dflt=n
7774                 ;;
7775         esac
7776         $cat << EOM
7777
7778 The perl executable is normally obtained by linking perlmain.c with
7779 libperl${_a}, any static extensions (usually just DynaLoader), and
7780 any other libraries needed on this system (such as -lm, etc.).  Since
7781 your system supports dynamic loading, it is probably possible to build
7782 a shared libperl.$so.  If you will have more than one executable linked
7783 to libperl.$so, this will significantly reduce the size of each
7784 executable, but it may have a noticeable effect on performance.  The
7785 default is probably sensible for your system.
7786 $also
7787
7788 EOM
7789         rp="Build a shared libperl.$so (y/n)"
7790         . ./myread
7791         case "$ans" in
7792         true|$define|[Yy]*)
7793                 useshrplib='true'  ;;
7794         *)      useshrplib='false' ;;
7795         esac
7796         ;;
7797 esac
7798
7799 case "$useshrplib" in
7800 true)
7801         case "$libperl" in
7802         '')
7803                 # Figure out a good name for libperl.so.  Since it gets stored in
7804                 # a version-specific architecture-dependent library, the version
7805                 # number isn't really that important, except for making cc/ld happy.
7806                 #
7807                 # A name such as libperl.so.3.1
7808                 majmin="libperl.$so.$patchlevel.$subversion"
7809                 # A name such as libperl.so.301
7810                 majonly=`echo $patchlevel $subversion |
7811                         $awk '{printf "%d%02d", $1, $2}'`
7812                 majonly=libperl.$so.$majonly
7813                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7814                 # rely on figuring it out from the naming of libc.
7815                 case "${osname}${osvers}" in
7816                 next4*)
7817                         dflt=libperl.5.$so
7818                         # XXX How handle the --version stuff for MAB?
7819                         ;;
7820                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7821                         dflt=libperl.$so
7822                         ;;
7823                 cygwin*) # ld links against an importlib
7824                         dflt=libperl$lib_ext
7825                         ;;
7826                 *)      # Try to guess based on whether libc has major.minor.
7827                         case "$libc" in
7828                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7829                         *libc.$so.[0-9]*) dflt=$majonly ;;
7830                         *)      dflt=libperl.$so ;;
7831                         esac
7832                         ;;
7833                 esac
7834                 ;;
7835         *)      dflt=$libperl
7836                 ;;
7837         esac
7838         cat << EOM
7839
7840 I need to select a good name for the shared libperl.  If your system uses
7841 library names with major and minor numbers, then you might want something
7842 like $majmin.  Alternatively, if your system uses a single version
7843 number for shared libraries, then you might want to use $majonly.
7844 Or, your system might be quite happy with a simple libperl.$so.
7845
7846 Since the shared libperl will get installed into a version-specific
7847 architecture-dependent directory, the version number of the shared perl
7848 library probably isn't important, so the default should be o.k.
7849
7850 EOM
7851         rp='What name do you want to give to the shared libperl?'
7852         . ./myread
7853         libperl=$ans
7854         echo "Ok, I'll use $libperl"
7855         ;;
7856 *)
7857         libperl="libperl${_a}"
7858         ;;
7859 esac
7860
7861 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7862 case "$shrpdir" in
7863 '') ;;
7864 *)      $cat >&4 <<EOM
7865 WARNING:  Use of the shrpdir variable for the installation location of
7866 the shared $libperl is not supported.  It was never documented and
7867 will not work in this version.  Let me (perlbug@perl.org)
7868 know of any problems this may cause.
7869
7870 EOM
7871         case "$shrpdir" in
7872         "$archlibexp/CORE")
7873                 $cat >&4 <<EOM
7874 But your current setting of $shrpdir is
7875 the default anyway, so it's harmless.
7876 EOM
7877                 ;;
7878         *)
7879                 $cat >&4 <<EOM
7880 Further, your current attempted setting of $shrpdir
7881 conflicts with the value of $archlibexp/CORE
7882 that installperl will use.
7883 EOM
7884                 ;;
7885         esac
7886         ;;
7887 esac
7888
7889 # How will the perl executable find the installed shared $libperl?
7890 # Add $xxx to ccdlflags.
7891 # If we can't figure out a command-line option, use $shrpenv to
7892 # set env LD_RUN_PATH.  The main perl makefile uses this.
7893 shrpdir=$archlibexp/CORE
7894 xxx=''
7895 tmp_shrpenv=''
7896 if "$useshrplib"; then
7897     case "$osname" in 
7898         aix)
7899                 # We'll set it in Makefile.SH...
7900                 ;;
7901         solaris)
7902                 xxx="-R $shrpdir"
7903                 ;;
7904         freebsd|netbsd|openbsd|interix|dragonfly)
7905                 xxx="-Wl,-R$shrpdir"
7906                 ;;
7907         bsdos|linux|irix*|dec_osf|gnu*)
7908                 xxx="-Wl,-rpath,$shrpdir"
7909                 ;;
7910         next)
7911                 # next doesn't like the default...
7912                 ;;
7913         beos)
7914                 # beos doesn't like the default, either.
7915                 ;;
7916         hpux*)
7917                 # hpux doesn't like the default, either.
7918                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7919                 ;;
7920         *)
7921                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7922                 ;;
7923         esac
7924         case "$xxx" in
7925         '') ;;
7926         *)      
7927                 # Only add $xxx if it isn't already in ccdlflags.
7928                 case " $ccdlflags " in
7929                 *" $xxx "*)     ;;
7930                 *)      ccdlflags="$ccdlflags $xxx"
7931                         cat <<EOM >&4
7932
7933 Adding $xxx to the flags
7934 passed to $ld so that the perl executable will find the 
7935 installed shared $libperl.
7936
7937 EOM
7938                         ;;
7939                 esac
7940                 ;;
7941         esac
7942 fi
7943 # Fix ccdlflags in AIX for building external extensions.
7944 # (For building Perl itself bare -bE:perl.exp is needed,
7945 #  Makefile.SH takes care of this.)
7946 case "$osname" in
7947 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7948 esac
7949 # Respect a hint or command-line value.
7950 case "$shrpenv" in
7951 '') shrpenv="$tmp_shrpenv" ;;
7952 esac
7953 case "$ldlibpthname" in
7954 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7955 none)   ldlibpthname='' ;;
7956 esac
7957
7958 : determine where manual pages are on this system
7959 echo " "
7960 case "$sysman" in
7961 '') 
7962         syspath='/usr/share/man/man1 /usr/man/man1'
7963         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7964         syspath="$syspath /usr/man/u_man/man1"
7965         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7966         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7967         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7968         sysman=`./loc . /usr/man/man1 $syspath`
7969         ;;
7970 esac
7971 if $test -d "$sysman"; then
7972         echo "System manual is in $sysman." >&4
7973 else
7974         echo "Could not find manual pages in source form." >&4
7975 fi
7976
7977 : determine where manual pages go
7978 set man1dir man1dir none
7979 eval $prefixit
7980 $cat <<EOM
7981
7982 $spackage has manual pages available in source form.
7983 EOM
7984 case "$nroff" in
7985 nroff)
7986         echo "However, you don't have nroff, so they're probably useless to you."
7987         case "$man1dir" in
7988         '') man1dir="none";;
7989         esac;;
7990 esac
7991 echo "If you don't want the manual sources installed, answer 'none'."
7992 case "$man1dir" in
7993 ' ') dflt=none
7994         ;;
7995 '')
7996         lookpath="$prefixexp/share/man/man1"
7997         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7998         lookpath="$lookpath $prefixexp/man/p_man/man1"
7999         lookpath="$lookpath $prefixexp/man/u_man/man1"
8000         lookpath="$lookpath $prefixexp/man/man.1"
8001         case "$sysman" in
8002         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8003         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8004         esac
8005         set dflt
8006         eval $prefixup
8007         ;;
8008 *)  dflt="$man1dir"
8009         ;;
8010 esac
8011 echo " "
8012 fn=dn+~
8013 rp="Where do the main $spackage manual pages (source) go?"
8014 . ./getfile
8015 if $test "X$man1direxp" != "X$ansexp"; then
8016         installman1dir=''
8017 fi
8018 man1dir="$ans"
8019 man1direxp="$ansexp"
8020 case "$man1dir" in
8021 '')     man1dir=' '
8022         installman1dir='';;
8023 esac
8024
8025 : Change installation prefix, if necessary.
8026 if $test X"$prefix" != X"$installprefix"; then
8027         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
8028 else
8029         installman1dir="$man1direxp"
8030 fi
8031
8032 : What suffix to use on installed man pages
8033
8034 case "$man1dir" in
8035 ' ')
8036         man1ext='0'
8037         ;;
8038 *)
8039         rp="What suffix should be used for the main $spackage man pages?"
8040         case "$man1ext" in
8041         '')     case "$man1dir" in
8042                 *1)  dflt=1 ;;
8043                 *1p) dflt=1p ;;
8044                 *1pm) dflt=1pm ;;
8045                 *l) dflt=l;;
8046                 *n) dflt=n;;
8047                 *o) dflt=o;;
8048                 *p) dflt=p;;
8049                 *C) dflt=C;;
8050                 *L) dflt=L;;
8051                 *L1) dflt=L1;;
8052                 *) dflt=1;;
8053                 esac
8054                 ;;
8055         *)      dflt="$man1ext";;
8056         esac
8057         . ./myread
8058         man1ext="$ans"
8059         ;;
8060 esac
8061
8062 : see if we can have long filenames
8063 echo " "
8064 first=123456789abcdef
8065 $rm -f $first
8066 if (echo hi >$first) 2>/dev/null; then
8067         if $test -f 123456789abcde; then
8068                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8069                 val="$undef"
8070         else
8071                 echo 'You can have filenames longer than 14 characters.'>&4
8072                 val="$define"
8073         fi
8074 else
8075         $cat <<'EOM'
8076 You can't have filenames longer than 14 chars.
8077 You can't even think about them!
8078 EOM
8079         val="$undef"
8080 fi 
8081 set d_flexfnam
8082 eval $setvar
8083 $rm -rf 123456789abcde*
8084
8085 : determine where library module manual pages go
8086 set man3dir man3dir none
8087 eval $prefixit
8088 $cat <<EOM
8089
8090 $spackage has manual pages for many of the library modules.
8091 EOM
8092
8093 case "$nroff" in
8094 nroff)
8095         $cat <<'EOM'
8096 However, you don't have nroff, so they're probably useless to you.
8097 EOM
8098         case "$man3dir" in
8099         '') man3dir="none";;
8100         esac;;
8101 esac
8102
8103 case "$d_flexfnam" in
8104 undef)
8105         $cat <<'EOM'
8106 However, your system can't handle the long file names like File::Basename.3. 
8107 EOM
8108         case "$man3dir" in
8109         '') man3dir="none";;
8110         esac;;
8111 esac
8112
8113 echo "If you don't want the manual sources installed, answer 'none'."
8114 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8115 case "$man3dir" in
8116 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8117         if $test -d "$privlib/man/man3"; then
8118                 cat <<EOM >&4
8119
8120 WARNING:  Previous versions of perl installed man3 pages into
8121 $privlib/man/man3.  This version will suggest a 
8122 new default of $dflt.  
8123 EOM
8124                 tdflt=$dflt
8125                 dflt='n'
8126                 rp='Do you wish to preserve the old behavior?(y/n)'
8127                 . ./myread
8128                 case "$ans" in
8129                 y*) dflt="$privlib/man/man3" ;;
8130                 *)  dflt=$tdflt ;;
8131                 esac
8132     fi
8133         ;;
8134 *)      dflt="$man3dir" ;;
8135 esac
8136 case "$dflt" in
8137 ' ') dflt=none ;;
8138 esac
8139 echo " "
8140 fn=dn+~
8141 rp="Where do the $package library man pages (source) go?"
8142 . ./getfile
8143 man3dir="$ans"
8144 man3direxp="$ansexp"
8145 case "$man3dir" in
8146 '')     man3dir=' '
8147         installman3dir='';;
8148 esac
8149
8150 : Change installation prefix, if necessary.
8151 if $test X"$prefix" != X"$installprefix"; then
8152         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8153 else
8154         installman3dir="$man3direxp"
8155 fi
8156
8157 : What suffix to use on installed man pages
8158 case "$man3dir" in
8159 ' ')
8160         man3ext='0'
8161         ;;
8162 *)
8163         rp="What suffix should be used for the $package library man pages?"
8164         case "$man3ext" in
8165         '')     case "$man3dir" in
8166                 *3)  dflt=3 ;;
8167                 *3p) dflt=3p ;;
8168                 *3pm) dflt=3pm ;;
8169                 *l) dflt=l;;
8170                 *n) dflt=n;;
8171                 *o) dflt=o;;
8172                 *p) dflt=p;;
8173                 *C) dflt=C;;
8174                 *L) dflt=L;;
8175                 *L3) dflt=L3;;
8176                 *) dflt=3;;
8177                 esac
8178                 ;;
8179         *)      dflt="$man3ext";;
8180         esac
8181         . ./myread
8182         man3ext="$ans"
8183         ;;
8184 esac
8185
8186 : see if we have to deal with yellow pages, now NIS.
8187 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8188         if $test -f /usr/etc/nibindd; then
8189                 echo " "
8190                 echo "I'm fairly confident you're on a NeXT."
8191                 echo " "
8192                 rp='Do you get the hosts file via NetInfo?'
8193                 dflt=y
8194                 case "$hostcat" in
8195                 nidump*) ;;
8196                 '') ;;
8197                 *) dflt=n;;
8198                 esac
8199                 . ./myread
8200                 case "$ans" in
8201                 y*) hostcat='nidump hosts .';;
8202                 *)      case "$hostcat" in
8203                         nidump*) hostcat='';;
8204                         esac
8205                         ;;
8206                 esac
8207         fi
8208         case "$hostcat" in
8209         nidump*) ;;
8210         *)
8211                 case "$hostcat" in
8212                 *ypcat*) dflt=y;;
8213                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8214                                 dflt=y
8215                         else
8216                                 dflt=n
8217                         fi;;
8218                 *) dflt=n;;
8219                 esac
8220                 echo " "
8221                 rp='Are you getting the hosts file via yellow pages?'
8222                 . ./myread
8223                 case "$ans" in
8224                 y*) hostcat='ypcat hosts';;
8225                 *) hostcat='cat /etc/hosts';;
8226                 esac
8227                 ;;
8228         esac
8229 fi
8230 case "$hostcat" in
8231 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8232 esac
8233 case "$groupcat" in
8234 '') test -f /etc/group && groupcat='cat /etc/group';;
8235 esac
8236 case "$passcat" in
8237 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8238 esac
8239
8240 : now get the host name
8241 echo " "
8242 echo "Figuring out host name..." >&4
8243 case "$myhostname" in
8244 '') cont=true
8245         echo 'Maybe "hostname" will work...'
8246         if tans=`sh -c hostname 2>&1` ; then
8247                 myhostname=$tans
8248                 phostname=hostname
8249                 cont=''
8250         fi
8251         ;;
8252 *) cont='';;
8253 esac
8254 if $test "$cont"; then
8255         if ./xenix; then
8256                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8257                 if tans=`cat /etc/systemid 2>&1` ; then
8258                         myhostname=$tans
8259                         phostname='cat /etc/systemid'
8260                         echo "Whadyaknow.  Xenix always was a bit strange..."
8261                         cont=''
8262                 fi
8263         elif $test -r /etc/systemid; then
8264                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8265         fi
8266 fi
8267 if $test "$cont"; then
8268         echo 'No, maybe "uuname -l" will work...'
8269         if tans=`sh -c 'uuname -l' 2>&1` ; then
8270                 myhostname=$tans
8271                 phostname='uuname -l'
8272         else
8273                 echo 'Strange.  Maybe "uname -n" will work...'
8274                 if tans=`sh -c 'uname -n' 2>&1` ; then
8275                         myhostname=$tans
8276                         phostname='uname -n'
8277                 else
8278                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8279                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8280                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8281                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8282                         else
8283                                 case "$myhostname" in
8284                                 '') echo "Does this machine have an identity crisis or something?"
8285                                         phostname='';;
8286                                 *)
8287                                         echo "Well, you said $myhostname before..."
8288                                         phostname='echo $myhostname';;
8289                                 esac
8290                         fi
8291                 fi
8292         fi
8293 fi
8294 case "$myhostname" in
8295 '') myhostname=noname ;;
8296 esac
8297 : you do not want to know about this
8298 set $myhostname
8299 myhostname=$1
8300
8301 : verify guess
8302 if $test "$myhostname" ; then
8303         dflt=y
8304         rp='Your host name appears to be "'$myhostname'".'" Right?"
8305         . ./myread
8306         case "$ans" in
8307         y*) ;;
8308         *) myhostname='';;
8309         esac
8310 fi
8311
8312 : bad guess or no guess
8313 while $test "X$myhostname" = X ; do
8314         dflt=''
8315         rp="Please type the (one word) name of your host:"
8316         . ./myread
8317         myhostname="$ans"
8318 done
8319
8320 : translate upper to lower if necessary
8321 case "$myhostname" in
8322 *[A-Z]*)
8323         echo "(Normalizing case in your host name)"
8324         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8325         ;;
8326 esac
8327
8328 case "$myhostname" in
8329 *.*)
8330         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8331         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8332         echo "(Trimming domain name from host name--host name is now $myhostname)"
8333         ;;
8334 *) case "$mydomain" in
8335         '')
8336                 {
8337                         test "X$hostcat" = "Xypcat hosts" &&
8338                         ypmatch "$myhostname" hosts 2>/dev/null |\
8339                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8340                         $test -s hosts
8341                 } || {
8342                         test "X$hostcat" != "X" &&
8343                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8344                                         /[       ]$myhostname[  . ]/p" > hosts
8345                 }
8346                 tmp_re="[       . ]"
8347                 if $test -f hosts; then
8348                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8349                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8350                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8351                                 hosts | $sort | $uniq | \
8352                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8353                         case `$echo X$dflt` in
8354                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8355                                 dflt=.
8356                                 ;;
8357                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8358                                 ;;
8359                         esac
8360                 else
8361                         echo "(I cannot locate a hosts database anywhere)"
8362                         dflt=.
8363                 fi
8364                 case "$dflt" in
8365                 .)
8366                         tans=`./loc resolv.conf X /etc /usr/etc`
8367                         if $test -f "$tans"; then
8368                                 echo "(Attempting domain name extraction from $tans)"
8369                                 dflt=.`$sed -n -e 's/   / /g' \
8370                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8371                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8372                                 case "$dflt" in
8373                                 .) dflt=.`$sed -n -e 's/        / /g' \
8374                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8375                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8376                                         ;;
8377                                 esac
8378                         fi
8379                         ;;
8380                 esac
8381                 case "$dflt" in
8382                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8383                         dflt=.`sh -c domainname 2>/dev/null`
8384                         case "$dflt" in
8385                         '') dflt='.';;
8386                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8387                         esac
8388                         ;;
8389                 esac
8390                 case "$dflt$osname" in
8391                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8392                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8393                         ;;
8394                 esac
8395                 case "$dflt" in
8396                 .) echo "(Lost all hope -- silly guess then)"
8397                         dflt='.nonet'
8398                         ;;
8399                 esac
8400                 $rm -f hosts
8401                 ;;
8402         *) dflt="$mydomain";;
8403         esac;;
8404 esac
8405 echo " "
8406 rp="What is your domain name?"
8407 . ./myread
8408 tans="$ans"
8409 case "$ans" in
8410 '') ;;
8411 .*) ;;
8412 *) tans=".$tans";;
8413 esac
8414 mydomain="$tans"
8415
8416 : translate upper to lower if necessary
8417 case "$mydomain" in
8418 *[A-Z]*)
8419         echo "(Normalizing case in your domain name)"
8420         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8421         ;;
8422 esac
8423
8424 : a little sanity check here
8425 case "$phostname" in
8426 '') ;;
8427 *)
8428         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8429         $myhostname$mydomain|$myhostname) ;;
8430         *)
8431                 case "$phostname" in
8432                 sed*)
8433                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8434                         ;;
8435                 *)
8436                         echo "(That doesn't agree with your $phostname command, by the way.)"
8437                         ;;
8438                 esac
8439         ;;
8440         esac
8441         ;;
8442 esac
8443
8444 $cat <<EOM
8445
8446 I need to get your e-mail address in Internet format if possible, i.e.
8447 something like user@host.domain. Please answer accurately since I have
8448 no easy means to double check it. The default value provided below
8449 is most probably close to reality but may not be valid from outside
8450 your organization...
8451
8452 EOM
8453 cont=x
8454 while test "$cont"; do
8455         case "$cf_email" in
8456         '') dflt="$cf_by@$myhostname$mydomain";;
8457         *) dflt="$cf_email";;
8458         esac
8459         rp='What is your e-mail address?'
8460         . ./myread
8461         cf_email="$ans"
8462         case "$cf_email" in
8463         *@*.*) cont='' ;;
8464         *)
8465                 rp='Address does not look like an Internet one.  Use it anyway?'
8466                 case "$fastread" in
8467                 yes) dflt=y ;;
8468                 *) dflt=n ;;
8469                 esac
8470                 . ./myread
8471                 case "$ans" in
8472                 y*) cont='' ;;
8473                 *) echo " " ;;
8474                 esac
8475                 ;;
8476         esac
8477 done
8478
8479 $cat <<EOM
8480
8481 If you or somebody else will be maintaining perl at your site, please
8482 fill in the correct e-mail address here so that they may be contacted
8483 if necessary. Currently, the "perlbug" program included with perl
8484 will send mail to this address in addition to perlbug@perl.org. You may
8485 enter "none" for no administrator.
8486
8487 EOM
8488 case "$perladmin" in
8489 '') dflt="$cf_email";;
8490 *) dflt="$perladmin";;
8491 esac
8492 rp='Perl administrator e-mail address'
8493 . ./myread
8494 perladmin="$ans"
8495
8496 : determine whether to only install version-specific parts.
8497 echo " "
8498 $cat <<EOM
8499 Do you want to install only the version-specific parts of the perl
8500 distribution?  Usually you do *not* want to do this.
8501 EOM
8502 case "$versiononly" in
8503 "$define"|[Yy]*|true) dflt='y' ;;
8504 *) dflt='n';
8505 esac
8506 rp="Do you want to install only the version-specific parts of perl?"
8507 . ./myread
8508 case "$ans" in
8509 [yY]*)  val="$define";;
8510 *)      val="$undef" ;;
8511 esac
8512 set versiononly
8513 eval $setvar
8514
8515 case "$versiononly" in
8516 "$define") inc_version_list=''
8517            inc_version_list_init=0
8518            ;;
8519 esac
8520
8521 : figure out how to guarantee perl startup
8522 case "$startperl" in
8523 '')
8524         case "$sharpbang" in
8525         *!)
8526                 $cat <<EOH
8527
8528 I can use the #! construct to start perl on your system. This will
8529 make startup of perl scripts faster, but may cause problems if you
8530 want to share those scripts and perl is not in a standard place
8531 ($binexp/perl) on all your platforms. The alternative is to force
8532 a shell by starting the script with a single ':' character.
8533
8534 EOH
8535                 case "$versiononly" in
8536                 "$define")      dflt="$binexp/perl$version";;  
8537                 *)              dflt="$binexp/perl";;
8538                 esac
8539                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8540                 . ./myread
8541                 case "$ans" in
8542                 none)   startperl=": # use perl";;
8543                 *)      startperl="#!$ans"
8544                         if $test 30 -lt `echo "$ans" | wc -c`; then
8545                                 $cat >&4 <<EOM
8546
8547 WARNING:  Some systems limit the #! command to 32 characters.
8548 If you experience difficulty running Perl scripts with #!, try
8549 installing Perl in a directory with a shorter pathname.
8550
8551 EOM
8552                         fi ;;
8553                 esac
8554                 ;;
8555         *) startperl=": # use perl"
8556                 ;;
8557         esac
8558         ;;
8559 esac
8560 echo "I'll use $startperl to start perl scripts."
8561
8562 : figure best path for perl in scripts
8563 case "$perlpath" in
8564 '')
8565         case "$versiononly" in
8566         "$define")      perlpath="$binexp/perl$version";;
8567         *)              perlpath="$binexp/perl";;
8568         esac
8569         case "$startperl" in
8570         *!*) ;;
8571         *)
8572                 $cat <<EOH
8573
8574 I will use the "eval 'exec'" idiom to start Perl on your system.
8575 I can use the full path of your Perl binary for this purpose, but
8576 doing so may cause problems if you want to share those scripts and
8577 Perl is not always in a standard place ($binexp/perl).
8578
8579 EOH
8580                 dflt="$binexp/perl"
8581                 rp="What path shall I use in \"eval 'exec'\"?"
8582                 . ./myread
8583                 perlpath="$ans"
8584                 ;;
8585         esac
8586         ;;
8587 esac
8588 case "$startperl" in
8589 *!*)    ;;
8590 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8591 esac
8592
8593 : determine where public executable scripts go
8594 set scriptdir scriptdir
8595 eval $prefixit
8596 case "$scriptdir" in
8597 '')
8598         dflt="$bin"
8599         : guess some guesses
8600         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8601         $test -d /usr/share/bin     && dflt=/usr/share/bin
8602         $test -d /usr/local/script  && dflt=/usr/local/script
8603         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8604         $test -d $prefixexp/script  && dflt=$prefixexp/script
8605         set dflt
8606         eval $prefixup
8607         ;;
8608 *)  dflt="$scriptdir"
8609         ;;
8610 esac
8611 $cat <<EOM
8612  
8613 Some installations have a separate directory just for executable scripts so
8614 that they can mount it across multiple architectures but keep the scripts in
8615 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8616 Or you might just lump your scripts in with all your other executables.
8617  
8618 EOM
8619 fn=d~
8620 rp='Where do you keep publicly executable scripts?'
8621 . ./getfile
8622 if $test "X$ansexp" != "X$scriptdirexp"; then
8623         installscript=''
8624 fi
8625 scriptdir="$ans"
8626 scriptdirexp="$ansexp"
8627 : Change installation prefix, if necessary.
8628 if $test X"$prefix" != X"$installprefix"; then
8629         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8630 else
8631         installscript="$scriptdirexp"
8632 fi
8633
8634 : determine where add-on public executables go
8635 case "$sitebin" in
8636 '')     dflt=$siteprefix/bin ;;
8637 *)      dflt=$sitebin ;;
8638 esac
8639 fn=d~
8640 rp='Pathname where the add-on public executables should be installed?'
8641 . ./getfile
8642 sitebin="$ans"
8643 sitebinexp="$ansexp"
8644 : Change installation prefix, if necessary.
8645 if $test X"$prefix" != X"$installprefix"; then
8646         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8647 else
8648         installsitebin="$sitebinexp"
8649 fi
8650
8651 : determine where add-on html pages go
8652 : There is no standard location, so try to copy the previously-selected
8653 : directory structure for the core html pages.
8654 case "$sitehtml1dir" in
8655 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8656 *)     dflt=$sitehtml1dir ;;
8657 esac
8658 case "$dflt" in
8659 ''|' ') dflt=none ;;
8660 esac
8661 fn=dn+~
8662 rp='Pathname where the site-specific html pages should be installed?'
8663 . ./getfile
8664 sitehtml1dir="$ans"
8665 sitehtml1direxp="$ansexp"
8666 : Change installation prefix, if necessary.
8667 if $test X"$prefix" != X"$installprefix"; then
8668         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8669 else
8670         installsitehtml1dir="$sitehtml1direxp"
8671 fi
8672
8673 : determine where add-on library html pages go
8674 : There is no standard location, so try to copy the previously-selected
8675 : directory structure for the core html pages.
8676 case "$sitehtml3dir" in
8677 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8678 *)     dflt=$sitehtml3dir ;;
8679 esac
8680 case "$dflt" in
8681 ''|' ') dflt=none ;;
8682 esac
8683 fn=dn+~
8684 rp='Pathname where the site-specific library html pages should be installed?'
8685 . ./getfile
8686 sitehtml3dir="$ans"
8687 sitehtml3direxp="$ansexp"
8688 : Change installation prefix, if necessary.
8689 if $test X"$prefix" != X"$installprefix"; then
8690         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8691 else
8692         installsitehtml3dir="$sitehtml3direxp"
8693 fi
8694
8695 : determine where add-on manual pages go
8696 case "$siteman1dir" in
8697 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8698 *)      dflt=$siteman1dir ;;
8699 esac
8700 case "$dflt" in
8701 ''|' ') dflt=none ;;
8702 esac
8703 fn=dn+~
8704 rp='Pathname where the site-specific manual pages should be installed?'
8705 . ./getfile
8706 siteman1dir="$ans"
8707 siteman1direxp="$ansexp"
8708 : Change installation prefix, if necessary.
8709 if $test X"$prefix" != X"$installprefix"; then
8710         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8711 else
8712         installsiteman1dir="$siteman1direxp"
8713 fi
8714
8715 : determine where add-on library man pages go
8716 case "$siteman3dir" in
8717 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8718 *)      dflt=$siteman3dir ;;
8719 esac
8720 case "$dflt" in
8721 ''|' ') dflt=none ;;
8722 esac
8723 fn=dn+~
8724 rp='Pathname where the site-specific library manual pages should be installed?'
8725 . ./getfile
8726 siteman3dir="$ans"
8727 siteman3direxp="$ansexp"
8728 : Change installation prefix, if necessary.
8729 if $test X"$prefix" != X"$installprefix"; then
8730         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8731 else
8732         installsiteman3dir="$siteman3direxp"
8733 fi
8734
8735 : determine where add-on public executable scripts go
8736 case "$sitescript" in
8737 '')     dflt=$siteprefix/script
8738         $test -d $dflt || dflt=$sitebin ;;
8739 *)  dflt="$sitescript" ;;
8740 esac
8741 fn=d~+
8742 rp='Pathname where add-on public executable scripts should be installed?'
8743 . ./getfile
8744 sitescript="$ans"
8745 sitescriptexp="$ansexp"
8746 : Change installation prefix, if necessary.
8747 if $test X"$prefix" != X"$installprefix"; then
8748         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8749 else
8750         installsitescript="$sitescriptexp"
8751 fi
8752
8753 case "$usefaststdio" in
8754 $define|true|[yY]*|'')
8755         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8756         case "$xversion" in
8757         [68])   dflt='y' ;;
8758         *)      dflt='n' ;;
8759         esac
8760         ;;
8761 *) dflt='n';;
8762 esac
8763 cat <<EOM
8764
8765 Perl can be built to use 'fast stdio', which means using the stdio
8766 library but also directly manipulating the stdio buffers to enable
8767 faster I/O.  Using stdio is better for backward compatibility (especially
8768 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8769 interface has been preferred instead of stdio.
8770
8771 If this doesn't make any sense to you, just accept the default '$dflt'.
8772 EOM
8773 rp='Use the "fast stdio" if available?'
8774 . ./myread
8775 case "$ans" in
8776 y|Y)    val="$define" ;;     
8777 *)      val="$undef" ;;
8778 esac
8779 set usefaststdio
8780 eval $setvar
8781
8782
8783 : define an is-a-typedef? function
8784 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8785 case "$inclist" in
8786 "") inclist="sys/types.h";;
8787 esac;
8788 eval "varval=\$$var";
8789 case "$varval" in
8790 "")
8791         $rm -f temp.c;
8792         for inc in $inclist; do
8793                 echo "#include <$inc>" >>temp.c;
8794         done;
8795         echo "#ifdef $type" >> temp.c;
8796         echo "printf(\"We have $type\");" >> temp.c;
8797         echo "#endif" >> temp.c;
8798         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8799         if $contains $type temp.E >/dev/null 2>&1; then
8800                 eval "$var=\$type";
8801         else
8802                 eval "$var=\$def";
8803         fi;
8804         $rm -f temp.?;;
8805 *) eval "$var=\$varval";;
8806 esac'
8807
8808 : define an is-a-typedef? function that prompts if the type is not available.
8809 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8810 case "$inclist" in
8811 "") inclist="sys/types.h";;
8812 esac;
8813 eval "varval=\$$var";
8814 case "$varval" in
8815 "")
8816         $rm -f temp.c;
8817         for inc in $inclist; do
8818                 echo "#include <$inc>" >>temp.c;
8819         done;
8820         echo "#ifdef $type" >> temp.c;
8821         echo "printf(\"We have $type\");" >> temp.c;
8822         echo "#endif" >> temp.c;
8823         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8824         echo " " ;
8825         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8826         if $contains $type temp.E >/dev/null 2>&1; then
8827                 echo "$type found." >&4;
8828                 eval "$var=\$type";
8829         else
8830                 echo "$type NOT found." >&4;
8831                 dflt="$def";
8832                 . ./myread ;
8833                 eval "$var=\$ans";
8834         fi;
8835         $rm -f temp.?;;
8836 *) eval "$var=\$varval";;
8837 esac'
8838
8839 : see what type lseek is declared as in the kernel
8840 rp="What is the type used for lseek's offset on this system?"
8841 set off_t lseektype long stdio.h sys/types.h
8842 eval $typedef_ask
8843
8844 echo " "
8845 echo "Checking to see how big your file offsets are..." >&4
8846 $cat >try.c <<EOCP
8847 #include <sys/types.h>
8848 #include <stdio.h>
8849 int main()
8850 {
8851     printf("%d\n", (int)sizeof($lseektype));
8852     return(0); 
8853 }
8854 EOCP
8855 set try
8856 if eval $compile_ok; then
8857         lseeksize=`$run ./try`
8858         echo "Your file offsets are $lseeksize bytes long."
8859 else
8860         dflt=$longsize
8861         echo " "
8862         echo "(I can't seem to compile the test program.  Guessing...)"
8863         rp="What is the size of your file offsets (in bytes)?"
8864         . ./myread
8865         lseeksize="$ans"
8866 fi
8867 $rm -f try.c try
8868
8869 : see what type file positions are declared as in the library
8870 rp="What is the type for file position used by fsetpos()?"
8871 set fpos_t fpostype long stdio.h sys/types.h
8872 eval $typedef_ask
8873
8874 echo " "
8875 case "$fpostype" in
8876 *_t) zzz="$fpostype"    ;;
8877 *)   zzz="fpos_t"       ;;
8878 esac
8879 echo "Checking the size of $zzz..." >&4 
8880 cat > try.c <<EOCP
8881 #include <sys/types.h>
8882 #include <stdio.h>
8883 #$i_stdlib I_STDLIB
8884 #ifdef I_STDLIB
8885 #include <stdlib.h>
8886 #endif
8887 int main() {
8888     printf("%d\n", (int)sizeof($fpostype));
8889     exit(0);
8890 }
8891 EOCP
8892 set try
8893 if eval $compile_ok; then
8894         yyy=`$run ./try`
8895         case "$yyy" in
8896         '')     fpossize=4
8897                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8898                 ;;
8899         *)      fpossize=$yyy
8900                 echo "Your $zzz is $fpossize bytes long."
8901                 ;;
8902         esac
8903 else
8904         dflt="$longsize"
8905         echo " " >&4
8906         echo "(I can't compile the test program.  Guessing...)" >&4
8907         rp="What is the size of your file positions (in bytes)?"
8908         . ./myread
8909         fpossize="$ans"
8910 fi
8911
8912 # Backward compatibility (uselfs is deprecated).
8913 case "$uselfs" in
8914 "$define"|true|[yY]*)
8915         cat <<EOM >&4
8916
8917 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8918 EOM
8919         uselargefiles="$define"
8920         ;;
8921 esac                          
8922
8923 case "$lseeksize:$fpossize" in
8924 8:8) cat <<EOM
8925
8926 You can have files larger than 2 gigabytes.
8927 EOM
8928    val="$define" ;;
8929 *)    case "$uselargefiles" in
8930    "$undef"|false|[nN]*) dflt='n' ;;
8931    *)   dflt='y' ;;
8932    esac
8933    cat <<EOM
8934
8935 Perl can be built to understand large files (files larger than 2 gigabytes)
8936 on some systems.  To do so, Configure can be run with -Duselargefiles.
8937
8938 If this doesn't make any sense to you, just accept the default '$dflt'.
8939 EOM
8940    rp='Try to understand large files, if available?'
8941    . ./myread
8942    case "$ans" in
8943    y|Y)         val="$define" ;;
8944    *)           val="$undef"  ;;
8945    esac
8946    ;;
8947 esac
8948 set uselargefiles
8949 eval $setvar
8950 : Look for a hint-file generated 'call-back-unit'.  If the
8951 : user has specified that a large files perl is to be built,
8952 : we may need to set or change some other defaults.
8953 if $test -f uselargefiles.cbu; then
8954         echo "Your platform has some specific hints regarding large file builds, using them..."
8955         . ./uselargefiles.cbu
8956 fi
8957 case "$uselargefiles" in
8958 "$define")
8959         if $test -f uselargefiles.cbu; then
8960                 echo " "
8961                 echo "Rechecking to see how big your file offsets are..." >&4
8962                 $cat >try.c <<EOCP
8963 #include <sys/types.h>
8964 #include <stdio.h>
8965 int main()
8966 {
8967     printf("%d\n", (int)sizeof($lseektype));
8968     return(0); 
8969 }
8970 EOCP
8971                 set try
8972                 if eval $compile_ok; then
8973                         lseeksize=`$run ./try`
8974                         $echo "Your file offsets are now $lseeksize bytes long."
8975                 else
8976                         dflt="$lseeksize"
8977                         echo " "
8978                         echo "(I can't seem to compile the test program.  Guessing...)"
8979                         rp="What is the size of your file offsets (in bytes)?"
8980                         . ./myread
8981                         lseeksize="$ans"
8982                 fi
8983                 case "$fpostype" in
8984                 *_t) zzz="$fpostype"    ;;
8985                 *)   zzz="fpos_t"       ;;
8986                 esac
8987                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8988                 $cat > try.c <<EOCP
8989 #include <sys/types.h>
8990 #include <stdio.h>
8991 #$i_stdlib I_STDLIB
8992 #ifdef I_STDLIB
8993 #include <stdlib.h>
8994 #endif
8995 int main() {
8996     printf("%d\n", (int)sizeof($fpostype));
8997     return(0);
8998 }
8999 EOCP
9000                 set try
9001                 if eval $compile_ok; then
9002                         yyy=`$run ./try`
9003                         dflt="$lseeksize"
9004                         case "$yyy" in
9005                         '')     echo " "
9006                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9007                                 ;;
9008                         *)      fpossize=$yyy
9009                                 echo " $fpossize bytes." >&4
9010                                 ;;
9011                         esac
9012                 else
9013                         dflt="$fpossize"
9014                         echo " "
9015                         echo "(I can't compile the test program.  Guessing...)" >&4
9016                         rp="What is the size of your file positions (in bytes)?"
9017                         . ./myread
9018                         fpossize="$ans"
9019                 fi
9020                 $rm -f try.c try
9021         fi
9022         ;;
9023 esac
9024
9025 # probably will refer to
9026 #   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
9027 need_relocation=0
9028 userelocatableinc=undef
9029
9030 case "$vendorprefix" in
9031 '')     d_vendorbin="$undef"
9032         vendorbin=''
9033         vendorbinexp=''
9034         ;;
9035 *)      d_vendorbin="$define"
9036         : determine where vendor-supplied executables go.
9037         case "$vendorbin" in
9038         '') dflt=$vendorprefix/bin ;;
9039         *)      dflt="$vendorbin" ;;
9040         esac
9041         fn=d~+
9042         rp='Pathname for the vendor-supplied executables directory?'
9043         . ./getfile
9044         vendorbin="$ans"
9045         vendorbinexp="$ansexp"
9046         ;;
9047 esac
9048 : Change installation prefix, if necessary.
9049 if $test X"$prefix" != X"$installprefix"; then
9050         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9051 else
9052         installvendorbin="$vendorbinexp"
9053 fi
9054
9055 case "$vendorprefix" in
9056 '')     vendorhtml1dir=''
9057         vendorhtml1direxp=''
9058         ;;
9059 *)      : determine where vendor-supplied html pages go.
9060         : There is no standard location, so try to copy the previously-selected
9061         : directory structure for the core html pages.
9062         : XXX Better default suggestions would be welcome.
9063         case "$vendorhtml1dir" in
9064         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9065         *)      dflt=$vendorhtml1dir ;;
9066         esac
9067         case "$dflt" in
9068         ''|' ') dflt=none ;;
9069         esac
9070         fn=dn+~
9071         rp='Pathname for the vendor-supplied html pages?'
9072         . ./getfile
9073         vendorhtml1dir="$ans"
9074         vendorhtml1direxp="$ansexp"
9075         ;;
9076 esac
9077 : Use ' ' for none so value is preserved next time through Configure
9078 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9079 : Change installation prefix, if necessary.
9080 if $test X"$prefix" != X"$installprefix"; then
9081         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9082 else
9083         installvendorhtml1dir="$vendorhtml1direxp"
9084 fi
9085
9086 case "$vendorprefix" in
9087 '')     vendorhtml3dir=''
9088         vendorhtml3direxp=''
9089         ;;
9090 *)      : determine where vendor-supplied module html pages go.
9091         : There is no standard location, so try to copy the previously-selected
9092         : directory structure for the core html pages.
9093         : XXX Better default suggestions would be welcome.
9094         case "$vendorhtml3dir" in
9095         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9096         *)      dflt=$vendorhtml3dir ;;
9097         esac
9098         case "$dflt" in
9099         ''|' ') dflt=none ;;
9100         esac
9101         fn=dn+~
9102         rp='Pathname for the vendor-supplied html pages?'
9103         . ./getfile
9104         vendorhtml3dir="$ans"
9105         vendorhtml3direxp="$ansexp"
9106         ;;
9107 esac
9108 : Use ' ' for none so value is preserved next time through Configure
9109 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9110 : Change installation prefix, if necessary.
9111 if $test X"$prefix" != X"$installprefix"; then
9112         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9113 else
9114         installvendorhtml3dir="$vendorhtml3direxp"
9115 fi
9116
9117 case "$vendorprefix" in
9118 '')     vendorman1dir=''
9119         vendorman1direxp=''
9120         ;;
9121 *)      : determine where vendor-supplied manual pages go.
9122         case "$vendorman1dir" in
9123         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9124         *)      dflt=$vendorman1dir ;;
9125         esac
9126         case "$dflt" in
9127         ''|' ') dflt=none ;;
9128         esac
9129         fn=nd~+
9130         rp='Pathname for the vendor-supplied manual section 1 pages?'
9131         . ./getfile
9132         vendorman1dir="$ans"
9133         vendorman1direxp="$ansexp"
9134         ;;
9135 esac
9136 : Use ' ' for none so value is preserved next time through Configure
9137 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9138 : Change installation prefix, if necessary.
9139 if $test X"$prefix" != X"$installprefix"; then
9140         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9141 else
9142         installvendorman1dir="$vendorman1direxp"
9143 fi
9144
9145 case "$vendorprefix" in
9146 '')     vendorman3dir=''
9147         vendorman3direxp=''
9148         ;;
9149 *)      : determine where vendor-supplied module manual pages go.
9150         case "$vendorman3dir" in
9151         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9152         *)      dflt=$vendorman3dir ;;
9153         esac
9154         case "$dflt" in
9155         ''|' ') dflt=none ;;
9156         esac
9157         fn=nd~+
9158         rp='Pathname for the vendor-supplied manual section 3 pages?'
9159         . ./getfile
9160         vendorman3dir="$ans"
9161         vendorman3direxp="$ansexp"
9162         ;;
9163 esac
9164 : Use ' ' for none so value is preserved next time through Configure
9165 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9166 : Change installation prefix, if necessary.
9167 if $test X"$prefix" != X"$installprefix"; then
9168         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9169 else
9170         installvendorman3dir="$vendorman3direxp"
9171 fi
9172
9173 case "$vendorprefix" in
9174 '')     d_vendorscript="$undef"
9175         vendorscript=''
9176         vendorscriptexp=''
9177         ;;
9178 *)      d_vendorscript="$define"
9179         : determine where vendor-supplied scripts go.
9180         case "$vendorscript" in
9181         '')     dflt=$vendorprefix/script
9182                 $test -d $dflt || dflt=$vendorbin ;;
9183         *)  dflt="$vendorscript" ;;
9184         esac
9185         $cat <<EOM
9186
9187 The installation process will create a directory for 
9188 vendor-supplied scripts.
9189
9190 EOM
9191         fn=d~+
9192         rp='Pathname for the vendor-supplied scripts directory?'
9193         . ./getfile
9194         vendorscript="$ans"
9195         vendorscriptexp="$ansexp"
9196         ;;
9197 esac
9198 : Change installation prefix, if necessary.
9199 if $test X"$prefix" != X"$installprefix"; then
9200         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9201 else
9202         installvendorscript="$vendorscriptexp"
9203 fi
9204
9205 : see if qgcvt exists
9206 set qgcvt d_qgcvt
9207 eval $inlibc
9208
9209 echo " "
9210
9211 if $test X"$d_longdbl" = X"$define"; then
9212
9213 echo "Checking how to print long doubles..." >&4
9214
9215 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9216         $cat >try.c <<'EOCP'
9217 #include <sys/types.h>
9218 #include <stdio.h>
9219 int main() {
9220   double d = 123.456;
9221   printf("%.3f\n", d);
9222 }
9223 EOCP
9224         set try
9225         if eval $compile; then
9226                 yyy=`$run ./try`
9227                 case "$yyy" in
9228                 123.456)
9229                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9230                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9231                         echo "We will use %f."
9232                         ;;
9233                 esac
9234         fi
9235 fi
9236
9237 if $test X"$sPRIfldbl" = X; then
9238         $cat >try.c <<'EOCP'
9239 #include <sys/types.h>
9240 #include <stdio.h>
9241 int main() {
9242   long double d = 123.456;
9243   printf("%.3Lf\n", d);
9244 }
9245 EOCP
9246         set try
9247         if eval $compile; then
9248                 yyy=`$run ./try`
9249                 case "$yyy" in
9250                 123.456)
9251                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9252                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9253                         echo "We will use %Lf."
9254                         ;;
9255                 esac
9256         fi
9257 fi
9258
9259 if $test X"$sPRIfldbl" = X; then
9260         $cat >try.c <<'EOCP'
9261 #include <sys/types.h>
9262 #include <stdio.h>
9263 int main() {
9264   long double d = 123.456;
9265   printf("%.3llf\n", d);
9266 }
9267 EOCP
9268         set try
9269         if eval $compile; then
9270                 yyy=`$run ./try`
9271                 case "$yyy" in
9272                 123.456)
9273                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9274                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9275                         echo "We will use %llf."
9276                         ;;
9277                 esac
9278         fi
9279 fi
9280
9281 if $test X"$sPRIfldbl" = X; then
9282         $cat >try.c <<'EOCP'
9283 #include <sys/types.h>
9284 #include <stdio.h>
9285 int main() {
9286   long double d = 123.456;
9287   printf("%.3lf\n", d);
9288 }
9289 EOCP
9290         set try
9291         if eval $compile; then
9292                 yyy=`$run ./try`
9293                 case "$yyy" in
9294                 123.456)
9295                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9296                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9297                         echo "We will use %lf."
9298                         ;;
9299                 esac
9300         fi
9301 fi
9302
9303 if $test X"$sPRIfldbl" = X; then
9304         echo "Cannot figure out how to print long doubles." >&4
9305 else
9306         sSCNfldbl=$sPRIfldbl    # expect consistency
9307 fi
9308
9309 $rm -f try try.*
9310
9311 fi # d_longdbl
9312
9313 case "$sPRIfldbl" in
9314 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9315         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9316         d_SCNfldbl="$undef";
9317         ;;
9318 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9319         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9320         d_SCNfldbl="$define";
9321         ;;
9322 esac
9323
9324 : Check how to convert floats to strings.
9325
9326 if test "X$d_Gconvert" = X; then
9327
9328 echo " "
9329 echo "Checking for an efficient way to convert floats to strings."
9330 echo " " > try.c
9331 case "$uselongdouble" in
9332 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9333 esac
9334 case "$d_longdbl" in
9335 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9336 esac
9337 case "$d_PRIgldbl" in
9338 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9339 esac
9340 $cat >>try.c <<EOP
9341 #ifdef TRY_gconvert
9342 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9343 char *myname = "gconvert";
9344 #endif
9345 #ifdef TRY_gcvt
9346 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9347 char *myname = "gcvt";
9348 #endif
9349 #ifdef TRY_qgcvt
9350 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9351 char *myname = "qgcvt";
9352 #define DOUBLETYPE long double
9353 #endif
9354 #ifdef TRY_sprintf
9355 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9356 #ifdef HAS_PRIgldbl
9357 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9358 #else
9359 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9360 #endif
9361 #else
9362 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9363 #endif
9364 char *myname = "sprintf";
9365 #endif
9366
9367 #ifndef DOUBLETYPE
9368 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9369 #define DOUBLETYPE long double
9370 #else
9371 #define DOUBLETYPE double
9372 #endif
9373 #endif
9374
9375 #include <stdio.h>
9376
9377 #define I_STDLIB $i_stdlib
9378 #ifdef I_STDLIB
9379 #include <stdlib.h>
9380 #endif
9381
9382 int
9383 checkit(expect, got)
9384 char *expect;
9385 char *got;
9386 {
9387     if (strcmp(expect, got)) {
9388                 printf("%s oddity:  Expected %s, got %s\n",
9389                         myname, expect, got);
9390                 exit(1);
9391         }
9392 }
9393
9394 int main()
9395
9396         char buf[64]; 
9397         buf[63] = '\0';
9398
9399         /* This must be 1st test on (which?) platform */
9400         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9401         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9402         checkit("0.1", buf);
9403
9404         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9405         checkit("0.01", buf);
9406
9407         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9408         checkit("0.001", buf);
9409
9410         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9411         checkit("0.0001", buf);
9412
9413         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9414         if (strlen(buf) > 5)
9415             checkit("9e-005", buf); /* for Microsoft ?? */
9416         else
9417             checkit("9e-05", buf);
9418
9419         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9420         checkit("1", buf);
9421
9422         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9423         checkit("1.1", buf);
9424
9425         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9426         checkit("1.01", buf);
9427
9428         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9429         checkit("1.001", buf);
9430
9431         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9432         checkit("1.0001", buf);
9433
9434         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9435         checkit("1.00001", buf);
9436
9437         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9438         checkit("1.000001", buf);
9439
9440         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9441         checkit("0", buf);
9442
9443         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9444         checkit("-1", buf);
9445
9446         /* Some Linux gcvt's give 1.e+5 here. */
9447         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9448         checkit("100000", buf);
9449         
9450         /* Some Linux gcvt's give -1.e+5 here. */
9451         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9452         checkit("-100000", buf);
9453
9454         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9455         checkit("123.456", buf);
9456
9457         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9458         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9459         /* 34 should be enough to scare even long double
9460          * places into using the e notation. */
9461         if (strlen(buf) > 5)
9462             checkit("1e+034", buf); /* for Microsoft */
9463         else
9464             checkit("1e+34", buf);
9465
9466         /* For Perl, if you add additional tests here, also add them to
9467          * t/base/num.t for benefit of platforms not using Configure or
9468          * overriding d_Gconvert */
9469
9470         exit(0);
9471 }
9472 EOP
9473 : first add preferred functions to our list
9474 xxx_list=""
9475 for xxx_convert in $gconvert_preference; do
9476     case $xxx_convert in
9477     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9478     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9479     esac 
9480 done
9481 : then add any others
9482 for xxx_convert in gconvert gcvt sprintf; do
9483     case "$xxx_list" in
9484     *$xxx_convert*) ;;
9485     *) xxx_list="$xxx_list $xxx_convert" ;;
9486     esac 
9487 done
9488
9489 case "$d_longdbl$uselongdouble" in
9490 "$define$define")
9491     : again, add prefered functions to our list first
9492     xxx_ld_list=""
9493     for xxx_convert in $gconvert_ld_preference; do
9494         case $xxx_convert in
9495         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9496         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9497         esac
9498     done
9499     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9500     for xxx_convert in qgcvt sprintf $xxx_list; do
9501         case "$xxx_ld_list" in
9502         $xxx_convert*|*" $xxx_convert"*) ;;
9503         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9504         esac
9505     done
9506     : if sprintf cannot do long doubles, move it to the end
9507     if test "$d_PRIgldbl" != "$define"; then
9508         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9509     fi
9510     : if no qgcvt, remove it
9511     if test "$d_qgcvt" != "$define"; then
9512         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9513     fi
9514     : use the ld_list
9515     xxx_list="$xxx_ld_list"
9516     ;;
9517 esac
9518
9519 for xxx_convert in $xxx_list; do
9520         echo "Trying $xxx_convert..."
9521         $rm -f try try$_o
9522         set try -DTRY_$xxx_convert
9523         if eval $compile; then
9524                 echo "$xxx_convert() found." >&4
9525                 if $run ./try; then
9526                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9527                         break;
9528                 else
9529                         echo "...But $xxx_convert didn't work as I expected."
9530                         xxx_convert=''
9531                 fi
9532         else
9533                 echo "$xxx_convert NOT found." >&4
9534         fi
9535 done
9536
9537 if test X$xxx_convert = X; then
9538     echo "*** WHOA THERE!!! ***" >&4
9539     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9540     xxx_convert=sprintf
9541 fi
9542
9543 case "$xxx_convert" in
9544 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9545 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9546 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9547 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9548    "$define$define$define")
9549       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9550    "$define$define$undef")
9551       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9552    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9553    esac
9554    ;;  
9555 esac
9556
9557 fi
9558
9559 : see if _fwalk exists
9560 set fwalk d__fwalk
9561 eval $inlibc
9562
9563 : Initialize h_fcntl
9564 h_fcntl=false
9565
9566 : Initialize h_sysfile
9567 h_sysfile=false
9568
9569 : access call always available on UNIX
9570 set access d_access
9571 eval $inlibc
9572
9573 : locate the flags for 'access()'
9574 case "$d_access" in
9575 "$define")
9576         echo " "
9577         $cat >access.c <<EOCP
9578 #include <sys/types.h>
9579 #ifdef I_FCNTL
9580 #include <fcntl.h>
9581 #endif
9582 #ifdef I_SYS_FILE
9583 #include <sys/file.h>
9584 #endif
9585 #ifdef I_UNISTD
9586 #include <unistd.h>
9587 #endif
9588 #$i_stdlib I_STDLIB
9589 #ifdef I_STDLIB
9590 #include <stdlib.h>
9591 #endif
9592 int main() {
9593         exit(R_OK);
9594 }
9595 EOCP
9596         : check sys/file.h first, no particular reason here
9597         if $test `./findhdr sys/file.h` && \
9598                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9599                 h_sysfile=true;
9600                 echo "<sys/file.h> defines the *_OK access constants." >&4
9601         elif $test `./findhdr fcntl.h` && \
9602                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9603                 h_fcntl=true;
9604                 echo "<fcntl.h> defines the *_OK access constants." >&4
9605         elif $test `./findhdr unistd.h` && \
9606                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9607                 echo "<unistd.h> defines the *_OK access constants." >&4
9608         else
9609                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9610         fi
9611         ;;
9612 esac
9613 $rm -f access*
9614
9615 : see if accessx exists
9616 set accessx d_accessx
9617 eval $inlibc
9618
9619 : see if aintl exists
9620 set aintl d_aintl
9621 eval $inlibc
9622
9623 : see if alarm exists
9624 set alarm d_alarm
9625 eval $inlibc
9626
9627 : see if POSIX threads are available
9628 set pthread.h i_pthread
9629 eval $inhdr
9630
9631 : define a fucntion to check prototypes
9632 $cat > protochk <<EOSH
9633 $startsh
9634 cc="$cc"
9635 optimize="$optimize"
9636 ccflags="$ccflags"
9637 prototype="$prototype"
9638 define="$define"
9639 rm=$rm
9640 usethreads=$usethreads
9641 i_pthread=$i_pthread
9642 pthread_h_first=$pthread_h_first
9643 EOSH
9644
9645 $cat >> protochk <<'EOSH'
9646
9647 $rm -f try.c
9648 foo="$1"
9649 shift
9650 while test $# -ge 2; do
9651         case "$1" in
9652                 $define) echo "#include <$2>" >> try.c ;;
9653                 literal) echo "$2" >> try.c ;;
9654         esac
9655     # Extra magic for the benefit of systems that need pthread.h
9656     # to be included early to correctly detect threadsafe functions.
9657     # Such functions must guarantee themselves, though, that the usethreads
9658     # and i_pthread have been defined, before calling protochk.
9659     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9660         echo "#include <pthread.h>" >> try.c
9661         pthread_h_done=yes
9662     fi
9663     shift 2
9664 done
9665 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9666 cat >> try.c <<'EOCP'
9667 #ifdef CAN_PROTOTYPE
9668 #define _(args) args
9669 #else
9670 #define _(args) ()
9671 #endif
9672 EOCP
9673 echo "$foo" >> try.c
9674 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9675 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9676 status=$?
9677 $rm -f try.[co]
9678 exit $status
9679 EOSH
9680 chmod +x protochk
9681 $eunicefix protochk
9682
9683 hasproto='varname=$1; func=$2; shift; shift;
9684 while $test $# -ge 2; do
9685         case "$1" in
9686         $define) echo "#include <$2>";;
9687         esac ;
9688     shift 2;
9689 done > try.c;
9690 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9691 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9692         echo "$func() prototype found.";
9693         val="$define";
9694 else
9695         echo "$func() prototype NOT found.";
9696         val="$undef";
9697 fi;
9698 set $varname;
9699 eval $setvar;
9700 $rm -f try.c tryout.c'
9701
9702 : see if sys/types.h has to be included
9703 set sys/types.h i_systypes
9704 eval $inhdr
9705
9706 : see if sys/select.h has to be included
9707 set sys/select.h i_sysselct
9708 eval $inhdr
9709
9710 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9711 while $test $# -ge 2; do
9712         case "$1" in
9713         $define) echo "#include <$2>";;
9714         esac ;
9715     shift 2;
9716 done > try.c;
9717 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9718 set try;
9719 if eval $compile; then
9720         val="$define";
9721 else
9722         val="$undef";
9723 fi;
9724 set $varname;
9725 eval $setvar;
9726 $rm -f try.c try.o'
9727
9728 : see if we should include time.h, sys/time.h, or both
9729 echo " "
9730 if test "X$timeincl" = X; then
9731         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9732         $echo $n "I'm now running the test program...$c"
9733         $cat >try.c <<EOCP
9734 #include <sys/types.h>
9735 #ifdef I_TIME
9736 #include <time.h>
9737 #endif
9738 #ifdef I_SYSTIME
9739 #ifdef SYSTIMEKERNEL
9740 #define KERNEL
9741 #endif
9742 #include <sys/time.h>
9743 #endif
9744 #ifdef I_SYSSELECT
9745 #include <sys/select.h>
9746 #endif
9747 #$i_stdlib I_STDLIB
9748 #ifdef I_STDLIB
9749 #include <stdlib.h>
9750 #endif
9751 int main()
9752 {
9753         struct tm foo;
9754 #ifdef S_TIMEVAL
9755         struct timeval bar;
9756 #endif
9757 #ifdef S_TIMEZONE
9758         struct timezone tzp;
9759 #endif
9760         if (foo.tm_sec == foo.tm_sec)
9761                 exit(0);
9762 #ifdef S_TIMEVAL
9763         if (bar.tv_sec == bar.tv_sec)
9764                 exit(0);
9765 #endif
9766         exit(1);
9767 }
9768 EOCP
9769         flags=''
9770         for s_timezone in '-DS_TIMEZONE' ''; do
9771         sysselect=''
9772         for s_timeval in '-DS_TIMEVAL' ''; do
9773         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9774         for i_time in '' '-DI_TIME'; do
9775         for i_systime in '-DI_SYSTIME' ''; do
9776                 case "$flags" in
9777                 '') $echo $n ".$c"
9778                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9779                         if eval $compile; then
9780                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9781                                 shift
9782                                 flags="$*"
9783                                 echo " "
9784                                 $echo $n "Succeeded with $flags$c"
9785                         fi
9786                         ;;
9787                 esac
9788         done
9789         done
9790         done
9791         done
9792         done
9793         timeincl=''
9794         echo " "
9795         case "$flags" in
9796         *SYSTIMEKERNEL*) i_systimek="$define"
9797                 timeincl=`./findhdr sys/time.h`
9798                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9799         *) i_systimek="$undef";;
9800         esac
9801         case "$flags" in
9802         *I_TIME*) i_time="$define"
9803                 timeincl=`./findhdr time.h`" $timeincl"
9804                 echo "We'll include <time.h>." >&4;;
9805         *) i_time="$undef";;
9806         esac
9807         case "$flags" in
9808         *I_SYSTIME*) i_systime="$define"
9809                 timeincl=`./findhdr sys/time.h`" $timeincl"
9810                 echo "We'll include <sys/time.h>." >&4;;
9811         *) i_systime="$undef";;
9812         esac
9813         $rm -f try.c try
9814 fi
9815 : see if struct tm knows about tm_zone
9816 case "$i_systime$i_time" in
9817 *$define*) 
9818         echo " "
9819         echo "Checking to see if your struct tm has tm_zone field..." >&4
9820         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9821         eval $hasfield
9822         ;;
9823 *)      val="$undef"
9824         set d_tm_tm_zone
9825         eval $setvar
9826         ;;
9827 esac
9828 case "$d_tm_tm_zone" in
9829 "$define")      echo "Yes, it does."   ;;
9830 *)              echo "No, it doesn't." ;;
9831 esac
9832 : see if struct tm knows about tm_gmtoff
9833 case "$i_systime$i_time" in
9834 *$define*) 
9835         echo " "
9836         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9837         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9838         eval $hasfield
9839         ;;
9840 *)      val="$undef"
9841         set d_tm_tm_gmtoff
9842         eval $setvar
9843         ;;
9844 esac
9845 case "$d_tm_tm_gmtoff" in
9846 "$define")      echo "Yes, it does."   ;;
9847 *)              echo "No, it doesn't." ;;
9848 esac
9849
9850 : see if asctime_r exists
9851 set asctime_r d_asctime_r
9852 eval $inlibc
9853 case "$d_asctime_r" in
9854 "$define")
9855         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9856         case "$d_asctime_r_proto:$usethreads" in
9857         ":define")      d_asctime_r_proto=define
9858                 set d_asctime_r_proto asctime_r $hdrs
9859                 eval $hasproto ;;
9860         *)      ;;
9861         esac
9862         case "$d_asctime_r_proto" in
9863         define)
9864         case "$asctime_r_proto" in
9865         ''|0) try='char* asctime_r(const struct tm*, char*);'
9866         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9867         esac
9868         case "$asctime_r_proto" in
9869         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9870         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9871         esac
9872         case "$asctime_r_proto" in
9873         ''|0) try='int asctime_r(const struct tm*, char*);'
9874         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9875         esac
9876         case "$asctime_r_proto" in
9877         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9878         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9879         esac
9880         case "$asctime_r_proto" in
9881         ''|0)   d_asctime_r=undef
9882                 asctime_r_proto=0
9883                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9884         * )     case "$asctime_r_proto" in
9885                 REENTRANT_PROTO*) ;;
9886                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9887                 esac
9888                 echo "Prototype: $try" ;;
9889         esac
9890         ;;
9891         *)      case "$usethreads" in
9892                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9893                 esac
9894                 d_asctime_r=undef
9895                 asctime_r_proto=0
9896                 ;;
9897         esac
9898         ;;
9899 *)      asctime_r_proto=0
9900         ;;
9901 esac
9902
9903 : see if atolf exists
9904 set atolf d_atolf
9905 eval $inlibc
9906
9907 : see if atoll exists
9908 set atoll d_atoll
9909 eval $inlibc
9910
9911 : Look for GCC-style attribute format
9912 case "$d_attribute_format" in
9913 '')
9914 echo " "
9915 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
9916 $cat >attrib.c <<'EOCP'
9917 #include <stdio.h>
9918 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
9919 EOCP
9920 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9921         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9922                 echo "Your C compiler doesn't support __attribute__((format))."
9923                 val="$undef"
9924         else
9925                 echo "Your C compiler supports __attribute__((format))."
9926                 val="$define"
9927         fi
9928 else
9929         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9930         val="$undef"
9931 fi
9932 ;;
9933 *) val="$d_attribute_format" ;;
9934 esac
9935 set d_attribute_format
9936 eval $setvar
9937 $rm -f attrib*
9938
9939 : Look for GCC-style attribute malloc
9940 case "$d_attribute_malloc" in
9941 '')
9942 echo " "
9943 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
9944 $cat >attrib.c <<'EOCP'
9945 #include <stdio.h>
9946 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
9947 EOCP
9948 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9949         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9950                 echo "Your C compiler doesn't support __attribute__((malloc))."
9951                 val="$undef"
9952         else
9953                 echo "Your C compiler supports __attribute__((malloc))."
9954                 val="$define"
9955         fi
9956 else
9957         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9958         val="$undef"
9959 fi
9960 ;;
9961 *) val="$d_attribute_malloc" ;;
9962 esac
9963 set d_attribute_malloc
9964 eval $setvar
9965 $rm -f attrib*
9966
9967 : Look for GCC-style attribute nonnull
9968 case "$d_attribute_nonnull" in
9969 '')
9970 echo " "
9971 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
9972 $cat >attrib.c <<'EOCP'
9973 #include <stdio.h>
9974 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
9975 EOCP
9976 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9977         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9978                 echo "Your C compiler doesn't support __attribute__((nonnull))."
9979                 val="$undef"
9980         else
9981                 echo "Your C compiler supports __attribute__((nonnull))."
9982                 val="$define"
9983         fi
9984 else
9985         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9986         val="$undef"
9987 fi
9988 ;;
9989 *) val="$d_attribute_nonnull" ;;
9990 esac
9991 set d_attribute_nonnull
9992 eval $setvar
9993 $rm -f attrib*
9994
9995 : Look for GCC-style attribute noreturn
9996 case "$d_attribute_noreturn" in
9997 '')
9998 echo " "
9999 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10000 $cat >attrib.c <<'EOCP'
10001 #include <stdio.h>
10002 void fall_over_dead( void ) __attribute__((noreturn));
10003 EOCP
10004 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10005         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10006                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10007                 val="$undef"
10008         else
10009                 echo "Your C compiler supports __attribute__((noreturn))."
10010                 val="$define"
10011         fi
10012 else
10013         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10014         val="$undef"
10015 fi
10016 ;;
10017 *) val="$d_attribute_noreturn" ;;
10018 esac
10019 set d_attribute_noreturn
10020 eval $setvar
10021 $rm -f attrib*
10022
10023 : Look for GCC-style attribute pure
10024 case "$d_attribute_pure" in
10025 '')
10026 echo " "
10027 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10028 $cat >attrib.c <<'EOCP'
10029 #include <stdio.h>
10030 int square( int n ) __attribute__((pure));
10031 EOCP
10032 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10033         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10034                 echo "Your C compiler doesn't support __attribute__((pure))."
10035                 val="$undef"
10036         else
10037                 echo "Your C compiler supports __attribute__((pure))."
10038                 val="$define"
10039         fi
10040 else
10041         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10042         val="$undef"
10043 fi
10044 ;;
10045 *) val="$d_attribute_pure" ;;
10046 esac
10047 set d_attribute_pure
10048 eval $setvar
10049 $rm -f attrib*
10050
10051 : Look for GCC-style attribute unused
10052 case "$d_attribute_unused" in
10053 '')
10054 echo " "
10055 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10056 $cat >attrib.c <<'EOCP'
10057 #include <stdio.h>
10058 int do_something( int dummy __attribute__((unused)), int n );
10059 EOCP
10060 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10061         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10062                 echo "Your C compiler doesn't support __attribute__((unused))."
10063                 val="$undef"
10064         else
10065                 echo "Your C compiler supports __attribute__((unused))."
10066                 val="$define"
10067         fi
10068 else
10069         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10070         val="$undef"
10071 fi
10072 ;;
10073 *) val="$d_attribute_unused" ;;
10074 esac
10075 set d_attribute_unused
10076 eval $setvar
10077 $rm -f attrib*
10078
10079 : Look for GCC-style attribute warn_unused_result
10080 case "$d_attribute_warn_unused_result" in
10081 '')
10082 echo " "
10083 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10084 $cat >attrib.c <<'EOCP'
10085 #include <stdio.h>
10086 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10087 EOCP
10088 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10089         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10090                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10091                 val="$undef"
10092         else
10093                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10094                 val="$define"
10095         fi
10096 else
10097         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10098         val="$undef"
10099 fi
10100 ;;
10101 *) val="$d_attribute_warn_unused_result" ;;
10102 esac
10103 set d_attribute_warn_unused_result
10104 eval $setvar
10105 $rm -f attrib*
10106
10107 : see if bcmp exists
10108 set bcmp d_bcmp
10109 eval $inlibc
10110
10111 : see if bcopy exists
10112 set bcopy d_bcopy
10113 eval $inlibc
10114
10115 : see if this is a unistd.h system
10116 set unistd.h i_unistd
10117 eval $inhdr
10118
10119 : see if getpgrp exists
10120 set getpgrp d_getpgrp
10121 eval $inlibc
10122
10123 case "$d_getpgrp" in
10124 "$define")
10125         echo " "
10126         echo "Checking to see which flavor of getpgrp is in use..."
10127         $cat >try.c <<EOP
10128 #$i_unistd I_UNISTD
10129 #include <sys/types.h>
10130 #ifdef I_UNISTD
10131 #  include <unistd.h>
10132 #endif
10133 #$i_stdlib I_STDLIB
10134 #ifdef I_STDLIB
10135 #include <stdlib.h>
10136 #endif
10137 int main()
10138 {
10139         if (getuid() == 0) {
10140                 printf("(I see you are running Configure as super-user...)\n");
10141                 setuid(1);
10142         }
10143 #ifdef TRY_BSD_PGRP
10144         if (getpgrp(1) == 0)
10145                 exit(0);
10146 #else
10147         if (getpgrp() > 0)
10148                 exit(0);
10149 #endif
10150         exit(1);
10151 }
10152 EOP
10153         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10154                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10155                 val="$define"
10156         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10157                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10158                 val="$undef"
10159         else
10160                 echo "I can't seem to compile and run the test program."
10161                 if ./usg; then
10162                         xxx="a USG one, i.e. you use getpgrp()."
10163                 else
10164                         # SVR4 systems can appear rather BSD-ish.
10165                         case "$i_unistd" in
10166                         $undef)
10167                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10168                                 val="$define"
10169                                 ;;
10170                         $define)
10171                                 xxx="probably a USG one, i.e. you use getpgrp()."
10172                                 val="$undef"
10173                                 ;;
10174                         esac
10175                 fi
10176                 echo "Assuming your getpgrp is $xxx" >&4
10177         fi
10178         ;;
10179 *) val="$undef";;
10180 esac
10181 set d_bsdgetpgrp
10182 eval $setvar
10183 $rm -f try try.*
10184
10185 : see if setpgrp exists
10186 set setpgrp d_setpgrp
10187 eval $inlibc
10188
10189 case "$d_setpgrp" in
10190 "$define")
10191         echo " "
10192         echo "Checking to see which flavor of setpgrp is in use..."
10193         $cat >try.c <<EOP
10194 #$i_unistd I_UNISTD
10195 #include <sys/types.h>
10196 #ifdef I_UNISTD
10197 #  include <unistd.h>
10198 #endif
10199 #$i_stdlib I_STDLIB
10200 #ifdef I_STDLIB
10201 #include <stdlib.h>
10202 #endif
10203 int main()
10204 {
10205         if (getuid() == 0) {
10206                 printf("(I see you are running Configure as super-user...)\n");
10207                 setuid(1);
10208         }
10209 #ifdef TRY_BSD_PGRP
10210         if (-1 == setpgrp(1, 1))
10211                 exit(0);
10212 #else
10213         if (setpgrp() != -1)
10214                 exit(0);
10215 #endif
10216         exit(1);
10217 }
10218 EOP
10219         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10220                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10221                 val="$define"
10222         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10223                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10224                 val="$undef"
10225         else
10226                 echo "(I can't seem to compile and run the test program.)"
10227                 if ./usg; then
10228                         xxx="a USG one, i.e. you use setpgrp()."
10229                 else
10230                         # SVR4 systems can appear rather BSD-ish.
10231                         case "$i_unistd" in
10232                         $undef)
10233                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10234                                 val="$define"
10235                                 ;;
10236                         $define)
10237                                 xxx="probably a USG one, i.e. you use setpgrp()."
10238                                 val="$undef"
10239                                 ;;
10240                         esac
10241                 fi
10242                 echo "Assuming your setpgrp is $xxx" >&4
10243         fi
10244         ;;
10245 *) val="$undef";;
10246 esac
10247 set d_bsdsetpgrp
10248 eval $setvar
10249 $rm -f try try.*
10250 : Look for GCC-style __builtin_choose_expr
10251 case "$d_builtin_choose_expr" in
10252 '')
10253     echo " "
10254     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10255     $cat >try.c <<'EOCP'
10256 #include <assert.h>
10257 #include <stdlib.h>
10258 #include <stdio.h>
10259
10260 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10261
10262 int main(void) {
10263     assert( SYRINX(1) == 2112 );
10264     assert( SYRINX(1) != 5150 );
10265     assert( SYRINX(0) == 5150 );
10266     assert( SYRINX(0) != 2112 );
10267     puts( "All good!" );
10268     exit(0);
10269 }
10270
10271 EOCP
10272     set try
10273     if eval $compile; then
10274         echo "Your C compiler supports __builtin_choose_expr."
10275         val="$define"
10276     else
10277         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10278         val="$undef"
10279     fi
10280 ;;
10281 *) val="$d_builtin_choose_expr" ;;
10282 esac
10283
10284 set d_builtin_choose_expr
10285 eval $setvar
10286 $rm -f try.* try core core.try.*
10287
10288 : Look for GCC-style __builtin_expect
10289 case "$d_builtin_expect" in
10290 '')
10291     echo " "
10292     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10293     $cat >builtin.c <<'EOCP'
10294 int main(void) {
10295     int n = 50;
10296     if ( __builtin_expect(n, 0) ) n = 1;
10297 }
10298 EOCP
10299     set try
10300     if eval $compile; then
10301         echo "Your C compiler supports __builtin_choose_expr."
10302         val="$define"
10303     else
10304         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10305         val="$undef"
10306     fi
10307     ;;
10308 *) val="$d_builtin_expect" ;;
10309 esac
10310
10311 set d_builtin_expect
10312 eval $setvar
10313 $rm -f try.* try core core.try.*
10314
10315 : see if bzero exists
10316 set bzero d_bzero
10317 eval $inlibc
10318
10319 : see if signal is declared as pointer to function returning int or void
10320 echo " "
10321 xxx=`./findhdr signal.h`
10322 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10323 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10324         echo "You have int (*signal())() instead of void." >&4
10325         val="$undef"
10326 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10327         echo "You have void (*signal())()." >&4
10328         val="$define"
10329 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10330         echo "You have int (*signal())() instead of void." >&4
10331         val="$undef"
10332 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10333         echo "You have void (*signal())()." >&4
10334         val="$define"
10335 else
10336         case "$d_voidsig" in
10337         '')
10338         echo "I can't determine whether signal handler returns void or int..." >&4
10339                 dflt=void
10340                 rp="What type does your signal handler return?"
10341                 . ./myread
10342                 case "$ans" in
10343                 v*) val="$define";;
10344                 *) val="$undef";;
10345                 esac;;
10346         "$define")
10347                 echo "As you already told me, signal handler returns void." >&4
10348                 val="$define"
10349                 ;;
10350         *)      echo "As you already told me, signal handler returns int." >&4
10351                 val="$undef"
10352                 ;;
10353         esac
10354 fi
10355 set d_voidsig
10356 eval $setvar
10357 case "$d_voidsig" in
10358 "$define") signal_t="void";;
10359 *) signal_t="int";;
10360 esac
10361 $rm -f $$.tmp
10362
10363 : check for ability to cast large floats to 32-bit ints.
10364 echo " "
10365 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10366 if $test "$intsize" -ge 4; then
10367         xxx=int
10368 else
10369         xxx=long
10370 fi
10371 $cat >try.c <<EOCP
10372 #include <stdio.h>
10373 #$i_stdlib I_STDLIB
10374 #ifdef I_STDLIB
10375 #include <stdlib.h>
10376 #endif
10377 #include <sys/types.h>
10378 #include <signal.h>
10379 $signal_t blech(s) int s; { exit(3); }
10380 int main()
10381 {
10382         $xxx i32;
10383         double f, g;
10384         int result = 0;
10385         char str[16];
10386         signal(SIGFPE, blech);
10387
10388         /* Don't let compiler optimize the test away.  Store the number 
10389            in a writable string for gcc to pass to sscanf under HP/UX.
10390         */
10391         sprintf(str, "2147483647");
10392         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10393         g = 10 * f;
10394         i32  = ($xxx) g;
10395
10396         /* x86 processors will probably give 0x8000 0000, which is a
10397            sign change.  We don't want that.  We want to mimic SPARC
10398            behavior here, which is to preserve the sign and give
10399            back 0x7fff ffff.
10400         */
10401         if (i32 != ($xxx) f)
10402                 result |= 1;
10403         exit(result);
10404 }
10405 EOCP
10406 set try
10407 if eval $compile_ok; then
10408         $run ./try
10409         yyy=$?
10410 else
10411         echo "(I can't seem to compile the test program--assuming it can't)"
10412         yyy=1
10413 fi
10414 case "$yyy" in
10415 0)      val="$define"
10416         echo "Yup, it can."
10417         ;;
10418 *)      val="$undef"
10419         echo "Nope, it can't."
10420         ;;
10421 esac
10422 set d_casti32
10423 eval $setvar
10424 $rm -f try try.*
10425
10426 : check for ability to cast negative floats to unsigned
10427 echo " "
10428 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10429 $cat >try.c <<EOCP
10430 #include <stdio.h>
10431 #$i_stdlib I_STDLIB
10432 #ifdef I_STDLIB
10433 #include <stdlib.h>
10434 #endif
10435 #include <sys/types.h>
10436 #include <signal.h>
10437 $signal_t blech(s) int s; { exit(7); }
10438 $signal_t blech_in_list(s) int s; { exit(4); }
10439 unsigned long dummy_long(p) unsigned long p; { return p; }
10440 unsigned int dummy_int(p) unsigned int p; { return p; }
10441 unsigned short dummy_short(p) unsigned short p; { return p; }
10442 int main()
10443 {
10444         double f;
10445         unsigned long along;
10446         unsigned int aint;
10447         unsigned short ashort;
10448         int result = 0;
10449         char str[16];
10450         
10451         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10452            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10453            optimized the whole file away
10454         */
10455         /* Store the number in a writable string for gcc to pass to 
10456            sscanf under HP/UX.
10457         */
10458         sprintf(str, "-123");
10459         sscanf(str, "%lf", &f);  /* f = -123.; */
10460
10461         signal(SIGFPE, blech);
10462         along = (unsigned long)f;
10463         aint = (unsigned int)f;
10464         ashort = (unsigned short)f;
10465         if (along != (unsigned long)-123)
10466                 result |= 1;
10467         if (aint != (unsigned int)-123)
10468                 result |= 1;
10469         if (ashort != (unsigned short)-123)
10470                 result |= 1;
10471         sprintf(str, "1073741824.");
10472         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10473         f = f + f;
10474         along = 0;
10475         along = (unsigned long)f;
10476         if (along != 0x80000000)
10477                 result |= 2;
10478         f -= 1.;
10479         along = 0;
10480         along = (unsigned long)f;
10481         if (along != 0x7fffffff)
10482                 result |= 1;
10483         f += 2.;
10484         along = 0;
10485         along = (unsigned long)f;
10486         if (along != 0x80000001)
10487                 result |= 2;
10488         if (result)
10489                 exit(result);
10490         signal(SIGFPE, blech_in_list);
10491         sprintf(str, "123.");
10492         sscanf(str, "%lf", &f);  /* f = 123.; */
10493         along = dummy_long((unsigned long)f);
10494         aint = dummy_int((unsigned int)f);
10495         ashort = dummy_short((unsigned short)f);
10496         if (along != (unsigned long)123)
10497                 result |= 4;
10498         if (aint != (unsigned int)123)
10499                 result |= 4;
10500         if (ashort != (unsigned short)123)
10501                 result |= 4;
10502         exit(result);
10503
10504 }
10505 EOCP
10506 set try
10507 if eval $compile_ok; then
10508         $run ./try
10509         castflags=$?
10510 else
10511         echo "(I can't seem to compile the test program--assuming it can't)"
10512         castflags=7
10513 fi
10514 case "$castflags" in
10515 0)      val="$define"
10516         echo "Yup, it can."
10517         ;;
10518 *)      val="$undef"
10519         echo "Nope, it can't."
10520         ;;
10521 esac
10522 set d_castneg
10523 eval $setvar
10524 $rm -f try.*
10525
10526 : see if vprintf exists
10527 echo " "
10528 if set vprintf val -f d_vprintf; eval $csym; $val; then
10529         echo 'vprintf() found.' >&4
10530         val="$define"
10531         $cat >try.c <<EOF
10532 #include <varargs.h>
10533 #$i_stdlib I_STDLIB
10534 #ifdef I_STDLIB
10535 #include <stdlib.h>
10536 #endif
10537
10538 int main() { xxx("foo"); }
10539
10540 xxx(va_alist)
10541 va_dcl
10542 {
10543         va_list args;
10544         char buf[10];
10545
10546         va_start(args);
10547         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10548 }
10549 EOF
10550         set try
10551         if eval $compile && $run ./try; then
10552                 echo "Your vsprintf() returns (int)." >&4
10553                 val2="$undef"
10554         else
10555                 echo "Your vsprintf() returns (char*)." >&4
10556                 val2="$define"
10557         fi
10558 else
10559         echo 'vprintf() NOT found.' >&4
10560                 val="$undef"
10561                 val2="$undef"
10562 fi
10563 $rm -f try try.*
10564 set d_vprintf
10565 eval $setvar
10566 val=$val2
10567 set d_charvspr
10568 eval $setvar
10569
10570 : see if chown exists
10571 set chown d_chown
10572 eval $inlibc
10573
10574 : see if chroot exists
10575 set chroot d_chroot
10576 eval $inlibc
10577
10578 : see if chsize exists
10579 set chsize d_chsize
10580 eval $inlibc
10581
10582 : see if class exists
10583 set class d_class
10584 eval $inlibc
10585
10586 : see if clearenv exists
10587 set clearenv d_clearenv
10588 eval $inlibc
10589
10590 hasstruct='varname=$1; struct=$2; shift; shift;
10591 while $test $# -ge 2; do
10592         case "$1" in
10593         $define) echo "#include <$2>";;
10594         esac ;
10595     shift 2;
10596 done > try.c;
10597 echo "int main () { struct $struct foo; }" >> try.c;
10598 set try;
10599 if eval $compile; then
10600         val="$define";
10601 else
10602         val="$undef";
10603 fi;
10604 set $varname;
10605 eval $setvar;
10606 $rm -f try.c try.o'
10607
10608 socketlib=''
10609 sockethdr=''
10610 : see whether socket exists
10611 echo " "
10612 $echo $n "Hmm... $c" >&4
10613 if set socket val -f d_socket; eval $csym; $val; then
10614         echo "Looks like you have Berkeley networking support." >&4
10615         d_socket="$define"
10616         if set setsockopt val -f; eval $csym; $val; then
10617                 d_oldsock="$undef"
10618         else
10619                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10620                 d_oldsock="$define"
10621         fi
10622 else
10623         if $contains socklib libc.list >/dev/null 2>&1; then
10624                 echo "Looks like you have Berkeley networking support." >&4
10625                 d_socket="$define"
10626                 : we will have to assume that it supports the 4.2 BSD interface
10627                 d_oldsock="$undef"
10628         else
10629                 echo "You don't have Berkeley networking in libc$_a..." >&4
10630                 if test "X$d_socket" = "X$define"; then
10631                    echo "...but you seem to believe that you have sockets." >&4
10632                 else
10633                         for net in net socket
10634                         do
10635                                 if test -f /usr/lib/lib$net$_a; then
10636                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10637                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10638                                         if $contains socket libc.list >/dev/null 2>&1; then
10639                                                 d_socket="$define"
10640                                                 socketlib="-l$net"
10641                                                 case "$net" in
10642                                                 net)
10643                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10644                                                         sockethdr="-I/usr/netinclude"
10645                                                         ;;
10646                                                 esac
10647                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10648                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10649                                                         d_oldsock="$undef"
10650                                                 else
10651                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10652                                                         d_oldsock="$define"
10653                                                 fi
10654                                                 break
10655                                         fi
10656                                 fi
10657                         done
10658                         if test "X$d_socket" != "X$define"; then
10659                            echo "or anywhere else I see." >&4
10660                            d_socket="$undef"
10661                            d_oldsock="$undef"
10662                         fi
10663                 fi
10664         fi
10665 fi
10666
10667 : see if socketpair exists
10668 set socketpair d_sockpair
10669 eval $inlibc
10670
10671
10672 echo " "
10673 echo "Checking the availability of certain socket constants..." >&4
10674 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10675         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10676         $cat >try.c <<EOF
10677 #include <sys/types.h>
10678 #include <sys/socket.h>
10679 int main() {
10680     int i = $ENUM;
10681 }
10682 EOF
10683         val="$undef"
10684         set try; if eval $compile; then
10685                 val="$define"
10686         fi
10687         set d_${enum}; eval $setvar
10688         $rm -f try.c try
10689 done
10690
10691 : see if this is a sys/uio.h system
10692 set sys/uio.h i_sysuio
10693 eval $inhdr
10694
10695
10696 echo " "
10697 echo "Checking to see if your system supports struct cmsghdr..." >&4
10698 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10699 eval $hasstruct
10700 case "$d_cmsghdr_s" in
10701 "$define")      echo "Yes, it does."   ;;
10702 *)              echo "No, it doesn't." ;;
10703 esac
10704
10705
10706 : check for const keyword
10707 echo " "
10708 echo 'Checking to see if your C compiler knows about "const"...' >&4
10709 $cat >const.c <<'EOCP'
10710 typedef struct spug { int drokk; } spug;
10711 int main()
10712 {
10713         const char *foo;
10714         const spug y;
10715 }
10716 EOCP
10717 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10718         val="$define"
10719         echo "Yup, it does."
10720 else
10721         val="$undef"
10722         echo "Nope, it doesn't."
10723 fi
10724 set d_const
10725 eval $setvar
10726
10727 : see if copysignl exists
10728 set copysignl d_copysignl
10729 eval $inlibc
10730
10731 : see if crypt exists
10732 echo " "
10733 set crypt d_crypt
10734 eval $inlibc
10735 case "$d_crypt" in
10736 $define) cryptlib='' ;;
10737 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10738                 echo 'crypt() found.' >&4
10739                 val="$define"
10740                 cryptlib=''
10741         else
10742                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10743                 if $test -z "$cryptlib"; then
10744                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10745                 else
10746                         cryptlib=-lcrypt
10747                 fi
10748                 if $test -z "$cryptlib"; then
10749                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10750                 else
10751                         cryptlib=-lcrypt
10752                 fi
10753                 if $test -z "$cryptlib"; then
10754                         cryptlib=`./loc libcrypt$_a "" $libpth`
10755                 else
10756                         cryptlib=-lcrypt
10757                 fi
10758                 if $test -z "$cryptlib"; then
10759                         echo 'crypt() NOT found.' >&4
10760                         val="$undef"
10761                 else
10762                         val="$define"
10763                 fi
10764         fi
10765         set d_crypt
10766         eval $setvar
10767         ;;
10768 esac
10769
10770 : see if this is a crypt.h system
10771 set crypt.h i_crypt
10772 eval $inhdr
10773
10774 : see if crypt_r exists
10775 set crypt_r d_crypt_r
10776 eval $inlibc
10777 case "$d_crypt_r" in
10778 "$define")
10779         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10780         case "$d_crypt_r_proto:$usethreads" in
10781         ":define")      d_crypt_r_proto=define
10782                 set d_crypt_r_proto crypt_r $hdrs
10783                 eval $hasproto ;;
10784         *)      ;;
10785         esac
10786         case "$d_crypt_r_proto" in
10787         define)
10788         case "$crypt_r_proto" in
10789         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10790         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10791         esac
10792         case "$crypt_r_proto" in
10793         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10794         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10795         esac
10796         case "$crypt_r_proto" in
10797         ''|0)   d_crypt_r=undef
10798                 crypt_r_proto=0
10799                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10800         * )     case "$crypt_r_proto" in
10801                 REENTRANT_PROTO*) ;;
10802                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10803                 esac
10804                 echo "Prototype: $try" ;;
10805         esac
10806         ;;
10807         *)      case "$usethreads" in
10808                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10809                 esac
10810                 d_crypt_r=undef
10811                 crypt_r_proto=0
10812                 ;;
10813         esac
10814         ;;
10815 *)      crypt_r_proto=0
10816         ;;
10817 esac
10818
10819 : get csh whereabouts
10820 case "$csh" in
10821 'csh') val="$undef" ;;
10822 *) val="$define" ;;
10823 esac
10824 set d_csh
10825 eval $setvar
10826 : Respect a hint or command line value for full_csh.
10827 case "$full_csh" in
10828 '') full_csh=$csh ;;
10829 esac
10830
10831 : see if ctermid_r exists
10832 set ctermid_r d_ctermid_r
10833 eval $inlibc
10834 case "$d_ctermid_r" in
10835 "$define")
10836         hdrs="$i_systypes sys/types.h define stdio.h "
10837         case "$d_ctermid_r_proto:$usethreads" in
10838         ":define")      d_ctermid_r_proto=define
10839                 set d_ctermid_r_proto ctermid_r $hdrs
10840                 eval $hasproto ;;
10841         *)      ;;
10842         esac
10843         case "$d_ctermid_r_proto" in
10844         define)
10845         case "$ctermid_r_proto" in
10846         ''|0) try='char* ctermid_r(char*);'
10847         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10848         esac
10849         case "$ctermid_r_proto" in
10850         ''|0)   d_ctermid_r=undef
10851                 ctermid_r_proto=0
10852                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10853         * )     case "$ctermid_r_proto" in
10854                 REENTRANT_PROTO*) ;;
10855                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10856                 esac
10857                 echo "Prototype: $try" ;;
10858         esac
10859         ;;
10860         *)      case "$usethreads" in
10861                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10862                 esac
10863                 d_ctermid_r=undef
10864                 ctermid_r_proto=0
10865                 ;;
10866         esac
10867         ;;
10868 *)      ctermid_r_proto=0
10869         ;;
10870 esac
10871
10872 : see if ctime_r exists
10873 set ctime_r d_ctime_r
10874 eval $inlibc
10875 case "$d_ctime_r" in
10876 "$define")
10877         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10878         case "$d_ctime_r_proto:$usethreads" in
10879         ":define")      d_ctime_r_proto=define
10880                 set d_ctime_r_proto ctime_r $hdrs
10881                 eval $hasproto ;;
10882         *)      ;;
10883         esac
10884         case "$d_ctime_r_proto" in
10885         define)
10886         case "$ctime_r_proto" in
10887         ''|0) try='char* ctime_r(const time_t*, char*);'
10888         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10889         esac
10890         case "$ctime_r_proto" in
10891         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10892         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10893         esac
10894         case "$ctime_r_proto" in
10895         ''|0) try='int ctime_r(const time_t*, char*);'
10896         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10897         esac
10898         case "$ctime_r_proto" in
10899         ''|0) try='int ctime_r(const time_t*, char*, int);'
10900         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10901         esac
10902         case "$ctime_r_proto" in
10903         ''|0)   d_ctime_r=undef
10904                 ctime_r_proto=0
10905                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10906         * )     case "$ctime_r_proto" in
10907                 REENTRANT_PROTO*) ;;
10908                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10909                 esac
10910                 echo "Prototype: $try" ;;
10911         esac
10912         ;;
10913         *)      case "$usethreads" in
10914                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10915                 esac
10916                 d_ctime_r=undef
10917                 ctime_r_proto=0
10918                 ;;
10919         esac
10920         ;;
10921 *)      ctime_r_proto=0
10922         ;;
10923 esac
10924
10925 : see if cuserid exists
10926 set cuserid d_cuserid
10927 eval $inlibc
10928
10929 : see if this is a limits.h system
10930 set limits.h i_limits
10931 eval $inhdr
10932
10933 : see if this is a float.h system
10934 set float.h i_float
10935 eval $inhdr
10936
10937 : See if number of significant digits in a double precision number is known
10938 echo " "
10939 $cat >dbl_dig.c <<EOM
10940 #$i_limits I_LIMITS
10941 #$i_float I_FLOAT
10942 #ifdef I_LIMITS
10943 #include <limits.h>
10944 #endif
10945 #ifdef I_FLOAT
10946 #include <float.h>
10947 #endif
10948 #ifdef DBL_DIG
10949 printf("Contains DBL_DIG");
10950 #endif
10951 EOM
10952 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10953 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10954         echo "DBL_DIG found." >&4
10955         val="$define"
10956 else
10957         echo "DBL_DIG NOT found." >&4
10958         val="$undef"
10959 fi
10960 $rm -f dbl_dig.?
10961 set d_dbl_dig
10962 eval $setvar
10963
10964 : see if dbm.h is available
10965 : see if dbmclose exists
10966 set dbmclose d_dbmclose
10967 eval $inlibc
10968
10969 case "$d_dbmclose" in
10970 $define)
10971         set dbm.h i_dbm
10972         eval $inhdr
10973         case "$i_dbm" in
10974         $define)
10975                 val="$undef"
10976                 set i_rpcsvcdbm
10977                 eval $setvar
10978                 ;;
10979         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10980                 eval $inhdr
10981                 ;;
10982         esac
10983         ;;
10984 *)      echo "We won't be including <dbm.h>"
10985         val="$undef"
10986         set i_dbm
10987         eval $setvar
10988         val="$undef"
10989         set i_rpcsvcdbm
10990         eval $setvar
10991         ;;
10992 esac
10993
10994 : see if prototype for dbminit is available
10995 echo " "
10996 set d_dbminitproto dbminit $i_dbm dbm.h
10997 eval $hasproto
10998
10999 : see if difftime exists
11000 set difftime d_difftime
11001 eval $inlibc
11002
11003 : see if this is a dirent system
11004 echo " "
11005 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11006         val="$define"
11007         echo "<dirent.h> found." >&4
11008 else
11009         val="$undef"
11010         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11011                 echo "<sys/dir.h> found." >&4
11012                 echo " "
11013         else
11014                 xinc=`./findhdr sys/ndir.h`
11015         fi
11016         echo "<dirent.h> NOT found." >&4
11017 fi
11018 set i_dirent
11019 eval $setvar
11020
11021 : Look for type of directory structure.
11022 echo " "
11023 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11024
11025 case "$direntrytype" in
11026 ''|' ')
11027         case "$i_dirent" in
11028         $define) guess1='struct dirent' ;;
11029         *) guess1='struct direct'  ;;
11030         esac
11031         ;;
11032 *)      guess1="$direntrytype"
11033         ;;
11034 esac
11035
11036 case "$guess1" in
11037 'struct dirent') guess2='struct direct' ;;
11038 *) guess2='struct dirent' ;;
11039 esac
11040                 
11041 if $contains "$guess1" try.c >/dev/null 2>&1; then
11042         direntrytype="$guess1"
11043         echo "Your directory entries are $direntrytype." >&4
11044 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11045         direntrytype="$guess2"
11046         echo "Your directory entries seem to be $direntrytype." >&4
11047 else
11048         echo "I don't recognize your system's directory entries." >&4
11049         rp="What type is used for directory entries on this system?"
11050         dflt="$guess1"
11051         . ./myread
11052         direntrytype="$ans"
11053 fi
11054 $rm -f try.c
11055
11056
11057 : see if the directory entry stores field length
11058 echo " "
11059 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11060 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11061         echo "Good, your directory entry keeps length information in d_namlen." >&4
11062         val="$define"
11063 else
11064         echo "Your directory entry does not know about the d_namlen field." >&4
11065         val="$undef"
11066 fi
11067 set d_dirnamlen
11068 eval $setvar
11069 $rm -f try.c
11070
11071 : see if this is an sysdir system
11072 set sys/dir.h i_sysdir
11073 eval $inhdr
11074
11075 : see if this is an sysndir system
11076 set sys/ndir.h i_sysndir
11077 eval $inhdr
11078
11079 : Look for dirfd
11080 echo " "
11081 $cat >dirfd.c <<EOM
11082 #include <stdio.h>
11083 #$i_stdlib I_STDLIB
11084 #ifdef I_STDLIB
11085 #include <stdlib.h>
11086 #endif
11087 #$i_dirent I_DIRENT             /**/
11088 #$i_sysdir I_SYS_DIR            /**/
11089 #$i_sysndir I_SYS_NDIR          /**/
11090 #$i_systypes I_SYS_TYPES        /**/
11091 #if defined(I_SYS_TYPES)
11092 #include <sys/types.h>
11093 #endif
11094 #if defined(I_DIRENT)
11095 #include <dirent.h>
11096 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11097 #include <sys/dir.h>
11098 #endif
11099 #else
11100 #ifdef I_SYS_NDIR
11101 #include <sys/ndir.h>
11102 #else
11103 #ifdef I_SYS_DIR
11104 #ifdef hp9000s500
11105 #include <ndir.h>       /* may be wrong in the future */
11106 #else
11107 #include <sys/dir.h>
11108 #endif
11109 #endif
11110 #endif
11111 #endif 
11112 int main() {
11113         DIR *dirp = opendir(".");
11114         if (dirfd(dirp) >= 0)
11115                 exit(0);
11116         else
11117                 exit(1);
11118 }
11119 EOM
11120 val=$undef
11121 set dirfd
11122 if eval $compile; then
11123         val="$define"
11124 fi
11125 case "$val" in
11126 $define)        echo "dirfd() found." >&4       ;;
11127 *)              echo "dirfd() NOT found." >&4   ;;
11128 esac
11129 set d_dirfd
11130 eval $setvar
11131 $rm -f dirfd*
11132
11133 : see if dlerror exists
11134 xxx_runnm="$runnm"
11135 runnm=false
11136 set dlerror d_dlerror
11137 eval $inlibc
11138 runnm="$xxx_runnm"
11139
11140 : see if dlfcn is available
11141 set dlfcn.h i_dlfcn
11142 eval $inhdr
11143
11144 case "$usedl" in
11145 $define|y|true)
11146         $cat << EOM
11147
11148 On a few systems, the dynamically loaded modules that perl generates and uses
11149 will need a different extension than shared libs. The default will probably
11150 be appropriate.
11151
11152 EOM
11153         case "$dlext" in
11154         '')     dflt="$so" ;;
11155         *)      dflt="$dlext" ;;
11156         esac
11157         rp='What is the extension of dynamically loaded modules'
11158         . ./myread
11159         dlext="$ans"
11160         ;;
11161 *)
11162         dlext="none"
11163         ;;
11164 esac
11165
11166 : Check if dlsym need a leading underscore
11167 echo " "
11168 val="$undef"
11169
11170 case "$dlsrc" in
11171 dl_dlopen.xs)
11172         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11173         $cat >dyna.c <<'EOM'
11174 fred () { }
11175 EOM
11176
11177 $cat >fred.c<<EOM
11178
11179 #include <stdio.h>
11180 #$i_stdlib I_STDLIB
11181 #ifdef I_STDLIB
11182 #include <stdlib.h>
11183 #endif
11184 #$i_dlfcn I_DLFCN
11185 #ifdef I_DLFCN
11186 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11187 #else
11188 #include <sys/types.h>
11189 #include <nlist.h>
11190 #include <link.h>
11191 #endif
11192
11193 extern int fred() ;
11194
11195 int main()
11196 {
11197     void * handle ;
11198     void * symbol ;
11199 #ifndef RTLD_LAZY
11200     int mode = 1 ;
11201 #else
11202     int mode = RTLD_LAZY ;
11203 #endif
11204     handle = dlopen("./dyna.$dlext", mode) ;
11205     if (handle == NULL) {
11206         printf ("1\n") ;
11207         fflush (stdout) ;
11208         exit(0);
11209     }
11210     symbol = dlsym(handle, "fred") ;
11211     if (symbol == NULL) {
11212         /* try putting a leading underscore */
11213         symbol = dlsym(handle, "_fred") ;
11214         if (symbol == NULL) {
11215             printf ("2\n") ;
11216             fflush (stdout) ;
11217             exit(0);
11218         }
11219         printf ("3\n") ;
11220     }
11221     else
11222         printf ("4\n") ;
11223     fflush (stdout) ;
11224     exit(0);
11225 }
11226 EOM
11227         : Call the object file tmp-dyna.o in case dlext=o.
11228         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
11229                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
11230                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
11231                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11232                 xxx=`$run ./fred`
11233                 case $xxx in
11234                 1)      echo "Test program failed using dlopen." >&4
11235                         echo "Perhaps you should not use dynamic loading." >&4;;
11236                 2)      echo "Test program failed using dlsym." >&4
11237                         echo "Perhaps you should not use dynamic loading." >&4;;
11238                 3)      echo "dlsym needs a leading underscore" >&4
11239                         val="$define" ;;
11240                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11241                 esac
11242         else
11243                 echo "I can't compile and run the test program." >&4
11244                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11245         fi
11246         ;;
11247 esac
11248                 
11249 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11250
11251 set d_dlsymun
11252 eval $setvar
11253
11254 : see if drand48_r exists
11255 set drand48_r d_drand48_r
11256 eval $inlibc
11257 case "$d_drand48_r" in
11258 "$define")
11259         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11260         case "$d_drand48_r_proto:$usethreads" in
11261         ":define")      d_drand48_r_proto=define
11262                 set d_drand48_r_proto drand48_r $hdrs
11263                 eval $hasproto ;;
11264         *)      ;;
11265         esac
11266         case "$d_drand48_r_proto" in
11267         define)
11268         case "$drand48_r_proto" in
11269         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11270         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11271         esac
11272         case "$drand48_r_proto" in
11273         ''|0)   d_drand48_r=undef
11274                 drand48_r_proto=0
11275                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11276         * )     case "$drand48_r_proto" in
11277                 REENTRANT_PROTO*) ;;
11278                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11279                 esac
11280                 echo "Prototype: $try" ;;
11281         esac
11282         ;;
11283         *)      case "$usethreads" in
11284                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11285                 esac
11286                 d_drand48_r=undef
11287                 drand48_r_proto=0
11288                 ;;
11289         esac
11290         ;;
11291 *)      drand48_r_proto=0
11292         ;;
11293 esac
11294
11295 : see if prototype for drand48 is available
11296 echo " "
11297 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11298 eval $hasproto
11299
11300 : see if dup2 exists
11301 set dup2 d_dup2
11302 eval $inlibc
11303
11304 : see if eaccess exists
11305 set eaccess d_eaccess
11306 eval $inlibc
11307
11308 : see if endgrent exists
11309 set endgrent d_endgrent
11310 eval $inlibc
11311
11312 : see if this is an grp system
11313 set grp.h i_grp
11314 eval $inhdr
11315
11316 case "$i_grp" in
11317 $define)
11318         xxx=`./findhdr grp.h`
11319         $cppstdin $cppflags $cppminus < $xxx >$$.h
11320
11321         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11322                 val="$define"
11323         else
11324                 val="$undef"
11325         fi
11326         set d_grpasswd
11327         eval $setvar
11328
11329         $rm -f $$.h
11330         ;;
11331 *)
11332         val="$undef";
11333         set d_grpasswd; eval $setvar
11334         ;;
11335 esac
11336
11337 : see if endgrent_r exists
11338 set endgrent_r d_endgrent_r
11339 eval $inlibc
11340 case "$d_endgrent_r" in
11341 "$define")
11342         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11343         case "$d_endgrent_r_proto:$usethreads" in
11344         ":define")      d_endgrent_r_proto=define
11345                 set d_endgrent_r_proto endgrent_r $hdrs
11346                 eval $hasproto ;;
11347         *)      ;;
11348         esac
11349         case "$d_endgrent_r_proto" in
11350         define)
11351         case "$endgrent_r_proto" in
11352         ''|0) try='int endgrent_r(FILE**);'
11353         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11354         esac
11355         case "$endgrent_r_proto" in
11356         ''|0) try='void endgrent_r(FILE**);'
11357         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11358         esac
11359         case "$endgrent_r_proto" in
11360         ''|0)   d_endgrent_r=undef
11361                 endgrent_r_proto=0
11362                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11363         * )     case "$endgrent_r_proto" in
11364                 REENTRANT_PROTO*) ;;
11365                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11366                 esac
11367                 echo "Prototype: $try" ;;
11368         esac
11369         ;;
11370         *)      case "$usethreads" in
11371                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11372                 esac
11373                 d_endgrent_r=undef
11374                 endgrent_r_proto=0
11375                 ;;
11376         esac
11377         ;;
11378 *)      endgrent_r_proto=0
11379         ;;
11380 esac
11381
11382 : see if endhostent exists
11383 set endhostent d_endhent
11384 eval $inlibc
11385
11386 : see if this is a netdb.h system
11387 set netdb.h i_netdb
11388 eval $inhdr
11389
11390 : see if endhostent_r exists
11391 set endhostent_r d_endhostent_r
11392 eval $inlibc
11393 case "$d_endhostent_r" in
11394 "$define")
11395         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11396         case "$d_endhostent_r_proto:$usethreads" in
11397         ":define")      d_endhostent_r_proto=define
11398                 set d_endhostent_r_proto endhostent_r $hdrs
11399                 eval $hasproto ;;
11400         *)      ;;
11401         esac
11402         case "$d_endhostent_r_proto" in
11403         define)
11404         case "$endhostent_r_proto" in
11405         ''|0) try='int endhostent_r(struct hostent_data*);'
11406         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11407         esac
11408         case "$endhostent_r_proto" in
11409         ''|0) try='void endhostent_r(struct hostent_data*);'
11410         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11411         esac
11412         case "$endhostent_r_proto" in
11413         ''|0)   d_endhostent_r=undef
11414                 endhostent_r_proto=0
11415                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11416         * )     case "$endhostent_r_proto" in
11417                 REENTRANT_PROTO*) ;;
11418                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11419                 esac
11420                 echo "Prototype: $try" ;;
11421         esac
11422         ;;
11423         *)      case "$usethreads" in
11424                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11425                 esac
11426                 d_endhostent_r=undef
11427                 endhostent_r_proto=0
11428                 ;;
11429         esac
11430         ;;
11431 *)      endhostent_r_proto=0
11432         ;;
11433 esac
11434
11435 : see if endnetent exists
11436 set endnetent d_endnent
11437 eval $inlibc
11438
11439 : see if endnetent_r exists
11440 set endnetent_r d_endnetent_r
11441 eval $inlibc
11442 case "$d_endnetent_r" in
11443 "$define")
11444         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11445         case "$d_endnetent_r_proto:$usethreads" in
11446         ":define")      d_endnetent_r_proto=define
11447                 set d_endnetent_r_proto endnetent_r $hdrs
11448                 eval $hasproto ;;
11449         *)      ;;
11450         esac
11451         case "$d_endnetent_r_proto" in
11452         define)
11453         case "$endnetent_r_proto" in
11454         ''|0) try='int endnetent_r(struct netent_data*);'
11455         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11456         esac
11457         case "$endnetent_r_proto" in
11458         ''|0) try='void endnetent_r(struct netent_data*);'
11459         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11460         esac
11461         case "$endnetent_r_proto" in
11462         ''|0)   d_endnetent_r=undef
11463                 endnetent_r_proto=0
11464                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11465         * )     case "$endnetent_r_proto" in
11466                 REENTRANT_PROTO*) ;;
11467                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11468                 esac
11469                 echo "Prototype: $try" ;;
11470         esac
11471         ;;
11472         *)      case "$usethreads" in
11473                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11474                 esac
11475                 d_endnetent_r=undef
11476                 endnetent_r_proto=0
11477                 ;;
11478         esac
11479         ;;
11480 *)      endnetent_r_proto=0
11481         ;;
11482 esac
11483
11484 : see if endprotoent exists
11485 set endprotoent d_endpent
11486 eval $inlibc
11487
11488 : see if endprotoent_r exists
11489 set endprotoent_r d_endprotoent_r
11490 eval $inlibc
11491 case "$d_endprotoent_r" in
11492 "$define")
11493         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11494         case "$d_endprotoent_r_proto:$usethreads" in
11495         ":define")      d_endprotoent_r_proto=define
11496                 set d_endprotoent_r_proto endprotoent_r $hdrs
11497                 eval $hasproto ;;
11498         *)      ;;
11499         esac
11500         case "$d_endprotoent_r_proto" in
11501         define)
11502         case "$endprotoent_r_proto" in
11503         ''|0) try='int endprotoent_r(struct protoent_data*);'
11504         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11505         esac
11506         case "$endprotoent_r_proto" in
11507         ''|0) try='void endprotoent_r(struct protoent_data*);'
11508         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11509         esac
11510         case "$endprotoent_r_proto" in
11511         ''|0)   d_endprotoent_r=undef
11512                 endprotoent_r_proto=0
11513                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11514         * )     case "$endprotoent_r_proto" in
11515                 REENTRANT_PROTO*) ;;
11516                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11517                 esac
11518                 echo "Prototype: $try" ;;
11519         esac
11520         ;;
11521         *)      case "$usethreads" in
11522                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11523                 esac
11524                 d_endprotoent_r=undef
11525                 endprotoent_r_proto=0
11526                 ;;
11527         esac
11528         ;;
11529 *)      endprotoent_r_proto=0
11530         ;;
11531 esac
11532
11533 : see if endpwent exists
11534 set endpwent d_endpwent
11535 eval $inlibc
11536
11537 : see if this is a pwd.h system
11538 set pwd.h i_pwd
11539 eval $inhdr
11540
11541 case "$i_pwd" in
11542 $define)
11543         xxx=`./findhdr pwd.h`
11544         $cppstdin $cppflags $cppminus < $xxx >$$.h
11545
11546         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11547                 val="$define"
11548         else
11549                 val="$undef"
11550         fi
11551         set d_pwquota
11552         eval $setvar
11553
11554         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11555                 val="$define"
11556         else
11557                 val="$undef"
11558         fi
11559         set d_pwage
11560         eval $setvar
11561
11562         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11563                 val="$define"
11564         else
11565                 val="$undef"
11566         fi
11567         set d_pwchange
11568         eval $setvar
11569
11570         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11571                 val="$define"
11572         else
11573                 val="$undef"
11574         fi
11575         set d_pwclass
11576         eval $setvar
11577
11578         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11579                 val="$define"
11580         else
11581                 val="$undef"
11582         fi
11583         set d_pwexpire
11584         eval $setvar
11585
11586         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11587                 val="$define"
11588         else
11589                 val="$undef"
11590         fi
11591         set d_pwcomment
11592         eval $setvar
11593
11594         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11595                 val="$define"
11596         else
11597                 val="$undef"
11598         fi
11599         set d_pwgecos
11600         eval $setvar
11601
11602         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11603                 val="$define"
11604         else
11605                 val="$undef"
11606         fi
11607         set d_pwpasswd
11608         eval $setvar
11609
11610         $rm -f $$.h
11611         ;;
11612 *)
11613         val="$undef"; 
11614         set d_pwquota; eval $setvar
11615         set d_pwage; eval $setvar
11616         set d_pwchange; eval $setvar
11617         set d_pwclass; eval $setvar
11618         set d_pwexpire; eval $setvar
11619         set d_pwcomment; eval $setvar
11620         set d_pwgecos; eval $setvar
11621         set d_pwpasswd; eval $setvar
11622         ;;
11623 esac
11624
11625 : see if endpwent_r exists
11626 set endpwent_r d_endpwent_r
11627 eval $inlibc
11628 case "$d_endpwent_r" in
11629 "$define")
11630         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11631         case "$d_endpwent_r_proto:$usethreads" in
11632         ":define")      d_endpwent_r_proto=define
11633                 set d_endpwent_r_proto endpwent_r $hdrs
11634                 eval $hasproto ;;
11635         *)      ;;
11636         esac
11637         case "$d_endpwent_r_proto" in
11638         define)
11639         case "$endpwent_r_proto" in
11640         ''|0) try='int endpwent_r(FILE**);'
11641         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11642         esac
11643         case "$endpwent_r_proto" in
11644         ''|0) try='void endpwent_r(FILE**);'
11645         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11646         esac
11647         case "$endpwent_r_proto" in
11648         ''|0)   d_endpwent_r=undef
11649                 endpwent_r_proto=0
11650                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11651         * )     case "$endpwent_r_proto" in
11652                 REENTRANT_PROTO*) ;;
11653                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11654                 esac
11655                 echo "Prototype: $try" ;;
11656         esac
11657         ;;
11658         *)      case "$usethreads" in
11659                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11660                 esac
11661                 d_endpwent_r=undef
11662                 endpwent_r_proto=0
11663                 ;;
11664         esac
11665         ;;
11666 *)      endpwent_r_proto=0
11667         ;;
11668 esac
11669
11670 : see if endservent exists
11671 set endservent d_endsent
11672 eval $inlibc
11673
11674 : see if endservent_r exists
11675 set endservent_r d_endservent_r
11676 eval $inlibc
11677 case "$d_endservent_r" in
11678 "$define")
11679         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11680         case "$d_endservent_r_proto:$usethreads" in
11681         ":define")      d_endservent_r_proto=define
11682                 set d_endservent_r_proto endservent_r $hdrs
11683                 eval $hasproto ;;
11684         *)      ;;
11685         esac
11686         case "$d_endservent_r_proto" in
11687         define)
11688         case "$endservent_r_proto" in
11689         ''|0) try='int endservent_r(struct servent_data*);'
11690         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11691         esac
11692         case "$endservent_r_proto" in
11693         ''|0) try='void endservent_r(struct servent_data*);'
11694         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11695         esac
11696         case "$endservent_r_proto" in
11697         ''|0)   d_endservent_r=undef
11698                 endservent_r_proto=0
11699                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11700         * )     case "$endservent_r_proto" in
11701                 REENTRANT_PROTO*) ;;
11702                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11703                 esac
11704                 echo "Prototype: $try" ;;
11705         esac
11706         ;;
11707         *)      case "$usethreads" in
11708                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11709                 esac
11710                 d_endservent_r=undef
11711                 endservent_r_proto=0
11712                 ;;
11713         esac
11714         ;;
11715 *)      endservent_r_proto=0
11716         ;;
11717 esac
11718
11719 : Locate the flags for 'open()'
11720 echo " "
11721 $cat >try.c <<EOCP
11722 #include <sys/types.h>
11723 #ifdef I_FCNTL
11724 #include <fcntl.h>
11725 #endif
11726 #ifdef I_SYS_FILE
11727 #include <sys/file.h>
11728 #endif
11729 #$i_stdlib I_STDLIB
11730 #ifdef I_STDLIB
11731 #include <stdlib.h>
11732 #endif
11733 int main() {
11734         if(O_RDONLY);
11735 #ifdef O_TRUNC
11736         exit(0);
11737 #else
11738         exit(1);
11739 #endif
11740 }
11741 EOCP
11742 : check sys/file.h first to get FREAD on Sun
11743 if $test `./findhdr sys/file.h` && \
11744                 set try -DI_SYS_FILE && eval $compile; then
11745         h_sysfile=true;
11746         echo "<sys/file.h> defines the O_* constants..." >&4
11747         if $run ./try; then
11748                 echo "and you have the 3 argument form of open()." >&4
11749                 val="$define"
11750         else
11751                 echo "but not the 3 argument form of open().  Oh, well." >&4
11752                 val="$undef"
11753         fi
11754 elif $test `./findhdr fcntl.h` && \
11755                 set try -DI_FCNTL && eval $compile; then
11756         h_fcntl=true;
11757         echo "<fcntl.h> defines the O_* constants..." >&4
11758         if $run ./try; then
11759                 echo "and you have the 3 argument form of open()." >&4
11760                 val="$define"
11761         else
11762                 echo "but not the 3 argument form of open().  Oh, well." >&4
11763                 val="$undef"
11764         fi
11765 else
11766         val="$undef"
11767         echo "I can't find the O_* constant definitions!  You got problems." >&4
11768 fi
11769 set d_open3
11770 eval $setvar
11771 $rm -f try try.*
11772
11773 : see which of string.h or strings.h is needed
11774 echo " "
11775 strings=`./findhdr string.h`
11776 if $test "$strings" && $test -r "$strings"; then
11777         echo "Using <string.h> instead of <strings.h>." >&4
11778         val="$define"
11779 else
11780         val="$undef"
11781         strings=`./findhdr strings.h`
11782         if $test "$strings" && $test -r "$strings"; then
11783                 echo "Using <strings.h> instead of <string.h>." >&4
11784         else
11785                 echo "No string header found -- You'll surely have problems." >&4
11786         fi
11787 fi
11788 set i_string
11789 eval $setvar
11790 case "$i_string" in
11791 "$undef") strings=`./findhdr strings.h`;;
11792 *)        strings=`./findhdr string.h`;;
11793 esac
11794
11795 : see if this is a sys/file.h system
11796 val=''
11797 set sys/file.h val
11798 eval $inhdr
11799
11800 : do we need to include sys/file.h ?
11801 case "$val" in
11802 "$define")
11803         echo " "
11804         if $h_sysfile; then
11805                 val="$define"
11806                 echo "We'll be including <sys/file.h>." >&4
11807         else
11808                 val="$undef"
11809                 echo "We won't be including <sys/file.h>." >&4
11810         fi
11811         ;;
11812 *)
11813         h_sysfile=false
11814         ;;
11815 esac
11816 set i_sysfile
11817 eval $setvar
11818
11819 : see if fcntl.h is there
11820 val=''
11821 set fcntl.h val
11822 eval $inhdr
11823
11824 : see if we can include fcntl.h
11825 case "$val" in
11826 "$define")
11827         echo " "
11828         if $h_fcntl; then
11829                 val="$define"
11830                 echo "We'll be including <fcntl.h>." >&4
11831         else
11832                 val="$undef"
11833                 if $h_sysfile; then
11834         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11835                 else
11836                         echo "We won't be including <fcntl.h>." >&4
11837                 fi
11838         fi
11839         ;;
11840 *)
11841         h_fcntl=false
11842         val="$undef"
11843         ;;
11844 esac
11845 set i_fcntl
11846 eval $setvar
11847
11848 : check for non-blocking I/O stuff
11849 case "$h_sysfile" in
11850 true) echo "#include <sys/file.h>" > head.c;;
11851 *)
11852        case "$h_fcntl" in
11853        true) echo "#include <fcntl.h>" > head.c;;
11854        *) echo "#include <sys/fcntl.h>" > head.c;;
11855        esac
11856        ;;
11857 esac
11858 echo " "
11859 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11860 case "$o_nonblock" in
11861 '')
11862         $cat head.c > try.c
11863         $cat >>try.c <<EOCP
11864 #include <stdio.h>
11865 #$i_stdlib I_STDLIB
11866 #ifdef I_STDLIB
11867 #include <stdlib.h>
11868 #endif
11869 #$i_fcntl I_FCNTL
11870 #ifdef I_FCNTL
11871 #include <fcntl.h>
11872 #endif
11873 int main() {
11874 #ifdef O_NONBLOCK
11875         printf("O_NONBLOCK\n");
11876         exit(0);
11877 #endif
11878 #ifdef O_NDELAY
11879         printf("O_NDELAY\n");
11880         exit(0);
11881 #endif
11882 #ifdef FNDELAY
11883         printf("FNDELAY\n");
11884         exit(0);
11885 #endif
11886         exit(0);
11887 }
11888 EOCP
11889         set try
11890         if eval $compile_ok; then
11891                 o_nonblock=`$run ./try`
11892                 case "$o_nonblock" in
11893                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11894                 *) echo "Seems like we can use $o_nonblock.";;
11895                 esac
11896         else
11897                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11898         fi
11899         ;;
11900 *) echo "Using $hint value $o_nonblock.";;
11901 esac
11902 $rm -f try try.* .out core
11903
11904 echo " "
11905 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11906 case "$eagain" in
11907 '')
11908         $cat head.c > try.c
11909         $cat >>try.c <<EOCP
11910 #include <errno.h>
11911 #include <sys/types.h>
11912 #include <signal.h>
11913 #include <stdio.h> 
11914 #$i_stdlib I_STDLIB
11915 #ifdef I_STDLIB
11916 #include <stdlib.h>
11917 #endif
11918 #$i_fcntl I_FCNTL
11919 #ifdef I_FCNTL
11920 #include <fcntl.h>
11921 #endif
11922 #define MY_O_NONBLOCK $o_nonblock
11923 #ifndef errno  /* XXX need better Configure test */
11924 extern int errno;
11925 #endif
11926 #$i_unistd I_UNISTD
11927 #ifdef I_UNISTD
11928 #include <unistd.h>
11929 #endif
11930 #$i_string I_STRING
11931 #ifdef I_STRING
11932 #include <string.h>
11933 #else
11934 #include <strings.h>
11935 #endif
11936 $signal_t blech(x) int x; { exit(3); }
11937 EOCP
11938         $cat >> try.c <<'EOCP'
11939 int main()
11940 {
11941         int pd[2];
11942         int pu[2];
11943         char buf[1];
11944         char string[100];
11945
11946         pipe(pd);       /* Down: child -> parent */
11947         pipe(pu);       /* Up: parent -> child */
11948         if (0 != fork()) {
11949                 int ret;
11950                 close(pd[1]);   /* Parent reads from pd[0] */
11951                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11952 #ifdef F_SETFL
11953                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11954                         exit(1);
11955 #else
11956                 exit(4);
11957 #endif
11958                 signal(SIGALRM, blech);
11959                 alarm(5);
11960                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11961                         exit(2);
11962                 sprintf(string, "%d\n", ret);
11963                 write(2, string, strlen(string));
11964                 alarm(0);
11965 #ifdef EAGAIN
11966                 if (errno == EAGAIN) {
11967                         printf("EAGAIN\n");
11968                         goto ok;
11969                 }
11970 #endif
11971 #ifdef EWOULDBLOCK
11972                 if (errno == EWOULDBLOCK)
11973                         printf("EWOULDBLOCK\n");
11974 #endif
11975         ok:
11976                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11977                 sleep(2);                               /* Give it time to close our pipe */
11978                 alarm(5);
11979                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11980                 alarm(0);
11981                 sprintf(string, "%d\n", ret);
11982                 write(4, string, strlen(string));
11983                 exit(0);
11984         }
11985
11986         close(pd[0]);                   /* We write to pd[1] */
11987         close(pu[1]);                   /* We read from pu[0] */
11988         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11989         close(pd[1]);                   /* Pipe pd is now fully closed! */
11990         exit(0);                                /* Bye bye, thank you for playing! */
11991 }
11992 EOCP
11993         set try
11994         if eval $compile_ok; then
11995                 echo "$startsh" >mtry
11996                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11997                 chmod +x mtry
11998                 ./mtry >/dev/null 2>&1
11999                 case $? in
12000                 0) eagain=`$cat try.out`;;
12001                 1) echo "Could not perform non-blocking setting!";;
12002                 2) echo "I did a successful read() for something that was not there!";;
12003                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12004                 4) echo "Could not find F_SETFL!";;
12005                 *) echo "Something terribly wrong happened during testing.";;
12006                 esac
12007                 rd_nodata=`$cat try.ret`
12008                 echo "A read() system call with no data present returns $rd_nodata."
12009                 case "$rd_nodata" in
12010                 0|-1) ;;
12011                 *)
12012                         echo "(That's peculiar, fixing that to be -1.)"
12013                         rd_nodata=-1
12014                         ;;
12015                 esac
12016                 case "$eagain" in
12017                 '')
12018                         echo "Forcing errno EAGAIN on read() with no data available."
12019                         eagain=EAGAIN
12020                         ;;
12021                 *)
12022                         echo "Your read() sets errno to $eagain when no data is available."
12023                         ;;
12024                 esac
12025                 status=`$cat try.err`
12026                 case "$status" in
12027                 0) echo "And it correctly returns 0 to signal EOF.";;
12028                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12029                 *) echo "However, your read() returns '$status' on EOF??";;
12030                 esac
12031                 val="$define"
12032                 if test "$status" = "$rd_nodata"; then
12033                         echo "WARNING: you can't distinguish between EOF and no data!"
12034                         val="$undef"
12035                 fi
12036         else
12037                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12038                 eagain=EAGAIN
12039         fi
12040         set d_eofnblk
12041         eval $setvar
12042         ;;
12043 *)
12044         echo "Using $hint value $eagain."
12045         echo "Your read() returns $rd_nodata when no data is present."
12046         case "$d_eofnblk" in
12047         "$define") echo "And you can see EOF because read() returns 0.";;
12048         "$undef") echo "But you can't see EOF status from read() returned value.";;
12049         *)
12050                 echo "(Assuming you can't see EOF status from read anyway.)"
12051                 d_eofnblk=$undef
12052                 ;;
12053         esac
12054         ;;
12055 esac
12056 $rm -f try try.* .out core head.c mtry
12057
12058 : see if _ptr and _cnt from stdio act std
12059 echo " "
12060
12061 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12062         echo "(Looks like you have stdio.h from BSD.)"
12063         case "$stdio_ptr" in
12064         '') stdio_ptr='((fp)->_p)'
12065                 ptr_lval=$define
12066                 ;;
12067         *)      ptr_lval=$d_stdio_ptr_lval;;
12068         esac
12069         case "$stdio_cnt" in
12070         '') stdio_cnt='((fp)->_r)'
12071                 cnt_lval=$define
12072                 ;;
12073         *)      cnt_lval=$d_stdio_cnt_lval;;
12074         esac
12075         case "$stdio_base" in
12076         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12077         esac
12078         case "$stdio_bufsiz" in
12079         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12080         esac
12081 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12082         echo "(Looks like you have stdio.h from Linux.)"
12083         case "$stdio_ptr" in
12084         '') stdio_ptr='((fp)->_IO_read_ptr)'
12085                 ptr_lval=$define
12086                 ;;
12087         *)      ptr_lval=$d_stdio_ptr_lval;;
12088         esac
12089         case "$stdio_cnt" in
12090         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12091                 cnt_lval=$undef
12092                 ;;
12093         *)      cnt_lval=$d_stdio_cnt_lval;;
12094         esac
12095         case "$stdio_base" in
12096         '') stdio_base='((fp)->_IO_read_base)';;
12097         esac
12098         case "$stdio_bufsiz" in
12099         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12100         esac
12101 else
12102         case "$stdio_ptr" in
12103         '') stdio_ptr='((fp)->_ptr)'
12104                 ptr_lval=$define
12105                 ;;
12106         *)      ptr_lval=$d_stdio_ptr_lval;;
12107         esac
12108         case "$stdio_cnt" in
12109         '') stdio_cnt='((fp)->_cnt)'
12110                 cnt_lval=$define
12111                 ;;
12112         *)      cnt_lval=$d_stdio_cnt_lval;;
12113         esac
12114         case "$stdio_base" in
12115         '') stdio_base='((fp)->_base)';;
12116         esac
12117         case "$stdio_bufsiz" in
12118         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12119         esac
12120 fi
12121
12122 : test whether _ptr and _cnt really work
12123 echo "Checking how std your stdio is..." >&4
12124 $cat >try.c <<EOP
12125 #include <stdio.h>
12126 #$i_stdlib I_STDLIB
12127 #ifdef I_STDLIB
12128 #include <stdlib.h>
12129 #endif
12130 #define FILE_ptr(fp)    $stdio_ptr
12131 #define FILE_cnt(fp)    $stdio_cnt
12132 int main() {
12133         FILE *fp = fopen("try.c", "r");
12134         char c = getc(fp);
12135         if (
12136                 18 <= FILE_cnt(fp) &&
12137                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12138         )
12139                 exit(0);
12140         exit(1);
12141 }
12142 EOP
12143 val="$undef"
12144 set try
12145 if eval $compile && $to try.c; then
12146         if $run ./try; then
12147                 echo "Your stdio acts pretty std."
12148                 val="$define"
12149         else
12150                 echo "Your stdio isn't very std."
12151         fi
12152 else
12153         echo "Your stdio doesn't appear very std."
12154 fi
12155 $rm -f try.c try
12156
12157 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12158 # direct buffer manipulation no longer works.  The Configure tests
12159 # should be changed to correctly detect this, but until then,
12160 # the following check should at least let perl compile and run.
12161 # (This quick fix should be updated before 5.8.1.)
12162 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12163 # A. Dougherty, June 3, 2002.
12164 case "$d_gnulibc" in
12165 $define)
12166         case "$gnulibc_version" in
12167         2.[01]*)  ;;
12168         2.2) ;;
12169         2.2.[0-9]) ;;
12170         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12171                 val="$undef"
12172                 ;;
12173         esac
12174         ;;
12175 esac
12176 set d_stdstdio
12177 eval $setvar
12178
12179 : Can _ptr be used as an lvalue?
12180 case "$d_stdstdio$ptr_lval" in
12181 $define$define) val=$define ;;
12182 *) val=$undef ;;
12183 esac
12184 set d_stdio_ptr_lval
12185 eval $setvar
12186
12187 : Can _cnt be used as an lvalue?
12188 case "$d_stdstdio$cnt_lval" in
12189 $define$define) val=$define ;;
12190 *) val=$undef ;;
12191 esac
12192 set d_stdio_cnt_lval
12193 eval $setvar
12194
12195
12196 : test whether setting _ptr sets _cnt as a side effect
12197 d_stdio_ptr_lval_sets_cnt="$undef"
12198 d_stdio_ptr_lval_nochange_cnt="$undef"
12199 case "$d_stdio_ptr_lval$d_stdstdio" in
12200 $define$define)
12201         echo "Checking to see what happens if we set the stdio ptr..." >&4
12202 $cat >try.c <<EOP
12203 #include <stdio.h>
12204 /* Can we scream? */
12205 /* Eat dust sed :-) */
12206 /* In the buffer space, no one can hear you scream. */
12207 #$i_stdlib I_STDLIB
12208 #ifdef I_STDLIB
12209 #include <stdlib.h>
12210 #endif
12211 #define FILE_ptr(fp)    $stdio_ptr
12212 #define FILE_cnt(fp)    $stdio_cnt
12213 #include <sys/types.h>
12214 int main() {
12215         FILE *fp = fopen("try.c", "r");
12216         int c;
12217         char *ptr;
12218         size_t cnt;
12219         if (!fp) {
12220             puts("Fail even to read");
12221             exit(1);
12222         }
12223         c = getc(fp); /* Read away the first # */
12224         if (c == EOF) {
12225             puts("Fail even to read");
12226             exit(1);
12227         }
12228         if (!(
12229                 18 <= FILE_cnt(fp) &&
12230                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12231         )) {
12232                 puts("Fail even to read");
12233                 exit (1);
12234         }
12235         ptr = (char*) FILE_ptr(fp);
12236         cnt = (size_t)FILE_cnt(fp);
12237
12238         FILE_ptr(fp) += 42;
12239
12240         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12241                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12242                 exit (1);
12243         }
12244         if (FILE_cnt(fp) <= 20) {
12245                 printf ("Fail (<20 chars to test)");
12246                 exit (1);
12247         }
12248         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12249                 puts("Fail compare");
12250                 exit (1);
12251         }
12252         if (cnt == FILE_cnt(fp)) {
12253                 puts("Pass_unchanged");
12254                 exit (0);
12255         }       
12256         if (FILE_cnt(fp) == (cnt - 42)) {
12257                 puts("Pass_changed");
12258                 exit (0);
12259         }
12260         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12261         return 1;
12262
12263 }
12264 EOP
12265         set try
12266         if eval $compile && $to try.c; then
12267                 case `$run ./try` in
12268                 Pass_changed)
12269                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12270                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12271                 Pass_unchanged)
12272                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12273                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12274                 Fail*)
12275                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12276                 *)
12277                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12278         esac
12279         else
12280                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12281         fi
12282         $rm -f try.c try
12283         ;;
12284 esac
12285
12286 : see if _base is also standard
12287 val="$undef"
12288 case "$d_stdstdio" in
12289 $define)
12290         $cat >try.c <<EOP
12291 #include <stdio.h>
12292 #$i_stdlib I_STDLIB
12293 #ifdef I_STDLIB
12294 #include <stdlib.h>
12295 #endif
12296 #define FILE_base(fp)   $stdio_base
12297 #define FILE_bufsiz(fp) $stdio_bufsiz
12298 int main() {
12299         FILE *fp = fopen("try.c", "r");
12300         char c = getc(fp);
12301         if (
12302                 19 <= FILE_bufsiz(fp) &&
12303                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12304         )
12305                 exit(0);
12306         exit(1);
12307 }
12308 EOP
12309         set try
12310         if eval $compile && $to try.c; then
12311                 if $run ./try; then
12312                         echo "And its _base field acts std."
12313                         val="$define"
12314                 else
12315                         echo "But its _base field isn't std."
12316                 fi
12317         else
12318                 echo "However, it seems to be lacking the _base field."
12319         fi
12320         $rm -f try.c try
12321         ;;
12322 esac
12323 set d_stdiobase
12324 eval $setvar
12325
12326 : see if fast_stdio exists
12327 val="$undef"
12328 case "$d_stdstdio:$d_stdio_ptr_lval" in
12329 "$define:$define")
12330         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12331         *$define*)
12332                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12333                 val="$define"
12334                 ;;
12335         esac
12336         ;;
12337 esac
12338 set d_faststdio
12339 eval $setvar
12340
12341
12342
12343 : see if fchdir exists
12344 set fchdir d_fchdir
12345 eval $inlibc
12346
12347 : see if fchmod exists
12348 set fchmod d_fchmod
12349 eval $inlibc
12350
12351 : see if fchown exists
12352 set fchown d_fchown
12353 eval $inlibc
12354
12355 : see if this is an fcntl system
12356 set fcntl d_fcntl
12357 eval $inlibc
12358
12359 echo " "
12360 : See if fcntl-based locking works.
12361 $cat >try.c <<EOCP
12362 #$i_stdlib I_STDLIB
12363 #ifdef I_STDLIB
12364 #include <stdlib.h>
12365 #endif
12366 #include <unistd.h>
12367 #include <fcntl.h>
12368 #include <signal.h>
12369 $signal_t blech(x) int x; { exit(3); }
12370 int main() {
12371 #if defined(F_SETLK) && defined(F_SETLKW)
12372      struct flock flock;
12373      int retval, fd;
12374      fd = open("try.c", O_RDONLY);
12375      flock.l_type = F_RDLCK;
12376      flock.l_whence = SEEK_SET;
12377      flock.l_start = flock.l_len = 0;
12378      signal(SIGALRM, blech);
12379      alarm(10);
12380      retval = fcntl(fd, F_SETLK, &flock);
12381      close(fd);
12382      (retval < 0 ? exit(2) : exit(0));
12383 #else
12384      exit(2);
12385 #endif
12386 }
12387 EOCP
12388 echo "Checking if fcntl-based file locking works... "
12389 case "$d_fcntl" in
12390 "$define")
12391         set try
12392         if eval $compile_ok; then
12393                 if $run ./try; then
12394                         echo "Yes, it seems to work."
12395                         val="$define"
12396                 else
12397                         echo "Nope, it didn't work."
12398                         val="$undef"
12399                         case "$?" in
12400                         3) $cat >&4 <<EOM
12401 ***
12402 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12403 *** This is (almost) impossible.
12404 *** If your NFS lock daemons are not feeling well, something like
12405 *** this may happen, please investigate.  Cannot continue, aborting.
12406 ***
12407 EOM
12408                                 exit 1
12409                                 ;;
12410                         esac
12411                 fi
12412         else
12413                 echo "I'm unable to compile the test program, so I'll assume not."
12414                 val="$undef"
12415         fi
12416         ;;
12417 *) val="$undef";
12418         echo "Nope, since you don't even have fcntl()."
12419         ;;
12420 esac
12421 set d_fcntl_can_lock
12422 eval $setvar
12423 $rm -f try*
12424
12425
12426 : check for fd_set items
12427 $cat <<EOM
12428
12429 Checking to see how well your C compiler handles fd_set and friends ...
12430 EOM
12431 $cat >try.c <<EOCP
12432 #$i_stdlib I_STDLIB
12433 #ifdef I_STDLIB
12434 #include <stdlib.h>
12435 #endif
12436 #$i_systime I_SYS_TIME
12437 #$i_sysselct I_SYS_SELECT
12438 #$d_socket HAS_SOCKET
12439 #include <sys/types.h>
12440 #ifdef HAS_SOCKET
12441 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12442 #endif
12443 #ifdef I_SYS_TIME
12444 #include <sys/time.h>
12445 #endif
12446 #ifdef I_SYS_SELECT
12447 #include <sys/select.h>
12448 #endif
12449 int main() {
12450         fd_set fds;
12451
12452 #ifdef TRYBITS
12453         if(fds.fds_bits);
12454 #endif
12455
12456 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12457         exit(0);
12458 #else
12459         exit(1);
12460 #endif
12461 }
12462 EOCP
12463 set try -DTRYBITS
12464 if eval $compile; then
12465         d_fds_bits="$define"
12466         d_fd_set="$define"
12467         echo "Well, your system knows about the normal fd_set typedef..." >&4
12468         if $run ./try; then
12469                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12470                 d_fd_macros="$define"
12471         else
12472                 $cat >&4 <<'EOM'
12473 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12474 EOM
12475                 d_fd_macros="$undef"
12476         fi
12477 else
12478         $cat <<'EOM'
12479 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12480 EOM
12481         set try
12482         if eval $compile; then
12483                 d_fds_bits="$undef"
12484                 d_fd_set="$define"
12485                 echo "Well, your system has some sort of fd_set available..." >&4
12486                 if $run ./try; then
12487                         echo "and you have the normal fd_set macros." >&4
12488                         d_fd_macros="$define"
12489                 else
12490                         $cat <<'EOM'
12491 but not the normal fd_set macros!  Gross!  More work for me...
12492 EOM
12493                         d_fd_macros="$undef"
12494                 fi
12495         else
12496         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12497                 d_fd_set="$undef"
12498                 d_fds_bits="$undef"
12499                 d_fd_macros="$undef"
12500         fi
12501 fi
12502 $rm -f try try.*
12503
12504 : see if fgetpos exists
12505 set fgetpos d_fgetpos
12506 eval $inlibc
12507
12508 : see if finite exists
12509 set finite d_finite
12510 eval $inlibc
12511
12512 : see if finitel exists
12513 set finitel d_finitel
12514 eval $inlibc
12515
12516 : see if flock exists
12517 set flock d_flock
12518 eval $inlibc
12519
12520 : see if prototype for flock is available
12521 echo " "
12522 set d_flockproto flock $i_sysfile sys/file.h
12523 eval $hasproto
12524
12525 : see if fork exists
12526 set fork d_fork
12527 eval $inlibc
12528
12529 : see if fp_class exists
12530 set fp_class d_fp_class
12531 eval $inlibc
12532
12533 : see if pathconf exists
12534 set pathconf d_pathconf
12535 eval $inlibc
12536
12537 : see if fpathconf exists
12538 set fpathconf d_fpathconf
12539 eval $inlibc
12540
12541 : see if fpclass exists
12542 set fpclass d_fpclass
12543 eval $inlibc
12544
12545 : see if fpclassify exists
12546 set fpclassify d_fpclassify
12547 eval $inlibc
12548
12549 : see if fpclassl exists
12550 set fpclassl d_fpclassl
12551 eval $inlibc
12552
12553
12554 : check for fpos64_t
12555 echo " "
12556 echo "Checking to see if you have fpos64_t..." >&4
12557 $cat >try.c <<EOCP
12558 #include <stdio.h>
12559 int main() { fpos64_t x = 7; }
12560 EOCP
12561 set try
12562 if eval $compile; then
12563         val="$define"
12564         echo "You have fpos64_t."
12565 else
12566         val="$undef"
12567         echo "You do not have fpos64_t."
12568         case "$fpossize" in
12569         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12570         esac
12571 fi
12572 $rm -f try.* try
12573 set d_fpos64_t
12574 eval $setvar
12575
12576 : see if frexpl exists
12577 set frexpl d_frexpl
12578 eval $inlibc
12579
12580 : see if this is a sys/param system
12581 set sys/param.h i_sysparam
12582 eval $inhdr
12583
12584 : see if this is a sys/mount.h system
12585 set sys/mount.h i_sysmount
12586 eval $inhdr
12587
12588
12589 echo " "
12590 echo "Checking to see if your system supports struct fs_data..." >&4
12591 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12592 eval $hasstruct
12593 case "$d_fs_data_s" in
12594 "$define")      echo "Yes, it does."   ;;
12595 *)              echo "No, it doesn't." ;;
12596 esac
12597
12598 : see if fseeko exists
12599 set fseeko d_fseeko
12600 eval $inlibc
12601 case "$longsize" in
12602 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12603 esac
12604
12605 : see if fsetpos exists
12606 set fsetpos d_fsetpos
12607 eval $inlibc
12608
12609
12610 : see if fstatfs exists
12611 set fstatfs d_fstatfs
12612 eval $inlibc
12613
12614
12615 : see if statvfs exists
12616 set statvfs d_statvfs
12617 eval $inlibc
12618
12619 : see if fstatvfs exists
12620 set fstatvfs d_fstatvfs
12621 eval $inlibc
12622
12623
12624 : see if fsync exists
12625 set fsync d_fsync
12626 eval $inlibc
12627
12628 : see if ftello exists
12629 set ftello d_ftello
12630 eval $inlibc
12631 case "$longsize" in
12632 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12633 esac
12634
12635 d_futimes="$undef"
12636 : check for a working futimes
12637 echo " "
12638 echo "Checking for a working futimes()" >&4
12639 $cat >try.c <<EOCP
12640 #include <stdio.h>
12641 #include <sys/time.h>
12642 #include <errno.h>
12643 #include <fcntl.h>
12644
12645 int main ()
12646 {
12647     int fd, rv;
12648     fd = open ("try.c", O_RDWR);
12649     if (-1 == fd) exit (1);
12650     rv = futimes (fd, NULL);
12651     exit (rv == -1 ? errno : 0);
12652 }
12653 EOCP
12654 set try
12655 if eval $compile; then
12656     `$run ./try`
12657     rc=$?
12658     case "$rc" in
12659         0)  echo "Yes, it does" >&4
12660             d_futimes="$define"
12661             ;;
12662         *)  echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4
12663             ;;
12664     esac
12665 else
12666     echo "No, it does not (probably harmless)\n" >&4
12667 fi
12668 $rm -f try.* try core core.try.*
12669
12670 : see if getcwd exists
12671 set getcwd d_getcwd
12672 eval $inlibc
12673
12674 : see if getespwnam exists
12675 set getespwnam d_getespwnam
12676 eval $inlibc
12677
12678
12679 : see if getfsstat exists
12680 set getfsstat d_getfsstat
12681 eval $inlibc
12682
12683 : see if getgrent exists
12684 set getgrent d_getgrent
12685 eval $inlibc
12686
12687 : see if getgrent_r exists
12688 set getgrent_r d_getgrent_r
12689 eval $inlibc
12690 case "$d_getgrent_r" in
12691 "$define")
12692         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12693         case "$d_getgrent_r_proto:$usethreads" in
12694         ":define")      d_getgrent_r_proto=define
12695                 set d_getgrent_r_proto getgrent_r $hdrs
12696                 eval $hasproto ;;
12697         *)      ;;
12698         esac
12699         case "$d_getgrent_r_proto" in
12700         define)
12701         case "$getgrent_r_proto" in
12702         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12703         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12704         esac
12705         case "$getgrent_r_proto" in
12706         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12707         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12708         esac
12709         case "$getgrent_r_proto" in
12710         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12711         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12712         esac
12713         case "$getgrent_r_proto" in
12714         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12715         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12716         esac
12717         case "$getgrent_r_proto" in
12718         ''|0) try='int getgrent_r(struct group*, char*, int);'
12719         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12720         esac
12721         case "$getgrent_r_proto" in
12722         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12723         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12724         esac
12725         case "$getgrent_r_proto" in
12726         ''|0)   d_getgrent_r=undef
12727                 getgrent_r_proto=0
12728                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12729         * )     case "$getgrent_r_proto" in
12730                 REENTRANT_PROTO*) ;;
12731                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12732                 esac
12733                 echo "Prototype: $try" ;;
12734         esac
12735         ;;
12736         *)      case "$usethreads" in
12737                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12738                 esac
12739                 d_getgrent_r=undef
12740                 getgrent_r_proto=0
12741                 ;;
12742         esac
12743         ;;
12744 *)      getgrent_r_proto=0
12745         ;;
12746 esac
12747
12748 : see if getgrgid_r exists
12749 set getgrgid_r d_getgrgid_r
12750 eval $inlibc
12751 case "$d_getgrgid_r" in
12752 "$define")
12753         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12754         case "$d_getgrgid_r_proto:$usethreads" in
12755         ":define")      d_getgrgid_r_proto=define
12756                 set d_getgrgid_r_proto getgrgid_r $hdrs
12757                 eval $hasproto ;;
12758         *)      ;;
12759         esac
12760         case "$d_getgrgid_r_proto" in
12761         define)
12762         case "$getgrgid_r_proto" in
12763         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12764         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12765         esac
12766         case "$getgrgid_r_proto" in
12767         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12768         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12769         esac
12770         case "$getgrgid_r_proto" in
12771         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12772         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12773         esac
12774         case "$getgrgid_r_proto" in
12775         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12776         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12777         esac
12778         case "$getgrgid_r_proto" in
12779         ''|0)   d_getgrgid_r=undef
12780                 getgrgid_r_proto=0
12781                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12782         * )     case "$getgrgid_r_proto" in
12783                 REENTRANT_PROTO*) ;;
12784                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12785                 esac
12786                 echo "Prototype: $try" ;;
12787         esac
12788         ;;
12789         *)      case "$usethreads" in
12790                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12791                 esac
12792                 d_getgrgid_r=undef
12793                 getgrgid_r_proto=0
12794                 ;;
12795         esac
12796         ;;
12797 *)      getgrgid_r_proto=0
12798         ;;
12799 esac
12800
12801 : see if getgrnam_r exists
12802 set getgrnam_r d_getgrnam_r
12803 eval $inlibc
12804 case "$d_getgrnam_r" in
12805 "$define")
12806         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12807         case "$d_getgrnam_r_proto:$usethreads" in
12808         ":define")      d_getgrnam_r_proto=define
12809                 set d_getgrnam_r_proto getgrnam_r $hdrs
12810                 eval $hasproto ;;
12811         *)      ;;
12812         esac
12813         case "$d_getgrnam_r_proto" in
12814         define)
12815         case "$getgrnam_r_proto" in
12816         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12817         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12818         esac
12819         case "$getgrnam_r_proto" in
12820         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12821         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12822         esac
12823         case "$getgrnam_r_proto" in
12824         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12825         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12826         esac
12827         case "$getgrnam_r_proto" in
12828         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12829         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12830         esac
12831         case "$getgrnam_r_proto" in
12832         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12833         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12834         esac
12835         case "$getgrnam_r_proto" in
12836         ''|0)   d_getgrnam_r=undef
12837                 getgrnam_r_proto=0
12838                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12839         * )     case "$getgrnam_r_proto" in
12840                 REENTRANT_PROTO*) ;;
12841                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12842                 esac
12843                 echo "Prototype: $try" ;;
12844         esac
12845         ;;
12846         *)      case "$usethreads" in
12847                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12848                 esac
12849                 d_getgrnam_r=undef
12850                 getgrnam_r_proto=0
12851                 ;;
12852         esac
12853         ;;
12854 *)      getgrnam_r_proto=0
12855         ;;
12856 esac
12857
12858 : see if gethostbyaddr exists
12859 set gethostbyaddr d_gethbyaddr
12860 eval $inlibc
12861
12862 : see if gethostbyname exists
12863 set gethostbyname d_gethbyname
12864 eval $inlibc
12865
12866 : see if gethostent exists
12867 set gethostent d_gethent
12868 eval $inlibc
12869
12870 : see how we will look up host name
12871 echo " "
12872 call=''
12873 if set gethostname val -f d_gethname; eval $csym; $val; then
12874         echo 'gethostname() found.' >&4
12875         d_gethname="$define"
12876         call=gethostname
12877 fi
12878 if set uname val -f d_uname; eval $csym; $val; then
12879         if ./xenix; then
12880                 $cat <<'EOM'
12881 uname() was found, but you're running xenix, and older versions of xenix
12882 have a broken uname(). If you don't really know whether your xenix is old
12883 enough to have a broken system call, use the default answer.
12884
12885 EOM
12886                 dflt=y
12887                 case "$d_uname" in
12888                 "$define") dflt=n;;
12889                 esac
12890                 rp='Is your uname() broken?'
12891                 . ./myread
12892                 case "$ans" in
12893                 n*) d_uname="$define"; call=uname;;
12894                 esac
12895         else
12896                 echo 'uname() found.' >&4
12897                 d_uname="$define"
12898                 case "$call" in
12899                 '') call=uname ;;
12900                 esac
12901         fi
12902 fi
12903 case "$d_gethname" in
12904 '') d_gethname="$undef";;
12905 esac
12906 case "$d_uname" in
12907 '') d_uname="$undef";;
12908 esac
12909 case "$d_uname$d_gethname" in
12910 *define*)
12911         dflt=n
12912         cat <<EOM
12913  
12914 Every now and then someone has a $call() that lies about the hostname
12915 but can't be fixed for political or economic reasons.  If you wish, I can
12916 pretend $call() isn't there and maybe compute hostname at run-time
12917 thanks to the '$phostname' command.
12918
12919 EOM
12920         rp="Shall I ignore $call() from now on?"
12921         . ./myread
12922         case "$ans" in
12923         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12924         esac;;
12925 esac
12926 case "$phostname" in
12927 '') aphostname='';;
12928 *) case "$aphostname" in
12929         /*) ;;
12930         *) set X $phostname
12931                 shift
12932                 file=$1
12933                 shift
12934                 file=`./loc $file $file $pth`
12935                 aphostname=`echo $file $*`
12936                 ;;
12937         esac
12938         ;;
12939 esac
12940 case "$d_uname$d_gethname" in
12941 *define*) ;;
12942 *)
12943         case "$phostname" in
12944         '')
12945                 echo "There will be no way for $package to get your hostname." >&4;;
12946         *)
12947         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12948                 ;;
12949         esac;;
12950 esac
12951 case "$d_phostname" in
12952 '') d_phostname="$undef";;
12953 esac
12954
12955 : see if gethostbyaddr_r exists
12956 set gethostbyaddr_r d_gethostbyaddr_r
12957 eval $inlibc
12958 case "$d_gethostbyaddr_r" in
12959 "$define")
12960         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12961         case "$d_gethostbyaddr_r_proto:$usethreads" in
12962         ":define")      d_gethostbyaddr_r_proto=define
12963                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12964                 eval $hasproto ;;
12965         *)      ;;
12966         esac
12967         case "$d_gethostbyaddr_r_proto" in
12968         define)
12969         case "$gethostbyaddr_r_proto" in
12970         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12971         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12972         esac
12973         case "$gethostbyaddr_r_proto" in
12974         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12975         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12976         esac
12977         case "$gethostbyaddr_r_proto" in
12978         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12979         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12980         esac
12981         case "$gethostbyaddr_r_proto" in
12982         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12983         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12984         esac
12985         case "$gethostbyaddr_r_proto" in
12986         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12987         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12988         esac
12989         case "$gethostbyaddr_r_proto" in
12990         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12991         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12992         esac
12993         case "$gethostbyaddr_r_proto" in
12994         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12995         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12996         esac
12997         case "$gethostbyaddr_r_proto" in
12998         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12999         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13000         esac
13001         case "$gethostbyaddr_r_proto" in
13002         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13003         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13004         esac
13005         case "$gethostbyaddr_r_proto" in
13006         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13007         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13008         esac
13009         case "$gethostbyaddr_r_proto" in
13010         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13011         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13012         esac
13013         case "$gethostbyaddr_r_proto" in
13014         ''|0)   d_gethostbyaddr_r=undef
13015                 gethostbyaddr_r_proto=0
13016                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13017         * )     case "$gethostbyaddr_r_proto" in
13018                 REENTRANT_PROTO*) ;;
13019                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13020                 esac
13021                 echo "Prototype: $try" ;;
13022         esac
13023         ;;
13024         *)      case "$usethreads" in
13025                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13026                 esac
13027                 d_gethostbyaddr_r=undef
13028                 gethostbyaddr_r_proto=0
13029                 ;;
13030         esac
13031         ;;
13032 *)      gethostbyaddr_r_proto=0
13033         ;;
13034 esac
13035
13036 : see if gethostbyname_r exists
13037 set gethostbyname_r d_gethostbyname_r
13038 eval $inlibc
13039 case "$d_gethostbyname_r" in
13040 "$define")
13041         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13042         case "$d_gethostbyname_r_proto:$usethreads" in
13043         ":define")      d_gethostbyname_r_proto=define
13044                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13045                 eval $hasproto ;;
13046         *)      ;;
13047         esac
13048         case "$d_gethostbyname_r_proto" in
13049         define)
13050         case "$gethostbyname_r_proto" in
13051         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13052         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13053         esac
13054         case "$gethostbyname_r_proto" in
13055         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13056         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13057         esac
13058         case "$gethostbyname_r_proto" in
13059         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13060         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13061         esac
13062         case "$gethostbyname_r_proto" in
13063         ''|0)   d_gethostbyname_r=undef
13064                 gethostbyname_r_proto=0
13065                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13066         * )     case "$gethostbyname_r_proto" in
13067                 REENTRANT_PROTO*) ;;
13068                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13069                 esac
13070                 echo "Prototype: $try" ;;
13071         esac
13072         ;;
13073         *)      case "$usethreads" in
13074                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13075                 esac
13076                 d_gethostbyname_r=undef
13077                 gethostbyname_r_proto=0
13078                 ;;
13079         esac
13080         ;;
13081 *)      gethostbyname_r_proto=0
13082         ;;
13083 esac
13084
13085 : see if gethostent_r exists
13086 set gethostent_r d_gethostent_r
13087 eval $inlibc
13088 case "$d_gethostent_r" in
13089 "$define")
13090         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13091         case "$d_gethostent_r_proto:$usethreads" in
13092         ":define")      d_gethostent_r_proto=define
13093                 set d_gethostent_r_proto gethostent_r $hdrs
13094                 eval $hasproto ;;
13095         *)      ;;
13096         esac
13097         case "$d_gethostent_r_proto" in
13098         define)
13099         case "$gethostent_r_proto" in
13100         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13101         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13102         esac
13103         case "$gethostent_r_proto" in
13104         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13105         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13106         esac
13107         case "$gethostent_r_proto" in
13108         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13109         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13110         esac
13111         case "$gethostent_r_proto" in
13112         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13113         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13114         esac
13115         case "$gethostent_r_proto" in
13116         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13117         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13118         esac
13119         case "$gethostent_r_proto" in
13120         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13121         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13122         esac
13123         case "$gethostent_r_proto" in
13124         ''|0)   d_gethostent_r=undef
13125                 gethostent_r_proto=0
13126                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13127         * )     case "$gethostent_r_proto" in
13128                 REENTRANT_PROTO*) ;;
13129                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13130                 esac
13131                 echo "Prototype: $try" ;;
13132         esac
13133         ;;
13134         *)      case "$usethreads" in
13135                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13136                 esac
13137                 d_gethostent_r=undef
13138                 gethostent_r_proto=0
13139                 ;;
13140         esac
13141         ;;
13142 *)      gethostent_r_proto=0
13143         ;;
13144 esac
13145
13146 : see if prototypes for various gethostxxx netdb.h functions are available
13147 echo " "
13148 set d_gethostprotos gethostent $i_netdb netdb.h
13149 eval $hasproto
13150
13151 : see if getitimer exists
13152 set getitimer d_getitimer
13153 eval $inlibc
13154
13155 : see if getlogin exists
13156 set getlogin d_getlogin
13157 eval $inlibc
13158
13159 : see if getlogin_r exists
13160 set getlogin_r d_getlogin_r
13161 eval $inlibc
13162 case "$d_getlogin_r" in
13163 "$define")
13164         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13165         case "$d_getlogin_r_proto:$usethreads" in
13166         ":define")      d_getlogin_r_proto=define
13167                 set d_getlogin_r_proto getlogin_r $hdrs
13168                 eval $hasproto ;;
13169         *)      ;;
13170         esac
13171         case "$d_getlogin_r_proto" in
13172         define)
13173         case "$getlogin_r_proto" in
13174         ''|0) try='int getlogin_r(char*, size_t);'
13175         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13176         esac
13177         case "$getlogin_r_proto" in
13178         ''|0) try='int getlogin_r(char*, int);'
13179         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13180         esac
13181         case "$getlogin_r_proto" in
13182         ''|0) try='char* getlogin_r(char*, size_t);'
13183         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13184         esac
13185         case "$getlogin_r_proto" in
13186         ''|0) try='char* getlogin_r(char*, int);'
13187         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13188         esac
13189         case "$getlogin_r_proto" in
13190         ''|0)   d_getlogin_r=undef
13191                 getlogin_r_proto=0
13192                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13193         * )     case "$getlogin_r_proto" in
13194                 REENTRANT_PROTO*) ;;
13195                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13196                 esac
13197                 echo "Prototype: $try" ;;
13198         esac
13199         ;;
13200         *)      case "$usethreads" in
13201                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13202                 esac
13203                 d_getlogin_r=undef
13204                 getlogin_r_proto=0
13205                 ;;
13206         esac
13207         ;;
13208 *)      getlogin_r_proto=0
13209         ;;
13210 esac
13211
13212 : see if getmnt exists
13213 set getmnt d_getmnt
13214 eval $inlibc
13215
13216 : see if getmntent exists
13217 set getmntent d_getmntent
13218 eval $inlibc
13219
13220 : see if getnetbyaddr exists
13221 set getnetbyaddr d_getnbyaddr
13222 eval $inlibc
13223
13224 : see if getnetbyname exists
13225 set getnetbyname d_getnbyname
13226 eval $inlibc
13227
13228 : see if getnetent exists
13229 set getnetent d_getnent
13230 eval $inlibc
13231
13232 : see if getnetbyaddr_r exists
13233 set getnetbyaddr_r d_getnetbyaddr_r
13234 eval $inlibc
13235 case "$d_getnetbyaddr_r" in
13236 "$define")
13237         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13238         case "$d_getnetbyaddr_r_proto:$usethreads" in
13239         ":define")      d_getnetbyaddr_r_proto=define
13240                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13241                 eval $hasproto ;;
13242         *)      ;;
13243         esac
13244         case "$d_getnetbyaddr_r_proto" in
13245         define)
13246         case "$getnetbyaddr_r_proto" in
13247         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13248         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13249         esac
13250         case "$getnetbyaddr_r_proto" in
13251         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13252         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13253         esac
13254         case "$getnetbyaddr_r_proto" in
13255         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13256         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13257         esac
13258         case "$getnetbyaddr_r_proto" in
13259         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13260         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13261         esac
13262         case "$getnetbyaddr_r_proto" in
13263         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13264         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13265         esac
13266         case "$getnetbyaddr_r_proto" in
13267         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13268         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13269         esac
13270         case "$getnetbyaddr_r_proto" in
13271         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13272         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13273         esac
13274         case "$getnetbyaddr_r_proto" in
13275         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13276         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13277         esac
13278         case "$getnetbyaddr_r_proto" in
13279         ''|0)   d_getnetbyaddr_r=undef
13280                 getnetbyaddr_r_proto=0
13281                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13282         * )     case "$getnetbyaddr_r_proto" in
13283                 REENTRANT_PROTO*) ;;
13284                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13285                 esac
13286                 echo "Prototype: $try" ;;
13287         esac
13288         ;;
13289         *)      case "$usethreads" in
13290                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13291                 esac
13292                 d_getnetbyaddr_r=undef
13293                 getnetbyaddr_r_proto=0
13294                 ;;
13295         esac
13296         ;;
13297 *)      getnetbyaddr_r_proto=0
13298         ;;
13299 esac
13300
13301 : see if getnetbyname_r exists
13302 set getnetbyname_r d_getnetbyname_r
13303 eval $inlibc
13304 case "$d_getnetbyname_r" in
13305 "$define")
13306         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13307         case "$d_getnetbyname_r_proto:$usethreads" in
13308         ":define")      d_getnetbyname_r_proto=define
13309                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13310                 eval $hasproto ;;
13311         *)      ;;
13312         esac
13313         case "$d_getnetbyname_r_proto" in
13314         define)
13315         case "$getnetbyname_r_proto" in
13316         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13317         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13318         esac
13319         case "$getnetbyname_r_proto" in
13320         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13321         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13322         esac
13323         case "$getnetbyname_r_proto" in
13324         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13325         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13326         esac
13327         case "$getnetbyname_r_proto" in
13328         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13329         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13330         esac
13331         case "$getnetbyname_r_proto" in
13332         ''|0)   d_getnetbyname_r=undef
13333                 getnetbyname_r_proto=0
13334                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13335         * )     case "$getnetbyname_r_proto" in
13336                 REENTRANT_PROTO*) ;;
13337                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13338                 esac
13339                 echo "Prototype: $try" ;;
13340         esac
13341         ;;
13342         *)      case "$usethreads" in
13343                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13344                 esac
13345                 d_getnetbyname_r=undef
13346                 getnetbyname_r_proto=0
13347                 ;;
13348         esac
13349         ;;
13350 *)      getnetbyname_r_proto=0
13351         ;;
13352 esac
13353
13354 : see if getnetent_r exists
13355 set getnetent_r d_getnetent_r
13356 eval $inlibc
13357 case "$d_getnetent_r" in
13358 "$define")
13359         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13360         case "$d_getnetent_r_proto:$usethreads" in
13361         ":define")      d_getnetent_r_proto=define
13362                 set d_getnetent_r_proto getnetent_r $hdrs
13363                 eval $hasproto ;;
13364         *)      ;;
13365         esac
13366         case "$d_getnetent_r_proto" in
13367         define)
13368         case "$getnetent_r_proto" in
13369         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13370         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13371         esac
13372         case "$getnetent_r_proto" in
13373         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13374         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13375         esac
13376         case "$getnetent_r_proto" in
13377         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13378         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13379         esac
13380         case "$getnetent_r_proto" in
13381         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13382         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13383         esac
13384         case "$getnetent_r_proto" in
13385         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13386         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13387         esac
13388         case "$getnetent_r_proto" in
13389         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13390         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13391         esac
13392         case "$getnetent_r_proto" in
13393         ''|0)   d_getnetent_r=undef
13394                 getnetent_r_proto=0
13395                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13396         * )     case "$getnetent_r_proto" in
13397                 REENTRANT_PROTO*) ;;
13398                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13399                 esac
13400                 echo "Prototype: $try" ;;
13401         esac
13402         ;;
13403         *)      case "$usethreads" in
13404                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13405                 esac
13406                 d_getnetent_r=undef
13407                 getnetent_r_proto=0
13408                 ;;
13409         esac
13410         ;;
13411 *)      getnetent_r_proto=0
13412         ;;
13413 esac
13414
13415 : see if prototypes for various getnetxxx netdb.h functions are available
13416 echo " "
13417 set d_getnetprotos getnetent $i_netdb netdb.h
13418 eval $hasproto
13419
13420 : see if getpagesize exists
13421 set getpagesize d_getpagsz
13422 eval $inlibc
13423
13424
13425 : see if getprotobyname exists
13426 set getprotobyname d_getpbyname
13427 eval $inlibc
13428
13429 : see if getprotobynumber exists
13430 set getprotobynumber d_getpbynumber
13431 eval $inlibc
13432
13433 : see if getprotoent exists
13434 set getprotoent d_getpent
13435 eval $inlibc
13436
13437 : see if getpgid exists
13438 set getpgid d_getpgid
13439 eval $inlibc
13440
13441 : see if getpgrp2 exists
13442 set getpgrp2 d_getpgrp2
13443 eval $inlibc
13444
13445 : see if getppid exists
13446 set getppid d_getppid
13447 eval $inlibc
13448
13449 : see if getpriority exists
13450 set getpriority d_getprior
13451 eval $inlibc
13452
13453 : see if getprotobyname_r exists
13454 set getprotobyname_r d_getprotobyname_r
13455 eval $inlibc
13456 case "$d_getprotobyname_r" in
13457 "$define")
13458         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13459         case "$d_getprotobyname_r_proto:$usethreads" in
13460         ":define")      d_getprotobyname_r_proto=define
13461                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13462                 eval $hasproto ;;
13463         *)      ;;
13464         esac
13465         case "$d_getprotobyname_r_proto" in
13466         define)
13467         case "$getprotobyname_r_proto" in
13468         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13469         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13470         esac
13471         case "$getprotobyname_r_proto" in
13472         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13473         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13474         esac
13475         case "$getprotobyname_r_proto" in
13476         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13477         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13478         esac
13479         case "$getprotobyname_r_proto" in
13480         ''|0)   d_getprotobyname_r=undef
13481                 getprotobyname_r_proto=0
13482                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13483         * )     case "$getprotobyname_r_proto" in
13484                 REENTRANT_PROTO*) ;;
13485                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13486                 esac
13487                 echo "Prototype: $try" ;;
13488         esac
13489         ;;
13490         *)      case "$usethreads" in
13491                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13492                 esac
13493                 d_getprotobyname_r=undef
13494                 getprotobyname_r_proto=0
13495                 ;;
13496         esac
13497         ;;
13498 *)      getprotobyname_r_proto=0
13499         ;;
13500 esac
13501
13502 : see if getprotobynumber_r exists
13503 set getprotobynumber_r d_getprotobynumber_r
13504 eval $inlibc
13505 case "$d_getprotobynumber_r" in
13506 "$define")
13507         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13508         case "$d_getprotobynumber_r_proto:$usethreads" in
13509         ":define")      d_getprotobynumber_r_proto=define
13510                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13511                 eval $hasproto ;;
13512         *)      ;;
13513         esac
13514         case "$d_getprotobynumber_r_proto" in
13515         define)
13516         case "$getprotobynumber_r_proto" in
13517         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13518         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13519         esac
13520         case "$getprotobynumber_r_proto" in
13521         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13522         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13523         esac
13524         case "$getprotobynumber_r_proto" in
13525         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13526         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13527         esac
13528         case "$getprotobynumber_r_proto" in
13529         ''|0)   d_getprotobynumber_r=undef
13530                 getprotobynumber_r_proto=0
13531                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13532         * )     case "$getprotobynumber_r_proto" in
13533                 REENTRANT_PROTO*) ;;
13534                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13535                 esac
13536                 echo "Prototype: $try" ;;
13537         esac
13538         ;;
13539         *)      case "$usethreads" in
13540                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13541                 esac
13542                 d_getprotobynumber_r=undef
13543                 getprotobynumber_r_proto=0
13544                 ;;
13545         esac
13546         ;;
13547 *)      getprotobynumber_r_proto=0
13548         ;;
13549 esac
13550
13551 : see if getprotoent_r exists
13552 set getprotoent_r d_getprotoent_r
13553 eval $inlibc
13554 case "$d_getprotoent_r" in
13555 "$define")
13556         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13557         case "$d_getprotoent_r_proto:$usethreads" in
13558         ":define")      d_getprotoent_r_proto=define
13559                 set d_getprotoent_r_proto getprotoent_r $hdrs
13560                 eval $hasproto ;;
13561         *)      ;;
13562         esac
13563         case "$d_getprotoent_r_proto" in
13564         define)
13565         case "$getprotoent_r_proto" in
13566         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13567         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13568         esac
13569         case "$getprotoent_r_proto" in
13570         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13571         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13572         esac
13573         case "$getprotoent_r_proto" in
13574         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13575         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13576         esac
13577         case "$getprotoent_r_proto" in
13578         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13579         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13580         esac
13581         case "$getprotoent_r_proto" in
13582         ''|0)   d_getprotoent_r=undef
13583                 getprotoent_r_proto=0
13584                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13585         * )     case "$getprotoent_r_proto" in
13586                 REENTRANT_PROTO*) ;;
13587                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13588                 esac
13589                 echo "Prototype: $try" ;;
13590         esac
13591         ;;
13592         *)      case "$usethreads" in
13593                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13594                 esac
13595                 d_getprotoent_r=undef
13596                 getprotoent_r_proto=0
13597                 ;;
13598         esac
13599         ;;
13600 *)      getprotoent_r_proto=0
13601         ;;
13602 esac
13603
13604 : see if prototypes for various getprotoxxx netdb.h functions are available
13605 echo " "
13606 set d_getprotoprotos getprotoent $i_netdb netdb.h
13607 eval $hasproto
13608
13609 : see if getprpwnam exists
13610 set getprpwnam d_getprpwnam
13611 eval $inlibc
13612
13613 : see if getpwent exists
13614 set getpwent d_getpwent
13615 eval $inlibc
13616
13617 : see if getpwent_r exists
13618 set getpwent_r d_getpwent_r
13619 eval $inlibc
13620 case "$d_getpwent_r" in
13621 "$define")
13622         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13623         case "$d_getpwent_r_proto:$usethreads" in
13624         ":define")      d_getpwent_r_proto=define
13625                 set d_getpwent_r_proto getpwent_r $hdrs
13626                 eval $hasproto ;;
13627         *)      ;;
13628         esac
13629         case "$d_getpwent_r_proto" in
13630         define)
13631         case "$getpwent_r_proto" in
13632         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13633         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13634         esac
13635         case "$getpwent_r_proto" in
13636         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13637         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13638         esac
13639         case "$getpwent_r_proto" in
13640         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13641         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13642         esac
13643         case "$getpwent_r_proto" in
13644         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13645         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13646         esac
13647         case "$getpwent_r_proto" in
13648         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13649         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13650         esac
13651         case "$getpwent_r_proto" in
13652         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13653         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13654         esac
13655         case "$getpwent_r_proto" in
13656         ''|0)   d_getpwent_r=undef
13657                 getpwent_r_proto=0
13658                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13659         * )     case "$getpwent_r_proto" in
13660                 REENTRANT_PROTO*) ;;
13661                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13662                 esac
13663                 echo "Prototype: $try" ;;
13664         esac
13665         ;;
13666         *)      case "$usethreads" in
13667                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13668                 esac
13669                 d_getpwent_r=undef
13670                 getpwent_r_proto=0
13671                 ;;
13672         esac
13673         ;;
13674 *)      getpwent_r_proto=0
13675         ;;
13676 esac
13677
13678 : see if getpwnam_r exists
13679 set getpwnam_r d_getpwnam_r
13680 eval $inlibc
13681 case "$d_getpwnam_r" in
13682 "$define")
13683         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13684         case "$d_getpwnam_r_proto:$usethreads" in
13685         ":define")      d_getpwnam_r_proto=define
13686                 set d_getpwnam_r_proto getpwnam_r $hdrs
13687                 eval $hasproto ;;
13688         *)      ;;
13689         esac
13690         case "$d_getpwnam_r_proto" in
13691         define)
13692         case "$getpwnam_r_proto" in
13693         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13694         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13695         esac
13696         case "$getpwnam_r_proto" in
13697         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13698         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13699         esac
13700         case "$getpwnam_r_proto" in
13701         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13702         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13703         esac
13704         case "$getpwnam_r_proto" in
13705         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13706         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13707         esac
13708         case "$getpwnam_r_proto" in
13709         ''|0)   d_getpwnam_r=undef
13710                 getpwnam_r_proto=0
13711                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13712         * )     case "$getpwnam_r_proto" in
13713                 REENTRANT_PROTO*) ;;
13714                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13715                 esac
13716                 echo "Prototype: $try" ;;
13717         esac
13718         ;;
13719         *)      case "$usethreads" in
13720                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13721                 esac
13722                 d_getpwnam_r=undef
13723                 getpwnam_r_proto=0
13724                 ;;
13725         esac
13726         ;;
13727 *)      getpwnam_r_proto=0
13728         ;;
13729 esac
13730
13731 : see if getpwuid_r exists
13732 set getpwuid_r d_getpwuid_r
13733 eval $inlibc
13734 case "$d_getpwuid_r" in
13735 "$define")
13736         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13737         case "$d_getpwuid_r_proto:$usethreads" in
13738         ":define")      d_getpwuid_r_proto=define
13739                 set d_getpwuid_r_proto getpwuid_r $hdrs
13740                 eval $hasproto ;;
13741         *)      ;;
13742         esac
13743         case "$d_getpwuid_r_proto" in
13744         define)
13745         case "$getpwuid_r_proto" in
13746         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13747         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13748         esac
13749         case "$getpwuid_r_proto" in
13750         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13751         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13752         esac
13753         case "$getpwuid_r_proto" in
13754         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13755         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13756         esac
13757         case "$getpwuid_r_proto" in
13758         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13759         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13760         esac
13761         case "$getpwuid_r_proto" in
13762         ''|0)   d_getpwuid_r=undef
13763                 getpwuid_r_proto=0
13764                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13765         * )     case "$getpwuid_r_proto" in
13766                 REENTRANT_PROTO*) ;;
13767                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13768                 esac
13769                 echo "Prototype: $try" ;;
13770         esac
13771         ;;
13772         *)      case "$usethreads" in
13773                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13774                 esac
13775                 d_getpwuid_r=undef
13776                 getpwuid_r_proto=0
13777                 ;;
13778         esac
13779         ;;
13780 *)      getpwuid_r_proto=0
13781         ;;
13782 esac
13783
13784
13785 : see if getservbyname exists
13786 set getservbyname d_getsbyname
13787 eval $inlibc
13788
13789 : see if getservbyport exists
13790 set getservbyport d_getsbyport
13791 eval $inlibc
13792
13793 : see if getservent exists
13794 set getservent d_getsent
13795 eval $inlibc
13796
13797 : see if getservbyname_r exists
13798 set getservbyname_r d_getservbyname_r
13799 eval $inlibc
13800 case "$d_getservbyname_r" in
13801 "$define")
13802         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13803         case "$d_getservbyname_r_proto:$usethreads" in
13804         ":define")      d_getservbyname_r_proto=define
13805                 set d_getservbyname_r_proto getservbyname_r $hdrs
13806                 eval $hasproto ;;
13807         *)      ;;
13808         esac
13809         case "$d_getservbyname_r_proto" in
13810         define)
13811         case "$getservbyname_r_proto" in
13812         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13813         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13814         esac
13815         case "$getservbyname_r_proto" in
13816         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13817         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13818         esac
13819         case "$getservbyname_r_proto" in
13820         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13821         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13822         esac
13823         case "$getservbyname_r_proto" in
13824         ''|0)   d_getservbyname_r=undef
13825                 getservbyname_r_proto=0
13826                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13827         * )     case "$getservbyname_r_proto" in
13828                 REENTRANT_PROTO*) ;;
13829                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13830                 esac
13831                 echo "Prototype: $try" ;;
13832         esac
13833         ;;
13834         *)      case "$usethreads" in
13835                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13836                 esac
13837                 d_getservbyname_r=undef
13838                 getservbyname_r_proto=0
13839                 ;;
13840         esac
13841         ;;
13842 *)      getservbyname_r_proto=0
13843         ;;
13844 esac
13845
13846 : see if getservbyport_r exists
13847 set getservbyport_r d_getservbyport_r
13848 eval $inlibc
13849 case "$d_getservbyport_r" in
13850 "$define")
13851         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13852         case "$d_getservbyport_r_proto:$usethreads" in
13853         ":define")      d_getservbyport_r_proto=define
13854                 set d_getservbyport_r_proto getservbyport_r $hdrs
13855                 eval $hasproto ;;
13856         *)      ;;
13857         esac
13858         case "$d_getservbyport_r_proto" in
13859         define)
13860         case "$getservbyport_r_proto" in
13861         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13862         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13863         esac
13864         case "$getservbyport_r_proto" in
13865         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13866         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13867         esac
13868         case "$getservbyport_r_proto" in
13869         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13870         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13871         esac
13872         case "$getservbyport_r_proto" in
13873         ''|0)   d_getservbyport_r=undef
13874                 getservbyport_r_proto=0
13875                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13876         * )     case "$getservbyport_r_proto" in
13877                 REENTRANT_PROTO*) ;;
13878                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13879                 esac
13880                 echo "Prototype: $try" ;;
13881         esac
13882         ;;
13883         *)      case "$usethreads" in
13884                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13885                 esac
13886                 d_getservbyport_r=undef
13887                 getservbyport_r_proto=0
13888                 ;;
13889         esac
13890         ;;
13891 *)      getservbyport_r_proto=0
13892         ;;
13893 esac
13894
13895 : see if getservent_r exists
13896 set getservent_r d_getservent_r
13897 eval $inlibc
13898 case "$d_getservent_r" in
13899 "$define")
13900         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13901         case "$d_getservent_r_proto:$usethreads" in
13902         ":define")      d_getservent_r_proto=define
13903                 set d_getservent_r_proto getservent_r $hdrs
13904                 eval $hasproto ;;
13905         *)      ;;
13906         esac
13907         case "$d_getservent_r_proto" in
13908         define)
13909         case "$getservent_r_proto" in
13910         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13911         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13912         esac
13913         case "$getservent_r_proto" in
13914         ''|0) try='int getservent_r(struct servent*, char*, int);'
13915         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13916         esac
13917         case "$getservent_r_proto" in
13918         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13919         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13920         esac
13921         case "$getservent_r_proto" in
13922         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13923         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13924         esac
13925         case "$getservent_r_proto" in
13926         ''|0)   d_getservent_r=undef
13927                 getservent_r_proto=0
13928                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13929         * )     case "$getservent_r_proto" in
13930                 REENTRANT_PROTO*) ;;
13931                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13932                 esac
13933                 echo "Prototype: $try" ;;
13934         esac
13935         ;;
13936         *)      case "$usethreads" in
13937                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13938                 esac
13939                 d_getservent_r=undef
13940                 getservent_r_proto=0
13941                 ;;
13942         esac
13943         ;;
13944 *)      getservent_r_proto=0
13945         ;;
13946 esac
13947
13948 : see if prototypes for various getservxxx netdb.h functions are available
13949 echo " "
13950 set d_getservprotos getservent $i_netdb netdb.h
13951 eval $hasproto
13952
13953 : see if getspnam exists
13954 set getspnam d_getspnam
13955 eval $inlibc
13956
13957 : see if this is a shadow.h system
13958 set shadow.h i_shadow
13959 eval $inhdr
13960
13961 : see if getspnam_r exists
13962 set getspnam_r d_getspnam_r
13963 eval $inlibc
13964 case "$d_getspnam_r" in
13965 "$define")
13966         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13967         case "$d_getspnam_r_proto:$usethreads" in
13968         ":define")      d_getspnam_r_proto=define
13969                 set d_getspnam_r_proto getspnam_r $hdrs
13970                 eval $hasproto ;;
13971         *)      ;;
13972         esac
13973         case "$d_getspnam_r_proto" in
13974         define)
13975         case "$getspnam_r_proto" in
13976         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13977         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13978         esac
13979         case "$getspnam_r_proto" in
13980         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13981         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13982         esac
13983         case "$getspnam_r_proto" in
13984         ''|0)   d_getspnam_r=undef
13985                 getspnam_r_proto=0
13986                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13987         * )     case "$getspnam_r_proto" in
13988                 REENTRANT_PROTO*) ;;
13989                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13990                 esac
13991                 echo "Prototype: $try" ;;
13992         esac
13993         ;;
13994         *)      case "$usethreads" in
13995                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13996                 esac
13997                 d_getspnam_r=undef
13998                 getspnam_r_proto=0
13999                 ;;
14000         esac
14001         ;;
14002 *)      getspnam_r_proto=0
14003         ;;
14004 esac
14005
14006 : see if gettimeofday or ftime exists
14007 set gettimeofday d_gettimeod
14008 eval $inlibc
14009 case "$d_gettimeod" in
14010 "$undef")
14011         set ftime d_ftime 
14012         eval $inlibc
14013         ;;
14014 *)
14015         val="$undef"; set d_ftime; eval $setvar
14016         ;;
14017 esac
14018 case "$d_gettimeod$d_ftime" in
14019 "$undef$undef")
14020         echo " "
14021         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14022         ;;
14023 esac
14024
14025 : see if gmtime_r exists
14026 set gmtime_r d_gmtime_r
14027 eval $inlibc
14028 case "$d_gmtime_r" in
14029 "$define")
14030         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14031         case "$d_gmtime_r_proto:$usethreads" in
14032         ":define")      d_gmtime_r_proto=define
14033                 set d_gmtime_r_proto gmtime_r $hdrs
14034                 eval $hasproto ;;
14035         *)      ;;
14036         esac
14037         case "$d_gmtime_r_proto" in
14038         define)
14039         case "$gmtime_r_proto" in
14040         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14041         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14042         esac
14043         case "$gmtime_r_proto" in
14044         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14045         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14046         esac
14047         case "$gmtime_r_proto" in
14048         ''|0)   d_gmtime_r=undef
14049                 gmtime_r_proto=0
14050                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14051         * )     case "$gmtime_r_proto" in
14052                 REENTRANT_PROTO*) ;;
14053                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14054                 esac
14055                 echo "Prototype: $try" ;;
14056         esac
14057         ;;
14058         *)      case "$usethreads" in
14059                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14060                 esac
14061                 d_gmtime_r=undef
14062                 gmtime_r_proto=0
14063                 ;;
14064         esac
14065         ;;
14066 *)      gmtime_r_proto=0
14067         ;;
14068 esac
14069
14070 : see if hasmntopt exists
14071 set hasmntopt d_hasmntopt
14072 eval $inlibc
14073
14074 : see if this is a netinet/in.h or sys/in.h system
14075 set netinet/in.h i_niin sys/in.h i_sysin
14076 eval $inhdr
14077
14078 : see if arpa/inet.h has to be included
14079 set arpa/inet.h i_arpainet
14080 eval $inhdr
14081
14082 : see if htonl --and friends-- exists
14083 val=''
14084 set htonl val
14085 eval $inlibc
14086
14087 : Maybe they are macros.
14088 case "$val" in
14089 $undef)
14090         $cat >htonl.c <<EOM
14091 #include <stdio.h>
14092 #include <sys/types.h>
14093 #$i_niin I_NETINET_IN
14094 #$i_sysin I_SYS_IN
14095 #$i_arpainet I_ARPA_INET
14096 #ifdef I_NETINET_IN
14097 #include <netinet/in.h>
14098 #endif
14099 #ifdef I_SYS_IN
14100 #include <sys/in.h>
14101 #endif
14102 #ifdef I_ARPA_INET
14103 #include <arpa/inet.h>
14104 #endif
14105 #ifdef htonl
14106 printf("Defined as a macro.");
14107 #endif
14108 EOM
14109         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14110         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14111                 val="$define"
14112                 echo "But it seems to be defined as a macro." >&4
14113         fi
14114         $rm -f htonl.?
14115         ;;
14116 esac
14117 set d_htonl
14118 eval $setvar
14119
14120 : see if ilogbl exists
14121 set ilogbl d_ilogbl
14122 eval $inlibc
14123
14124 : index or strchr
14125 echo " "
14126 if set index val -f; eval $csym; $val; then
14127         if set strchr val -f d_strchr; eval $csym; $val; then
14128                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14129                         val="$define"
14130                         vali="$undef"
14131                         echo "strchr() found." >&4
14132                 else
14133                         val="$undef"
14134                         vali="$define"
14135                         echo "index() found." >&4
14136                 fi
14137         else
14138                 val="$undef"
14139                 vali="$define"
14140                 echo "index() found." >&4
14141         fi
14142 else
14143         if set strchr val -f d_strchr; eval $csym; $val; then
14144                 val="$define"
14145                 vali="$undef"
14146                 echo "strchr() found." >&4
14147         else
14148                 echo "No index() or strchr() found!" >&4
14149                 val="$undef"
14150                 vali="$undef"
14151         fi
14152 fi
14153 set d_strchr; eval $setvar
14154 val="$vali"
14155 set d_index; eval $setvar
14156
14157 : check whether inet_aton exists
14158 set inet_aton d_inetaton
14159 eval $inlibc
14160
14161 : Look for isascii
14162 echo " "
14163 $cat >isascii.c <<EOCP
14164 #include <stdio.h>
14165 #include <ctype.h>
14166 #$i_stdlib I_STDLIB
14167 #ifdef I_STDLIB
14168 #include <stdlib.h>
14169 #endif
14170 int main() {
14171         int c = 'A';
14172         if (isascii(c))
14173                 exit(0);
14174         else
14175                 exit(1);
14176 }
14177 EOCP
14178 set isascii
14179 if eval $compile; then
14180         echo "isascii() found." >&4
14181         val="$define"
14182 else
14183         echo "isascii() NOT found." >&4
14184         val="$undef"
14185 fi
14186 set d_isascii
14187 eval $setvar
14188 $rm -f isascii*
14189
14190 : see if isfinite exists
14191 set isfinite d_isfinite
14192 eval $inlibc
14193
14194 : see if isinf exists
14195 set isinf d_isinf
14196 eval $inlibc
14197
14198 : see if isnan exists
14199 set isnan d_isnan
14200 eval $inlibc
14201
14202 : see if isnanl exists
14203 set isnanl d_isnanl
14204 eval $inlibc
14205
14206 : see if killpg exists
14207 set killpg d_killpg
14208 eval $inlibc
14209
14210 : see if lchown exists
14211 echo " "
14212 $cat > try.c <<'EOCP'
14213 /* System header to define __stub macros and hopefully few prototypes,
14214     which can conflict with char lchown(); below.  */
14215 #include <assert.h>
14216 /* Override any gcc2 internal prototype to avoid an error.  */
14217 /* We use char because int might match the return type of a gcc2
14218    builtin and then its argument prototype would still apply.  */
14219 char lchown();
14220 int main() {
14221     /*  The GNU C library defines this for functions which it implements
14222         to always fail with ENOSYS.  Some functions are actually named
14223         something starting with __ and the normal name is an alias.  */
14224 #if defined (__stub_lchown) || defined (__stub___lchown)
14225 choke me
14226 #else
14227 lchown();
14228 #endif
14229 ; return 0; }
14230 EOCP
14231 set try
14232 if eval $compile; then
14233     $echo "lchown() found." >&4
14234     val="$define"
14235 else
14236     $echo "lchown() NOT found." >&4
14237     val="$undef"
14238 fi
14239 set d_lchown
14240 eval $setvar
14241
14242 : See if number of significant digits in a double precision number is known
14243 echo " "
14244 $cat >ldbl_dig.c <<EOM
14245 #$i_limits I_LIMITS
14246 #$i_float I_FLOAT
14247 #ifdef I_LIMITS
14248 #include <limits.h>
14249 #endif
14250 #ifdef I_FLOAT
14251 #include <float.h>
14252 #endif
14253 #ifdef LDBL_DIG
14254 printf("Contains LDBL_DIG");
14255 #endif
14256 EOM
14257 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14258 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14259         echo "LDBL_DIG found." >&4
14260         val="$define"
14261 else
14262         echo "LDBL_DIG NOT found." >&4
14263         val="$undef"
14264 fi
14265 $rm -f ldbl_dig.?
14266 set d_ldbl_dig
14267 eval $setvar
14268
14269 : see if this is a math.h system
14270 set math.h i_math
14271 eval $inhdr
14272
14273 d_libm_lib_version="$undef"
14274 case $i_math in
14275     $define)
14276         : check to see if math.h defines _LIB_VERSION
14277         echo " "
14278         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14279         $cat >try.c <<EOCP
14280 #include <unistd.h>
14281 #include <math.h>
14282 int main (int argc, char *argv[])
14283 {
14284     printf ("%d\n", _LIB_VERSION);
14285     return (0);
14286     } /* main */
14287 EOCP
14288         set try
14289         if eval $compile; then
14290             foo=`$run ./try`
14291             echo "Yes, it does ($foo)" >&4
14292             d_libm_lib_version="$define"
14293         else
14294             echo "No, it does not (probably harmless)\n" >&4
14295             fi
14296         $rm -f try.* try core core.try.*
14297         ;;
14298
14299     esac
14300
14301 : see if link exists
14302 set link d_link
14303 eval $inlibc
14304
14305 : see if localtime_r exists
14306 set localtime_r d_localtime_r
14307 eval $inlibc
14308 case "$d_localtime_r" in
14309 "$define")
14310         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14311         case "$d_localtime_r_proto:$usethreads" in
14312         ":define")      d_localtime_r_proto=define
14313                 set d_localtime_r_proto localtime_r $hdrs
14314                 eval $hasproto ;;
14315         *)      ;;
14316         esac
14317         case "$d_localtime_r_proto" in
14318         define)
14319         case "$localtime_r_proto" in
14320         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14321         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14322         esac
14323         case "$localtime_r_proto" in
14324         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14325         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14326         esac
14327         case "$localtime_r_proto" in
14328         ''|0)   d_localtime_r=undef
14329                 localtime_r_proto=0
14330                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14331         * )     case "$localtime_r_proto" in
14332                 REENTRANT_PROTO*) ;;
14333                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14334                 esac
14335                 echo "Prototype: $try" ;;
14336         esac
14337         ;;
14338         *)      case "$usethreads" in
14339                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14340                 esac
14341                 d_localtime_r=undef
14342                 localtime_r_proto=0
14343                 ;;
14344         esac
14345         ;;
14346 *)      localtime_r_proto=0
14347         ;;
14348 esac
14349
14350 : see if localeconv exists
14351 set localeconv d_locconv
14352 eval $inlibc
14353
14354 : see if lockf exists
14355 set lockf d_lockf
14356 eval $inlibc
14357
14358 : see if prototype for lseek is available
14359 echo " "
14360 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14361 eval $hasproto
14362
14363 : see if lstat exists
14364 set lstat d_lstat
14365 eval $inlibc
14366
14367 : see if madvise exists
14368 set madvise d_madvise
14369 eval $inlibc
14370
14371 : see if malloc_size exists
14372 set malloc_size d_malloc_size
14373 eval $inlibc
14374
14375 : see if malloc_size_good exists
14376 set malloc_good_size d_malloc_good_size
14377 eval $inlibc
14378
14379 : see if mblen exists
14380 set mblen d_mblen
14381 eval $inlibc
14382
14383 : see if mbstowcs exists
14384 set mbstowcs d_mbstowcs
14385 eval $inlibc
14386
14387 : see if mbtowc exists
14388 set mbtowc d_mbtowc
14389 eval $inlibc
14390
14391 : see if memchr exists
14392 set memchr d_memchr
14393 eval $inlibc
14394
14395 : see if memcmp exists
14396 set memcmp d_memcmp
14397 eval $inlibc
14398
14399 : see if memcpy exists
14400 set memcpy d_memcpy
14401 eval $inlibc
14402
14403 : see if memmove exists
14404 set memmove d_memmove
14405 eval $inlibc
14406
14407 : see if memset exists
14408 set memset d_memset
14409 eval $inlibc
14410
14411 : see if mkdir exists
14412 set mkdir d_mkdir
14413 eval $inlibc
14414
14415 : see if mkdtemp exists
14416 set mkdtemp d_mkdtemp
14417 eval $inlibc
14418
14419 : see if mkfifo exists
14420 set mkfifo d_mkfifo
14421 eval $inlibc
14422
14423 : see if mkstemp exists
14424 set mkstemp d_mkstemp
14425 eval $inlibc
14426
14427 : see if mkstemps exists
14428 set mkstemps d_mkstemps
14429 eval $inlibc
14430
14431 : see if mktime exists
14432 set mktime d_mktime
14433 eval $inlibc
14434
14435 : see if this is a sys/mman.h system
14436 set sys/mman.h i_sysmman
14437 eval $inhdr
14438
14439 : see if mmap exists
14440 set mmap d_mmap
14441 eval $inlibc
14442 : see what shmat returns
14443 : default to something harmless
14444 mmaptype='void *'
14445 case "$i_sysmman$d_mmap" in
14446 "$define$define")
14447         $cat >mmap.c <<'END'
14448 #include <sys/mman.h>
14449 void *mmap();
14450 END
14451         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14452                 mmaptype='void *'
14453         else
14454                 mmaptype='caddr_t'
14455         fi
14456         echo "and it returns ($mmaptype)." >&4
14457         ;;
14458 esac
14459
14460
14461
14462 : see if sqrtl exists
14463 set sqrtl d_sqrtl
14464 eval $inlibc
14465
14466 : see if scalbnl exists
14467 set scalbnl d_scalbnl
14468 eval $inlibc
14469
14470 : see if modfl exists
14471 set modfl d_modfl
14472 eval $inlibc
14473
14474 : see if prototype for modfl is available
14475 echo " "
14476 set d_modflproto modfl $i_math math.h
14477 eval $hasproto
14478
14479 d_modfl_pow32_bug="$undef"
14480
14481 case "$d_longdbl$d_modfl" in
14482 $define$define)
14483         $cat <<EOM
14484 Checking to see whether your modfl() is okay for large values...
14485 EOM
14486 $cat >try.c <<EOCP
14487 #include <math.h> 
14488 #include <stdio.h>
14489 EOCP
14490 if $test "X$d_modflproto" != "X$define"; then
14491         $cat >>try.c <<EOCP
14492 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14493 long double modfl (long double, long double *);
14494 EOCP
14495 fi
14496 $cat >>try.c <<EOCP
14497 int main() {
14498     long double nv = 4294967303.15;
14499     long double v, w;
14500     v = modfl(nv, &w);         
14501 #ifdef __GLIBC__
14502     printf("glibc");
14503 #endif
14504     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14505     return 0;
14506 }
14507 EOCP
14508         case "$osname:$gccversion" in
14509         aix:)   saveccflags="$ccflags"
14510                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14511         esac
14512         set try
14513         if eval $compile; then
14514                 foo=`$run ./try`
14515                 case "$foo" in
14516                 *" 4294967303.150000 1.150000 4294967302.000000")
14517                         echo >&4 "Your modfl() is broken for large values."
14518                         d_modfl_pow32_bug="$define"
14519                         case "$foo" in
14520                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14521                         ;;
14522                         esac
14523                         ;;
14524                 *" 4294967303.150000 0.150000 4294967303.000000")
14525                         echo >&4 "Your modfl() seems okay for large values."
14526                         ;;
14527                 *)      echo >&4 "I don't understand your modfl() at all."
14528                         d_modfl="$undef"
14529                         ;;
14530                 esac
14531                 $rm -f try.* try core core.try.*
14532         else
14533                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14534                 d_modfl="$undef"
14535         fi
14536         case "$osname:$gccversion" in
14537         aix:)   ccflags="$saveccflags" ;; # restore
14538         esac
14539         ;;
14540 esac
14541
14542 if $test "$uselongdouble" = "$define"; then
14543     message=""
14544     if $test "$d_sqrtl" != "$define"; then
14545         message="$message sqrtl"
14546     fi
14547     if $test "$d_modfl" != "$define"; then
14548         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14549             echo "You have both aintl and copysignl, so I can emulate modfl."
14550         else
14551             message="$message modfl"
14552         fi
14553     fi
14554     if $test "$d_frexpl" != "$define"; then
14555         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14556             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14557         else
14558             message="$message frexpl"
14559         fi
14560     fi
14561
14562     if $test "$message" != ""; then
14563         $cat <<EOM >&4
14564
14565 *** You requested the use of long doubles but you do not seem to have
14566 *** the following mathematical functions needed for long double support:
14567 ***    $message
14568 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14569 *** Cannot continue, aborting.
14570
14571 EOM
14572
14573         exit 1
14574     fi
14575 fi
14576
14577 : see if mprotect exists
14578 set mprotect d_mprotect
14579 eval $inlibc
14580
14581 : see if msgctl exists
14582 set msgctl d_msgctl
14583 eval $inlibc
14584
14585 : see if msgget exists
14586 set msgget d_msgget
14587 eval $inlibc
14588
14589 : see if msgsnd exists
14590 set msgsnd d_msgsnd
14591 eval $inlibc
14592
14593 : see if msgrcv exists
14594 set msgrcv d_msgrcv
14595 eval $inlibc
14596
14597 : see how much of the 'msg*(2)' library is present.
14598 h_msg=true
14599 echo " "
14600 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14601 *"$undef"*) h_msg=false;;
14602 esac
14603 case "$osname" in
14604 freebsd)
14605     case "`ipcs 2>&1`" in
14606     "SVID messages"*"not configured"*)
14607         echo "Your $osname does not have the msg*(2) configured." >&4
14608         h_msg=false
14609         val="$undef"
14610         set msgctl d_msgctl
14611         eval $setvar
14612         set msgget d_msgget
14613         eval $setvar
14614         set msgsnd d_msgsnd
14615         eval $setvar
14616         set msgrcv d_msgrcv
14617         eval $setvar
14618         ;;
14619     esac
14620     ;;
14621 esac
14622 : we could also check for sys/ipc.h ...
14623 if $h_msg && $test `./findhdr sys/msg.h`; then
14624         echo "You have the full msg*(2) library." >&4
14625         val="$define"
14626 else
14627         echo "You don't have the full msg*(2) library." >&4
14628         val="$undef"
14629 fi
14630 set d_msg
14631 eval $setvar
14632
14633
14634 echo " "
14635 echo "Checking to see if your system supports struct msghdr..." >&4
14636 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14637 eval $hasstruct
14638 case "$d_msghdr_s" in
14639 "$define")      echo "Yes, it does."   ;;
14640 *)              echo "No, it doesn't." ;;
14641 esac
14642
14643
14644 : see if msync exists
14645 set msync d_msync
14646 eval $inlibc
14647
14648 : see if munmap exists
14649 set munmap d_munmap
14650 eval $inlibc
14651
14652 : see if nice exists
14653 set nice d_nice
14654 eval $inlibc
14655
14656 : see if this is a langinfo.h system
14657 set langinfo.h i_langinfo
14658 eval $inhdr
14659
14660 : see if nl_langinfo exists
14661 set nl_langinfo d_nl_langinfo
14662 eval $inlibc
14663
14664 : check for length of character
14665 echo " "
14666 case "$charsize" in
14667 '')
14668         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14669         $cat >try.c <<EOCP
14670 #include <stdio.h>
14671 #$i_stdlib I_STDLIB
14672 #ifdef I_STDLIB
14673 #include <stdlib.h>
14674 #endif
14675 int main()
14676 {
14677     printf("%d\n", (int)sizeof(char));
14678     exit(0);
14679 }
14680 EOCP
14681         set try
14682         if eval $compile_ok; then
14683                 dflt=`$run ./try`
14684         else
14685                 dflt='1'
14686                 echo "(I can't seem to compile the test program.  Guessing...)"
14687         fi
14688         ;;
14689 *)
14690         dflt="$charsize"
14691         ;;
14692 esac
14693 rp="What is the size of a character (in bytes)?"
14694 . ./myread
14695 charsize="$ans"
14696 $rm -f try.c try
14697
14698 : check for volatile keyword
14699 echo " "
14700 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14701 $cat >try.c <<'EOCP'
14702 int main()
14703 {
14704         typedef struct _goo_struct goo_struct;
14705         goo_struct * volatile goo = ((goo_struct *)0);
14706         struct _goo_struct {
14707                 long long_int;
14708                 int reg_int;
14709                 char char_var;
14710         };
14711         typedef unsigned short foo_t;
14712         char *volatile foo;
14713         volatile int bar;
14714         volatile foo_t blech;
14715         foo = foo;
14716 }
14717 EOCP
14718 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14719         val="$define"
14720         echo "Yup, it does."
14721 else
14722         val="$undef"
14723         echo "Nope, it doesn't."
14724 fi
14725 set d_volatile
14726 eval $setvar
14727 $rm -f try.*
14728
14729
14730 echo " "
14731 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14732
14733 case "$use64bitint:$d_quad:$quadtype" in
14734 define:define:?*)
14735         ivtype="$quadtype"
14736         uvtype="$uquadtype"
14737         ivsize=8
14738         uvsize=8
14739         ;;
14740 *)      ivtype="long"
14741         uvtype="unsigned long"
14742         ivsize=$longsize
14743         uvsize=$longsize
14744         ;;
14745 esac
14746
14747 case "$uselongdouble:$d_longdbl" in
14748 define:define)
14749         nvtype="long double"
14750         nvsize=$longdblsize
14751         ;;
14752 *)      nvtype=double
14753         nvsize=$doublesize
14754         ;;
14755 esac
14756
14757 $echo "(IV will be "$ivtype", $ivsize bytes)"
14758 $echo "(UV will be "$uvtype", $uvsize bytes)"
14759 $echo "(NV will be "$nvtype", $nvsize bytes)"
14760
14761 $cat >try.c <<EOCP
14762 #$i_inttypes I_INTTYPES
14763 #ifdef I_INTTYPES
14764 #include <inttypes.h>
14765 #endif
14766 #include <stdio.h>
14767 int main() {
14768 #ifdef INT8
14769    int8_t i =  INT8_MAX;
14770   uint8_t u = UINT8_MAX;
14771   printf("int8_t\n");
14772 #endif
14773 #ifdef INT16
14774    int16_t i =  INT16_MAX;
14775   uint16_t i = UINT16_MAX;
14776   printf("int16_t\n");
14777 #endif
14778 #ifdef INT32
14779    int32_t i =  INT32_MAX;
14780   uint32_t u = UINT32_MAX;
14781   printf("int32_t\n");
14782 #endif
14783 }
14784 EOCP
14785
14786 case "$i8type" in
14787 '')     case "$charsize" in
14788         1)      i8type=char
14789                 u8type="unsigned char"
14790                 i8size=$charsize
14791                 u8size=$charsize
14792                 ;;
14793         esac
14794         ;;
14795 esac
14796 case "$i8type" in
14797 '')     set try -DINT8
14798         if eval $compile; then
14799                 case "`$run ./try`" in
14800                 int8_t) i8type=int8_t
14801                         u8type=uint8_t
14802                         i8size=1
14803                         u8size=1
14804                         ;;
14805                 esac
14806         fi
14807         ;;
14808 esac
14809 case "$i8type" in
14810 '')     if $test $charsize -ge 1; then
14811                 i8type=char
14812                 u8type="unsigned char"
14813                 i8size=$charsize
14814                 u8size=$charsize
14815         fi
14816         ;;
14817 esac
14818
14819 case "$i16type" in
14820 '')     case "$shortsize" in
14821         2)      i16type=short
14822                 u16type="unsigned short"
14823                 i16size=$shortsize
14824                 u16size=$shortsize
14825                 ;;
14826         esac
14827         ;;
14828 esac
14829 case "$i16type" in
14830 '')     set try -DINT16
14831         if eval $compile; then
14832                 case "`$run ./try`" in
14833                 int16_t)
14834                         i16type=int16_t
14835                         u16type=uint16_t
14836                         i16size=2
14837                         u16size=2
14838                         ;;
14839                 esac
14840         fi
14841         ;;
14842 esac
14843 case "$i16type" in
14844 '')     if $test $shortsize -ge 2; then
14845                 i16type=short
14846                 u16type="unsigned short"
14847                 i16size=$shortsize
14848                 u16size=$shortsize
14849         fi
14850         ;;
14851 esac
14852
14853 case "$i32type" in
14854 '')     case "$longsize" in
14855         4)      i32type=long
14856                 u32type="unsigned long"
14857                 i32size=$longsize
14858                 u32size=$longsize
14859                 ;;
14860         *)      case "$intsize" in
14861                 4)      i32type=int
14862                         u32type="unsigned int"
14863                         i32size=$intsize
14864                         u32size=$intsize
14865                         ;;
14866                 esac
14867                 ;;
14868         esac
14869         ;;
14870 esac
14871 case "$i32type" in
14872 '')     set try -DINT32
14873         if eval $compile; then
14874                 case "`$run ./try`" in
14875                 int32_t)
14876                         i32type=int32_t
14877                         u32type=uint32_t
14878                         i32size=4
14879                         u32size=4
14880                         ;;
14881                 esac
14882         fi
14883         ;;
14884 esac
14885 case "$i32type" in
14886 '')     if $test $intsize -ge 4; then
14887                 i32type=int
14888                 u32type="unsigned int"
14889                 i32size=$intsize
14890                 u32size=$intsize
14891         fi
14892         ;;
14893 esac
14894
14895 case "$i64type" in
14896 '')     case "$d_quad:$quadtype" in
14897         define:?*)
14898                 i64type="$quadtype"
14899                 u64type="$uquadtype"
14900                 i64size=8
14901                 u64size=8
14902                 ;;
14903         esac
14904         ;;
14905 esac
14906
14907 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14908 : volatile so that the compiler has to store it out to memory.
14909 if test X"$d_volatile" = X"$define"; then
14910         volatile=volatile
14911 fi
14912 $cat <<EOP >try.c
14913 #include <stdio.h>
14914 #$i_stdlib I_STDLIB
14915 #ifdef I_STDLIB
14916 #include <stdlib.h>
14917 #endif
14918 #include <sys/types.h>
14919 #include <signal.h>
14920 #ifdef SIGFPE
14921 $volatile int bletched = 0;
14922 $signal_t blech(s) int s; { bletched = 1; }
14923 #endif
14924 int main() {
14925     $uvtype u = 0;
14926     $nvtype d;
14927     int     n = 8 * $uvsize;
14928     int     i;
14929 #ifdef SIGFPE
14930     signal(SIGFPE, blech);
14931 #endif
14932
14933     for (i = 0; i < n; i++) {
14934       u = u << 1 | ($uvtype)1;
14935       d = ($nvtype)u;
14936       if (($uvtype)d != u)
14937         break;
14938       if (d <= 0)
14939         break;
14940       d = ($nvtype)(u - 1);
14941       if (($uvtype)d != (u - 1))
14942         break;
14943 #ifdef SIGFPE
14944       if (bletched) {
14945         break;
14946 #endif
14947       } 
14948     }
14949     printf("%d\n", ((i == n) ? -n : i));
14950     exit(0);
14951 }
14952 EOP
14953 set try
14954
14955 d_nv_preserves_uv="$undef"
14956 if eval $compile; then
14957         nv_preserves_uv_bits="`$run ./try`"
14958 fi
14959 case "$nv_preserves_uv_bits" in
14960 \-[1-9]*)       
14961         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14962         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14963         d_nv_preserves_uv="$define"
14964         ;;
14965 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14966         d_nv_preserves_uv="$undef" ;;
14967 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14968         nv_preserves_uv_bits="$undef" ;;
14969 esac
14970
14971 $rm -f try.* try
14972
14973 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
14974 : volatile so that the compiler has to store it out to memory.
14975 if test X"$d_volatile" = X"$define"; then
14976         volatile=volatile
14977 fi
14978 $cat <<EOP >try.c
14979 #include <stdio.h>
14980 #$i_stdlib I_STDLIB
14981 #ifdef I_STDLIB
14982 #include <stdlib.h>
14983 #endif
14984 #$i_string I_STRING
14985 #ifdef I_STRING
14986 #  include <string.h>
14987 #else
14988 #  include <strings.h>
14989 #endif
14990 #include <sys/types.h>
14991 #include <signal.h>
14992 #ifdef SIGFPE
14993 $volatile int bletched = 0;
14994 $signal_t blech(s) int s; { bletched = 1; }
14995 #endif
14996
14997 int checkit($nvtype d, char *where) {
14998     unsigned char *p = (char *)&d;
14999     unsigned char *end = p + sizeof(d);
15000     int fail = 0;
15001
15002     while (p < end)
15003         fail += *p++;
15004
15005     if (!fail)
15006         return 0;
15007
15008     p = (char *)&d;
15009     printf("No - %s: 0x", where);
15010     while (p < end)
15011         printf ("%02X", *p++);
15012     printf("\n");
15013     return 1;
15014 }
15015
15016 int main(int argc, char **argv) {
15017     $nvtype d = 0.0;
15018     int fail = 0;
15019     fail += checkit(d, "0.0");
15020
15021     /* The compiler shouldn't be assuming that bletched is 0  */
15022     d = bletched;
15023
15024     fail += checkit(d, "bleched");
15025
15026 #ifdef SIGFPE
15027     signal(SIGFPE, blech);
15028 #endif
15029
15030     /* Paranoia - the compiler should have no way of knowing that ANSI says
15031        that argv[argc] will always be NULL.  Actually, if it did assume this it
15032        would be buggy, as this is C and main() can be called from elsewhere in
15033        the program.  */
15034     d = argv[argc] ? 1 : 0;
15035
15036     if (d) {
15037         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15038     }
15039
15040     fail += checkit(d, "ternary");
15041
15042     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15043
15044     if (d != 0.0) {
15045         printf("No - memset doesn't give 0.0\n");
15046         /* This might just blow up:  */
15047         printf("(gives %g)\n", d);
15048         return 1;
15049     }
15050     
15051 #ifdef SIGFPE
15052     if (bletched) {
15053         printf("No - something bleched\n");
15054         return 1;
15055     }
15056 #endif
15057     if (fail) {
15058       printf("No - %d fail(s)\n", fail);
15059       return 1;
15060     }
15061     printf("Yes\n");
15062     return 0;
15063 }
15064 EOP
15065 set try
15066
15067 d_nv_zero_is_allbits_zero="$undef"
15068 if eval $compile; then
15069     xxx="`$run ./try`"
15070     case "$?" in
15071         0)
15072             case "$xxx" in
15073                 Yes)  cat >&4 <<EOM
15074 0.0 is represented as all bits zero in memory
15075 EOM
15076                     d_nv_zero_is_allbits_zero="$define"
15077                     ;;
15078                 *)  cat >&4 <<EOM
15079 0.0 is not represented as all bits zero in memory
15080 EOM
15081                     d_nv_zero_is_allbits_zero="$undef"
15082                     ;;
15083             esac
15084             ;;
15085         *)  cat >&4 <<EOM
15086 0.0 is not represented as all bits zero in memory
15087 EOM
15088             d_nv_zero_is_allbits_zero="$undef"
15089             ;;
15090     esac
15091 fi
15092
15093 $rm -f try.* try
15094
15095
15096 : check for off64_t
15097 echo " "
15098 echo "Checking to see if you have off64_t..." >&4
15099 $cat >try.c <<EOCP
15100 #include <sys/types.h>
15101 #include <unistd.h>
15102 int main() { off64_t x = 7; }
15103 EOCP
15104 set try
15105 if eval $compile; then
15106         val="$define"
15107         echo "You have off64_t."
15108 else
15109         val="$undef"
15110         echo "You do not have off64_t."
15111         case "$lseeksize" in
15112         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15113         esac
15114 fi
15115 $rm -f try.* try
15116 set d_off64_t
15117 eval $setvar
15118
15119 : how to create joinable pthreads
15120 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15121         echo " "
15122         echo "Checking what constant to use for creating joinable pthreads..." >&4 
15123         $cat >try.c <<'EOCP'
15124 #include <pthread.h>
15125 int main() {
15126     int detachstate = JOINABLE;
15127 }
15128 EOCP
15129         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15130         if eval $compile; then
15131                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15132                 val="$undef" # Yes, undef.
15133                 set d_old_pthread_create_joinable
15134                 eval $setvar
15135                 val=""
15136                 set old_pthread_create_joinable
15137                 eval $setvar
15138         else
15139                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15140                 if eval $compile; then
15141                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15142                         val="$define"
15143                         set d_old_pthread_create_joinable
15144                         eval $setvar
15145                         val=PTHREAD_CREATE_UNDETACHED
15146                         set old_pthread_create_joinable
15147                         eval $setvar
15148                 else            
15149                         set try -DJOINABLE=__UNDETACHED
15150                         if eval $compile; then
15151                                 echo "You seem to use __UNDETACHED." >&4
15152                                 val="$define"
15153                                 set d_old_pthread_create_joinable
15154                                 eval $setvar
15155                                 val=__UNDETACHED
15156                                 set old_pthread_create_joinable
15157                                 eval $setvar
15158                         else
15159                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15160                                 val="$define"
15161                                 set d_old_pthread_create_joinable
15162                                 eval $setvar
15163                                 val=0
15164                                 set old_pthread_create_joinable
15165                                 eval $setvar
15166                         fi
15167                 fi
15168         fi
15169         $rm -f try try.*
15170 else
15171     d_old_pthread_create_joinable="$undef"
15172     old_pthread_create_joinable=""
15173 fi
15174
15175 : see if pause exists
15176 set pause d_pause
15177 eval $inlibc
15178
15179 : see if pipe exists
15180 set pipe d_pipe
15181 eval $inlibc
15182
15183 : see if poll exists
15184 set poll d_poll
15185 eval $inlibc
15186
15187 : see if readlink exists
15188 set readlink d_readlink
15189 eval $inlibc
15190
15191 echo " "
15192 procselfexe=''
15193 val="$undef"
15194 case "$d_readlink" in
15195 "$define")
15196         if $issymlink /proc/self/exe ; then
15197                 $ls -l /proc/self/exe > reflect
15198                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15199                         echo "You have Linux-like /proc/self/exe."
15200                         procselfexe='"/proc/self/exe"'
15201                         val="$define"
15202                 fi
15203         fi
15204         if $issymlink /proc/curproc/file ; then
15205                 $ls -l /proc/curproc/file > reflect
15206                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15207                         echo "You have BSD-like /proc/curproc/file."
15208                         procselfexe='"/proc/curproc/file"'
15209                         val="$define"
15210                 fi
15211         fi
15212         ;;
15213 esac
15214 $rm -f reflect
15215 set d_procselfexe
15216 eval $setvar
15217
15218 : see whether the pthread_atfork exists
15219 $cat >try.c <<EOP
15220 #include <pthread.h>
15221 #include <stdio.h>
15222 int main() {
15223 #ifdef  PTHREAD_ATFORK
15224         pthread_atfork(NULL,NULL,NULL);
15225 #endif
15226 }
15227 EOP
15228
15229 : see if pthread_atfork exists
15230 set try -DPTHREAD_ATFORK
15231 if eval $compile; then
15232     val="$define"
15233 else
15234     val="$undef"
15235 fi
15236 case "$usethreads" in
15237 $define)
15238         case "$val" in
15239         $define) echo 'pthread_atfork found.' >&4        ;;
15240         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15241         esac
15242 esac
15243 set d_pthread_atfork
15244 eval $setvar
15245
15246 : see if pthread_attr_setscope exists
15247 set pthread_attr_setscope d_pthread_attr_setscope
15248 eval $inlibc
15249
15250
15251 : see whether the various POSIXish _yields exist
15252 $cat >try.c <<EOP
15253 #include <pthread.h>
15254 #include <stdio.h>
15255 int main() {
15256 #ifdef SCHED_YIELD
15257         sched_yield();
15258 #else
15259 #ifdef PTHREAD_YIELD
15260         pthread_yield();
15261 #else
15262 #ifdef PTHREAD_YIELD_NULL
15263         pthread_yield(NULL);
15264 #endif
15265 #endif
15266 #endif
15267 }
15268 EOP
15269 : see if sched_yield exists
15270 set try -DSCHED_YIELD
15271 if eval $compile; then
15272     val="$define"
15273     sched_yield='sched_yield()'
15274 else
15275     val="$undef"
15276 fi
15277 case "$usethreads" in
15278 $define)
15279         case "$val" in
15280         $define) echo 'sched_yield() found.' >&4        ;;
15281         *)       echo 'sched_yield() NOT found.' >&4    ;;
15282         esac
15283 esac
15284 set d_sched_yield
15285 eval $setvar
15286
15287 : see if pthread_yield exists
15288 set try -DPTHREAD_YIELD
15289 if eval $compile; then
15290     val="$define"
15291     case "$sched_yield" in
15292     '') sched_yield='pthread_yield()' ;;
15293     esac
15294 else
15295     set try -DPTHREAD_YIELD_NULL
15296     if eval $compile; then
15297         val="$define"
15298         case "$sched_yield" in
15299         '') sched_yield='pthread_yield(NULL)' ;;
15300         esac
15301     else
15302         val="$undef"
15303     fi
15304 fi
15305 case "$usethreads" in
15306 $define)
15307         case "$val" in
15308         $define) echo 'pthread_yield() found.' >&4      ;;
15309         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15310         esac
15311         ;;
15312 esac
15313 set d_pthread_yield
15314 eval $setvar
15315
15316 case "$sched_yield" in
15317 '') sched_yield=undef ;;
15318 esac
15319
15320 $rm -f try try.*
15321
15322 : see if random_r exists
15323 set random_r d_random_r
15324 eval $inlibc
15325 case "$d_random_r" in
15326 "$define")
15327         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15328         case "$d_random_r_proto:$usethreads" in
15329         ":define")      d_random_r_proto=define
15330                 set d_random_r_proto random_r $hdrs
15331                 eval $hasproto ;;
15332         *)      ;;
15333         esac
15334         case "$d_random_r_proto" in
15335         define)
15336         case "$random_r_proto" in
15337         ''|0) try='int random_r(int*, struct random_data*);'
15338         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15339         esac
15340         case "$random_r_proto" in
15341         ''|0) try='int random_r(long*, struct random_data*);'
15342         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15343         esac
15344         case "$random_r_proto" in
15345         ''|0) try='int random_r(struct random_data*, int32_t*);'
15346         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15347         esac
15348         case "$random_r_proto" in
15349         ''|0)   d_random_r=undef
15350                 random_r_proto=0
15351                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15352         * )     case "$random_r_proto" in
15353                 REENTRANT_PROTO*) ;;
15354                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15355                 esac
15356                 echo "Prototype: $try" ;;
15357         esac
15358         ;;
15359         *)      case "$usethreads" in
15360                 define) echo "random_r has no prototype, not using it." >&4 ;;
15361                 esac
15362                 d_random_r=undef
15363                 random_r_proto=0
15364                 ;;
15365         esac
15366         ;;
15367 *)      random_r_proto=0
15368         ;;
15369 esac
15370
15371 : see if readdir and friends exist
15372 set readdir d_readdir
15373 eval $inlibc
15374 set seekdir d_seekdir
15375 eval $inlibc
15376 set telldir d_telldir
15377 eval $inlibc
15378 set rewinddir d_rewinddir
15379 eval $inlibc
15380
15381 : see if readdir64_r exists
15382 set readdir64_r d_readdir64_r
15383 eval $inlibc
15384 case "$d_readdir64_r" in
15385 "$define")
15386         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15387         case "$d_readdir64_r_proto:$usethreads" in
15388         ":define")      d_readdir64_r_proto=define
15389                 set d_readdir64_r_proto readdir64_r $hdrs
15390                 eval $hasproto ;;
15391         *)      ;;
15392         esac
15393         case "$d_readdir64_r_proto" in
15394         define)
15395         case "$readdir64_r_proto" in
15396         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15397         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15398         esac
15399         case "$readdir64_r_proto" in
15400         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15401         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15402         esac
15403         case "$readdir64_r_proto" in
15404         ''|0)   d_readdir64_r=undef
15405                 readdir64_r_proto=0
15406                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15407         * )     case "$readdir64_r_proto" in
15408                 REENTRANT_PROTO*) ;;
15409                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15410                 esac
15411                 echo "Prototype: $try" ;;
15412         esac
15413         ;;
15414         *)      case "$usethreads" in
15415                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15416                 esac
15417                 d_readdir64_r=undef
15418                 readdir64_r_proto=0
15419                 ;;
15420         esac
15421         ;;
15422 *)      readdir64_r_proto=0
15423         ;;
15424 esac
15425
15426 : see if readdir_r exists
15427 set readdir_r d_readdir_r
15428 eval $inlibc
15429 case "$d_readdir_r" in
15430 "$define")
15431         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15432         case "$d_readdir_r_proto:$usethreads" in
15433         ":define")      d_readdir_r_proto=define
15434                 set d_readdir_r_proto readdir_r $hdrs
15435                 eval $hasproto ;;
15436         *)      ;;
15437         esac
15438         case "$d_readdir_r_proto" in
15439         define)
15440         case "$readdir_r_proto" in
15441         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15442         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15443         esac
15444         case "$readdir_r_proto" in
15445         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15446         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15447         esac
15448         case "$readdir_r_proto" in
15449         ''|0)   d_readdir_r=undef
15450                 readdir_r_proto=0
15451                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15452         * )     case "$readdir_r_proto" in
15453                 REENTRANT_PROTO*) ;;
15454                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15455                 esac
15456                 echo "Prototype: $try" ;;
15457         esac
15458         ;;
15459         *)      case "$usethreads" in
15460                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15461                 esac
15462                 d_readdir_r=undef
15463                 readdir_r_proto=0
15464                 ;;
15465         esac
15466         ;;
15467 *)      readdir_r_proto=0
15468         ;;
15469 esac
15470
15471 : see if readv exists
15472 set readv d_readv
15473 eval $inlibc
15474
15475 : see if recvmsg exists
15476 set recvmsg d_recvmsg
15477 eval $inlibc
15478
15479 : see if rename exists
15480 set rename d_rename
15481 eval $inlibc
15482
15483 : see if rmdir exists
15484 set rmdir d_rmdir
15485 eval $inlibc
15486
15487 : see if memory.h is available.
15488 val=''
15489 set memory.h val
15490 eval $inhdr
15491
15492 : See if it conflicts with string.h
15493 case "$val" in
15494 $define)
15495         case "$strings" in
15496         '') ;;
15497         *)
15498                 $cppstdin $cppflags $cppminus < $strings > mem.h
15499                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15500                         echo " "
15501                         echo "We won't be including <memory.h>."
15502                         val="$undef"
15503                 fi
15504                 $rm -f mem.h
15505                 ;;
15506         esac
15507 esac
15508 set i_memory
15509 eval $setvar
15510
15511 : can bcopy handle overlapping blocks?
15512 echo " "
15513 val="$undef"
15514 case "$d_memmove" in
15515 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15516 *)      case "$d_bcopy" in
15517         "$define")
15518                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15519                 $cat >try.c <<EOCP
15520 #$i_memory I_MEMORY
15521 #$i_stdlib I_STDLIB
15522 #$i_string I_STRING
15523 #$i_unistd I_UNISTD
15524 EOCP
15525         $cat >>try.c <<'EOCP'
15526 #include <stdio.h>
15527 #ifdef I_MEMORY
15528 #  include <memory.h>
15529 #endif
15530 #ifdef I_STDLIB
15531 #  include <stdlib.h>
15532 #endif
15533 #ifdef I_STRING
15534 #  include <string.h>
15535 #else
15536 #  include <strings.h>
15537 #endif
15538 #ifdef I_UNISTD
15539 #  include <unistd.h>  /* Needed for NetBSD */
15540 #endif
15541 int main()
15542 {
15543 char buf[128], abc[128];
15544 char *b;
15545 int len;
15546 int off;
15547 int align;
15548
15549 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15550    try to store the string in read-only memory. */
15551 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15552
15553 for (align = 7; align >= 0; align--) {
15554         for (len = 36; len; len--) {
15555                 b = buf+align;
15556                 bcopy(abc, b, len);
15557                 for (off = 1; off <= len; off++) {
15558                         bcopy(b, b+off, len);
15559                         bcopy(b+off, b, len);
15560                         if (bcmp(b, abc, len))
15561                                 exit(1);
15562                 }
15563         }
15564 }
15565 exit(0);
15566 }
15567 EOCP
15568                 set try
15569                 if eval $compile_ok; then
15570                         if ./try 2>/dev/null; then
15571                                 echo "Yes, it can."
15572                                 val="$define"
15573                         else
15574                                 echo "It can't, sorry."
15575                         fi
15576                 else
15577                         echo "(I can't compile the test program, so we'll assume not...)"
15578                 fi
15579                 ;;
15580         esac
15581         $rm -f try.* try core
15582         ;;
15583 esac
15584 set d_safebcpy
15585 eval $setvar
15586
15587 : can memcpy handle overlapping blocks?
15588 echo " "
15589 val="$undef"
15590 case "$d_memmove" in
15591 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15592 *)      case "$d_memcpy" in
15593         "$define")
15594                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15595                 $cat >try.c <<EOCP
15596 #$i_memory I_MEMORY
15597 #$i_stdlib I_STDLIB
15598 #$i_string I_STRING
15599 #$i_unistd I_UNISTD
15600 EOCP
15601         $cat >>try.c <<'EOCP'
15602 #include <stdio.h>
15603 #ifdef I_MEMORY
15604 #  include <memory.h>
15605 #endif
15606 #ifdef I_STDLIB
15607 #  include <stdlib.h>
15608 #endif
15609 #ifdef I_STRING
15610 #  include <string.h>
15611 #else
15612 #  include <strings.h>
15613 #endif
15614 #ifdef I_UNISTD
15615 #  include <unistd.h>  /* Needed for NetBSD */
15616 #endif
15617 int main()
15618 {
15619 char buf[128], abc[128];
15620 char *b;
15621 int len;
15622 int off;
15623 int align;
15624
15625 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15626    try to store the string in read-only memory. */
15627 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15628
15629 for (align = 7; align >= 0; align--) {
15630         for (len = 36; len; len--) {
15631                 b = buf+align;
15632                 memcpy(b, abc, len);
15633                 for (off = 1; off <= len; off++) {
15634                         memcpy(b+off, b, len);
15635                         memcpy(b, b+off, len);
15636                         if (memcmp(b, abc, len))
15637                                 exit(1);
15638                 }
15639         }
15640 }
15641 exit(0);
15642 }
15643 EOCP
15644                 set try
15645                 if eval $compile_ok; then
15646                         if ./try 2>/dev/null; then
15647                                 echo "Yes, it can."
15648                                 val="$define"
15649                         else
15650                                 echo "It can't, sorry."
15651                         fi
15652                 else
15653                         echo "(I can't compile the test program, so we'll assume not...)"
15654                 fi
15655                 ;;
15656         esac
15657         $rm -f try.* try core
15658         ;;
15659 esac
15660 set d_safemcpy
15661 eval $setvar
15662
15663 : can memcmp be trusted to compare relative magnitude?
15664 val="$undef"
15665 case "$d_memcmp" in
15666 "$define")
15667         echo " "
15668         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15669         $cat >try.c <<EOCP
15670 #$i_memory I_MEMORY
15671 #$i_stdlib I_STDLIB
15672 #$i_string I_STRING
15673 #$i_unistd I_UNISTD
15674 EOCP
15675         $cat >>try.c <<'EOCP'
15676 #include <stdio.h>
15677 #ifdef I_MEMORY
15678 #  include <memory.h>
15679 #endif
15680 #ifdef I_STDLIB
15681 #  include <stdlib.h>
15682 #endif
15683 #ifdef I_STRING
15684 #  include <string.h>
15685 #else
15686 #  include <strings.h>
15687 #endif
15688 #ifdef I_UNISTD
15689 #  include <unistd.h>  /* Needed for NetBSD */
15690 #endif
15691 int main()
15692 {
15693 char a = -1;
15694 char b = 0;
15695 if ((a < b) && memcmp(&a, &b, 1) < 0)
15696         exit(1);
15697 exit(0);
15698 }
15699 EOCP
15700         set try
15701         if eval $compile_ok; then
15702                 if $run ./try 2>/dev/null; then
15703                         echo "Yes, it can."
15704                         val="$define"
15705                 else
15706                         echo "No, it can't (it uses signed chars)."
15707                 fi
15708         else
15709                 echo "(I can't compile the test program, so we'll assume not...)"
15710         fi
15711         ;;
15712 esac
15713 $rm -f try.* try core
15714 set d_sanemcmp
15715 eval $setvar
15716
15717 : see if prototype for sbrk is available
15718 echo " "
15719 set d_sbrkproto sbrk $i_unistd unistd.h
15720 eval $hasproto
15721
15722 : see if select exists
15723 set select d_select
15724 eval $inlibc
15725
15726 : see if semctl exists
15727 set semctl d_semctl
15728 eval $inlibc
15729
15730 : see if semget exists
15731 set semget d_semget
15732 eval $inlibc
15733
15734 : see if semop exists
15735 set semop d_semop
15736 eval $inlibc
15737
15738 : see how much of the 'sem*(2)' library is present.
15739 h_sem=true
15740 echo " "
15741 case "$d_semctl$d_semget$d_semop" in
15742 *"$undef"*) h_sem=false;;
15743 esac
15744 case "$osname" in
15745 freebsd)
15746     case "`ipcs 2>&1`" in
15747     "SVID messages"*"not configured"*)
15748         echo "Your $osname does not have the sem*(2) configured." >&4
15749         h_sem=false
15750         val="$undef"
15751         set semctl d_semctl
15752         eval $setvar
15753         set semget d_semget
15754         eval $setvar
15755         set semop d_semop
15756         eval $setvar
15757         ;;
15758     esac
15759     ;;
15760 esac
15761 : we could also check for sys/ipc.h ...
15762 if $h_sem && $test `./findhdr sys/sem.h`; then
15763         echo "You have the full sem*(2) library." >&4
15764         val="$define"
15765 else
15766         echo "You don't have the full sem*(2) library." >&4
15767         val="$undef"
15768 fi
15769 set d_sem
15770 eval $setvar
15771
15772 : see whether sys/sem.h defines union semun
15773 echo " "
15774 $cat > try.c <<'END'
15775 #include <sys/types.h>
15776 #include <sys/ipc.h>
15777 #include <sys/sem.h>
15778 int main () { union semun semun; semun.buf = 0; }
15779 END
15780 set try
15781 if eval $compile; then
15782     echo "You have union semun in <sys/sem.h>." >&4
15783     val="$define"
15784 else
15785     echo "You do not have union semun in <sys/sem.h>." >&4
15786     val="$undef"
15787 fi
15788 $rm -f try try.c
15789 set d_union_semun
15790 eval $setvar
15791
15792 : see how to do semctl IPC_STAT
15793 case "$d_sem" in
15794 $define)
15795     echo " "
15796     $cat > try.h <<END
15797 #ifndef S_IRUSR
15798 #   ifdef S_IREAD
15799 #       define S_IRUSR S_IREAD
15800 #       define S_IWUSR S_IWRITE
15801 #       define S_IXUSR S_IEXEC
15802 #   else
15803 #       define S_IRUSR 0400
15804 #       define S_IWUSR 0200
15805 #       define S_IXUSR 0100
15806 #   endif
15807 #   define S_IRGRP (S_IRUSR>>3)
15808 #   define S_IWGRP (S_IWUSR>>3)
15809 #   define S_IXGRP (S_IXUSR>>3)
15810 #   define S_IROTH (S_IRUSR>>6)
15811 #   define S_IWOTH (S_IWUSR>>6)
15812 #   define S_IXOTH (S_IXUSR>>6)
15813 #endif
15814 #ifndef S_IRWXU
15815 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15816 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15817 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15818 #endif
15819 END
15820     : see whether semctl IPC_STAT can use union semun
15821     case "$d_semctl_semun" in
15822     '')
15823       val="$undef"
15824       $cat > try.c <<END
15825 #include <sys/types.h>
15826 #include <sys/ipc.h>
15827 #include <sys/sem.h>
15828 #include <sys/stat.h>
15829 #include <stdio.h>
15830 #include <errno.h>
15831 #include "try.h"
15832 #ifndef errno
15833 extern int errno;
15834 #endif
15835 #$d_union_semun HAS_UNION_SEMUN
15836 int main() {
15837     union semun
15838 #ifndef HAS_UNION_SEMUN
15839     {
15840         int val;
15841         struct semid_ds *buf;
15842         unsigned short *array;
15843     }
15844 #endif
15845     arg;
15846     int sem, st;
15847
15848 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15849     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15850     if (sem > -1) {
15851         struct semid_ds argbuf;
15852         arg.buf = &argbuf;
15853 #       ifdef IPC_STAT
15854         st = semctl(sem, 0, IPC_STAT, arg);
15855         if (st == 0)
15856             printf("semun\n");
15857         else
15858 #       endif /* IPC_STAT */
15859             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15860 #       ifdef IPC_RMID
15861         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15862 #       endif /* IPC_RMID */
15863             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15864     } else
15865 #endif /* IPC_PRIVATE && ... */
15866         printf("semget failed: errno = %d\n", errno);
15867   return 0;
15868 }
15869 END
15870       set try
15871       if eval $compile; then
15872           xxx=`$run ./try`
15873           case "$xxx" in
15874           semun) val="$define" ;;
15875           esac
15876       fi
15877       $rm -f try try.c
15878       set d_semctl_semun
15879       eval $setvar
15880       ;;
15881     esac
15882     case "$d_semctl_semun" in
15883     $define)
15884         echo "You can use union semun for semctl IPC_STAT." >&4
15885         also='also'
15886         ;;
15887     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15888         also=''
15889         ;;
15890     esac
15891
15892     : see whether semctl IPC_STAT can use struct semid_ds pointer
15893     case "$d_semctl_semid_ds" in
15894     '')
15895       val="$undef"
15896       $cat > try.c <<'END'
15897 #include <sys/types.h>
15898 #include <sys/ipc.h>
15899 #include <sys/sem.h>
15900 #include <sys/stat.h>
15901 #include "try.h"
15902 #include <stdio.h>
15903 #include <errno.h>
15904 #ifndef errno
15905 extern int errno;
15906 #endif
15907 int main() {
15908     struct semid_ds arg;
15909     int sem, st;
15910
15911 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15912     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15913     if (sem > -1) {
15914 #       ifdef IPC_STAT
15915         st = semctl(sem, 0, IPC_STAT, &arg);
15916         if (st == 0)
15917             printf("semid_ds\n");
15918         else
15919 #       endif /* IPC_STAT */
15920             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15921 #       ifdef IPC_RMID
15922         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15923 #       endif /* IPC_RMID */
15924             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15925     } else
15926 #endif /* IPC_PRIVATE && ... */
15927         printf("semget failed: errno = %d\n", errno);
15928
15929     return 0;
15930 }
15931 END
15932       set try
15933       if eval $compile; then
15934           xxx=`$run ./try`
15935           case "$xxx" in
15936           semid_ds) val="$define" ;;
15937           esac
15938       fi
15939       $rm -f try try.c
15940       set d_semctl_semid_ds
15941       eval $setvar
15942       ;;
15943     esac
15944     case "$d_semctl_semid_ds" in
15945     $define)
15946         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15947         ;;
15948     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15949         ;;
15950     esac
15951     $rm -f try.h
15952     ;;
15953 *)  val="$undef"
15954
15955     # We do not have the full sem*(2) library, so assume we can not
15956     # use either.
15957
15958     set d_semctl_semun
15959     eval $setvar
15960
15961     set d_semctl_semid_ds
15962     eval $setvar
15963     ;;
15964 esac
15965
15966 : see if sendmsg exists
15967 set sendmsg d_sendmsg
15968 eval $inlibc
15969
15970 : see if setegid exists
15971 set setegid d_setegid
15972 eval $inlibc
15973
15974 : see if seteuid exists
15975 set seteuid d_seteuid
15976 eval $inlibc
15977
15978 : see if setgrent exists
15979 set setgrent d_setgrent
15980 eval $inlibc
15981
15982 : see if setgrent_r exists
15983 set setgrent_r d_setgrent_r
15984 eval $inlibc
15985 case "$d_setgrent_r" in
15986 "$define")
15987         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15988         case "$d_setgrent_r_proto:$usethreads" in
15989         ":define")      d_setgrent_r_proto=define
15990                 set d_setgrent_r_proto setgrent_r $hdrs
15991                 eval $hasproto ;;
15992         *)      ;;
15993         esac
15994         case "$d_setgrent_r_proto" in
15995         define)
15996         case "$setgrent_r_proto" in
15997         ''|0) try='int setgrent_r(FILE**);'
15998         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15999         esac
16000         case "$setgrent_r_proto" in
16001         ''|0) try='void setgrent_r(FILE**);'
16002         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16003         esac
16004         case "$setgrent_r_proto" in
16005         ''|0)   d_setgrent_r=undef
16006                 setgrent_r_proto=0
16007                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16008         * )     case "$setgrent_r_proto" in
16009                 REENTRANT_PROTO*) ;;
16010                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16011                 esac
16012                 echo "Prototype: $try" ;;
16013         esac
16014         ;;
16015         *)      case "$usethreads" in
16016                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16017                 esac
16018                 d_setgrent_r=undef
16019                 setgrent_r_proto=0
16020                 ;;
16021         esac
16022         ;;
16023 *)      setgrent_r_proto=0
16024         ;;
16025 esac
16026
16027 : see if sethostent exists
16028 set sethostent d_sethent
16029 eval $inlibc
16030
16031 : see if sethostent_r exists
16032 set sethostent_r d_sethostent_r
16033 eval $inlibc
16034 case "$d_sethostent_r" in
16035 "$define")
16036         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16037         case "$d_sethostent_r_proto:$usethreads" in
16038         ":define")      d_sethostent_r_proto=define
16039                 set d_sethostent_r_proto sethostent_r $hdrs
16040                 eval $hasproto ;;
16041         *)      ;;
16042         esac
16043         case "$d_sethostent_r_proto" in
16044         define)
16045         case "$sethostent_r_proto" in
16046         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16047         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16048         esac
16049         case "$sethostent_r_proto" in
16050         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16051         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16052         esac
16053         case "$sethostent_r_proto" in
16054         ''|0)   d_sethostent_r=undef
16055                 sethostent_r_proto=0
16056                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16057         * )     case "$sethostent_r_proto" in
16058                 REENTRANT_PROTO*) ;;
16059                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16060                 esac
16061                 echo "Prototype: $try" ;;
16062         esac
16063         ;;
16064         *)      case "$usethreads" in
16065                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16066                 esac
16067                 d_sethostent_r=undef
16068                 sethostent_r_proto=0
16069                 ;;
16070         esac
16071         ;;
16072 *)      sethostent_r_proto=0
16073         ;;
16074 esac
16075
16076 : see if setitimer exists
16077 set setitimer d_setitimer
16078 eval $inlibc
16079
16080 : see if setlinebuf exists
16081 set setlinebuf d_setlinebuf
16082 eval $inlibc
16083
16084 : see if setlocale exists
16085 set setlocale d_setlocale
16086 eval $inlibc
16087
16088 : see if locale.h is available
16089 set locale.h i_locale
16090 eval $inhdr
16091
16092 : see if setlocale_r exists
16093 set setlocale_r d_setlocale_r
16094 eval $inlibc
16095 case "$d_setlocale_r" in
16096 "$define")
16097         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16098         case "$d_setlocale_r_proto:$usethreads" in
16099         ":define")      d_setlocale_r_proto=define
16100                 set d_setlocale_r_proto setlocale_r $hdrs
16101                 eval $hasproto ;;
16102         *)      ;;
16103         esac
16104         case "$d_setlocale_r_proto" in
16105         define)
16106         case "$setlocale_r_proto" in
16107         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16108         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16109         esac
16110         case "$setlocale_r_proto" in
16111         ''|0)   d_setlocale_r=undef
16112                 setlocale_r_proto=0
16113                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16114         * )     case "$setlocale_r_proto" in
16115                 REENTRANT_PROTO*) ;;
16116                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16117                 esac
16118                 echo "Prototype: $try" ;;
16119         esac
16120         ;;
16121         *)      case "$usethreads" in
16122                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16123                 esac
16124                 d_setlocale_r=undef
16125                 setlocale_r_proto=0
16126                 ;;
16127         esac
16128         ;;
16129 *)      setlocale_r_proto=0
16130         ;;
16131 esac
16132
16133 : see if setnetent exists
16134 set setnetent d_setnent
16135 eval $inlibc
16136
16137 : see if setnetent_r exists
16138 set setnetent_r d_setnetent_r
16139 eval $inlibc
16140 case "$d_setnetent_r" in
16141 "$define")
16142         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16143         case "$d_setnetent_r_proto:$usethreads" in
16144         ":define")      d_setnetent_r_proto=define
16145                 set d_setnetent_r_proto setnetent_r $hdrs
16146                 eval $hasproto ;;
16147         *)      ;;
16148         esac
16149         case "$d_setnetent_r_proto" in
16150         define)
16151         case "$setnetent_r_proto" in
16152         ''|0) try='int setnetent_r(int, struct netent_data*);'
16153         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16154         esac
16155         case "$setnetent_r_proto" in
16156         ''|0) try='void setnetent_r(int, struct netent_data*);'
16157         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16158         esac
16159         case "$setnetent_r_proto" in
16160         ''|0)   d_setnetent_r=undef
16161                 setnetent_r_proto=0
16162                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16163         * )     case "$setnetent_r_proto" in
16164                 REENTRANT_PROTO*) ;;
16165                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16166                 esac
16167                 echo "Prototype: $try" ;;
16168         esac
16169         ;;
16170         *)      case "$usethreads" in
16171                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16172                 esac
16173                 d_setnetent_r=undef
16174                 setnetent_r_proto=0
16175                 ;;
16176         esac
16177         ;;
16178 *)      setnetent_r_proto=0
16179         ;;
16180 esac
16181
16182 : see if setprotoent exists
16183 set setprotoent d_setpent
16184 eval $inlibc
16185
16186 : see if setpgid exists
16187 set setpgid d_setpgid
16188 eval $inlibc
16189
16190 : see if setpgrp2 exists
16191 set setpgrp2 d_setpgrp2
16192 eval $inlibc
16193
16194 : see if setpriority exists
16195 set setpriority d_setprior
16196 eval $inlibc
16197
16198 : see if setproctitle exists
16199 set setproctitle d_setproctitle
16200 eval $inlibc
16201
16202 : see if setprotoent_r exists
16203 set setprotoent_r d_setprotoent_r
16204 eval $inlibc
16205 case "$d_setprotoent_r" in
16206 "$define")
16207         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16208         case "$d_setprotoent_r_proto:$usethreads" in
16209         ":define")      d_setprotoent_r_proto=define
16210                 set d_setprotoent_r_proto setprotoent_r $hdrs
16211                 eval $hasproto ;;
16212         *)      ;;
16213         esac
16214         case "$d_setprotoent_r_proto" in
16215         define)
16216         case "$setprotoent_r_proto" in
16217         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16218         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16219         esac
16220         case "$setprotoent_r_proto" in
16221         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16222         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16223         esac
16224         case "$setprotoent_r_proto" in
16225         ''|0)   d_setprotoent_r=undef
16226                 setprotoent_r_proto=0
16227                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16228         * )     case "$setprotoent_r_proto" in
16229                 REENTRANT_PROTO*) ;;
16230                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16231                 esac
16232                 echo "Prototype: $try" ;;
16233         esac
16234         ;;
16235         *)      case "$usethreads" in
16236                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16237                 esac
16238                 d_setprotoent_r=undef
16239                 setprotoent_r_proto=0
16240                 ;;
16241         esac
16242         ;;
16243 *)      setprotoent_r_proto=0
16244         ;;
16245 esac
16246
16247 : see if setpwent exists
16248 set setpwent d_setpwent
16249 eval $inlibc
16250
16251 : see if setpwent_r exists
16252 set setpwent_r d_setpwent_r
16253 eval $inlibc
16254 case "$d_setpwent_r" in
16255 "$define")
16256         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16257         case "$d_setpwent_r_proto:$usethreads" in
16258         ":define")      d_setpwent_r_proto=define
16259                 set d_setpwent_r_proto setpwent_r $hdrs
16260                 eval $hasproto ;;
16261         *)      ;;
16262         esac
16263         case "$d_setpwent_r_proto" in
16264         define)
16265         case "$setpwent_r_proto" in
16266         ''|0) try='int setpwent_r(FILE**);'
16267         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16268         esac
16269         case "$setpwent_r_proto" in
16270         ''|0) try='void setpwent_r(FILE**);'
16271         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16272         esac
16273         case "$setpwent_r_proto" in
16274         ''|0)   d_setpwent_r=undef
16275                 setpwent_r_proto=0
16276                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16277         * )     case "$setpwent_r_proto" in
16278                 REENTRANT_PROTO*) ;;
16279                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16280                 esac
16281                 echo "Prototype: $try" ;;
16282         esac
16283         ;;
16284         *)      case "$usethreads" in
16285                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16286                 esac
16287                 d_setpwent_r=undef
16288                 setpwent_r_proto=0
16289                 ;;
16290         esac
16291         ;;
16292 *)      setpwent_r_proto=0
16293         ;;
16294 esac
16295
16296 : see if setregid exists
16297 set setregid d_setregid
16298 eval $inlibc
16299 set setresgid d_setresgid
16300 eval $inlibc
16301
16302 : see if setreuid exists
16303 set setreuid d_setreuid
16304 eval $inlibc
16305 set setresuid d_setresuid
16306 eval $inlibc
16307
16308 : see if setrgid exists
16309 set setrgid d_setrgid
16310 eval $inlibc
16311
16312 : see if setruid exists
16313 set setruid d_setruid
16314 eval $inlibc
16315
16316 : see if setservent exists
16317 set setservent d_setsent
16318 eval $inlibc
16319
16320 : see if setservent_r exists
16321 set setservent_r d_setservent_r
16322 eval $inlibc
16323 case "$d_setservent_r" in
16324 "$define")
16325         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16326         case "$d_setservent_r_proto:$usethreads" in
16327         ":define")      d_setservent_r_proto=define
16328                 set d_setservent_r_proto setservent_r $hdrs
16329                 eval $hasproto ;;
16330         *)      ;;
16331         esac
16332         case "$d_setservent_r_proto" in
16333         define)
16334         case "$setservent_r_proto" in
16335         ''|0) try='int setservent_r(int, struct servent_data*);'
16336         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16337         esac
16338         case "$setservent_r_proto" in
16339         ''|0) try='void setservent_r(int, struct servent_data*);'
16340         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16341         esac
16342         case "$setservent_r_proto" in
16343         ''|0)   d_setservent_r=undef
16344                 setservent_r_proto=0
16345                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16346         * )     case "$setservent_r_proto" in
16347                 REENTRANT_PROTO*) ;;
16348                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16349                 esac
16350                 echo "Prototype: $try" ;;
16351         esac
16352         ;;
16353         *)      case "$usethreads" in
16354                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16355                 esac
16356                 d_setservent_r=undef
16357                 setservent_r_proto=0
16358                 ;;
16359         esac
16360         ;;
16361 *)      setservent_r_proto=0
16362         ;;
16363 esac
16364
16365 : see if setsid exists
16366 set setsid d_setsid
16367 eval $inlibc
16368
16369 : see if setvbuf exists
16370 set setvbuf d_setvbuf
16371 eval $inlibc
16372
16373 : see if sfio.h is available
16374 set sfio.h i_sfio
16375 eval $inhdr
16376
16377
16378 : see if sfio library is available
16379 case "$i_sfio" in
16380 $define)
16381         val=''
16382         set sfreserve val
16383         eval $inlibc
16384         ;;
16385 *)
16386         val="$undef"
16387         ;;
16388 esac
16389 : Ok, but do we want to use it.
16390 case "$val" in
16391 $define)
16392         case "$usesfio" in
16393         true|$define|[yY]*) dflt='y';;
16394         *) dflt='n';;
16395         esac
16396         echo "$package can use the sfio library, but it is experimental."
16397         case "$useperlio" in
16398         "$undef")
16399             echo "For sfio also the PerlIO abstraction layer is needed."
16400             echo "Earlier you said you wouldn't want that."
16401             ;;
16402         esac
16403         rp="You seem to have sfio available, do you want to try using it?"
16404         . ./myread
16405         case "$ans" in
16406         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16407                 useperlio="$define"
16408                 val="$define"
16409                 ;;
16410         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16411                 val="$undef"
16412                 ;;
16413         esac
16414         ;;
16415 *)      case "$usesfio" in
16416         true|$define|[yY]*)
16417                 echo "Sorry, cannot find sfio on this machine." >&4
16418                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16419                 val="$undef"
16420                 ;;
16421         esac
16422         ;;
16423 esac
16424 set d_sfio
16425 eval $setvar
16426 case "$d_sfio" in
16427 $define) usesfio='true';;
16428 *) usesfio='false';;
16429 esac
16430 case "$d_sfio" in
16431 $define) ;;
16432 *)      : Remove sfio from list of libraries to use
16433         case "$libs" in
16434         *-lsfio*)
16435                 echo "Removing unneeded -lsfio from library list" >&4
16436                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16437                 shift
16438                 libs="$*"
16439                 echo "libs = $libs" >&4
16440                 ;;
16441         esac
16442 ;;
16443 esac
16444
16445
16446 : see if shmctl exists
16447 set shmctl d_shmctl
16448 eval $inlibc
16449
16450 : see if shmget exists
16451 set shmget d_shmget
16452 eval $inlibc
16453
16454 : see if shmat exists
16455 set shmat d_shmat
16456 eval $inlibc
16457 : see what shmat returns
16458 case "$d_shmat" in
16459 "$define")
16460         $cat >shmat.c <<'END'
16461 #include <sys/shm.h>
16462 void *shmat();
16463 END
16464         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16465                 shmattype='void *'
16466         else
16467                 shmattype='char *'
16468         fi
16469         echo "and it returns ($shmattype)." >&4
16470         : see if a prototype for shmat is available
16471         xxx=`./findhdr sys/shm.h`
16472         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16473         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16474                 val="$define"
16475         else
16476                 val="$undef"
16477         fi
16478         $rm -f shmat.[co]
16479         ;;
16480 *)
16481         val="$undef"
16482         ;;
16483 esac
16484 set d_shmatprototype
16485 eval $setvar
16486
16487 : see if shmdt exists
16488 set shmdt d_shmdt
16489 eval $inlibc
16490
16491 : see how much of the 'shm*(2)' library is present.
16492 h_shm=true
16493 echo " "
16494 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16495 *"$undef"*) h_shm=false;;
16496 esac
16497 case "$osname" in
16498 freebsd)
16499     case "`ipcs 2>&1`" in
16500     "SVID shared memory"*"not configured"*)
16501         echo "Your $osname does not have the shm*(2) configured." >&4
16502         h_shm=false
16503         val="$undef"
16504         set shmctl d_shmctl
16505         evat $setvar
16506         set shmget d_shmget
16507         evat $setvar
16508         set shmat d_shmat
16509         evat $setvar
16510         set shmdt d_shmdt
16511         evat $setvar
16512         ;;
16513     esac
16514     ;;
16515 esac
16516 : we could also check for sys/ipc.h ...
16517 if $h_shm && $test `./findhdr sys/shm.h`; then
16518         echo "You have the full shm*(2) library." >&4
16519         val="$define"
16520 else
16521         echo "You don't have the full shm*(2) library." >&4
16522         val="$undef"
16523 fi
16524 set d_shm
16525 eval $setvar
16526
16527 echo " "
16528 : see if we have sigaction
16529 if set sigaction val -f d_sigaction; eval $csym; $val; then
16530         echo 'sigaction() found.' >&4
16531         $cat > try.c <<EOP
16532 #include <stdio.h>
16533 #include <sys/types.h>
16534 #include <signal.h>
16535 #$i_stdlib I_STDLIB
16536 #ifdef I_STDLIB
16537 #include <stdlib.h>
16538 #endif
16539 int main()
16540 {
16541     struct sigaction act, oact;
16542     act.sa_flags = 0;
16543     oact.sa_handler = 0;
16544     /* so that act and oact are used */
16545     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16546 }
16547 EOP
16548         set try
16549         if eval $compile_ok; then
16550                 val="$define"
16551         else
16552                 echo "But you don't seem to have a useable struct sigaction." >&4
16553                 val="$undef"
16554         fi
16555 else
16556         echo 'sigaction NOT found.' >&4
16557         val="$undef"
16558 fi
16559 set d_sigaction; eval $setvar
16560 $rm -f try try$_o try.c
16561
16562 : see if sigprocmask exists
16563 set sigprocmask d_sigprocmask
16564 eval $inlibc
16565
16566 : see if sigsetjmp exists
16567 echo " "
16568 case "$d_sigsetjmp" in
16569 '')
16570         $cat >try.c <<EOP
16571 #include <setjmp.h>
16572 #$i_stdlib I_STDLIB
16573 #ifdef I_STDLIB
16574 #include <stdlib.h>
16575 #endif
16576 sigjmp_buf env;
16577 int set = 1;
16578 int main()
16579 {
16580         if (sigsetjmp(env,1))
16581                 exit(set);
16582         set = 0;
16583         siglongjmp(env, 1);
16584         exit(1);
16585 }
16586 EOP
16587         set try
16588         if eval $compile; then
16589                 if $run ./try >/dev/null 2>&1; then
16590                         echo "POSIX sigsetjmp found." >&4
16591                         val="$define"
16592                 else
16593                         $cat >&4 <<EOM
16594 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16595 I'll ignore them.
16596 EOM
16597                         val="$undef"
16598                 fi
16599         else
16600                 echo "sigsetjmp not found." >&4
16601                 val="$undef"
16602         fi
16603         ;;
16604 *) val="$d_sigsetjmp"
16605         case "$d_sigsetjmp" in
16606         $define) echo "POSIX sigsetjmp found." >&4;;
16607         $undef) echo "sigsetjmp not found." >&4;;
16608         esac
16609         ;;
16610 esac
16611 set d_sigsetjmp
16612 eval $setvar
16613 $rm -f try.c try
16614
16615 : see if snprintf exists
16616 set snprintf d_snprintf
16617 eval $inlibc
16618
16619 : see if vsnprintf exists
16620 set vsnprintf d_vsnprintf
16621 eval $inlibc
16622
16623 case "$d_snprintf-$d_vsnprintf" in
16624 "$define-$define")
16625     $cat <<EOM
16626 Checking whether your snprintf() and vsnprintf() work okay...
16627 EOM
16628     $cat >try.c <<'EOCP'
16629 /* v?snprintf testing logic courtesy of Russ Allbery.
16630  * According to C99:
16631  * - if the buffer is too short it still must be \0-terminated
16632  * - if the buffer is too short the potentially required length
16633  *   must be returned and not -1
16634  * - if the buffer is NULL the potentially required length
16635  *   must be returned and not -1 or core dump
16636  */
16637 #include <stdio.h>
16638 #include <stdarg.h>
16639
16640 char buf[2];
16641
16642 int test (char *format, ...)
16643 {
16644     va_list args;
16645     int count;
16646
16647     va_start (args, format);
16648     count = vsnprintf (buf, sizeof buf, format, args);
16649     va_end (args);
16650     return count;
16651 }
16652
16653 int main ()
16654 {
16655     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
16656              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
16657 }
16658 EOCP
16659     set try
16660     if eval $compile; then
16661         `$run ./try`
16662         case "$?" in
16663         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
16664         *) cat <<EOM >&4
16665 Your snprintf() and snprintf() don't seem to be working okay.
16666 EOM
16667            d_snprintf="$undef"
16668            d_vsnprintf="$undef"
16669            ;;
16670         esac
16671     else
16672         echo "(I can't seem to compile the test program--assuming they don't)"
16673         d_snprintf="$undef"
16674         d_vsnprintf="$undef"
16675     fi
16676     $rm -f try.* try core core.try.*
16677     ;;
16678 esac
16679
16680 : see if sockatmark exists
16681 set sockatmark d_sockatmark
16682 eval $inlibc
16683
16684 : see if prototype for sockatmark is available
16685 echo " "
16686 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16687 eval $hasproto
16688
16689 : see if socks5_init exists
16690 set socks5_init d_socks5_init
16691 eval $inlibc
16692
16693 : see if sprintf returns the length of the string in the buffer as per ANSI
16694 $echo "Checking whether sprintf returns the length of the string..." >&4
16695 $cat <<EOP >try.c
16696 #include <stdio.h>
16697 #$i_stdlib I_STDLIB
16698 #ifdef I_STDLIB
16699 #include <stdlib.h>
16700 #endif
16701 #$i_string I_STRING
16702 #ifdef I_STRING
16703 #  include <string.h>
16704 #else
16705 #  include <strings.h>
16706 #endif
16707 #$i_math I_MATH
16708 #ifdef I_MATH
16709 #include <math.h>
16710 #endif
16711
16712 char buffer[256];
16713
16714 int check (size_t expect, int test) {
16715   size_t got = strlen(buffer);
16716   if (expect == got)
16717     return 0;
16718
16719   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
16720        test, buffer);
16721   exit (test);
16722 }
16723
16724 int main(int argc, char **argv) {
16725   int test = 0;
16726
16727   check(sprintf(buffer, ""), ++test);
16728   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
16729   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
16730
16731   return 0;
16732 }
16733 EOP
16734 set try
16735
16736 d_sprintf_returns_strlen="$undef"
16737 if eval $compile; then
16738     xxx="`$run ./try`"
16739     case "$?" in
16740         0) cat >&4 <<EOM
16741 sprintf returns the length of the string (as ANSI says it should)
16742 EOM
16743         d_sprintf_returns_strlen="$define"
16744         ;;
16745         *) cat >&4 <<EOM
16746 sprintf does not return the length of the string (how old is this system?)
16747 EOM
16748         d_sprintf_returns_strlen="$undef"
16749         ;;
16750     esac
16751 fi
16752
16753 $rm -f try.* try
16754
16755 : see if srand48_r exists
16756 set srand48_r d_srand48_r
16757 eval $inlibc
16758 case "$d_srand48_r" in
16759 "$define")
16760         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16761         case "$d_srand48_r_proto:$usethreads" in
16762         ":define")      d_srand48_r_proto=define
16763                 set d_srand48_r_proto srand48_r $hdrs
16764                 eval $hasproto ;;
16765         *)      ;;
16766         esac
16767         case "$d_srand48_r_proto" in
16768         define)
16769         case "$srand48_r_proto" in
16770         ''|0) try='int srand48_r(long, struct drand48_data*);'
16771         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16772         esac
16773         case "$srand48_r_proto" in
16774         ''|0)   d_srand48_r=undef
16775                 srand48_r_proto=0
16776                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16777         * )     case "$srand48_r_proto" in
16778                 REENTRANT_PROTO*) ;;
16779                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16780                 esac
16781                 echo "Prototype: $try" ;;
16782         esac
16783         ;;
16784         *)      case "$usethreads" in
16785                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16786                 esac
16787                 d_srand48_r=undef
16788                 srand48_r_proto=0
16789                 ;;
16790         esac
16791         ;;
16792 *)      srand48_r_proto=0
16793         ;;
16794 esac
16795
16796 : see if srandom_r exists
16797 set srandom_r d_srandom_r
16798 eval $inlibc
16799 case "$d_srandom_r" in
16800 "$define")
16801         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16802         case "$d_srandom_r_proto:$usethreads" in
16803         ":define")      d_srandom_r_proto=define
16804                 set d_srandom_r_proto srandom_r $hdrs
16805                 eval $hasproto ;;
16806         *)      ;;
16807         esac
16808         case "$d_srandom_r_proto" in
16809         define)
16810         case "$srandom_r_proto" in
16811         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16812         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16813         esac
16814         case "$srandom_r_proto" in
16815         ''|0)   d_srandom_r=undef
16816                 srandom_r_proto=0
16817                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16818         * )     case "$srandom_r_proto" in
16819                 REENTRANT_PROTO*) ;;
16820                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16821                 esac
16822                 echo "Prototype: $try" ;;
16823         esac
16824         ;;
16825         *)      case "$usethreads" in
16826                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16827                 esac
16828                 d_srandom_r=undef
16829                 srandom_r_proto=0
16830                 ;;
16831         esac
16832         ;;
16833 *)      srandom_r_proto=0
16834         ;;
16835 esac
16836
16837 : see if prototype for setresgid is available
16838 echo " "
16839 set d_sresgproto setresgid $i_unistd unistd.h
16840 eval $hasproto
16841
16842 : see if prototype for setresuid is available
16843 echo " "
16844 set d_sresuproto setresuid $i_unistd unistd.h
16845 eval $hasproto
16846
16847 : see if sys/stat.h is available
16848 set sys/stat.h i_sysstat
16849 eval $inhdr
16850
16851
16852 : see if stat knows about block sizes
16853 echo " "
16854 echo "Checking to see if your struct stat has st_blocks field..." >&4
16855 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16856 eval $hasfield
16857
16858
16859 : see if this is a sys/vfs.h system
16860 set sys/vfs.h i_sysvfs
16861 eval $inhdr
16862
16863
16864 : see if this is a sys/statfs.h system
16865 set sys/statfs.h i_sysstatfs
16866 eval $inhdr
16867
16868
16869 echo " "
16870 echo "Checking to see if your system supports struct statfs..." >&4
16871 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
16872 eval $hasstruct
16873 case "$d_statfs_s" in
16874 "$define")      echo "Yes, it does."   ;;
16875 *)              echo "No, it doesn't." ;;
16876 esac
16877
16878
16879
16880 : see if struct statfs knows about f_flags
16881 case "$d_statfs_s" in
16882 define) 
16883         echo " "
16884         echo "Checking to see if your struct statfs has f_flags field..." >&4
16885         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
16886         eval $hasfield
16887         ;;
16888 *)      val="$undef"
16889         set d_statfs_f_flags
16890         eval $setvar
16891         ;;
16892 esac
16893 case "$d_statfs_f_flags" in
16894 "$define")      echo "Yes, it does."   ;;
16895 *)              echo "No, it doesn't." ;;
16896 esac
16897
16898 $cat >&4 <<EOM
16899 Checking how to access stdio streams by file descriptor number...
16900 EOM
16901 case "$stdio_stream_array" in
16902 '')     $cat >try.c <<EOCP
16903 #include <stdio.h>
16904 int main() {
16905   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16906     printf("yes\n");
16907 }
16908 EOCP
16909         for s in _iob __iob __sF
16910         do
16911                 set try -DSTDIO_STREAM_ARRAY=$s
16912                 if eval $compile; then
16913                         case "`$run ./try`" in
16914                         yes)    stdio_stream_array=$s; break ;;
16915                         esac
16916                 fi
16917         done
16918         $rm -f try.* try$exe_ext
16919 esac
16920 case "$stdio_stream_array" in
16921 '')     $cat >&4 <<EOM
16922 I can't figure out how to access stdio streams by file descriptor number.
16923 EOM
16924         d_stdio_stream_array="$undef"
16925         ;;
16926 *)      $cat >&4 <<EOM
16927 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16928 EOM
16929         d_stdio_stream_array="$define"
16930         ;;
16931 esac
16932
16933 : see if strcoll exists
16934 set strcoll d_strcoll
16935 eval $inlibc
16936
16937 : check for structure copying
16938 echo " "
16939 echo "Checking to see if your C compiler can copy structs..." >&4
16940 $cat >try.c <<'EOCP'
16941 int main()
16942 {
16943         struct blurfl {
16944                 int dyick;
16945         } foo, bar;
16946
16947         foo = bar;
16948 }
16949 EOCP
16950 if $cc -c try.c >/dev/null 2>&1 ; then
16951         val="$define"
16952         echo "Yup, it can."
16953 else
16954         val="$undef"
16955         echo "Nope, it can't."
16956 fi
16957 set d_strctcpy
16958 eval $setvar
16959 $rm -f try.*
16960
16961 : see if strerror and/or sys_errlist[] exist
16962 echo " "
16963 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16964     if set strerror val -f d_strerror; eval $csym; $val; then
16965                 echo 'strerror() found.' >&4
16966                 d_strerror="$define"
16967                 d_strerrm='strerror(e)'
16968                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16969                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16970                         d_syserrlst="$define"
16971                 else
16972                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16973                         d_syserrlst="$undef"
16974                 fi
16975     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16976                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16977                 echo 'strerror() found in string header.' >&4
16978                 d_strerror="$define"
16979                 d_strerrm='strerror(e)'
16980                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16981                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16982                                 d_syserrlst="$define"
16983                 else
16984                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16985                         d_syserrlst="$undef"
16986                 fi
16987     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16988                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16989                 d_strerror="$undef"
16990                 d_syserrlst="$define"
16991                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16992     else
16993                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16994                 d_strerror="$undef"
16995                 d_syserrlst="$undef"
16996                 d_strerrm='"unknown"'
16997     fi
16998 fi
16999
17000 : see if strerror_r exists
17001 set strerror_r d_strerror_r
17002 eval $inlibc
17003 case "$d_strerror_r" in
17004 "$define")
17005         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17006         case "$d_strerror_r_proto:$usethreads" in
17007         ":define")      d_strerror_r_proto=define
17008                 set d_strerror_r_proto strerror_r $hdrs
17009                 eval $hasproto ;;
17010         *)      ;;
17011         esac
17012         case "$d_strerror_r_proto" in
17013         define)
17014         case "$strerror_r_proto" in
17015         ''|0) try='int strerror_r(int, char*, size_t);'
17016         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17017         esac
17018         case "$strerror_r_proto" in
17019         ''|0) try='int strerror_r(int, char*, int);'
17020         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17021         esac
17022         case "$strerror_r_proto" in
17023         ''|0) try='char* strerror_r(int, char*, size_t);'
17024         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17025         esac
17026         case "$strerror_r_proto" in
17027         ''|0)   d_strerror_r=undef
17028                 strerror_r_proto=0
17029                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17030         * )     case "$strerror_r_proto" in
17031                 REENTRANT_PROTO*) ;;
17032                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17033                 esac
17034                 echo "Prototype: $try" ;;
17035         esac
17036         ;;
17037         *)      case "$usethreads" in
17038                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17039                 esac
17040                 d_strerror_r=undef
17041                 strerror_r_proto=0
17042                 ;;
17043         esac
17044         ;;
17045 *)      strerror_r_proto=0
17046         ;;
17047 esac
17048
17049 : see if strftime exists
17050 set strftime d_strftime
17051 eval $inlibc
17052
17053 : see if strlcat exists
17054 set strlcat d_strlcat
17055 eval $inlibc
17056
17057 : see if strlcpy exists
17058 set strlcpy d_strlcpy
17059 eval $inlibc
17060
17061 : see if strtod exists
17062 set strtod d_strtod
17063 eval $inlibc
17064
17065 : see if strtol exists
17066 set strtol d_strtol
17067 eval $inlibc
17068
17069 : see if strtold exists
17070 set strtold d_strtold
17071 eval $inlibc
17072
17073 : see if strtoll exists
17074 set strtoll d_strtoll
17075 eval $inlibc
17076
17077 case "$d_longlong-$d_strtoll" in
17078 "$define-$define")
17079         $cat <<EOM
17080 Checking whether your strtoll() works okay...
17081 EOM
17082         $cat >try.c <<'EOCP'
17083 #include <errno.h>
17084 #ifdef __hpux
17085 #define strtoll __strtoll
17086 #endif
17087 #ifdef __EMX__
17088 #define strtoll _strtoll
17089 #endif
17090 #include <stdio.h>
17091 extern long long int strtoll(char *s, char **, int); 
17092 static int bad = 0;
17093 int check(char *s, long long ell, int een) {
17094         long long gll;
17095         errno = 0;
17096         gll = strtoll(s, 0, 10);
17097         if (!((gll == ell) && (errno == een)))
17098                 bad++;
17099 }
17100 int main() {
17101         check(" 1",                                      1LL, 0);
17102         check(" 0",                                      0LL, 0);
17103         check("-1",                                     -1LL, 0);
17104         check("-9223372036854775808", -9223372036854775808LL, 0);
17105         check("-9223372036854775808", -9223372036854775808LL, 0);
17106         check(" 9223372036854775807",  9223372036854775807LL, 0);
17107         check("-9223372036854775808", -9223372036854775808LL, 0);
17108         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17109         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17110         if (!bad)
17111                 printf("ok\n");
17112 }
17113 EOCP
17114         set try
17115         if eval $compile; then
17116                 yyy=`$run ./try`
17117                 case "$yyy" in
17118                 ok) echo "Your strtoll() seems to be working okay." ;;
17119                 *) cat <<EOM >&4
17120 Your strtoll() doesn't seem to be working okay.
17121 EOM
17122                    d_strtoll="$undef"
17123                    ;;
17124                 esac
17125         else
17126                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17127                 d_strtoll="$undef"
17128         fi
17129         ;;
17130 esac
17131
17132 : see if strtoq exists
17133 set strtoq d_strtoq
17134 eval $inlibc
17135
17136 : see if strtoul exists
17137 set strtoul d_strtoul
17138 eval $inlibc
17139
17140 case "$d_strtoul" in
17141 "$define")
17142         $cat <<EOM
17143 Checking whether your strtoul() works okay...
17144 EOM
17145         $cat >try.c <<'EOCP'
17146 #include <errno.h>
17147 #include <stdio.h>
17148 extern unsigned long int strtoul(char *s, char **, int); 
17149 static int bad = 0;
17150 void check(char *s, unsigned long eul, int een) {
17151         unsigned long gul;
17152         errno = 0;
17153         gul = strtoul(s, 0, 10);
17154         if (!((gul == eul) && (errno == een)))
17155                 bad++;
17156 }
17157 int main() {
17158         check(" 1", 1L, 0);
17159         check(" 0", 0L, 0);
17160 EOCP
17161         case "$longsize" in
17162         8)
17163             $cat >>try.c <<'EOCP'
17164         check("18446744073709551615", 18446744073709551615UL, 0);
17165         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17166 #if 0 /* strtoul() for /^-/ strings is undefined. */
17167         check("-1", 18446744073709551615UL, 0);
17168         check("-18446744073709551614", 2, 0);
17169         check("-18446744073709551615", 1, 0);
17170         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17171         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17172 #endif
17173 EOCP
17174                 ;;
17175         4)
17176                     $cat >>try.c <<'EOCP'
17177         check("4294967295", 4294967295UL, 0);
17178         check("4294967296", 4294967295UL, ERANGE);
17179 #if 0 /* strtoul() for /^-/ strings is undefined. */
17180         check("-1", 4294967295UL, 0);
17181         check("-4294967294", 2, 0);
17182         check("-4294967295", 1, 0);
17183         check("-4294967296", 4294967295UL, ERANGE);
17184         check("-4294967297", 4294967295UL, ERANGE);
17185 #endif
17186 EOCP
17187                 ;;
17188         *)
17189 : Should we write these tests to be more portable by sprintf-ing
17190 : ~0 and then manipulating that char string as input for strtol?
17191                 ;;
17192         esac
17193         $cat >>try.c <<'EOCP'
17194         if (!bad)
17195                 printf("ok\n");
17196         return 0;
17197 }
17198 EOCP
17199         set try
17200         if eval $compile; then
17201                 case "`$run ./try`" in
17202                 ok) echo "Your strtoul() seems to be working okay." ;;
17203                 *) cat <<EOM >&4
17204 Your strtoul() doesn't seem to be working okay.
17205 EOM
17206                    d_strtoul="$undef"
17207                    ;;
17208                 esac
17209         fi
17210         ;;
17211 esac
17212
17213 : see if strtoull exists
17214 set strtoull d_strtoull
17215 eval $inlibc
17216
17217 case "$d_longlong-$d_strtoull" in
17218 "$define-$define")
17219         $cat <<EOM
17220 Checking whether your strtoull() works okay...
17221 EOM
17222         $cat >try.c <<'EOCP'
17223 #include <errno.h>
17224 #ifdef __hpux
17225 #define strtoull __strtoull
17226 #endif
17227 #include <stdio.h>
17228 extern unsigned long long int strtoull(char *s, char **, int); 
17229 static int bad = 0;
17230 int check(char *s, long long eull, int een) {
17231         long long gull;
17232         errno = 0;
17233         gull = strtoull(s, 0, 10);
17234         if (!((gull == eull) && (errno == een)))
17235                 bad++;
17236 }
17237 int main() {
17238         check(" 1",                                        1LL, 0);
17239         check(" 0",                                        0LL, 0);
17240         check("18446744073709551615",  18446744073709551615ULL, 0);
17241         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17242 #if 0 /* strtoull() for /^-/ strings is undefined. */
17243         check("-1",                    18446744073709551615ULL, 0);
17244         check("-18446744073709551614",                     2LL, 0);
17245         check("-18446744073709551615",                     1LL, 0);
17246         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17247         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17248 #endif
17249         if (!bad)
17250                 printf("ok\n");
17251 }
17252 EOCP
17253         set try
17254         if eval $compile; then
17255                 case "`$run ./try`" in
17256                 ok) echo "Your strtoull() seems to be working okay." ;;
17257                 *) cat <<EOM >&4
17258 Your strtoull() doesn't seem to be working okay.
17259 EOM
17260                    d_strtoull="$undef"
17261                    ;;
17262                 esac
17263         fi
17264         ;;
17265 esac
17266
17267 : see if strtouq exists
17268 set strtouq d_strtouq
17269 eval $inlibc
17270
17271 case "$d_strtouq" in
17272 "$define")
17273         $cat <<EOM
17274 Checking whether your strtouq() works okay...
17275 EOM
17276         $cat >try.c <<'EOCP'
17277 #include <errno.h>
17278 #include <stdio.h>
17279 extern unsigned long long int strtouq(char *s, char **, int); 
17280 static int bad = 0;
17281 void check(char *s, unsigned long long eull, int een) {
17282         unsigned long long gull;
17283         errno = 0;
17284         gull = strtouq(s, 0, 10);
17285         if (!((gull == eull) && (errno == een)))
17286                 bad++;
17287 }
17288 int main() {
17289         check(" 1",                                        1LL, 0);
17290         check(" 0",                                        0LL, 0);
17291         check("18446744073709551615",  18446744073709551615ULL, 0);
17292         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17293 #if 0 /* strtouq() for /^-/ strings is undefined. */
17294         check("-1",                    18446744073709551615ULL, 0);
17295         check("-18446744073709551614",                     2LL, 0);
17296         check("-18446744073709551615",                     1LL, 0);
17297         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17298         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17299 #endif
17300         if (!bad)
17301                 printf("ok\n");
17302         return 0;
17303 }
17304 EOCP
17305         set try
17306         if eval $compile; then
17307                 case "`$run ./try`" in
17308                 ok) echo "Your strtouq() seems to be working okay." ;;
17309                 *) cat <<EOM >&4
17310 Your strtouq() doesn't seem to be working okay.
17311 EOM
17312                    d_strtouq="$undef"
17313                    ;;
17314                 esac
17315         fi
17316         ;;
17317 esac
17318
17319 : see if strxfrm exists
17320 set strxfrm d_strxfrm
17321 eval $inlibc
17322
17323 : see if symlink exists
17324 set symlink d_symlink
17325 eval $inlibc
17326
17327 : see if syscall exists
17328 set syscall d_syscall
17329 eval $inlibc
17330
17331 : see if prototype for syscall is available
17332 echo " "
17333 set d_syscallproto syscall $i_unistd unistd.h
17334 eval $hasproto
17335
17336 : see if sysconf exists
17337 set sysconf d_sysconf
17338 eval $inlibc
17339
17340 : see if system exists
17341 set system d_system
17342 eval $inlibc
17343
17344 : see if tcgetpgrp exists
17345 set tcgetpgrp d_tcgetpgrp
17346 eval $inlibc
17347
17348 : see if tcsetpgrp exists
17349 set tcsetpgrp d_tcsetpgrp
17350 eval $inlibc
17351
17352 : see if prototype for telldir is available
17353 echo " "
17354 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17355 eval $hasproto
17356
17357 : see if time exists
17358 echo " "
17359 if test "X$d_time" = X -o X"$timetype" = X; then
17360     if set time val -f d_time; eval $csym; $val; then
17361                 echo 'time() found.' >&4
17362                 val="$define"
17363                 rp="What is the type returned by time() on this system?"
17364                 set time_t timetype long stdio.h sys/types.h
17365                 eval $typedef_ask
17366     else
17367                 echo 'time() not found, hope that will do.' >&4
17368                 val="$undef"
17369                 timetype='int';
17370     fi
17371     set d_time
17372     eval $setvar
17373 fi
17374
17375 : see if this is a sys/times.h system
17376 set sys/times.h i_systimes
17377 eval $inhdr
17378
17379 : see if times exists
17380 echo " "
17381 if set times val -f d_times; eval $csym; $val; then
17382         echo 'times() found.' >&4
17383         d_times="$define"
17384         inc=''
17385         case "$i_systimes" in
17386         "$define") inc='sys/times.h';;
17387         esac
17388         rp="What is the type returned by times() on this system?"
17389         set clock_t clocktype long stdio.h sys/types.h $inc
17390         eval $typedef_ask
17391 else
17392         echo 'times() NOT found, hope that will do.' >&4
17393         d_times="$undef"
17394         clocktype='int'
17395 fi
17396
17397 : see if tmpnam_r exists
17398 set tmpnam_r d_tmpnam_r
17399 eval $inlibc
17400 case "$d_tmpnam_r" in
17401 "$define")
17402         hdrs="$i_systypes sys/types.h define stdio.h "
17403         case "$d_tmpnam_r_proto:$usethreads" in
17404         ":define")      d_tmpnam_r_proto=define
17405                 set d_tmpnam_r_proto tmpnam_r $hdrs
17406                 eval $hasproto ;;
17407         *)      ;;
17408         esac
17409         case "$d_tmpnam_r_proto" in
17410         define)
17411         case "$tmpnam_r_proto" in
17412         ''|0) try='char* tmpnam_r(char*);'
17413         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17414         esac
17415         case "$tmpnam_r_proto" in
17416         ''|0)   d_tmpnam_r=undef
17417                 tmpnam_r_proto=0
17418                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17419         * )     case "$tmpnam_r_proto" in
17420                 REENTRANT_PROTO*) ;;
17421                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17422                 esac
17423                 echo "Prototype: $try" ;;
17424         esac
17425         ;;
17426         *)      case "$usethreads" in
17427                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17428                 esac
17429                 d_tmpnam_r=undef
17430                 tmpnam_r_proto=0
17431                 ;;
17432         esac
17433         ;;
17434 *)      tmpnam_r_proto=0
17435         ;;
17436 esac
17437
17438 : see if truncate exists
17439 set truncate d_truncate
17440 eval $inlibc
17441
17442 : see if ttyname_r exists
17443 set ttyname_r d_ttyname_r
17444 eval $inlibc
17445 case "$d_ttyname_r" in
17446 "$define")
17447         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17448         case "$d_ttyname_r_proto:$usethreads" in
17449         ":define")      d_ttyname_r_proto=define
17450                 set d_ttyname_r_proto ttyname_r $hdrs
17451                 eval $hasproto ;;
17452         *)      ;;
17453         esac
17454         case "$d_ttyname_r_proto" in
17455         define)
17456         case "$ttyname_r_proto" in
17457         ''|0) try='int ttyname_r(int, char*, size_t);'
17458         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17459         esac
17460         case "$ttyname_r_proto" in
17461         ''|0) try='int ttyname_r(int, char*, int);'
17462         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17463         esac
17464         case "$ttyname_r_proto" in
17465         ''|0) try='char* ttyname_r(int, char*, int);'
17466         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17467         esac
17468         case "$ttyname_r_proto" in
17469         ''|0)   d_ttyname_r=undef
17470                 ttyname_r_proto=0
17471                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17472         * )     case "$ttyname_r_proto" in
17473                 REENTRANT_PROTO*) ;;
17474                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17475                 esac
17476                 echo "Prototype: $try" ;;
17477         esac
17478         ;;
17479         *)      case "$usethreads" in
17480                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17481                 esac
17482                 d_ttyname_r=undef
17483                 ttyname_r_proto=0
17484                 ;;
17485         esac
17486         ;;
17487 *)      ttyname_r_proto=0
17488         ;;
17489 esac
17490
17491 : see if tzname[] exists
17492 echo " "
17493 if set tzname val -a d_tzname; eval $csym; $val; then
17494         val="$define"
17495         echo 'tzname[] found.' >&4
17496 else
17497         val="$undef"
17498         echo 'tzname[] NOT found.' >&4
17499 fi
17500 set d_tzname
17501 eval $setvar
17502
17503 case "$osname" in
17504 next|rhapsody|darwin) multiarch="$define" ;;
17505 esac
17506 case "$multiarch" in
17507 ''|[nN]*) multiarch="$undef" ;;
17508 esac
17509
17510 : check for ordering of bytes in a UV
17511 echo " "
17512 case "$usecrosscompile$multiarch" in
17513 *$define*)
17514         $cat <<EOM
17515 You seem to be either cross-compiling or doing a multiarchitecture build,
17516 skipping the byteorder check.
17517
17518 EOM
17519         byteorder='ffff'
17520         ;;
17521 *)
17522         case "$byteorder" in
17523         '')
17524                 $cat <<'EOM'
17525 In the following, larger digits indicate more significance.  A big-endian
17526 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17527 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17528 machines may have weird orders like 3412.  A Cray will report 87654321,
17529 an Alpha will report 12345678. If the test program works the default is
17530 probably right.
17531 I'm now running the test program...
17532 EOM
17533                 $cat >try.c <<EOCP
17534 #include <stdio.h>
17535 #$i_stdlib I_STDLIB
17536 #ifdef I_STDLIB
17537 #include <stdlib.h>
17538 #endif
17539 #include <sys/types.h>
17540 typedef $uvtype UV;
17541 int main()
17542 {
17543         int i;
17544         union {
17545                 UV l;
17546                 char c[$uvsize];
17547         } u;
17548
17549         if ($uvsize > 4)
17550                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
17551         else
17552                 u.l = (UV)0x04030201;
17553         for (i = 0; i < $uvsize; i++)
17554                 printf("%c", u.c[i]+'0');
17555         printf("\n");
17556         exit(0);
17557 }
17558 EOCP
17559                 xxx_prompt=y
17560                 set try
17561                 if eval $compile && ./try > /dev/null; then
17562                         dflt=`$run ./try`
17563                         case "$dflt" in
17564                         [1-4][1-4][1-4][1-4]|12345678|87654321)
17565                                 echo "(The test program ran ok.)"
17566                                 echo "byteorder=$dflt"
17567                                 xxx_prompt=n
17568                         ;;
17569                         ????|????????) echo "(The test program ran ok.)" ;;
17570                         *) echo "(The test program didn't run right for some reason.)" ;;
17571                         esac
17572                 else
17573                         dflt='4321'
17574                         cat <<'EOM'
17575 (I can't seem to compile the test program.  Guessing big-endian...)
17576 EOM
17577                 fi
17578                 case "$xxx_prompt" in
17579                 y)
17580                         rp="What is the order of bytes in $uvtype?"
17581                         . ./myread
17582                         byteorder="$ans"
17583                         ;;
17584                 *)      byteorder=$dflt
17585                         ;;
17586                 esac
17587                 ;;
17588         esac
17589         $rm -f try.c try
17590         ;;
17591 esac
17592
17593
17594 $cat <<EOM
17595
17596 Checking to see whether you can access character data unalignedly...
17597 EOM
17598 case "$d_u32align" in
17599 '')   $cat >try.c <<EOCP
17600 #include <stdio.h>
17601 #$i_stdlib I_STDLIB
17602 #ifdef I_STDLIB
17603 #include <stdlib.h>
17604 #endif
17605 #define U32 $u32type
17606 #define BYTEORDER 0x$byteorder
17607 #define U8 $u8type
17608 #include <signal.h>
17609 #ifdef SIGBUS
17610 $signal_t bletch(s) int s; { exit(4); }
17611 #endif
17612 int main() {
17613 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17614     U8 buf[8];
17615     U32 *up;
17616     int i;
17617
17618     if (sizeof(U32) != 4) {
17619         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17620         exit(1);
17621     }
17622
17623     fflush(stdout);
17624
17625 #ifdef SIGBUS
17626     signal(SIGBUS, bletch);
17627 #endif
17628
17629     buf[0] = 0;
17630     buf[1] = 0;
17631     buf[2] = 0;
17632     buf[3] = 1;
17633     buf[4] = 0;
17634     buf[5] = 0;
17635     buf[6] = 0;
17636     buf[7] = 1;
17637
17638     for (i = 0; i < 4; i++) {
17639         up = (U32*)(buf + i);
17640         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17641                (*up == 1 << (8*(3-i)))  /* little-endian */
17642               )
17643            )
17644         {
17645             printf("read failed (%x)\n", *up);
17646             exit(2);
17647         }
17648     }
17649
17650     /* write test */
17651     for (i = 0; i < 4; i++) {
17652         up = (U32*)(buf + i);
17653         *up = 0xBeef;
17654         if (*up != 0xBeef) {
17655             printf("write failed (%x)\n", *up);
17656             exit(3);
17657         }
17658     }
17659
17660     exit(0);
17661 #else
17662     printf("1\n");
17663     exit(1);
17664 #endif
17665     return 0;
17666 }
17667 EOCP
17668 set try
17669 if eval $compile_ok; then
17670         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17671         $run ./try 2>&1 >/dev/null
17672         case "$?" in
17673         0)      cat >&4 <<EOM
17674 You can access character data pretty unalignedly.
17675 EOM
17676                 d_u32align="$undef"
17677                 ;;
17678         *)      cat >&4 <<EOM
17679 It seems that you must access character data in an aligned manner.
17680 EOM
17681                 d_u32align="$define"
17682                 ;;
17683         esac
17684 else
17685         rp='Can you access character data at unaligned addresses?'
17686         dflt='n'
17687         . ./myread
17688         case "$ans" in
17689         [yY]*)  d_u32align="$undef"  ;;
17690         *)      d_u32align="$define" ;;
17691         esac
17692 fi
17693 $rm -f core core.try.* try.core
17694 ;;
17695 esac
17696
17697 : see if ualarm exists
17698 set ualarm d_ualarm
17699 eval $inlibc
17700
17701 : see if umask exists
17702 set umask d_umask
17703 eval $inlibc
17704
17705 : see if unordered exists
17706 set unordered d_unordered
17707 eval $inlibc
17708
17709 : see if unsetenv exists
17710 set unsetenv d_unsetenv
17711 eval $inlibc
17712
17713 : see if usleep exists
17714 set usleep d_usleep
17715 eval $inlibc
17716
17717 : see if prototype for usleep is available
17718 echo " "
17719 set d_usleepproto usleep $i_unistd unistd.h
17720 eval $hasproto
17721
17722 : see if ustat exists
17723 set ustat d_ustat
17724 eval $inlibc
17725
17726 : backward compatibility for d_hvfork
17727 if test X$d_hvfork != X; then
17728         d_vfork="$d_hvfork"
17729         d_hvfork=''
17730 fi
17731 : see if there is a vfork
17732 val=''
17733 set vfork val
17734 eval $inlibc
17735
17736 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17737 : perl on Solaris 2.x, and probably elsewhere.
17738 case "$val" in
17739 $define)
17740         echo " "
17741         case "$usevfork" in
17742         false) dflt='n';;
17743         *) dflt='y';;
17744         esac
17745         cat <<'EOM'
17746  
17747 Perl can only use a vfork() that doesn't suffer from strict
17748 restrictions on calling functions or modifying global data in
17749 the child.  For example, glibc-2.1 contains such a vfork()
17750 that is unsuitable.  If your system provides a proper fork()
17751 call, chances are that you do NOT want perl to use vfork().
17752
17753 EOM
17754         rp="Do you still want to use vfork()?"
17755         . ./myread
17756         case "$ans" in
17757         y|Y) ;;
17758         *)
17759                 echo "Ok, we won't use vfork()."
17760                 val="$undef"
17761                 ;;
17762         esac
17763         ;;
17764 esac
17765 set d_vfork
17766 eval $setvar
17767 case "$d_vfork" in
17768 $define) usevfork='true';;
17769 *) usevfork='false';;
17770 esac
17771
17772 : see if closedir exists
17773 set closedir d_closedir
17774 eval $inlibc
17775
17776 case "$d_closedir" in
17777 "$define")
17778         echo " "
17779         echo "Checking whether closedir() returns a status..." >&4
17780         cat > try.c <<EOM
17781 #$i_dirent I_DIRENT             /**/
17782 #$i_sysdir I_SYS_DIR            /**/
17783 #$i_sysndir I_SYS_NDIR          /**/
17784 #$i_systypes I_SYS_TYPES        /**/
17785
17786 #if defined(I_SYS_TYPES)
17787 #include <sys/types.h>
17788 #endif
17789 #if defined(I_DIRENT)
17790 #include <dirent.h>
17791 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17792 #include <sys/dir.h>
17793 #endif
17794 #else
17795 #ifdef I_SYS_NDIR
17796 #include <sys/ndir.h>
17797 #else
17798 #ifdef I_SYS_DIR
17799 #ifdef hp9000s500
17800 #include <ndir.h>       /* may be wrong in the future */
17801 #else
17802 #include <sys/dir.h>
17803 #endif
17804 #endif
17805 #endif
17806 #endif 
17807 int main() { return closedir(opendir(".")); }
17808 EOM
17809         set try
17810         if eval $compile_ok; then
17811                 if $run ./try > /dev/null 2>&1 ; then
17812                         echo "Yes, it does."
17813                         val="$undef"
17814                 else
17815                         echo "No, it doesn't."
17816                         val="$define"
17817                 fi
17818         else
17819                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17820                 val="$define"
17821         fi
17822         ;;
17823 *)
17824         val="$undef";
17825         ;;
17826 esac
17827 set d_void_closedir
17828 eval $setvar
17829 $rm -f try try.*
17830 : see if there is a wait4
17831 set wait4 d_wait4
17832 eval $inlibc
17833
17834 : see if waitpid exists
17835 set waitpid d_waitpid
17836 eval $inlibc
17837
17838 : see if wcstombs exists
17839 set wcstombs d_wcstombs
17840 eval $inlibc
17841
17842 : see if wctomb exists
17843 set wctomb d_wctomb
17844 eval $inlibc
17845
17846 : see if writev exists
17847 set writev d_writev
17848 eval $inlibc
17849
17850 : preserve RCS keywords in files with variable substitution, grrr
17851 Date='$Date'
17852 Id='$Id'
17853 Log='$Log'
17854 RCSfile='$RCSfile'
17855 Revision='$Revision'
17856
17857 : check for alignment requirements
17858 echo " "
17859 case "$usecrosscompile$multiarch" in
17860 *$define*)
17861         $cat <<EOM
17862 You seem to be either cross-compiling or doing a multiarchitecture build,
17863 skipping the memory alignment check.
17864
17865 EOM
17866         case "$alignbytes" in
17867         '') alignbytes=8 ;;
17868         esac
17869         ;;
17870 *)
17871         case "$alignbytes" in
17872         '') echo "Checking alignment constraints..." >&4
17873                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17874                         $cat >try.c <<'EOCP'
17875 typedef long double NV;
17876 EOCP
17877                 else
17878                         $cat >try.c <<'EOCP'
17879 typedef double NV;
17880 EOCP
17881                 fi
17882                 $cat >>try.c <<'EOCP'
17883 #include <stdio.h>
17884 struct foobar {
17885         char foo;
17886         NV bar;
17887 } try_algn;
17888 int main()
17889 {
17890     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17891     return(0);
17892 }
17893 EOCP
17894                 set try
17895                 if eval $compile_ok; then
17896                         dflt=`$run ./try`
17897                 else
17898                         dflt='8'
17899                         echo "(I can't seem to compile the test program...)"
17900                 fi
17901                 ;;
17902         *) dflt="$alignbytes"
17903                 ;;
17904         esac
17905         rp="Doubles must be aligned on a how-many-byte boundary?"
17906         . ./myread
17907         alignbytes="$ans"
17908         $rm -f try.c try
17909         ;;
17910 esac
17911
17912
17913 : set the base revision
17914 baserev=5.0
17915
17916 : how do we concatenate cpp tokens here?
17917 echo " "
17918 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17919 $cat >cpp_stuff.c <<'EOCP'
17920 #define RCAT(a,b)a/**/b
17921 #define ACAT(a,b)a ## b
17922 RCAT(Rei,ser)
17923 ACAT(Cir,cus)
17924 EOCP
17925 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17926 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17927         echo "Oh!  Smells like ANSI's been here." >&4
17928         echo "We can catify or stringify, separately or together!"
17929         cpp_stuff=42
17930 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17931         echo "Ah, yes!  The good old days!" >&4
17932         echo "However, in the good old days we don't know how to stringify and"
17933         echo "catify at the same time."
17934         cpp_stuff=1
17935 else
17936         $cat >&4 <<EOM
17937 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17938 You're going to have to edit the values of CAT[2-5] in config.h...
17939 EOM
17940         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17941 fi
17942 $rm -f cpp_stuff.*
17943
17944 : see if this is a db.h system
17945 set db.h i_db
17946 eval $inhdr
17947
17948 case "$i_db" in
17949 $define)
17950         : Check db version.
17951         echo " "
17952         echo "Checking Berkeley DB version ..." >&4
17953         $cat >try.c <<EOCP
17954 #$d_const HASCONST
17955 #ifndef HASCONST
17956 #define const
17957 #endif
17958 #include <sys/types.h>
17959 #include <stdio.h>
17960 #$i_stdlib I_STDLIB
17961 #ifdef I_STDLIB
17962 #include <stdlib.h>
17963 #endif
17964 #include <db.h>
17965 int main(int argc, char *argv[])
17966 {
17967 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17968     int Major, Minor, Patch ;
17969     unsigned long Version ;
17970     (void)db_version(&Major, &Minor, &Patch) ;
17971     if (argc == 2) {
17972         printf("%d %d %d %d %d %d\n",
17973                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17974                Major, Minor, Patch);
17975         exit(0);
17976     }
17977     printf("You have Berkeley DB Version 2 or greater.\n");
17978
17979     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17980                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17981     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17982                 Major, Minor, Patch) ;
17983
17984     /* check that db.h & libdb are compatible */
17985     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17986         printf("db.h and libdb are incompatible.\n") ;
17987         exit(3);        
17988     }
17989
17990     printf("db.h and libdb are compatible.\n") ;
17991
17992     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17993                 + DB_VERSION_PATCH ;
17994
17995     /* needs to be >= 2.3.4 */
17996     if (Version < 2003004) {
17997     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17998         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17999         exit(2);        
18000     }
18001
18002     exit(0);
18003 #else
18004 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18005     if (argc == 2) {
18006         printf("1 0 0\n");
18007         exit(0);
18008     }
18009     printf("You have Berkeley DB Version 1.\n");
18010     exit(0);    /* DB version < 2: the coast is clear. */
18011 #else
18012     exit(1);    /* <db.h> not Berkeley DB? */
18013 #endif
18014 #endif
18015 }
18016 EOCP
18017         set try
18018         if eval $compile_ok && $run ./try; then
18019                 echo 'Looks OK.' >&4
18020                 set `$run ./try 1`
18021                 db_version_major=$1
18022                 db_version_minor=$2
18023                 db_version_patch=$3
18024         else
18025                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18026                 i_db=$undef
18027                 case " $libs " in
18028                 *"-ldb "*)
18029                         : Remove db from list of libraries to use
18030                         echo "Removing unusable -ldb from library list" >&4
18031                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18032                         shift
18033                         libs="$*"
18034                         echo "libs = $libs" >&4
18035                         ;;
18036                 esac
18037         fi
18038         $rm -f try.*
18039         ;;
18040 esac
18041
18042 case "$i_db" in
18043 define)
18044         : Check the return type needed for hash 
18045         echo " "
18046         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18047         $cat >try.c <<EOCP
18048 #$d_const HASCONST
18049 #ifndef HASCONST
18050 #define const
18051 #endif
18052 #include <sys/types.h>
18053 #include <db.h>
18054
18055 #ifndef DB_VERSION_MAJOR
18056 u_int32_t hash_cb (ptr, size)
18057 const void *ptr;
18058 size_t size;
18059 {
18060 }
18061 HASHINFO info;
18062 int main()
18063 {
18064         info.hash = hash_cb;
18065 }
18066 #endif
18067 EOCP
18068         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18069                 if $contains warning try.out >>/dev/null 2>&1 ; then
18070                         db_hashtype='int'
18071                 else
18072                         db_hashtype='u_int32_t'
18073                 fi
18074         else
18075                 : XXX Maybe we should just give up here.
18076                 db_hashtype=u_int32_t
18077                 $cat try.out >&4
18078                 echo "Help:  I can't seem to compile the db test program." >&4
18079                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18080         fi
18081         $rm -f try.*
18082         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18083         ;;
18084 *)      db_hashtype=u_int32_t
18085         ;;
18086 esac
18087 case "$i_db" in
18088 define)
18089         : Check the return type needed for prefix 
18090         echo " "
18091         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18092         cat >try.c <<EOCP
18093 #$d_const HASCONST
18094 #ifndef HASCONST
18095 #define const
18096 #endif
18097 #include <sys/types.h>
18098 #include <db.h>
18099
18100 #ifndef DB_VERSION_MAJOR
18101 size_t prefix_cb (key1, key2)
18102 const DBT *key1;
18103 const DBT *key2;
18104 {
18105 }
18106 BTREEINFO info;
18107 int main()
18108 {
18109         info.prefix = prefix_cb;
18110 }
18111 #endif
18112 EOCP
18113         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18114                 if $contains warning try.out >>/dev/null 2>&1 ; then
18115                         db_prefixtype='int'
18116                 else
18117                         db_prefixtype='size_t'
18118                 fi
18119         else
18120                 db_prefixtype='size_t'
18121                 : XXX Maybe we should just give up here.
18122                 $cat try.out >&4
18123                 echo "Help:  I can't seem to compile the db test program." >&4
18124                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18125         fi
18126         $rm -f try.*
18127         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18128         ;;
18129 *)      db_prefixtype='size_t'
18130         ;;
18131 esac
18132
18133
18134 : How can we generate normalized random numbers ?
18135 echo " "
18136 echo "Looking for a random number function..." >&4
18137 case "$randfunc" in
18138 '')
18139         if set drand48 val -f; eval $csym; $val; then
18140                 dflt="drand48"
18141                 echo "Good, found drand48()." >&4
18142         elif set random val -f; eval $csym; $val; then
18143                 dflt="random"
18144                 echo "OK, found random()." >&4
18145         else
18146                 dflt="rand"
18147                 echo "Yick, looks like I have to use rand()." >&4
18148         fi
18149         echo " "
18150         ;;
18151 *)
18152         dflt="$randfunc"
18153         ;;
18154 esac
18155 cont=true
18156
18157 case "$ccflags" in
18158 *-Dmy_rand=*|*-Dmy_srand=*)
18159         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18160         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18161         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18162         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18163         ;;
18164 esac
18165
18166 while $test "$cont"; do
18167         rp="Use which function to generate random numbers?"
18168         . ./myread
18169         if $test "$ans" = "$dflt"; then
18170                 : null
18171         else
18172                 randbits=''
18173         fi
18174         randfunc="$ans"
18175         if set $ans val -f; eval $csym; $val; then
18176                 cont=''
18177         else
18178                 dflt=y
18179                 rp="I cannot find function $ans. Use that name anyway?"
18180                 . ./myread
18181                 dflt=rand
18182                 case "$ans" in
18183                         [yY]*) cont='';;
18184                 esac
18185         fi
18186         case "$cont" in
18187         '')
18188                 case "$randfunc" in
18189                 drand48)
18190                         drand01="drand48()"
18191                         seedfunc="srand48"
18192                         randbits=48
18193                         randseedtype=long
18194                         ;;
18195                 rand|random)
18196                         case "$randbits" in
18197                         '')
18198 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18199                                 $cat >try.c <<EOCP
18200 #$i_unistd I_UNISTD
18201 #$i_stdlib I_STDLIB
18202 #include <stdio.h>
18203 #ifdef I_UNISTD
18204 #  include <unistd.h>
18205 #endif
18206 #ifdef I_STDLIB
18207 #  include <stdlib.h>
18208 #endif
18209 int main()
18210 {
18211         register int i;
18212         register unsigned long tmp;
18213         register unsigned long max = 0L;
18214
18215         for (i = 1000; i; i--) {
18216                 tmp = (unsigned long) $randfunc();
18217                 if (tmp > max) max = tmp;
18218         }
18219         for (i = 0; max; i++)
18220                 max /= 2;
18221         printf("%d\n",i);
18222 }
18223 EOCP
18224                                 set try
18225                                 if eval $compile_ok; then
18226                                         dflt=`try`
18227                                 else
18228                                         dflt='?'
18229                                         echo "(I can't seem to compile the test program...)"
18230                                 fi
18231                                 ;;
18232                         *)
18233                                 dflt="$randbits"
18234                                 ;;
18235                         esac
18236                         rp="How many bits does your $randfunc() function produce?"
18237                         . ./myread
18238                         randbits="$ans"
18239                         $rm -f try.c try
18240                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18241                         seedfunc="s$randfunc"
18242                         randseedtype=unsigned
18243                         ;;
18244                 *)
18245                         dflt="31"
18246                         rp="How many bits does your $randfunc() function produce?"
18247                         . ./myread
18248                         randbits="$ans"
18249                         seedfunc="s$randfunc"
18250                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18251                         if set $seedfunc val -f; eval $csym; $val; then
18252                                 echo "(Using $seedfunc() to seed random generator)"
18253                         else
18254                                 echo "(Warning: no $seedfunc() to seed random generator)"
18255                                 seedfunc=rand
18256                         fi
18257                         randseedtype=unsigned
18258                         ;;
18259                 esac
18260                 ;;
18261         esac
18262 done
18263
18264 echo " "
18265 echo "Determining whether or not we are on an EBCDIC system..." >&4
18266 $cat >try.c <<'EOM'
18267 int main()
18268 {
18269   if ('M'==0xd4) return 0;
18270   return 1;
18271 }
18272 EOM
18273
18274 val=$undef
18275 set try
18276 if eval $compile_ok; then
18277         if $run ./try; then
18278                 echo "You seem to speak EBCDIC." >&4
18279                 val="$define"
18280         else
18281                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18282         fi
18283 else
18284         echo "I'm unable to compile the test program." >&4
18285         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18286 fi
18287 $rm -f try try.*
18288 set ebcdic
18289 eval $setvar
18290
18291 echo " "
18292 $cat >&4 <<EOM
18293 Checking how to flush all pending stdio output...
18294 EOM
18295 # I only know how to find the first 32 possibly open files on SunOS.
18296 # See also hints/sunos_4_1.sh and util.c  --AD
18297 case "$osname" in
18298 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18299 esac
18300 $cat >>try.c <<EOCP
18301 #include <stdio.h>
18302 #$i_stdlib I_STDLIB
18303 #ifdef I_STDLIB
18304 #include <stdlib.h>
18305 #endif
18306 #$i_unistd I_UNISTD
18307 #ifdef I_UNISTD
18308 # include <unistd.h>
18309 #endif
18310 #$d_sysconf HAS_SYSCONF
18311 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18312 #ifdef HAS_STDIO_STREAM_ARRAY
18313 # define STDIO_STREAM_ARRAY $stdio_stream_array
18314 #endif
18315 int main() {
18316   FILE* p;
18317   unlink("try.out");
18318   p = fopen("try.out", "w");
18319 #ifdef TRY_FPUTC
18320   fputc('x', p);
18321 #else
18322 # ifdef TRY_FPRINTF
18323   fprintf(p, "x");
18324 # endif
18325 #endif
18326 #ifdef TRY_FFLUSH_NULL
18327   fflush(NULL);
18328 #endif
18329 #ifdef TRY_FFLUSH_ALL
18330   {
18331     long open_max = -1;
18332 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18333     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18334 # else
18335 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18336     open_max = sysconf(_SC_OPEN_MAX);
18337 #  else
18338 #   ifdef FOPEN_MAX
18339     open_max = FOPEN_MAX;
18340 #   else
18341 #    ifdef OPEN_MAX
18342     open_max = OPEN_MAX;
18343 #    else
18344 #     ifdef _NFILE
18345     open_max = _NFILE;
18346 #     endif
18347 #    endif
18348 #   endif
18349 #  endif
18350 # endif 
18351 # ifdef HAS_STDIO_STREAM_ARRAY
18352     if (open_max > 0) {
18353       long i;
18354       for (i = 0; i < open_max; i++)
18355             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18356                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18357                 STDIO_STREAM_ARRAY[i]._flag)
18358                 fflush(&STDIO_STREAM_ARRAY[i]);
18359     }   
18360   }
18361 # endif
18362 #endif
18363   _exit(42);
18364 }
18365 EOCP
18366 : first we have to find out how _not_ to flush
18367 $to try.c
18368 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18369     output=''
18370     set try -DTRY_FPUTC
18371     if eval $compile; then
18372             $run ./try 2>/dev/null
18373             code="$?"
18374             $from try.out
18375             if $test ! -s try.out -a "X$code" = X42; then
18376                 output=-DTRY_FPUTC
18377             fi
18378     fi
18379     case "$output" in
18380     '')
18381             set try -DTRY_FPRINTF
18382             if eval $compile; then
18383                     $run ./try 2>/dev/null
18384                     code="$?"
18385                     $from try.out
18386                     if $test ! -s try.out -a "X$code" = X42; then
18387                         output=-DTRY_FPRINTF
18388                     fi
18389             fi
18390         ;;
18391     esac
18392 fi
18393 : check for fflush NULL behaviour
18394 case "$fflushNULL" in
18395 '')     set try -DTRY_FFLUSH_NULL $output
18396         if eval $compile; then
18397                 $run ./try 2>/dev/null
18398                 code="$?"
18399                 $from try.out
18400                 if $test -s try.out -a "X$code" = X42; then
18401                         fflushNULL="`$cat try.out`"
18402                 else
18403                         if $test "X$code" != X42; then
18404                                 $cat >&4 <<EOM
18405 (If this test failed, don't worry, we'll try another method shortly.)
18406 EOM
18407                         fi
18408                 fi
18409         fi
18410         $rm -f core try.core core.try.*
18411         case "$fflushNULL" in
18412         x)      $cat >&4 <<EOM
18413 Your fflush(NULL) works okay for output streams.
18414 Let's see if it clobbers input pipes...
18415 EOM
18416 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18417 # bug that improperly flushes the input end of pipes.  So we avoid the
18418 # autoflush on fork/system/exec support for now. :-(
18419 $cat >tryp.c <<EOCP
18420 #include <stdio.h>
18421 int
18422 main(int argc, char **argv)
18423 {
18424     char buf[1024];
18425     int i;
18426     char *bp = buf;
18427     while (1) {
18428         while ((i = getc(stdin)) != -1
18429                && (*bp++ = i) != '\n'
18430                && bp < &buf[1024])
18431         /* DO NOTHING */ ;
18432         *bp = '\0';
18433         fprintf(stdout, "%s", buf);
18434         fflush(NULL);
18435         if (i == -1)
18436             return 0;
18437         bp = buf;
18438     }
18439 }
18440 EOCP
18441                 fflushNULL="$define"
18442                 set tryp
18443                 if eval $compile; then
18444                     $rm -f tryp.out
18445                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18446                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18447                        $cat >&4 <<EOM
18448 fflush(NULL) seems to behave okay with input streams.
18449 EOM
18450                         fflushNULL="$define"
18451                     else
18452                         $cat >&4 <<EOM
18453 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18454 EOM
18455                         fflushNULL="$undef"
18456                     fi
18457                 fi
18458                 $rm -f core tryp.c tryp.core core.tryp.*
18459                 ;;
18460         '')     $cat >&4 <<EOM
18461 Your fflush(NULL) isn't working (contrary to ANSI C).
18462 EOM
18463                 fflushNULL="$undef"
18464                 ;;
18465         *)      $cat >&4 <<EOM
18466 Cannot figure out whether your fflush(NULL) works or not.
18467 I'm assuming it doesn't (contrary to ANSI C).
18468 EOM
18469                 fflushNULL="$undef"
18470                 ;;
18471         esac
18472         ;;
18473 $define|true|[yY]*)
18474         fflushNULL="$define"
18475         ;;
18476 *)
18477         fflushNULL="$undef"
18478         ;;
18479 esac
18480 : check explicit looping only if NULL did not work, and if the pipe
18481 : bug does not show up on an explicit flush too
18482 case "$fflushNULL" in
18483 "$undef")
18484         $cat >tryp.c <<EOCP
18485 #include <stdio.h>
18486 int
18487 main(int argc, char **argv)
18488 {
18489     char buf[1024];
18490     int i;
18491     char *bp = buf;
18492     while (1) {
18493         while ((i = getc(stdin)) != -1
18494                && (*bp++ = i) != '\n'
18495                && bp < &buf[1024])
18496         /* DO NOTHING */ ;
18497         *bp = '\0';
18498         fprintf(stdout, "%s", buf);
18499         fflush(stdin);
18500         if (i == -1)
18501             return 0;
18502         bp = buf;
18503     }
18504 }
18505 EOCP
18506         set tryp
18507         if eval $compile; then
18508             $rm -f tryp.out
18509             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18510             if cmp tryp.c tryp.out >/dev/null 2>&1; then
18511                $cat >&4 <<EOM
18512 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18513 EOM
18514                 : now check for fflushall behaviour
18515                 case "$fflushall" in
18516                 '')     set try -DTRY_FFLUSH_ALL $output
18517                         if eval $compile; then
18518                                 $cat >&4 <<EOM
18519 (Now testing the other method--but note that this also may fail.)
18520 EOM
18521                                 $run ./try 2>/dev/null
18522                                 code=$?
18523                                 $from try.out
18524                                 if $test -s try.out -a "X$code" = X42; then
18525                                         fflushall="`$cat try.out`"
18526                                 fi
18527                         fi
18528                         $rm -f core try.core core.try.*
18529                         case "$fflushall" in
18530                         x)      $cat >&4 <<EOM
18531 Whew. Flushing explicitly all the stdio streams works.
18532 EOM
18533                                 fflushall="$define"
18534                                 ;;
18535                         '')     $cat >&4 <<EOM
18536 Sigh. Flushing explicitly all the stdio streams doesn't work.
18537 EOM
18538                                 fflushall="$undef"
18539                                 ;;
18540                         *)      $cat >&4 <<EOM
18541 Cannot figure out whether flushing stdio streams explicitly works or not.
18542 I'm assuming it doesn't.
18543 EOM
18544                                 fflushall="$undef"
18545                                 ;;
18546                         esac
18547                         ;;
18548                 "$define"|true|[yY]*)
18549                         fflushall="$define"
18550                         ;;
18551                 *)
18552                         fflushall="$undef"
18553                         ;;
18554                 esac
18555             else
18556                 $cat >&4 <<EOM
18557 All is futile.  Even fflush(stdin) clobbers input pipes!
18558 EOM
18559                 fflushall="$undef"
18560             fi
18561         else
18562             fflushall="$undef"
18563         fi
18564         $rm -f core tryp.c tryp.core core.tryp.*
18565         ;;
18566 *)      fflushall="$undef"
18567         ;;
18568 esac
18569
18570 case "$fflushNULL$fflushall" in
18571 undefundef)
18572         $cat <<EOM
18573 OK, I give up.  I cannot figure out how to flush pending stdio output.
18574 We won't be flushing handles at all before fork/exec/popen.
18575 EOM
18576         ;;
18577 esac
18578 $rm -f try.* try$exe_ext
18579
18580 : Store the full pathname to the ar program for use in the C program
18581 : Respect a hint or command line value for full_ar.
18582 case "$full_ar" in
18583 '') full_ar=$ar ;;
18584 esac
18585
18586 : Store the full pathname to the sed program for use in the C program
18587 full_sed=$sed
18588
18589 : see what type gids are declared as in the kernel
18590 echo " "
18591 echo "Looking for the type for group ids returned by getgid()."
18592 set gid_t gidtype xxx stdio.h sys/types.h
18593 eval $typedef
18594 case "$gidtype" in
18595 xxx)
18596         xxx=`./findhdr sys/user.h`
18597         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18598         case $1 in
18599         unsigned) dflt="$1 $2" ;;
18600         *) dflt="$1" ;;
18601         esac
18602         ;;
18603 *) dflt="$gidtype";;
18604 esac
18605 case "$gidtype" in
18606 gid_t) echo "gid_t found." ;;
18607 *)      rp="What is the type for group ids returned by getgid()?"
18608         . ./myread
18609         gidtype="$ans"
18610         ;;
18611 esac
18612
18613 echo " "
18614 case "$gidtype" in
18615 *_t) zzz="$gidtype"     ;;
18616 *)   zzz="gid"          ;;
18617 esac
18618 echo "Checking the size of $zzz..." >&4 
18619 cat > try.c <<EOCP
18620 #include <sys/types.h>
18621 #include <stdio.h>
18622 #$i_stdlib I_STDLIB
18623 #ifdef I_STDLIB
18624 #include <stdlib.h>
18625 #endif
18626 int main() {
18627     printf("%d\n", (int)sizeof($gidtype));
18628     exit(0);
18629 }
18630 EOCP
18631 set try
18632 if eval $compile_ok; then
18633         yyy=`$run ./try`
18634         case "$yyy" in
18635         '')     gidsize=4
18636                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18637                 ;;
18638         *)      gidsize=$yyy
18639                 echo "Your $zzz is $gidsize bytes long."
18640                 ;;
18641         esac
18642 else
18643         gidsize=4
18644         echo "(I can't compile the test program--guessing $gidsize.)" >&4
18645 fi
18646
18647
18648 echo " "
18649 case "$gidtype" in
18650 *_t) zzz="$gidtype"     ;;
18651 *)   zzz="gid"          ;;
18652 esac
18653 echo "Checking the sign of $zzz..." >&4 
18654 cat > try.c <<EOCP
18655 #include <sys/types.h>
18656 #include <stdio.h>
18657 int main() {
18658         $gidtype foo = -1;
18659         if (foo < 0)
18660                 printf("-1\n");
18661         else
18662                 printf("1\n");
18663 }
18664 EOCP
18665 set try
18666 if eval $compile; then
18667         yyy=`$run ./try`
18668         case "$yyy" in
18669         '')     gidsign=1
18670                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18671                 ;;
18672         *)      gidsign=$yyy
18673                 case "$gidsign" in
18674                  1) echo "Your $zzz is unsigned." ;;
18675                 -1) echo "Your $zzz is signed."   ;;
18676                 esac
18677                 ;;
18678         esac
18679 else
18680         gidsign=1
18681         echo "(I can't compile the test program--guessing unsigned.)" >&4
18682 fi
18683
18684
18685 echo " "
18686
18687 if $test X"$quadtype" != X; then
18688
18689 echo "Checking how to print 64-bit integers..." >&4
18690
18691 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18692         $cat >try.c <<'EOCP'
18693 #include <sys/types.h>
18694 #include <stdio.h>
18695 int main() {
18696   int q = 12345678901;
18697   printf("%ld\n", q);
18698 }
18699 EOCP
18700         set try
18701         if eval $compile; then
18702                 yyy=`$run ./try`
18703                 case "$yyy" in
18704                 12345678901)
18705                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18706                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18707                         echo "We will use %d."
18708                         ;;
18709                 esac
18710         fi
18711 fi
18712
18713 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18714         $cat >try.c <<'EOCP'
18715 #include <sys/types.h>
18716 #include <stdio.h>
18717 int main() {
18718   long q = 12345678901;
18719   printf("%ld\n", q);
18720 }
18721 EOCP
18722         set try
18723         if eval $compile; then
18724                 yyy=`$run ./try`
18725                 case "$yyy" in
18726                 12345678901)
18727                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18728                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18729                         echo "We will use %ld."
18730                         ;;
18731                 esac
18732         fi
18733 fi
18734
18735 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18736         $cat >try.c <<'EOCP'
18737 #include <sys/types.h>
18738 #include <inttypes.h>
18739 #include <stdio.h>
18740 int main() {
18741   int64_t q = 12345678901;
18742   printf("%" PRId64 "\n", q);
18743 }
18744 EOCP
18745         set try
18746         if eval $compile; then
18747                 yyy=`$run ./try`
18748                 case "$yyy" in
18749                 12345678901)
18750                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18751                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18752                         echo "We will use the C9X style."
18753                         ;;
18754                 esac
18755         fi
18756 fi
18757
18758 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18759         $cat >try.c <<EOCP
18760 #include <sys/types.h>
18761 #include <stdio.h>
18762 int main() {
18763   $quadtype q = 12345678901;
18764   printf("%Ld\n", q);
18765 }
18766 EOCP
18767         set try
18768         if eval $compile; then
18769                 yyy=`$run ./try`
18770                 case "$yyy" in
18771                 12345678901)
18772                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18773                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18774                         echo "We will use %Ld."
18775                         ;;
18776                 esac
18777         fi
18778 fi
18779
18780 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18781         $cat >try.c <<'EOCP'
18782 #include <sys/types.h>
18783 #include <stdio.h>
18784 int main() {
18785   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18786   printf("%lld\n", q);
18787 }
18788 EOCP
18789         set try
18790         if eval $compile; then
18791                 yyy=`$run ./try`
18792                 case "$yyy" in
18793                 12345678901)
18794                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18795                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18796                         echo "We will use the %lld style."
18797                         ;;
18798                 esac
18799         fi
18800 fi
18801
18802 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18803         $cat >try.c <<EOCP
18804 #include <sys/types.h>
18805 #include <stdio.h>
18806 int main() {
18807   $quadtype q = 12345678901;
18808   printf("%qd\n", q);
18809 }
18810 EOCP
18811         set try
18812         if eval $compile; then
18813                 yyy=`$run ./try`
18814                 case "$yyy" in
18815                 12345678901)
18816                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18817                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18818                         echo "We will use %qd."
18819                         ;;
18820                 esac
18821         fi
18822 fi
18823
18824 if $test X"$sPRId64" = X; then
18825         echo "Cannot figure out how to print 64-bit integers." >&4
18826 fi
18827
18828 $rm -f try try.*
18829
18830 fi
18831
18832 case "$sPRId64" in
18833 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18834         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18835         ;;
18836 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18837         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18838         ;;
18839 esac
18840
18841
18842 echo " "
18843 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18844
18845 if $test X"$ivsize" = X8; then
18846         ivdformat="$sPRId64"
18847         uvuformat="$sPRIu64"
18848         uvoformat="$sPRIo64"
18849         uvxformat="$sPRIx64"
18850         uvXUformat="$sPRIXU64"
18851 else
18852         if $test X"$ivsize" = X"$longsize"; then
18853                 ivdformat='"ld"'
18854                 uvuformat='"lu"'
18855                 uvoformat='"lo"'
18856                 uvxformat='"lx"'
18857                 uvXUformat='"lX"'
18858         else
18859                 if $test X"$ivsize" = X"$intsize"; then
18860                         ivdformat='"d"'
18861                         uvuformat='"u"'
18862                         uvoformat='"o"'
18863                         uvxformat='"x"'
18864                         uvXUformat='"X"'
18865                 else
18866                         : far out
18867                         if $test X"$ivsize" = X"$shortsize"; then
18868                                 ivdformat='"hd"'
18869                                 uvuformat='"hu"'
18870                                 uvoformat='"ho"'
18871                                 uvxformat='"hx"'
18872                                 uvXUformat='"hX"'
18873                         fi
18874                 fi
18875         fi
18876 fi
18877
18878 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18879         nveformat="$sPRIeldbl"
18880         nvfformat="$sPRIfldbl"
18881         nvgformat="$sPRIgldbl"
18882         nvEUformat="$sPRIEUldbl"
18883         nvFUformat="$sPRIFUldbl"
18884         nvGUformat="$sPRIGUldbl"
18885 else
18886         nveformat='"e"'
18887         nvfformat='"f"'
18888         nvgformat='"g"'
18889         nvEUformat='"E"'
18890         nvFUformat='"F"'
18891         nvGUformat='"G"'
18892 fi
18893
18894 case "$ivdformat" in
18895 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18896     exit 1
18897     ;;
18898 esac
18899
18900
18901 echo " "
18902 $echo "Checking the format string to be used for gids..." >&4
18903
18904 case "$gidsign" in
18905 -1)     if $test X"$gidsize" = X"$ivsize"; then
18906                 gidformat="$ivdformat"
18907         else
18908                 if $test X"$gidsize" = X"$longsize"; then
18909                         gidformat='"ld"'
18910                 else
18911                         if $test X"$gidsize" = X"$intsize"; then
18912                                 gidformat='"d"'
18913                         else
18914                                 if $test X"$gidsize" = X"$shortsize"; then
18915                                         gidformat='"hd"'
18916                                 fi
18917                         fi
18918                 fi
18919         fi
18920         ;;
18921 *)      if $test X"$gidsize" = X"$uvsize"; then
18922                 gidformat="$uvuformat"
18923         else
18924                 if $test X"$gidsize" = X"$longsize"; then
18925                         gidformat='"lu"'
18926                 else
18927                         if $test X"$gidsize" = X"$intsize"; then
18928                                 gidformat='"u"'
18929                         else
18930                                 if $test X"$gidsize" = X"$shortsize"; then
18931                                         gidformat='"hu"'
18932                                 fi
18933                         fi
18934                 fi
18935         fi
18936         ;;
18937 esac
18938
18939 : see if getgroups exists
18940 set getgroups d_getgrps
18941 eval $inlibc
18942
18943 : see if setgroups exists
18944 set setgroups d_setgrps
18945 eval $inlibc
18946
18947
18948 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18949 echo " "
18950 case "$d_getgrps$d_setgrps" in
18951 *define*)
18952         case "$groupstype" in
18953         '') dflt="$gidtype" ;;
18954         *)  dflt="$groupstype" ;;
18955         esac
18956         $cat <<EOM
18957 What type of pointer is the second argument to getgroups() and setgroups()?
18958 Usually this is the same as group ids, $gidtype, but not always.
18959
18960 EOM
18961         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18962         . ./myread
18963         groupstype="$ans"
18964         ;;
18965 *)  groupstype="$gidtype";;
18966 esac
18967
18968
18969 case "$mad" in
18970 $define|true|[yY]*)     dflt='y' ;;
18971 *)                      dflt='n' ;;
18972 esac
18973 cat <<EOM
18974
18975 Would you like to build with Misc Attribute Decoration? This is development
18976 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
18977 overhead on the interpreter.
18978
18979 If this doesn't make any sense to you, just accept the default '$dflt'.
18980 EOM
18981 rp='Build Perl with MAD?'
18982 . ./myread
18983 case "$ans" in
18984 y|Y)    val="$define"
18985         madlyh='madly.h madly.act madly.tab'
18986         madlysrc='madly.c'
18987         madlyobj="madly$_o" ;;
18988 *)      val="$undef"
18989         madlyh=''
18990         madlysrc=''
18991         madlyobj='' ;;
18992 esac
18993 set mad
18994 eval $setvar
18995
18996 echo " "
18997 echo "Checking if your $make program sets \$(MAKE)..." >&4
18998 case "$make_set_make" in
18999 '')
19000         $sed 's/^X //' > testmake.mak << 'EOF'
19001 Xall:
19002 X       @echo 'maketemp="$(MAKE)"'
19003 EOF
19004         case "`$make -f testmake.mak 2>/dev/null`" in
19005         *maketemp=*) make_set_make='#' ;;
19006         *)      make_set_make="MAKE=$make" ;;
19007         esac
19008         $rm -f testmake.mak
19009         ;;
19010 esac
19011 case "$make_set_make" in
19012 '#') echo "Yup, it does.";;
19013 *) echo "Nope, it doesn't.";;
19014 esac
19015
19016 : see what type is used for mode_t
19017 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19018 set mode_t modetype int stdio.h sys/types.h
19019 eval $typedef_ask
19020
19021 : see if stdarg is available
19022 echo " "
19023 if $test `./findhdr stdarg.h`; then
19024         echo "<stdarg.h> found." >&4
19025         valstd="$define"
19026 else
19027         echo "<stdarg.h> NOT found." >&4
19028         valstd="$undef"
19029 fi
19030
19031 : see if varags is available
19032 echo " "
19033 if $test `./findhdr varargs.h`; then
19034         echo "<varargs.h> found." >&4
19035 else
19036         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
19037 fi
19038
19039 : set up the varargs testing programs
19040 $cat > varargs.c <<EOP
19041 #ifdef I_STDARG
19042 #include <stdarg.h>
19043 #endif
19044 #ifdef I_VARARGS
19045 #include <varargs.h>
19046 #endif
19047
19048 #ifdef I_STDARG
19049 int f(char *p, ...)
19050 #else
19051 int f(va_alist)
19052 va_dcl
19053 #endif
19054 {
19055         va_list ap;
19056 #ifndef I_STDARG
19057         char *p;
19058 #endif
19059 #ifdef I_STDARG
19060         va_start(ap,p);
19061 #else
19062         va_start(ap);
19063         p = va_arg(ap, char *);
19064 #endif
19065         va_end(ap);
19066 }
19067 EOP
19068 $cat > varargs <<EOP
19069 $startsh
19070 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
19071         echo "true"
19072 else
19073         echo "false"
19074 fi
19075 $rm -f varargs$_o
19076 EOP
19077 chmod +x varargs
19078
19079 : now check which varargs header should be included
19080 echo " "
19081 i_varhdr=''
19082 case "$valstd" in
19083 "$define")
19084         if `./varargs I_STDARG`; then
19085                 val='stdarg.h'
19086         elif `./varargs I_VARARGS`; then
19087                 val='varargs.h'
19088         fi
19089         ;;
19090 *)
19091         if `./varargs I_VARARGS`; then
19092                 val='varargs.h'
19093         fi
19094         ;;
19095 esac
19096 case "$val" in
19097 '')
19098 echo "I could not find the definition for va_dcl... You have problems..." >&4
19099         val="$undef"; set i_stdarg; eval $setvar
19100         val="$undef"; set i_varargs; eval $setvar
19101         ;;
19102 *) 
19103         set i_varhdr
19104         eval $setvar
19105         case "$i_varhdr" in
19106         stdarg.h)
19107                 val="$define"; set i_stdarg; eval $setvar
19108                 val="$undef"; set i_varargs; eval $setvar
19109                 ;;
19110         varargs.h)
19111                 val="$undef"; set i_stdarg; eval $setvar
19112                 val="$define"; set i_varargs; eval $setvar
19113                 ;;
19114         esac
19115         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
19116 esac
19117 $rm -f varargs*
19118
19119 : see if we need va_copy
19120 echo " "
19121 case "$i_stdarg" in
19122 "$define")
19123         $cat >try.c <<EOCP
19124 #include <stdarg.h>
19125 #include <stdio.h>
19126 #$i_stdlib I_STDLIB
19127 #ifdef I_STDLIB
19128 #include <stdlib.h>
19129 #endif
19130 #include <signal.h>
19131
19132 int
19133 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19134 {
19135   return vfprintf(f, fmt, *valp);
19136 }
19137  
19138 int    
19139 myvfprintf(FILE *f, const  char *fmt, va_list val)
19140 {
19141   return ivfprintf(f, fmt, &val);
19142 }
19143       
19144 int
19145 myprintf(char *fmt, ...) 
19146 {
19147   va_list val;
19148   va_start(val, fmt);
19149   return myvfprintf(stdout, fmt, val); 
19150 }         
19151
19152 int
19153 main(int ac, char **av)
19154 {
19155   signal(SIGSEGV, exit);
19156
19157   myprintf("%s%cs all right, then\n", "that", '\'');                            
19158   exit(0);      
19159 }
19160 EOCP
19161         set try
19162         if eval $compile && $run ./try 2>&1 >/dev/null; then
19163                 case "`$run ./try`" in
19164                 "that's all right, then")
19165                         okay=yes
19166                         ;;
19167                 esac
19168         fi
19169         case "$okay" in
19170         yes)    echo "It seems that you don't need va_copy()." >&4
19171                 need_va_copy="$undef"
19172                 ;;
19173         *)      echo "It seems that va_copy() or similar will be needed." >&4
19174                 need_va_copy="$define"
19175                 ;;
19176         esac
19177         $rm -f try.* core core.* *.core *.core.*
19178         ;;
19179 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19180         ;;
19181 esac
19182
19183 : see what type is used for size_t
19184 rp="What is the type used for the length parameter for string functions?"
19185 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19186 eval $typedef_ask
19187
19188 : check for type of arguments to gethostbyaddr. 
19189 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19190         case "$d_gethbyaddr" in
19191         $define)
19192                 $cat <<EOM
19193
19194 Checking to see what type of arguments are accepted by gethostbyaddr().
19195 EOM
19196                 hdrs="$define sys/types.h
19197                         $d_socket sys/socket.h 
19198                         $i_niin netinet/in.h 
19199                         $i_netdb netdb.h
19200                         $i_unistd unistd.h"
19201                 : The first arg can 'char *' or 'void *'
19202                 : The second arg is some of integral type
19203                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19204                         for yyy in size_t long int; do
19205                                 case "$netdb_host_type" in
19206                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19207                                         if ./protochk "$try" $hdrs; then
19208                                                 echo "Your system accepts $xxx for the first arg."
19209                                                 echo "...and $yyy for the second arg."
19210                                                 netdb_host_type="$xxx"
19211                                                 netdb_hlen_type="$yyy"
19212                                         fi
19213                                         ;;
19214                                 esac
19215                         done
19216                 done
19217                 : In case none of those worked, prompt the user.
19218                 case "$netdb_host_type" in
19219                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19220                         dflt='char *'
19221                         . ./myread
19222                         netdb_host_type=$ans
19223                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19224                         dflt="$sizetype"
19225                         . ./myread
19226                         netdb_hlen_type=$ans
19227                         ;;
19228                 esac
19229                 ;;
19230         *)      : no gethostbyaddr, so pick harmless defaults
19231                 netdb_host_type='char *'
19232                 netdb_hlen_type="$sizetype"
19233                 ;;
19234         esac
19235         # Remove the "const" if needed. -- but then we'll have a 
19236         # prototype clash!
19237         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19238 fi
19239
19240 : check for type of argument to gethostbyname. 
19241 if test "X$netdb_name_type" = X ; then
19242         case "$d_gethbyname" in
19243         $define)
19244                 $cat <<EOM
19245
19246 Checking to see what type of argument is accepted by gethostbyname().
19247 EOM
19248                 hdrs="$define sys/types.h
19249                         $d_socket sys/socket.h 
19250                         $i_niin netinet/in.h 
19251                         $i_netdb netdb.h
19252                         $i_unistd unistd.h"
19253                 for xxx in "const char *" "char *"; do
19254                         case "$netdb_name_type" in
19255                         '')     try="extern struct hostent *gethostbyname($xxx);"
19256                                 if ./protochk "$try" $hdrs; then
19257                                         echo "Your system accepts $xxx."
19258                                         netdb_name_type="$xxx"
19259                                 fi
19260                                 ;;
19261                         esac
19262                 done
19263                 : In case none of those worked, prompt the user.
19264                 case "$netdb_name_type" in
19265                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19266                         dflt='char *'
19267                         . ./myread
19268                         netdb_name_type=$ans
19269                         ;;
19270                 esac
19271                 ;;
19272         *)      : no gethostbyname, so pick harmless default
19273                 netdb_name_type='char *'
19274                 ;;
19275         esac
19276 fi
19277
19278 : check for type of 1st argument to getnetbyaddr. 
19279 if test "X$netdb_net_type" = X ; then
19280         case "$d_getnbyaddr" in
19281         $define)
19282                 $cat <<EOM
19283
19284 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19285 EOM
19286                 hdrs="$define sys/types.h
19287                         $d_socket sys/socket.h 
19288                         $i_niin netinet/in.h 
19289                         $i_netdb netdb.h
19290                         $i_unistd unistd.h"
19291                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19292                         case "$netdb_net_type" in
19293                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19294                                 if ./protochk "$try" $hdrs; then
19295                                         echo "Your system accepts $xxx."
19296                                         netdb_net_type="$xxx"
19297                                 fi
19298                                 ;;
19299                         esac
19300                 done
19301                 : In case none of those worked, prompt the user.
19302                 case "$netdb_net_type" in
19303                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19304                         dflt='long'
19305                         . ./myread
19306                         netdb_net_type=$ans
19307                         ;;
19308                 esac
19309                 ;;
19310         *)      : no getnetbyaddr, so pick harmless default
19311                 netdb_net_type='long'
19312                 ;;
19313         esac
19314 fi
19315 : locate the preferred pager for this system
19316 fn=f/
19317 case "$pager" in
19318 '')
19319         dflt=''
19320         case "$pg" in
19321         /*) dflt=$pg;;
19322         [a-zA-Z]:/*) dflt=$pg;;
19323         esac
19324         case "$more" in
19325         /*) dflt=$more;;
19326         [a-zA-Z]:/*) dflt=$more;;
19327         esac
19328         case "$less" in
19329         /*) dflt=$less;;
19330         [a-zA-Z]:/*) dflt=$less;;
19331         esac
19332         case "$dflt" in
19333         '') dflt=/usr/ucb/more;;
19334         esac
19335         ;;
19336 *)      dflt="$pager"
19337         : Instruct ./getfile to trust the hinted or previous pager value,
19338         : even if it does not begin with a slash.  For example, on os2,
19339         : pager might be cmd /c more.  See comments in UU/getfile.
19340         fn="f/($pager)"
19341         ;;
19342 esac
19343 echo " "
19344 rp='What pager is used on your system?'
19345 . ./getfile
19346 pager="$ans"
19347
19348 : see what type pids are declared as in the kernel
19349 rp="What is the type of process ids on this system?"
19350 set pid_t pidtype int stdio.h sys/types.h
19351 eval $typedef_ask
19352
19353 : see if ar generates random libraries by itself
19354 echo " "
19355 echo "Checking how to generate random libraries on your machine..." >&4
19356 echo 'int bar1() { return bar2(); }' > bar1.c
19357 echo 'int bar2() { return 2; }' > bar2.c
19358 $cat > foo.c <<EOP
19359 #$i_stdlib I_STDLIB
19360 #ifdef I_STDLIB
19361 #include <stdlib.h>
19362 #endif
19363 int main() { printf("%d\n", bar1()); exit(0); }
19364 EOP
19365 $cc $ccflags -c bar1.c >/dev/null 2>&1
19366 $cc $ccflags -c bar2.c >/dev/null 2>&1
19367 $cc $ccflags -c foo.c >/dev/null 2>&1
19368 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19369 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19370         $run ./foobar >/dev/null 2>&1; then
19371         echo "$ar appears to generate random libraries itself."
19372         orderlib=false
19373         if [ "X$ranlib" = "X" ]; then
19374             ranlib=":"
19375         fi
19376 elif $ar s bar$_a >/dev/null 2>&1 &&
19377         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19378         $run ./foobar >/dev/null 2>&1; then
19379                 echo "a table of contents needs to be added with '$ar s'."
19380                 orderlib=false
19381                 ranlib="$ar s"
19382 elif $ar ts bar$_a >/dev/null 2>&1 &&
19383         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19384         $run ./foobar >/dev/null 2>&1; then
19385                 echo "a table of contents needs to be added with '$ar ts'."
19386                 orderlib=false
19387                 ranlib="$ar ts"
19388 else
19389         case "$ranlib" in
19390         :) ranlib='';;
19391         '')
19392                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19393                 $test -f $ranlib || ranlib=''
19394                 ;;
19395         esac
19396         if $test -n "$ranlib"; then
19397                 echo "your system has '$ranlib'; we'll use that."
19398                 orderlib=false
19399         else
19400                 echo "your system doesn't seem to support random libraries"
19401                 echo "so we'll use lorder and tsort to order the libraries."
19402                 orderlib=true
19403                 ranlib=":"
19404         fi
19405 fi
19406 $rm -f foo* bar*
19407
19408 : check for type of arguments to select. 
19409 case "$selecttype" in
19410 '') case "$d_select" in
19411         $define)
19412                 echo " "
19413                 $cat <<EOM
19414 Checking to see what type of arguments are accepted by select().
19415 EOM
19416                 hdrs="$define sys/types.h
19417                         $i_systime sys/time.h 
19418                         $i_sysselct sys/select.h
19419                         $d_socket sys/socket.h"
19420                 : The first arg can be int, unsigned, or size_t
19421                 : The last arg may or may not be 'const'
19422                 val=''
19423                 : void pointer has been seen but using that
19424                 : breaks the selectminbits test
19425                 for xxx in 'fd_set *' 'int *'; do
19426                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19427                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19428                                         case "$val" in
19429                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19430                                                 if ./protochk "$try" $hdrs; then
19431                                                         echo "Your system accepts $xxx."
19432                                                         val="$xxx"
19433                                                 fi
19434                                                 ;;
19435                                         esac
19436                                 done
19437                         done
19438                 done
19439                 case "$val" in
19440                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19441                         case "$d_fd_set" in
19442                                 $define) dflt="fd_set *" ;;
19443                                 *)              dflt="int *" ;;
19444                         esac
19445                         . ./myread
19446                         val=$ans
19447                         ;;
19448                 esac
19449                 selecttype="$val"
19450                 ;;
19451         *)      : no select, so pick a harmless default
19452                 selecttype='int *'
19453                 ;;
19454         esac
19455         ;;
19456 esac
19457
19458 : check for the select 'width'
19459 case "$selectminbits" in
19460 '') safebits=`expr $ptrsize \* 8`
19461     case "$d_select" in
19462         $define)
19463                 $cat <<EOM
19464
19465 Checking to see on how many bits at a time your select() operates...
19466 EOM
19467                 $cat >try.c <<EOCP
19468 #include <sys/types.h>
19469 #$i_time I_TIME
19470 #$i_systime I_SYS_TIME
19471 #$i_systimek I_SYS_TIME_KERNEL
19472 #ifdef I_TIME
19473 #   include <time.h>
19474 #endif
19475 #ifdef I_SYS_TIME
19476 #   ifdef I_SYS_TIME_KERNEL
19477 #       define KERNEL
19478 #   endif
19479 #   include <sys/time.h>
19480 #   ifdef I_SYS_TIME_KERNEL
19481 #       undef KERNEL
19482 #   endif
19483 #endif
19484 #$i_sysselct I_SYS_SELECT
19485 #ifdef I_SYS_SELECT
19486 #include <sys/select.h>
19487 #endif
19488 #$d_socket HAS_SOCKET
19489 #ifdef HAS_SOCKET
19490 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19491 #endif
19492 #include <stdio.h>
19493 #$i_stdlib I_STDLIB
19494 #ifdef I_STDLIB
19495 #include <stdlib.h>
19496 #endif
19497 $selecttype b;
19498 #define S sizeof(*(b))
19499 #define MINBITS 64
19500 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19501 #define NBITS  (NBYTES * 8)
19502 int main() {
19503     char *s = malloc(NBYTES);
19504     struct timeval t;
19505     int i;
19506     FILE* fp;
19507     int fd;
19508
19509     if (!s)
19510         exit(1);
19511     fclose(stdin);
19512     fp = fopen("try.c", "r");
19513     if (fp == 0)
19514       exit(2);
19515     fd = fileno(fp);
19516     if (fd < 0)
19517       exit(3);
19518     b = ($selecttype)s;
19519     for (i = 0; i < NBITS; i++)
19520         FD_SET(i, b);
19521     t.tv_sec  = 0;
19522     t.tv_usec = 0;
19523     select(fd + 1, b, 0, 0, &t);
19524     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19525     free(s);
19526     printf("%d\n", i + 1);
19527     return 0;
19528 }
19529 EOCP
19530                 set try
19531                 if eval $compile_ok; then
19532                         selectminbits=`$run ./try`
19533                         case "$selectminbits" in
19534                         '')     cat >&4 <<EOM
19535 Cannot figure out on how many bits at a time your select() operates.
19536 I'll play safe and guess it is $safebits bits.
19537 EOM
19538                                 selectminbits=$safebits
19539                                 bits="$safebits bits"
19540                                 ;;
19541                         1)      bits="1 bit" ;;
19542                         *)      bits="$selectminbits bits" ;;
19543                         esac
19544                         echo "Your select() operates on $bits at a time." >&4
19545                 else
19546                         rp='What is the minimum number of bits your select() operates on?'
19547                         case "$byteorder" in
19548                         12345678)       dflt=64 ;;
19549                         1234)           dflt=32 ;;
19550                         *)              dflt=1  ;;
19551                         esac
19552                         . ./myread
19553                         val=$ans
19554                         selectminbits="$val"
19555                 fi
19556                 $rm -f try.* try
19557                 ;;
19558         *)      : no select, so pick a harmless default
19559                 selectminbits=$safebits
19560                 ;;
19561         esac
19562         ;;
19563 esac
19564
19565 : Trace out the files included by signal.h, then look for SIGxxx names.
19566 : Remove SIGARRAYSIZE used by HPUX.
19567 : Remove SIGSTKSIZE used by Linux.
19568 : Remove SIGSTKSZ used by Posix.
19569 : Remove SIGTYP void lines used by OS2.
19570 : Some cpps, like os390, dont give the file name anywhere
19571 if [ "X$fieldn" = X ]; then
19572         : Just make some guesses.  We check them later.
19573         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19574 else
19575         xxx=`echo '#include <signal.h>' |
19576         $cppstdin $cppminus $cppflags 2>/dev/null |
19577         $grep '^[       ]*#.*include' | 
19578         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19579 fi
19580 : Check this list of files to be sure we have parsed the cpp output ok.
19581 : This will also avoid potentially non-existent files, such 
19582 : as ../foo/bar.h
19583 xxxfiles=''
19584 for xx in $xxx /dev/null ; do
19585         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19586 done
19587 : If we have found no files, at least try signal.h
19588 case "$xxxfiles" in
19589 '')     xxxfiles=`./findhdr signal.h` ;;
19590 esac
19591 xxx=`awk '
19592 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19593         print substr($2, 4, 20)
19594 }
19595 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19596         print substr($3, 4, 20)
19597 }' $xxxfiles`
19598 : Append some common names just in case the awk scan failed.
19599 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19600 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19601 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19602 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19603 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19604
19605 : generate a few handy files for later
19606 $cat > signal.c <<EOCP
19607 #include <sys/types.h>
19608 #include <signal.h>
19609 #$i_stdlib I_STDLIB
19610 #ifdef I_STDLIB
19611 #include <stdlib.h>
19612 #endif
19613 #include <stdio.h>
19614 int main() {
19615
19616 /* Strange style to avoid deeply-nested #if/#else/#endif */
19617 #ifndef NSIG
19618 #  ifdef _NSIG
19619 #    define NSIG (_NSIG)
19620 #  endif
19621 #endif
19622
19623 #ifndef NSIG
19624 #  ifdef SIGMAX
19625 #    define NSIG (SIGMAX+1)
19626 #  endif
19627 #endif
19628
19629 #ifndef NSIG
19630 #  ifdef SIG_MAX
19631 #    define NSIG (SIG_MAX+1)
19632 #  endif
19633 #endif
19634
19635 #ifndef NSIG
19636 #  ifdef _SIG_MAX
19637 #    define NSIG (_SIG_MAX+1)
19638 #  endif
19639 #endif
19640
19641 #ifndef NSIG
19642 #  ifdef MAXSIG
19643 #    define NSIG (MAXSIG+1)
19644 #  endif
19645 #endif
19646
19647 #ifndef NSIG
19648 #  ifdef MAX_SIG
19649 #    define NSIG (MAX_SIG+1)
19650 #  endif
19651 #endif
19652
19653 #ifndef NSIG
19654 #  ifdef SIGARRAYSIZE
19655 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19656 #  endif
19657 #endif
19658
19659 #ifndef NSIG
19660 #  ifdef _sys_nsig
19661 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19662 #  endif
19663 #endif
19664
19665 /* Default to some arbitrary number that's big enough to get most
19666    of the common signals.
19667 */
19668 #ifndef NSIG
19669 #    define NSIG 50
19670 #endif
19671
19672 printf("NSIG %d\n", NSIG);
19673
19674 #ifndef JUST_NSIG
19675
19676 EOCP
19677
19678 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19679 {
19680         printf "#ifdef SIG"; printf $1; printf "\n"
19681         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19682         printf $1; printf ");\n"
19683         printf "#endif\n"
19684 }
19685 END {
19686         printf "#endif /* JUST_NSIG */\n";
19687         printf "exit(0);\n}\n";
19688 }
19689 ' >>signal.c
19690 $cat >signal.awk <<'EOP'
19691 BEGIN { ndups = 0 }
19692 $1 ~ /^NSIG$/ { nsig = $2 }
19693 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19694     if ($2 > maxsig) { maxsig = $2 }
19695     if (sig_name[$2]) {
19696         dup_name[ndups] = $1
19697         dup_num[ndups] = $2
19698         ndups++ 
19699     }
19700     else {
19701         sig_name[$2] = $1
19702         sig_num[$2] = $2
19703     }
19704 }
19705 END { 
19706     if (nsig == 0) {
19707         nsig = maxsig + 1
19708     }
19709     printf("NSIG %d\n", nsig);
19710     for (n = 1; n < nsig; n++) {
19711         if (sig_name[n]) {
19712             printf("%s %d\n", sig_name[n], sig_num[n])
19713         }
19714         else {
19715             printf("NUM%d %d\n", n, n) 
19716         }
19717     }
19718     for (n = 0; n < ndups; n++) {
19719         printf("%s %d\n", dup_name[n], dup_num[n])
19720     }
19721 }
19722 EOP
19723 $cat >signal_cmd <<EOS
19724 $startsh
19725 if $test -s signal.lst; then
19726     echo "Using your existing signal.lst file"
19727         exit 0
19728 fi
19729 xxx="$xxx"
19730 EOS
19731 $cat >>signal_cmd <<'EOS'
19732
19733 set signal
19734 if eval $compile_ok; then
19735         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19736 else
19737         echo "(I can't seem be able to compile the whole test program)" >&4
19738         echo "(I'll try it in little pieces.)" >&4
19739         set signal -DJUST_NSIG
19740         if eval $compile_ok; then
19741                 $run ./signal$_exe > signal.nsg
19742                 $cat signal.nsg
19743         else
19744                 echo "I can't seem to figure out how many signals you have." >&4
19745                 echo "Guessing 50." >&4
19746                 echo 'NSIG 50' > signal.nsg
19747         fi
19748         : Now look at all the signal names, one at a time.
19749         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19750                 $cat > signal.c <<EOCP
19751 #include <sys/types.h>
19752 #include <signal.h>
19753 #include <stdio.h>
19754 int main() {
19755 printf("$xx %d\n", SIG${xx});
19756 return 0;
19757 }
19758 EOCP
19759                 set signal
19760                 if eval $compile; then
19761                         echo "SIG${xx} found."
19762                         $run ./signal$_exe  >> signal.ls1
19763                 else
19764                         echo "SIG${xx} NOT found."
19765                 fi
19766         done
19767         if $test -s signal.ls1; then
19768                 $cat signal.nsg signal.ls1 |
19769                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19770         fi
19771
19772 fi
19773 if $test -s signal.lst; then
19774         :
19775 else
19776         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19777         echo 'kill -l' >signal
19778         set X `csh -f <signal`
19779         $rm -f signal
19780         shift
19781         case $# in
19782         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19783         esac
19784         echo $@ | $tr ' ' $trnl | \
19785             $awk '{ printf "%s %d\n", $1, ++s; }
19786                   END { printf "NSIG %d\n", ++s }' >signal.lst
19787 fi
19788 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19789 EOS
19790 chmod a+x signal_cmd
19791 $eunicefix signal_cmd
19792
19793 : generate list of signal names
19794 echo " "
19795 case "$sig_name_init" in
19796 '') doinit=yes ;;
19797 *)  case "$sig_num_init" in
19798     ''|*,*) doinit=yes ;;
19799     esac ;;
19800 esac
19801 case "$doinit" in
19802 yes)
19803         echo "Generating a list of signal names and numbers..." >&4
19804         . ./signal_cmd
19805         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19806         sig_name=`$awk 'BEGIN { printf "ZERO " }
19807                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19808         sig_num=`$awk  'BEGIN { printf "0 " }
19809                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19810         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19811                              !/^NSIG/   { printf "\"%s\", ", $1 }
19812                              END        { printf "0\n" }' signal.lst`
19813         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19814                              !/^NSIG/   { printf "%d, ", $2}
19815                              END        { printf "0\n"}' signal.lst`
19816         ;;
19817 esac
19818 echo "The following $sig_count signals are available:"
19819 echo " "
19820 echo $sig_name | $awk \
19821 'BEGIN { linelen = 0 }
19822 {
19823         for (i = 1; i <= NF; i++) {
19824                 name = "SIG" $i " "
19825                 linelen = linelen + length(name)
19826                 if (linelen > 70) {
19827                         printf "\n"
19828                         linelen = length(name)
19829                 }
19830                 printf "%s", name
19831         }
19832         printf "\n"
19833 }'
19834 sig_size=`echo $sig_name | awk '{print NF}'`
19835 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19836
19837 echo " "
19838 case "$sizetype" in
19839 *_t) zzz="$sizetype"    ;;
19840 *)   zzz="filesize"     ;;
19841 esac
19842 echo "Checking the size of $zzz..." >&4 
19843 cat > try.c <<EOCP
19844 #include <sys/types.h>
19845 #include <stdio.h>
19846 #$i_stdlib I_STDLIB
19847 #ifdef I_STDLIB
19848 #include <stdlib.h>
19849 #endif
19850 int main() {
19851     printf("%d\n", (int)sizeof($sizetype));
19852     exit(0);
19853 }
19854 EOCP
19855 set try
19856 if eval $compile_ok; then
19857         yyy=`$run ./try`
19858         case "$yyy" in
19859         '')     sizesize=4
19860                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19861                 ;;
19862         *)      sizesize=$yyy
19863                 echo "Your $zzz size is $sizesize bytes."
19864                 ;;
19865         esac
19866 else
19867         sizesize=4
19868         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19869 fi
19870
19871
19872 : check for socklen_t
19873 echo " "
19874 echo "Checking to see if you have socklen_t..." >&4
19875 $cat >try.c <<EOCP
19876 #include <sys/types.h>
19877 #$d_socket HAS_SOCKET
19878 #ifdef HAS_SOCKET
19879 #include <sys/socket.h>
19880 #endif
19881 int main() { socklen_t x = 16; }
19882 EOCP
19883 set try
19884 if eval $compile; then
19885         val="$define"
19886         echo "You have socklen_t."
19887 else
19888         val="$undef"
19889         echo "You do not have socklen_t."
19890         case "$sizetype" in
19891         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19892         esac
19893 fi
19894 $rm -f try try.*
19895 set d_socklen_t
19896 eval $setvar
19897
19898 : see if this is a socks.h system
19899 set socks.h i_socks
19900 eval $inhdr
19901
19902 : check for type of the size argument to socket calls
19903 case "$d_socket" in
19904 "$define")
19905         $cat <<EOM
19906
19907 Checking to see what type is the last argument of accept().
19908 EOM
19909         yyy=''
19910         case "$d_socklen_t" in
19911         "$define") yyy="$yyy socklen_t"
19912         esac
19913         yyy="$yyy $sizetype int long unsigned"
19914         for xxx in $yyy; do
19915                 case "$socksizetype" in
19916                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19917                         case "$usesocks" in
19918                         "$define")
19919                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19920                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19921                                         socksizetype="$xxx"
19922                                 fi
19923                                 ;;
19924                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19925                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19926                                         socksizetype="$xxx"
19927                                 fi
19928                                 ;;
19929                         esac
19930                         ;;
19931                 esac
19932         done
19933 : In case none of those worked, prompt the user.
19934         case "$socksizetype" in
19935         '')     rp='What is the type for socket address structure sizes?'
19936                 dflt='int'
19937                 . ./myread
19938                 socksizetype=$ans
19939                 ;;
19940         esac
19941         ;;
19942 *)      : no sockets, so pick relatively harmless default
19943         socksizetype='int'
19944         ;;
19945 esac
19946
19947 : see what type is used for signed size_t
19948 set ssize_t ssizetype int stdio.h sys/types.h
19949 eval $typedef
19950 dflt="$ssizetype"
19951 $cat > try.c <<EOM
19952 #include <stdio.h>
19953 #$i_stdlib I_STDLIB
19954 #ifdef I_STDLIB
19955 #include <stdlib.h>
19956 #endif
19957 #include <sys/types.h>
19958 #define Size_t $sizetype
19959 #define SSize_t $dflt
19960 int main()
19961 {
19962         if (sizeof(Size_t) == sizeof(SSize_t))
19963                 printf("$dflt\n");
19964         else if (sizeof(Size_t) == sizeof(int))
19965                 printf("int\n");
19966         else 
19967                 printf("long\n");
19968         exit(0);
19969 }
19970 EOM
19971 echo " "
19972 set try
19973 if eval $compile_ok && $run ./try > /dev/null; then
19974         ssizetype=`$run ./try`
19975         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19976 else
19977         $cat >&4 <<EOM
19978 Help! I can't compile and run the ssize_t test program: please enlighten me!
19979 (This is probably a misconfiguration in your system or libraries, and
19980 you really ought to fix it.  Still, I'll try anyway.)
19981
19982 I need a type that is the same size as $sizetype, but is guaranteed to
19983 be signed.  Common values are ssize_t, int and long.
19984
19985 EOM
19986         rp="What signed type is the same size as $sizetype?"
19987         . ./myread
19988         ssizetype="$ans"
19989 fi
19990 $rm -f try try.*
19991
19992 : see what type of char stdio uses.
19993 echo " "
19994 echo '#include <stdio.h>' > stdio.c
19995 $cppstdin $cppminus < stdio.c > stdioh
19996 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19997         echo "Your stdio uses unsigned chars." >&4
19998         stdchar="unsigned char"
19999 else
20000         echo "Your stdio uses signed chars." >&4
20001         stdchar="char"
20002 fi
20003 $rm -f stdio.* stdioh
20004
20005 : see what type uids are declared as in the kernel
20006 echo " "
20007 echo "Looking for the type for user ids returned by getuid()."
20008 set uid_t uidtype xxx stdio.h sys/types.h
20009 eval $typedef
20010 case "$uidtype" in
20011 xxx)
20012         xxx=`./findhdr sys/user.h`
20013         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20014         case $1 in
20015         unsigned) dflt="$1 $2" ;;
20016         *) dflt="$1" ;;
20017         esac
20018         ;;
20019 *) dflt="$uidtype";;
20020 esac
20021 case "$uidtype" in
20022 uid_t)  echo "uid_t found." ;;
20023 *)      rp="What is the type for user ids returned by getuid()?"
20024         . ./myread
20025         uidtype="$ans"
20026         ;;
20027 esac
20028
20029 echo " "
20030 case "$uidtype" in
20031 *_t) zzz="$uidtype"     ;;
20032 *)   zzz="uid"          ;;
20033 esac
20034 echo "Checking the size of $zzz..." >&4 
20035 cat > try.c <<EOCP
20036 #include <sys/types.h>
20037 #include <stdio.h>
20038 #$i_stdlib I_STDLIB
20039 #ifdef I_STDLIB
20040 #include <stdlib.h>
20041 #endif
20042 int main() {
20043     printf("%d\n", (int)sizeof($uidtype));
20044     exit(0);
20045 }
20046 EOCP
20047 set try
20048 if eval $compile_ok; then
20049         yyy=`$run ./try`
20050         case "$yyy" in
20051         '')     uidsize=4
20052                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20053                 ;;
20054         *)      uidsize=$yyy
20055                 echo "Your $zzz is $uidsize bytes long."
20056                 ;;
20057         esac
20058 else
20059         uidsize=4
20060         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20061 fi
20062
20063 echo " "
20064 case "$uidtype" in
20065 *_t) zzz="$uidtype"     ;;
20066 *)   zzz="uid"          ;;
20067 esac
20068 echo "Checking the sign of $zzz..." >&4
20069 cat > try.c <<EOCP
20070 #include <sys/types.h>
20071 #include <stdio.h>
20072 int main() {
20073         $uidtype foo = -1;
20074         if (foo < 0)
20075                 printf("-1\n");
20076         else
20077                 printf("1\n");
20078 }
20079 EOCP
20080 set try
20081 if eval $compile; then
20082         yyy=`$run ./try`
20083         case "$yyy" in
20084         '')     uidsign=1
20085                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20086                 ;;
20087         *)      uidsign=$yyy
20088                 case "$uidsign" in
20089                  1) echo "Your $zzz is unsigned." ;;
20090                 -1) echo "Your $zzz is signed."   ;;
20091                 esac
20092                 ;;
20093         esac
20094 else
20095         uidsign=1
20096         echo "(I can't compile the test program--guessing unsigned.)" >&4
20097 fi
20098
20099
20100
20101 echo " "
20102 $echo "Checking the format string to be used for uids..." >&4
20103
20104 case "$uidsign" in
20105 -1)     if $test X"$uidsize" = X"$ivsize"; then
20106                 uidformat="$ivdformat"
20107         else
20108                 if $test X"$uidsize" = X"$longsize"; then
20109                         uidformat='"ld"'
20110                 else
20111                         if $test X"$uidsize" = X"$intsize"; then
20112                                 uidformat='"d"'
20113                         else
20114                                 if $test X"$uidsize" = X"$shortsize"; then
20115                                         uidformat='"hd"'
20116                                 fi
20117                         fi
20118                 fi
20119         fi
20120         ;;
20121 *)      if $test X"$uidsize" = X"$uvsize"; then
20122                 uidformat="$uvuformat"
20123         else
20124                 if $test X"$uidsize" = X"$longsize"; then
20125                         uidformat='"lu"'
20126                 else
20127                         if $test X"$uidsize" = X"$intsize"; then
20128                                 uidformat='"u"'
20129                         else
20130                                 if $test X"$uidsize" = X"$shortsize"; then
20131                                         uidformat='"hu"'
20132                                 fi
20133                         fi
20134                 fi
20135         fi
20136         ;;
20137 esac
20138
20139
20140 case "$usesitecustomize" in
20141     $define|true|[Yy]*)
20142         usesitecustomize="$define"
20143         ;;
20144     *)
20145         usesitecustomize="$undef"
20146         ;;
20147     esac
20148
20149 : determine compiler compiler
20150 case "$yacc" in
20151 '')
20152         dflt=yacc;;
20153 *)
20154         dflt="$yacc";;
20155 esac
20156 echo " "
20157 comp='yacc'
20158 if $test -f "$byacc$_exe"; then
20159         dflt="$byacc"
20160         comp="byacc or $comp"
20161 fi
20162 if $test -f "$bison$_exe"; then
20163         comp="$comp or bison -y"
20164 fi
20165 rp="Which compiler compiler ($comp) shall I use?"
20166 . ./myread
20167 yacc="$ans"
20168 case "$yacc" in
20169 *bis*)
20170         case "$yacc" in
20171         *-y*) ;;
20172         *)
20173                 yacc="$yacc -y"
20174                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20175                 ;;
20176         esac
20177         ;;
20178 esac
20179
20180 : see if this is a fp.h system
20181 set fp.h i_fp
20182 eval $inhdr
20183
20184 : see if this is a fp_class.h system
20185 set fp_class.h i_fp_class
20186 eval $inhdr
20187
20188 : see if this is a ieeefp.h system
20189 case "$i_ieeefp" in
20190 '' ) set ieeefp.h i_ieeefp
20191      eval $inhdr
20192      ;;
20193 esac
20194
20195 : see if this is a libutil.h system
20196 set libutil.h i_libutil
20197 eval $inhdr
20198
20199 : see if mach cthreads are available
20200 if test "X$usethreads" = "X$define"; then
20201         set mach/cthreads.h i_machcthr
20202         eval $inhdr
20203 else
20204         i_machcthr="$undef"
20205 fi
20206
20207
20208
20209 : see if this is a mntent.h system
20210 set mntent.h i_mntent
20211 eval $inhdr
20212
20213 : see if ndbm.h is available
20214 set ndbm.h t_ndbm
20215 eval $inhdr
20216
20217 case "$t_ndbm" in
20218 $undef)
20219     # Some Linux distributions such as RedHat 7.1 put the
20220     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20221     if $test -f /usr/include/gdbm/ndbm.h; then
20222         echo '<gdbm/ndbm.h> found.'
20223         ccflags="$ccflags -I/usr/include/gdbm"
20224         cppflags="$cppflags -I/usr/include/gdbm"
20225         t_ndbm=$define
20226     fi
20227     ;;
20228 esac
20229
20230 case "$t_ndbm" in
20231 $define)
20232         : see if dbm_open exists
20233         set dbm_open d_dbm_open
20234         eval $inlibc
20235         case "$d_dbm_open" in
20236         $undef)
20237                 t_ndbm="$undef"
20238                 echo "We won't be including <ndbm.h>"
20239                 ;;
20240         esac
20241         ;;
20242 esac
20243 val="$t_ndbm"
20244 set i_ndbm
20245 eval $setvar
20246
20247 : see if net/errno.h is available
20248 val=''
20249 set net/errno.h val
20250 eval $inhdr
20251
20252 : Unfortunately, it causes problems on some systems.  Arrgh.
20253 case "$val" in
20254 $define)
20255         cat > try.c <<'EOM'
20256 #include <stdio.h>
20257 #include <errno.h>
20258 #include <net/errno.h>
20259 int func()
20260 {
20261         return ENOTSOCK;
20262 }
20263 EOM
20264         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20265                 echo "We'll be including <net/errno.h>." >&4
20266         else
20267                 echo "We won't be including <net/errno.h>." >&4
20268                 val="$undef"
20269         fi
20270         $rm -f try.* try
20271         ;;
20272 esac
20273 set i_neterrno
20274 eval $setvar
20275
20276 : see if netinet/tcp.h is available
20277 set netinet/tcp.h i_netinettcp
20278 eval $inhdr
20279
20280 : see if this is a poll.h system
20281 set poll.h i_poll
20282 eval $inhdr
20283
20284 : see if this is a prot.h system
20285 set prot.h i_prot
20286 eval $inhdr
20287
20288 echo " "
20289 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20290 $cat <<'EOSH' > Cppsym.know
20291 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20292 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20293 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20294 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20295 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20296 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20297 bull c cadmus clipper CMU COFF COMPILER_VERSION
20298 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20299 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20300 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20301 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20302 GLIBC GLIBC_MINOR
20303 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20304 H3050R H3050RX hbullx20 hcx host_mips
20305 hp200 hp300 hp700 HP700 hp800 hp9000
20306 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20307 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20308 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20309 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20310 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20311 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20312 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20313 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20314 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20315 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20316 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20317 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20318 MATH_HAS_NO_SIDE_EFFECTS
20319 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20320 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20321 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20322 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20323 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20324 NetBSD news1500 news1700 news1800 news1900 news3700
20325 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20326 ns32016 ns32332 ns32k nsc32000
20327 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20328 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20329 pc532 pdp11 PGC PIC plexus PORTAR posix
20330 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20331 POSIX_C_SOURCE POSIX_SOURCE POWER
20332 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20333 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20334 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20335 sony sony_news sonyrisc sparc sparclite spectrum
20336 stardent stdc STDC_EXT stratos sun sun3 sun386
20337 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20338 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20339 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20340 sysV68 sysV88 Tek4132 Tek4300 titan
20341 TM3200 TM5400 TM5600
20342 tower tower32 tower32_200 tower32_600 tower32_700
20343 tower32_800 tower32_850 tss
20344 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20345 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20346 unix UNIX95 UNIX99 unixpc unos
20347 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20348 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20349 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20350 USGr4 USGr4_2
20351 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20352 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20353 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20354 z8000
20355 EOSH
20356 # Maybe put other stuff here too.
20357 cat <<EOSH >>Cppsym.know
20358 $osname
20359 EOSH
20360 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20361 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20362 $cat Cppsym.know > Cppsym.c
20363 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20364 $rm -f Cppsym.a Cppsym.b Cppsym.c
20365 cat <<EOSH > Cppsym
20366 $startsh
20367 if $test \$# -gt 0; then
20368     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20369     if $test -s Cppsym.got; then
20370         $rm -f Cppsym.got
20371         exit 0
20372     fi
20373     $rm -f Cppsym.got
20374     exit 1
20375 else
20376     $tr " " "$trnl" | ./Cppsym.try
20377     exit 0
20378 fi
20379 EOSH
20380 chmod +x Cppsym
20381 $eunicefix Cppsym
20382 cat <<EOSH > Cppsym.try
20383 $startsh
20384 cat <<'EOCP' > try.c
20385 #include <stdio.h>
20386 #if cpp_stuff == 1
20387 #define STRINGIFY(a)    "a"
20388 #endif
20389 #if cpp_stuff == 42
20390 #define StGiFy(a)  #a
20391 #define STRINGIFY(a)    StGiFy(a)
20392 #endif
20393 #if $cpp_stuff != 1 && $cpp_stuff != 42
20394 #   include "Bletch: How does this C preprocessor stringify macros?"
20395 #endif
20396 int main() {
20397 EOCP
20398 $awk \\
20399 EOSH
20400 cat <<'EOSH' >> Cppsym.try
20401 'length($1) > 0 {
20402     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20403     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20404     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20405     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20406 }'       >> try.c
20407 echo 'return 0;}' >> try.c
20408 EOSH
20409 cat <<EOSH >> Cppsym.try
20410 ccflags="$ccflags"
20411 case "$osname-$gccversion" in
20412 irix-) ccflags="\$ccflags -woff 1178" ;;
20413 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20414 esac
20415 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20416 EOSH
20417 chmod +x Cppsym.try
20418 $eunicefix Cppsym.try
20419 ./Cppsym < Cppsym.know > Cppsym.true
20420 : Add in any linux cpp "predefined macros":
20421 case "$osname::$gccversion" in
20422   *linux*::*.*)
20423     tHdrH=_tmpHdr
20424     rm -f $tHdrH'.h' $tHdrH
20425     touch $tHdrH'.h'
20426     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20427        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20428        if [ -s $tHdrH'_cppsym.real' ]; then
20429           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20430        fi
20431     fi
20432     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20433   ;;
20434 esac
20435 : now check the C compiler for additional symbols
20436 postprocess_cc_v=''
20437 case "$osname" in
20438 aix) postprocess_cc_v="|$tr , ' '" ;;
20439 esac
20440 $cat >ccsym <<EOS
20441 $startsh
20442 $cat >tmp.c <<EOF
20443 extern int foo;
20444 EOF
20445 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20446 do
20447         case "\$i" in
20448         -D*) echo "\$i" | $sed 's/^-D//';;
20449         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20450         esac
20451 done
20452 $rm -f try.c
20453 EOS
20454 postprocess_cc_v=''
20455 chmod +x ccsym
20456 $eunicefix ccsym
20457 ./ccsym > ccsym1.raw
20458 if $test -s ccsym1.raw; then
20459        $sort ccsym1.raw | $uniq >ccsym.raw
20460 else
20461        mv ccsym1.raw ccsym.raw
20462 fi
20463
20464 $awk '/\=/ { print $0; next }
20465         { print $0"=1" }' ccsym.raw >ccsym.list
20466 $comm -13 Cppsym.true ccsym.list >ccsym.own
20467 $comm -12 Cppsym.true ccsym.list >ccsym.com
20468 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20469 also=''
20470 if $test -z ccsym.raw; then
20471         echo "Your C compiler doesn't seem to define any symbols!" >&4
20472         echo " "
20473         echo "However, your C preprocessor defines the following symbols:"
20474         $cat Cppsym.true
20475         ccsymbols=''
20476         cppsymbols=`$cat Cppsym.true`
20477         cppsymbols=`echo $cppsymbols`
20478         cppccsymbols="$cppsymbols"
20479 else
20480         if $test -s ccsym.com; then
20481                 echo "Your C compiler and pre-processor define these symbols:"
20482                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20483                 also='also '
20484                 symbols='ones'
20485                 cppccsymbols=`$cat ccsym.com`
20486                 cppccsymbols=`echo $cppccsymbols`
20487                 $test "$silent" || sleep 1
20488         fi
20489         if $test -s ccsym.cpp; then
20490                 $test "$also" && echo " "
20491                 echo "Your C pre-processor ${also}defines the following symbols:"
20492                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20493                 also='further '
20494                 cppsymbols=`$cat ccsym.cpp`
20495                 cppsymbols=`echo $cppsymbols`
20496                 $test "$silent" || sleep 1
20497         fi
20498         if $test -s ccsym.own; then
20499                 $test "$also" && echo " "
20500                 echo "Your C compiler ${also}defines the following cpp symbols:"
20501                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20502                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20503                 ccsymbols=`$cat ccsym.own`
20504                 ccsymbols=`echo $ccsymbols`
20505                 $test "$silent" || sleep 1
20506         fi
20507 fi
20508
20509 : see if this is a termio system
20510 val="$undef"
20511 val2="$undef"
20512 val3="$undef"
20513 if $test `./findhdr termios.h`; then
20514         set tcsetattr i_termios
20515         eval $inlibc
20516         val3="$i_termios"
20517 fi
20518 echo " "
20519 case "$val3" in
20520 "$define") echo "You have POSIX termios.h... good!" >&4;;
20521 *) if ./Cppsym pyr; then
20522                 case "`/bin/universe`" in
20523                 ucb) if $test `./findhdr sgtty.h`; then
20524                                 val2="$define"
20525                                 echo "<sgtty.h> found." >&4
20526                         else
20527                                 echo "System is pyramid with BSD universe."
20528                                 echo "<sgtty.h> not found--you could have problems." >&4
20529                         fi;;
20530                 *) if $test `./findhdr termio.h`; then
20531                                 val="$define"
20532                                 echo "<termio.h> found." >&4
20533                         else
20534                                 echo "System is pyramid with USG universe."
20535                                 echo "<termio.h> not found--you could have problems." >&4
20536                         fi;;
20537                 esac
20538         elif ./usg; then
20539                 if $test `./findhdr termio.h`; then
20540                         echo "<termio.h> found." >&4
20541                         val="$define"
20542                 elif $test `./findhdr sgtty.h`; then
20543                         echo "<sgtty.h> found." >&4
20544                         val2="$define"
20545                 else
20546 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20547                 fi
20548         else
20549                 if $test `./findhdr sgtty.h`; then
20550                         echo "<sgtty.h> found." >&4
20551                         val2="$define"
20552                 elif $test `./findhdr termio.h`; then
20553                         echo "<termio.h> found." >&4
20554                         val="$define"
20555                 else
20556 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20557                 fi
20558         fi;;
20559 esac
20560 set i_termio; eval $setvar
20561 val=$val2; set i_sgtty; eval $setvar
20562 val=$val3; set i_termios; eval $setvar
20563
20564 : see if stddef is available
20565 set stddef.h i_stddef
20566 eval $inhdr
20567
20568 : see if this is a sunmath.h system
20569 set sunmath.h i_sunmath
20570 eval $inhdr
20571
20572 : see if sys/access.h is available
20573 set sys/access.h i_sysaccess
20574 eval $inhdr
20575
20576 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20577 set sys/filio.h i_sysfilio
20578 eval $inhdr
20579 echo " "
20580 if $test `./findhdr sys/ioctl.h`; then
20581         val="$define"
20582         echo '<sys/ioctl.h> found.' >&4
20583 else
20584         val="$undef"
20585         if $test $i_sysfilio = "$define"; then
20586             echo '<sys/ioctl.h> NOT found.' >&4
20587         else
20588                 $test $i_sgtty = "$define" && xxx="sgtty.h"
20589                 $test $i_termio = "$define" && xxx="termio.h"
20590                 $test $i_termios = "$define" && xxx="termios.h"
20591 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20592         fi
20593 fi
20594 set i_sysioctl
20595 eval $setvar
20596
20597 : see if socket ioctl defs are in sys/sockio.h
20598 echo " "
20599 xxx=`./findhdr sys/sockio.h`
20600 if $test "$xxx"; then
20601         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20602                 val="$define"
20603                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20604         else
20605                 val="$undef"
20606                 echo "No socket ioctls found in <sys/sockio.h>." >&4
20607         fi
20608 else
20609         val="$undef"
20610         $cat <<EOM
20611 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20612 EOM
20613 fi
20614 set i_syssockio
20615 eval $setvar
20616
20617
20618 : see if this is a syslog.h system
20619 set syslog.h i_syslog
20620 eval $inhdr
20621
20622
20623 : see if this is a sys/mode.h system
20624 set sys/mode.h i_sysmode
20625 eval $inhdr
20626
20627 : see if sys/resource.h has to be included
20628 set sys/resource.h i_sysresrc
20629 eval $inhdr
20630
20631 : see if sys/security.h is available
20632 set sys/security.h i_syssecrt
20633 eval $inhdr
20634
20635 : see if this is a sys/statvfs.h system
20636 set sys/statvfs.h i_sysstatvfs
20637 eval $inhdr
20638
20639 : see if this is a sys/un.h system
20640 set sys/un.h i_sysun
20641 eval $inhdr
20642
20643
20644 : see if this is a sys/utsname.h system
20645 set sys/utsname.h i_sysutsname
20646 eval $inhdr
20647
20648 : see if this is a syswait system
20649 set sys/wait.h i_syswait
20650 eval $inhdr
20651
20652 : see if this is a ustat.h system
20653 set ustat.h i_ustat
20654 eval $inhdr
20655
20656 : see if this is an utime system
20657 set utime.h i_utime
20658 eval $inhdr
20659
20660 : see if this is a values.h system
20661 set values.h i_values
20662 eval $inhdr
20663
20664 : see if this is a vfork system
20665 case "$d_vfork" in
20666 "$define")
20667         set vfork.h i_vfork
20668         eval $inhdr
20669         ;;
20670 *)
20671         i_vfork="$undef"
20672         ;;
20673 esac
20674
20675 : see if gdbm.h is available
20676 set gdbm.h t_gdbm
20677 eval $inhdr
20678 case "$t_gdbm" in
20679 $define)
20680         : see if gdbm_open exists
20681         set gdbm_open d_gdbm_open
20682         eval $inlibc
20683         case "$d_gdbm_open" in
20684         $undef)
20685                 t_gdbm="$undef"
20686                 echo "We won't be including <gdbm.h>"
20687                 ;;
20688         esac
20689         ;;
20690 esac
20691 val="$t_gdbm"
20692 set i_gdbm
20693 eval $setvar
20694
20695 echo " "
20696 echo "Looking for extensions..." >&4
20697 : If we are using the old config.sh, known_extensions may contain
20698 : old or inaccurate or duplicate values.
20699 known_extensions=''
20700 nonxs_extensions=''
20701 : We do not use find because it might not be available.
20702 : We do not just use MANIFEST because the user may have dropped
20703 : some additional extensions into the source tree and expect them
20704 : to be built.
20705
20706 : Function to recursively find available extensions, ignoring DynaLoader
20707 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20708 find_extensions='
20709     for xxx in *; do
20710        case "$xxx" in
20711            DynaLoader|dynaload) ;;
20712            *)
20713            if $test -f $xxx/$xxx.xs; then
20714                known_extensions="$known_extensions $1$xxx";
20715            elif $test -f $xxx/Makefile.PL; then
20716                nonxs_extensions="$nonxs_extensions $1$xxx";
20717            else
20718                if $test -d $xxx -a $# -lt 10; then
20719                    set $1$xxx/ $*;
20720                    cd "$xxx";
20721                    eval $find_extensions;
20722                    cd ..;
20723                    shift;
20724                fi;
20725            fi
20726            ;;
20727        esac;
20728     done'
20729 tdir=`pwd`
20730 cd "$rsrc/ext"
20731 set X
20732 shift
20733 eval $find_extensions
20734 # Special case:  Add in threads/shared since it is not picked up by the
20735 # recursive find above (and adding in general recursive finding breaks
20736 # SDBM_File/sdbm).  A.D.  10/25/2001.
20737 known_extensions="$known_extensions threads/shared"
20738 set X $nonxs_extensions
20739 shift
20740 nonxs_extensions="$*"
20741 set X $known_extensions
20742 shift
20743 known_extensions="$*"
20744 cd "$tdir"
20745
20746 : Now see which are supported on this system.
20747 avail_ext=''
20748 for xxx in $known_extensions ; do
20749         case "$xxx" in
20750         DB_File|db_file)
20751                 case "$i_db" in
20752                 $define) avail_ext="$avail_ext $xxx" ;;
20753                 esac
20754                 ;;
20755         GDBM_File|gdbm_fil)
20756                 case "$i_gdbm" in 
20757                 $define) avail_ext="$avail_ext $xxx" ;;
20758                 esac
20759                 ;;
20760         I18N/Langinfo|i18n_lan)
20761                 case "$i_langinfo$d_nl_langinfo" in 
20762                 $define$define) avail_ext="$avail_ext $xxx" ;;
20763                 esac
20764                 ;;
20765         NDBM_File|ndbm_fil)
20766                 case "$i_ndbm" in
20767                 $define)
20768                     case "$osname-$use64bitint" in
20769                     hpux-define)
20770                         case "$libs" in
20771                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20772                         esac
20773                         ;;
20774                     *) avail_ext="$avail_ext $xxx" ;;
20775                     esac
20776                     ;;
20777                 esac
20778                 ;;
20779         ODBM_File|odbm_fil) 
20780                 case "${i_dbm}${i_rpcsvcdbm}" in
20781                 *"${define}"*)
20782                     case "$osname-$use64bitint" in
20783                     hpux-define)
20784                         case "$libs" in
20785                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20786                         esac
20787                         ;;
20788                     *) avail_ext="$avail_ext $xxx" ;;
20789                     esac
20790                     ;;
20791                 esac
20792                 ;;
20793         POSIX|posix)
20794                 case "$useposix" in
20795                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20796                 esac
20797                 ;;
20798         Opcode|opcode)
20799                 case "$useopcode" in
20800                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20801                 esac
20802                 ;;
20803         Socket|socket)
20804                 case "$d_socket" in 
20805                 true|$define|y)
20806                     case "$osname" in
20807                     beos) ;; # not unless BONE
20808                     *) avail_ext="$avail_ext $xxx" ;;
20809                     esac
20810                     ;;
20811                 esac
20812                 ;;
20813         Sys/Syslog|sys/syslog)
20814                 : XXX syslog requires socket
20815                 case "$d_socket" in 
20816                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20817                 esac
20818                 ;;
20819         Thread|thread)
20820                 case "$usethreads" in
20821                 true|$define|y)
20822                         case "$useithreads" in
20823                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20824                         esac
20825                 esac
20826                 ;;
20827         XS/APItest|xs/apitest)
20828                 # This is just for testing.  Skip it unless we have dynamic loading.
20829
20830                 case "$usedl" in
20831                 $define) avail_ext="$avail_ext $xxx" ;;
20832                 esac
20833                 ;;
20834         XS/Typemap|xs/typemap)
20835                 # This is just for testing.  Skip it unless we have dynamic loading.
20836                 case "$usedl" in
20837                 $define) avail_ext="$avail_ext $xxx" ;;
20838                 esac
20839                 ;;
20840         threads|threads/shared)
20841                 # threads and threads::shared are special cases.
20842                 # To stop people from asking "Perl 5.8.0 was supposed
20843                 # to have this new fancy threads implementation but my
20844                 # perl doesn't have it" and from people trying to
20845                 # (re)install the threads module using CPAN.pm and
20846                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20847                 # the threads.pm and threads/shared.pm will always be
20848                 # there, croaking informatively ("you need to rebuild
20849                 # all of Perl with threads, sorry") when threads haven't
20850                 # been compiled in.
20851                 # --jhi
20852                 avail_ext="$avail_ext $xxx"
20853                 ;;
20854         IPC/SysV|ipc/sysv)
20855                 : XXX Do we need a useipcsysv variable here
20856                 case "${d_msg}${d_sem}${d_shm}" in 
20857                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20858                 esac
20859                 ;;
20860         *)      avail_ext="$avail_ext $xxx"
20861                 ;;
20862         esac
20863 done
20864
20865 set X $avail_ext
20866 shift
20867 avail_ext="$*"
20868
20869 case "$onlyextensions" in
20870 '') ;;
20871 *)  keepextensions=''
20872     echo "You have requested that only certains extensions be included..." >&4
20873     for i in $onlyextensions; do
20874         case " $avail_ext " in
20875         *" $i "*)
20876             echo "Keeping extension $i."
20877             keepextensions="$keepextensions $i"
20878             ;;
20879         *) echo "Ignoring extension $i." ;;
20880         esac
20881     done
20882     avail_ext="$keepextensions"
20883     ;;
20884 esac
20885
20886 case "$noextensions" in
20887 '') ;;
20888 *)  keepextensions=''
20889     echo "You have requested that certain extensions be ignored..." >&4
20890     for i in $avail_ext; do
20891         case " $noextensions " in
20892         *" $i "*) echo "Ignoring extension $i." ;;
20893         *) echo "Keeping extension $i.";
20894            keepextensions="$keepextensions $i"
20895            ;;
20896         esac
20897     done
20898     avail_ext="$keepextensions"
20899     ;;
20900 esac
20901
20902 : Now see which nonxs extensions are supported on this system.
20903 : For now assume all are.
20904 nonxs_ext=''
20905 for xxx in $nonxs_extensions ; do
20906         case "$xxx" in
20907         *)      nonxs_ext="$nonxs_ext $xxx"
20908                 ;;
20909         esac
20910 done
20911
20912 set X $nonxs_ext
20913 shift
20914 nonxs_ext="$*"
20915
20916 case $usedl in
20917 $define)
20918         $cat <<EOM
20919 A number of extensions are supplied with $package.  You may choose to
20920 compile these extensions for dynamic loading (the default), compile
20921 them into the $package executable (static loading), or not include
20922 them at all.  Answer "none" to include no extensions.
20923 Note that DynaLoader is always built and need not be mentioned here.
20924
20925 EOM
20926         case "$dynamic_ext" in
20927         '')
20928                 : Exclude those listed in static_ext
20929                 dflt=''
20930                 for xxx in $avail_ext; do
20931                         case " $static_ext " in
20932                         *" $xxx "*) ;;
20933                         *) dflt="$dflt $xxx" ;;
20934                         esac
20935                 done
20936                 set X $dflt
20937                 shift
20938                 dflt="$*"
20939                 ;;
20940         *)      dflt="$dynamic_ext"
20941                 # Perhaps we are reusing an old out-of-date config.sh.
20942                 case "$hint" in
20943                 previous)
20944                         if test X"$dynamic_ext" != X"$avail_ext"; then
20945                                 $cat <<EOM
20946 NOTICE:  Your previous config.sh list may be incorrect. 
20947 The extensions now available to you are 
20948         ${avail_ext}
20949 but the default list from your previous config.sh is
20950         ${dynamic_ext} 
20951
20952 EOM
20953                         fi
20954                         ;;
20955                 esac
20956                 ;;
20957         esac
20958         case "$dflt" in
20959         '')     dflt=none;;
20960         esac
20961         rp="What extensions do you wish to load dynamically?"
20962         . ./myread
20963         case "$ans" in
20964         none) dynamic_ext=' ' ;;
20965         *) dynamic_ext="$ans" ;;
20966         esac
20967
20968         case "$static_ext" in
20969         '')
20970                 : Exclude those already listed in dynamic linking
20971                 dflt=''
20972                 for xxx in $avail_ext; do
20973                         case " $dynamic_ext " in
20974                         *" $xxx "*) ;;
20975                         *) dflt="$dflt $xxx" ;;
20976                         esac
20977                 done
20978                 set X $dflt
20979                 shift
20980                 dflt="$*"
20981                 ;;
20982         *)  dflt="$static_ext" 
20983                 ;;
20984         esac
20985
20986         case "$dflt" in
20987         '')     dflt=none;;
20988         esac
20989         rp="What extensions do you wish to load statically?"
20990         . ./myread
20991         case "$ans" in
20992         none) static_ext=' ' ;;
20993         *) static_ext="$ans" ;;
20994         esac
20995         ;;
20996 *)
20997         $cat <<EOM
20998 A number of extensions are supplied with $package.  Answer "none" 
20999 to include no extensions. 
21000 Note that DynaLoader is always built and need not be mentioned here.
21001
21002 EOM
21003         case "$static_ext" in
21004         '') dflt="$avail_ext" ;;
21005         *)      dflt="$static_ext"
21006                 # Perhaps we are reusing an old out-of-date config.sh.
21007                 case "$hint" in
21008                 previous)
21009                         if test X"$static_ext" != X"$avail_ext"; then
21010                                 $cat <<EOM
21011 NOTICE:  Your previous config.sh list may be incorrect. 
21012 The extensions now available to you are 
21013         ${avail_ext}
21014 but the default list from your previous config.sh is
21015         ${static_ext} 
21016
21017 EOM
21018                         fi
21019                         ;;
21020                 esac
21021                 ;;
21022         esac
21023         : Exclude those that are not xs extensions
21024         case "$dflt" in
21025         '')     dflt=none;;
21026         esac
21027         rp="What extensions do you wish to include?"
21028         . ./myread
21029         case "$ans" in
21030         none) static_ext=' ' ;;
21031         *) static_ext="$ans" ;;
21032         esac
21033         ;;
21034 esac
21035 #        
21036 # Encode is a special case.  If we are building Encode as a static
21037 # extension, we need to explicitly list its subextensions as well.
21038 # For other nested extensions, this is handled automatically by
21039 # the appropriate Makefile.PL.
21040 case " $static_ext " in
21041         *" Encode "*) # Add the subextensions of Encode
21042         cd "$rsrc/ext"
21043         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21044                 static_ext="$static_ext Encode/$xxx"
21045         done
21046         cd "$tdir"
21047         ;;
21048 esac
21049
21050 set X $dynamic_ext $static_ext $nonxs_ext
21051 shift
21052 extensions="$*"
21053
21054 # Sanity check:  We require an extension suitable for use with
21055 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21056 # should show up as failures in the test suite, but it's helpful to
21057 # catch them now.) The 'extensions' list is normally sorted
21058 # alphabetically, so we need to accept either
21059 #    DB_File ... Fcntl ... IO  ....
21060 # or something like
21061 #    Fcntl ... NDBM_File ... IO  ....
21062 case " $extensions"  in
21063 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21064 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21065 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21066 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21067    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21068    ;;
21069 esac
21070
21071 : Remove libraries needed only for extensions
21072 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21073 : The exception is SunOS 4.x, which needs them.
21074 case "${osname}X${osvers}" in
21075 sunos*X4*)
21076     perllibs="$libs"
21077     ;;
21078 *) case "$usedl" in
21079     $define|true|[yY]*)
21080             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21081             shift
21082             perllibs="$*"
21083             ;;
21084     *)  perllibs="$libs"
21085             ;;
21086     esac
21087     ;;
21088 esac
21089
21090 : Remove build directory name from cppstdin so it can be used from
21091 : either the present location or the final installed location.
21092 echo " "
21093 : Get out of the UU directory to get correct path name.
21094 cd ..
21095 case "$cppstdin" in
21096 `pwd`/cppstdin)
21097         echo "Stripping down cppstdin path name"
21098         cppstdin=cppstdin
21099         ;;
21100 esac
21101 cd UU
21102
21103 : end of configuration questions
21104 echo " "
21105 echo "End of configuration questions."
21106 echo " "
21107
21108 : back to where it started
21109 if test -d ../UU; then
21110         cd ..
21111 fi
21112
21113 : configuration may be patched via a 'config.arch' file
21114 if $test -f config.arch; then
21115         echo "I see a config.arch file, loading it."
21116         . ./config.arch
21117 fi
21118
21119 : configuration may be patched via a 'config.over' file
21120 if $test -f config.over; then
21121         echo " "
21122         dflt=y
21123         rp='I see a config.over file.  Do you wish to load it?'
21124         . UU/myread
21125         case "$ans" in
21126         n*) echo "OK, I'll ignore it.";;
21127         *)      . ./config.over
21128                 echo "Configuration override changes have been loaded."
21129                 ;;
21130         esac
21131 fi
21132
21133 : in case they want portability, strip down executable paths
21134 case "$d_portable" in
21135 "$define")
21136         echo " "
21137         echo "Stripping down executable paths..." >&4
21138         for file in $loclist $trylist; do
21139                 eval temp=\$$file
21140                 eval $file=`basename $temp`
21141         done
21142         ;;
21143 esac
21144
21145 : create config.sh file
21146 echo " "
21147 echo "Creating config.sh..." >&4
21148 $spitshell <<EOT >config.sh
21149 $startsh
21150 #
21151 # This file was produced by running the Configure script. It holds all the
21152 # definitions figured out by Configure. Should you modify one of these values,
21153 # do not forget to propagate your changes by running "Configure -der". You may
21154 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21155 #
21156
21157 # Package name      : $package
21158 # Source directory  : $src
21159 # Configuration time: $cf_time
21160 # Configured by     : $cf_by
21161 # Target system     : $myuname
21162
21163 Author='$Author'
21164 Date='$Date'
21165 Header='$Header'
21166 Id='$Id'
21167 Locker='$Locker'
21168 Log='$Log'
21169 Mcc='$Mcc'
21170 RCSfile='$RCSfile'
21171 Revision='$Revision'
21172 Source='$Source'
21173 State='$State'
21174 _a='$_a'
21175 _exe='$_exe'
21176 _o='$_o'
21177 afs='$afs'
21178 afsroot='$afsroot'
21179 alignbytes='$alignbytes'
21180 ansi2knr='$ansi2knr'
21181 aphostname='$aphostname'
21182 api_revision='$api_revision'
21183 api_subversion='$api_subversion'
21184 api_version='$api_version'
21185 api_versionstring='$api_versionstring'
21186 ar='$ar'
21187 archlib='$archlib'
21188 archlibexp='$archlibexp'
21189 archname64='$archname64'
21190 archname='$archname'
21191 archobjs='$archobjs'
21192 asctime_r_proto='$asctime_r_proto'
21193 awk='$awk'
21194 baserev='$baserev'
21195 bash='$bash'
21196 bin='$bin'
21197 binexp='$binexp'
21198 bison='$bison'
21199 byacc='$byacc'
21200 byteorder='$byteorder'
21201 c='$c'
21202 castflags='$castflags'
21203 cat='$cat'
21204 cc='$cc'
21205 cccdlflags='$cccdlflags'
21206 ccdlflags='$ccdlflags'
21207 ccflags='$ccflags'
21208 ccflags_uselargefiles='$ccflags_uselargefiles'
21209 ccname='$ccname'
21210 ccsymbols='$ccsymbols'
21211 ccversion='$ccversion'
21212 cf_by='$cf_by'
21213 cf_email='$cf_email'
21214 cf_time='$cf_time'
21215 charsize='$charsize'
21216 chgrp='$chgrp'
21217 chmod='$chmod'
21218 chown='$chown'
21219 clocktype='$clocktype'
21220 comm='$comm'
21221 compress='$compress'
21222 contains='$contains'
21223 cp='$cp'
21224 cpio='$cpio'
21225 cpp='$cpp'
21226 cpp_stuff='$cpp_stuff'
21227 cppccsymbols='$cppccsymbols'
21228 cppflags='$cppflags'
21229 cpplast='$cpplast'
21230 cppminus='$cppminus'
21231 cpprun='$cpprun'
21232 cppstdin='$cppstdin'
21233 cppsymbols='$cppsymbols'
21234 crypt_r_proto='$crypt_r_proto'
21235 cryptlib='$cryptlib'
21236 csh='$csh'
21237 ctermid_r_proto='$ctermid_r_proto'
21238 ctime_r_proto='$ctime_r_proto'
21239 d_Gconvert='$d_Gconvert'
21240 d_PRIEUldbl='$d_PRIEUldbl'
21241 d_PRIFUldbl='$d_PRIFUldbl'
21242 d_PRIGUldbl='$d_PRIGUldbl'
21243 d_PRIXU64='$d_PRIXU64'
21244 d_PRId64='$d_PRId64'
21245 d_PRIeldbl='$d_PRIeldbl'
21246 d_PRIfldbl='$d_PRIfldbl'
21247 d_PRIgldbl='$d_PRIgldbl'
21248 d_PRIi64='$d_PRIi64'
21249 d_PRIo64='$d_PRIo64'
21250 d_PRIu64='$d_PRIu64'
21251 d_PRIx64='$d_PRIx64'
21252 d_SCNfldbl='$d_SCNfldbl'
21253 d__fwalk='$d__fwalk'
21254 d_access='$d_access'
21255 d_accessx='$d_accessx'
21256 d_aintl='$d_aintl'
21257 d_alarm='$d_alarm'
21258 d_archlib='$d_archlib'
21259 d_asctime_r='$d_asctime_r'
21260 d_atolf='$d_atolf'
21261 d_atoll='$d_atoll'
21262 d_attribute_format='$d_attribute_format'
21263 d_attribute_malloc='$d_attribute_malloc'
21264 d_attribute_nonnull='$d_attribute_nonnull'
21265 d_attribute_noreturn='$d_attribute_noreturn'
21266 d_attribute_pure='$d_attribute_pure'
21267 d_attribute_unused='$d_attribute_unused'
21268 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21269 d_bcmp='$d_bcmp'
21270 d_bcopy='$d_bcopy'
21271 d_bsd='$d_bsd'
21272 d_bsdgetpgrp='$d_bsdgetpgrp'
21273 d_bsdsetpgrp='$d_bsdsetpgrp'
21274 d_builtin_choose_expr='$d_builtin_choose_expr'
21275 d_builtin_expect='$d_builtin_expect'
21276 d_bzero='$d_bzero'
21277 d_casti32='$d_casti32'
21278 d_castneg='$d_castneg'
21279 d_charvspr='$d_charvspr'
21280 d_chown='$d_chown'
21281 d_chroot='$d_chroot'
21282 d_chsize='$d_chsize'
21283 d_class='$d_class'
21284 d_clearenv='$d_clearenv'
21285 d_closedir='$d_closedir'
21286 d_cmsghdr_s='$d_cmsghdr_s'
21287 d_const='$d_const'
21288 d_copysignl='$d_copysignl'
21289 d_crypt='$d_crypt'
21290 d_crypt_r='$d_crypt_r'
21291 d_csh='$d_csh'
21292 d_ctermid_r='$d_ctermid_r'
21293 d_ctime_r='$d_ctime_r'
21294 d_cuserid='$d_cuserid'
21295 d_dbl_dig='$d_dbl_dig'
21296 d_dbminitproto='$d_dbminitproto'
21297 d_difftime='$d_difftime'
21298 d_dirfd='$d_dirfd'
21299 d_dirnamlen='$d_dirnamlen'
21300 d_dlerror='$d_dlerror'
21301 d_dlopen='$d_dlopen'
21302 d_dlsymun='$d_dlsymun'
21303 d_dosuid='$d_dosuid'
21304 d_drand48_r='$d_drand48_r'
21305 d_drand48proto='$d_drand48proto'
21306 d_dup2='$d_dup2'
21307 d_eaccess='$d_eaccess'
21308 d_endgrent='$d_endgrent'
21309 d_endgrent_r='$d_endgrent_r'
21310 d_endhent='$d_endhent'
21311 d_endhostent_r='$d_endhostent_r'
21312 d_endnent='$d_endnent'
21313 d_endnetent_r='$d_endnetent_r'
21314 d_endpent='$d_endpent'
21315 d_endprotoent_r='$d_endprotoent_r'
21316 d_endpwent='$d_endpwent'
21317 d_endpwent_r='$d_endpwent_r'
21318 d_endsent='$d_endsent'
21319 d_endservent_r='$d_endservent_r'
21320 d_eofnblk='$d_eofnblk'
21321 d_eunice='$d_eunice'
21322 d_faststdio='$d_faststdio'
21323 d_fchdir='$d_fchdir'
21324 d_fchmod='$d_fchmod'
21325 d_fchown='$d_fchown'
21326 d_fcntl='$d_fcntl'
21327 d_fcntl_can_lock='$d_fcntl_can_lock'
21328 d_fd_macros='$d_fd_macros'
21329 d_fd_set='$d_fd_set'
21330 d_fds_bits='$d_fds_bits'
21331 d_fgetpos='$d_fgetpos'
21332 d_finite='$d_finite'
21333 d_finitel='$d_finitel'
21334 d_flexfnam='$d_flexfnam'
21335 d_flock='$d_flock'
21336 d_flockproto='$d_flockproto'
21337 d_fork='$d_fork'
21338 d_fp_class='$d_fp_class'
21339 d_fpathconf='$d_fpathconf'
21340 d_fpclass='$d_fpclass'
21341 d_fpclassify='$d_fpclassify'
21342 d_fpclassl='$d_fpclassl'
21343 d_fpos64_t='$d_fpos64_t'
21344 d_frexpl='$d_frexpl'
21345 d_fs_data_s='$d_fs_data_s'
21346 d_fseeko='$d_fseeko'
21347 d_fsetpos='$d_fsetpos'
21348 d_fstatfs='$d_fstatfs'
21349 d_fstatvfs='$d_fstatvfs'
21350 d_fsync='$d_fsync'
21351 d_ftello='$d_ftello'
21352 d_ftime='$d_ftime'
21353 d_futimes='$d_futimes'
21354 d_getcwd='$d_getcwd'
21355 d_getespwnam='$d_getespwnam'
21356 d_getfsstat='$d_getfsstat'
21357 d_getgrent='$d_getgrent'
21358 d_getgrent_r='$d_getgrent_r'
21359 d_getgrgid_r='$d_getgrgid_r'
21360 d_getgrnam_r='$d_getgrnam_r'
21361 d_getgrps='$d_getgrps'
21362 d_gethbyaddr='$d_gethbyaddr'
21363 d_gethbyname='$d_gethbyname'
21364 d_gethent='$d_gethent'
21365 d_gethname='$d_gethname'
21366 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21367 d_gethostbyname_r='$d_gethostbyname_r'
21368 d_gethostent_r='$d_gethostent_r'
21369 d_gethostprotos='$d_gethostprotos'
21370 d_getitimer='$d_getitimer'
21371 d_getlogin='$d_getlogin'
21372 d_getlogin_r='$d_getlogin_r'
21373 d_getmnt='$d_getmnt'
21374 d_getmntent='$d_getmntent'
21375 d_getnbyaddr='$d_getnbyaddr'
21376 d_getnbyname='$d_getnbyname'
21377 d_getnent='$d_getnent'
21378 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21379 d_getnetbyname_r='$d_getnetbyname_r'
21380 d_getnetent_r='$d_getnetent_r'
21381 d_getnetprotos='$d_getnetprotos'
21382 d_getpagsz='$d_getpagsz'
21383 d_getpbyname='$d_getpbyname'
21384 d_getpbynumber='$d_getpbynumber'
21385 d_getpent='$d_getpent'
21386 d_getpgid='$d_getpgid'
21387 d_getpgrp2='$d_getpgrp2'
21388 d_getpgrp='$d_getpgrp'
21389 d_getppid='$d_getppid'
21390 d_getprior='$d_getprior'
21391 d_getprotobyname_r='$d_getprotobyname_r'
21392 d_getprotobynumber_r='$d_getprotobynumber_r'
21393 d_getprotoent_r='$d_getprotoent_r'
21394 d_getprotoprotos='$d_getprotoprotos'
21395 d_getprpwnam='$d_getprpwnam'
21396 d_getpwent='$d_getpwent'
21397 d_getpwent_r='$d_getpwent_r'
21398 d_getpwnam_r='$d_getpwnam_r'
21399 d_getpwuid_r='$d_getpwuid_r'
21400 d_getsbyname='$d_getsbyname'
21401 d_getsbyport='$d_getsbyport'
21402 d_getsent='$d_getsent'
21403 d_getservbyname_r='$d_getservbyname_r'
21404 d_getservbyport_r='$d_getservbyport_r'
21405 d_getservent_r='$d_getservent_r'
21406 d_getservprotos='$d_getservprotos'
21407 d_getspnam='$d_getspnam'
21408 d_getspnam_r='$d_getspnam_r'
21409 d_gettimeod='$d_gettimeod'
21410 d_gmtime_r='$d_gmtime_r'
21411 d_gnulibc='$d_gnulibc'
21412 d_grpasswd='$d_grpasswd'
21413 d_hasmntopt='$d_hasmntopt'
21414 d_htonl='$d_htonl'
21415 d_ilogbl='$d_ilogbl'
21416 d_index='$d_index'
21417 d_inetaton='$d_inetaton'
21418 d_int64_t='$d_int64_t'
21419 d_isascii='$d_isascii'
21420 d_isfinite='$d_isfinite'
21421 d_isinf='$d_isinf'
21422 d_isnan='$d_isnan'
21423 d_isnanl='$d_isnanl'
21424 d_killpg='$d_killpg'
21425 d_lchown='$d_lchown'
21426 d_ldbl_dig='$d_ldbl_dig'
21427 d_libm_lib_version='$d_libm_lib_version'
21428 d_link='$d_link'
21429 d_localtime_r='$d_localtime_r'
21430 d_locconv='$d_locconv'
21431 d_lockf='$d_lockf'
21432 d_longdbl='$d_longdbl'
21433 d_longlong='$d_longlong'
21434 d_lseekproto='$d_lseekproto'
21435 d_lstat='$d_lstat'
21436 d_madvise='$d_madvise'
21437 d_malloc_good_size='$d_malloc_good_size'
21438 d_malloc_size='$d_malloc_size'
21439 d_mblen='$d_mblen'
21440 d_mbstowcs='$d_mbstowcs'
21441 d_mbtowc='$d_mbtowc'
21442 d_memchr='$d_memchr'
21443 d_memcmp='$d_memcmp'
21444 d_memcpy='$d_memcpy'
21445 d_memmove='$d_memmove'
21446 d_memset='$d_memset'
21447 d_mkdir='$d_mkdir'
21448 d_mkdtemp='$d_mkdtemp'
21449 d_mkfifo='$d_mkfifo'
21450 d_mkstemp='$d_mkstemp'
21451 d_mkstemps='$d_mkstemps'
21452 d_mktime='$d_mktime'
21453 d_mmap='$d_mmap'
21454 d_modfl='$d_modfl'
21455 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21456 d_modflproto='$d_modflproto'
21457 d_mprotect='$d_mprotect'
21458 d_msg='$d_msg'
21459 d_msg_ctrunc='$d_msg_ctrunc'
21460 d_msg_dontroute='$d_msg_dontroute'
21461 d_msg_oob='$d_msg_oob'
21462 d_msg_peek='$d_msg_peek'
21463 d_msg_proxy='$d_msg_proxy'
21464 d_msgctl='$d_msgctl'
21465 d_msgget='$d_msgget'
21466 d_msghdr_s='$d_msghdr_s'
21467 d_msgrcv='$d_msgrcv'
21468 d_msgsnd='$d_msgsnd'
21469 d_msync='$d_msync'
21470 d_munmap='$d_munmap'
21471 d_mymalloc='$d_mymalloc'
21472 d_nice='$d_nice'
21473 d_nl_langinfo='$d_nl_langinfo'
21474 d_nv_preserves_uv='$d_nv_preserves_uv'
21475 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21476 d_off64_t='$d_off64_t'
21477 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21478 d_oldpthreads='$d_oldpthreads'
21479 d_oldsock='$d_oldsock'
21480 d_open3='$d_open3'
21481 d_pathconf='$d_pathconf'
21482 d_pause='$d_pause'
21483 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21484 d_phostname='$d_phostname'
21485 d_pipe='$d_pipe'
21486 d_poll='$d_poll'
21487 d_portable='$d_portable'
21488 d_procselfexe='$d_procselfexe'
21489 d_pthread_atfork='$d_pthread_atfork'
21490 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21491 d_pthread_yield='$d_pthread_yield'
21492 d_pwage='$d_pwage'
21493 d_pwchange='$d_pwchange'
21494 d_pwclass='$d_pwclass'
21495 d_pwcomment='$d_pwcomment'
21496 d_pwexpire='$d_pwexpire'
21497 d_pwgecos='$d_pwgecos'
21498 d_pwpasswd='$d_pwpasswd'
21499 d_pwquota='$d_pwquota'
21500 d_qgcvt='$d_qgcvt'
21501 d_quad='$d_quad'
21502 d_random_r='$d_random_r'
21503 d_readdir64_r='$d_readdir64_r'
21504 d_readdir='$d_readdir'
21505 d_readdir_r='$d_readdir_r'
21506 d_readlink='$d_readlink'
21507 d_readv='$d_readv'
21508 d_recvmsg='$d_recvmsg'
21509 d_rename='$d_rename'
21510 d_rewinddir='$d_rewinddir'
21511 d_rmdir='$d_rmdir'
21512 d_safebcpy='$d_safebcpy'
21513 d_safemcpy='$d_safemcpy'
21514 d_sanemcmp='$d_sanemcmp'
21515 d_sbrkproto='$d_sbrkproto'
21516 d_scalbnl='$d_scalbnl'
21517 d_sched_yield='$d_sched_yield'
21518 d_scm_rights='$d_scm_rights'
21519 d_seekdir='$d_seekdir'
21520 d_select='$d_select'
21521 d_sem='$d_sem'
21522 d_semctl='$d_semctl'
21523 d_semctl_semid_ds='$d_semctl_semid_ds'
21524 d_semctl_semun='$d_semctl_semun'
21525 d_semget='$d_semget'
21526 d_semop='$d_semop'
21527 d_sendmsg='$d_sendmsg'
21528 d_setegid='$d_setegid'
21529 d_seteuid='$d_seteuid'
21530 d_setgrent='$d_setgrent'
21531 d_setgrent_r='$d_setgrent_r'
21532 d_setgrps='$d_setgrps'
21533 d_sethent='$d_sethent'
21534 d_sethostent_r='$d_sethostent_r'
21535 d_setitimer='$d_setitimer'
21536 d_setlinebuf='$d_setlinebuf'
21537 d_setlocale='$d_setlocale'
21538 d_setlocale_r='$d_setlocale_r'
21539 d_setnent='$d_setnent'
21540 d_setnetent_r='$d_setnetent_r'
21541 d_setpent='$d_setpent'
21542 d_setpgid='$d_setpgid'
21543 d_setpgrp2='$d_setpgrp2'
21544 d_setpgrp='$d_setpgrp'
21545 d_setprior='$d_setprior'
21546 d_setproctitle='$d_setproctitle'
21547 d_setprotoent_r='$d_setprotoent_r'
21548 d_setpwent='$d_setpwent'
21549 d_setpwent_r='$d_setpwent_r'
21550 d_setregid='$d_setregid'
21551 d_setresgid='$d_setresgid'
21552 d_setresuid='$d_setresuid'
21553 d_setreuid='$d_setreuid'
21554 d_setrgid='$d_setrgid'
21555 d_setruid='$d_setruid'
21556 d_setsent='$d_setsent'
21557 d_setservent_r='$d_setservent_r'
21558 d_setsid='$d_setsid'
21559 d_setvbuf='$d_setvbuf'
21560 d_sfio='$d_sfio'
21561 d_shm='$d_shm'
21562 d_shmat='$d_shmat'
21563 d_shmatprototype='$d_shmatprototype'
21564 d_shmctl='$d_shmctl'
21565 d_shmdt='$d_shmdt'
21566 d_shmget='$d_shmget'
21567 d_sigaction='$d_sigaction'
21568 d_sigprocmask='$d_sigprocmask'
21569 d_sigsetjmp='$d_sigsetjmp'
21570 d_snprintf='$d_snprintf'
21571 d_sockatmark='$d_sockatmark'
21572 d_sockatmarkproto='$d_sockatmarkproto'
21573 d_socket='$d_socket'
21574 d_socklen_t='$d_socklen_t'
21575 d_sockpair='$d_sockpair'
21576 d_socks5_init='$d_socks5_init'
21577 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21578 d_sqrtl='$d_sqrtl'
21579 d_srand48_r='$d_srand48_r'
21580 d_srandom_r='$d_srandom_r'
21581 d_sresgproto='$d_sresgproto'
21582 d_sresuproto='$d_sresuproto'
21583 d_statblks='$d_statblks'
21584 d_statfs_f_flags='$d_statfs_f_flags'
21585 d_statfs_s='$d_statfs_s'
21586 d_statvfs='$d_statvfs'
21587 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21588 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21589 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21590 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21591 d_stdio_stream_array='$d_stdio_stream_array'
21592 d_stdiobase='$d_stdiobase'
21593 d_stdstdio='$d_stdstdio'
21594 d_strchr='$d_strchr'
21595 d_strcoll='$d_strcoll'
21596 d_strctcpy='$d_strctcpy'
21597 d_strerrm='$d_strerrm'
21598 d_strerror='$d_strerror'
21599 d_strerror_r='$d_strerror_r'
21600 d_strftime='$d_strftime'
21601 d_strlcat='$d_strlcat'
21602 d_strlcpy='$d_strlcpy'
21603 d_strtod='$d_strtod'
21604 d_strtol='$d_strtol'
21605 d_strtold='$d_strtold'
21606 d_strtoll='$d_strtoll'
21607 d_strtoq='$d_strtoq'
21608 d_strtoul='$d_strtoul'
21609 d_strtoull='$d_strtoull'
21610 d_strtouq='$d_strtouq'
21611 d_strxfrm='$d_strxfrm'
21612 d_suidsafe='$d_suidsafe'
21613 d_symlink='$d_symlink'
21614 d_syscall='$d_syscall'
21615 d_syscallproto='$d_syscallproto'
21616 d_sysconf='$d_sysconf'
21617 d_sysernlst='$d_sysernlst'
21618 d_syserrlst='$d_syserrlst'
21619 d_system='$d_system'
21620 d_tcgetpgrp='$d_tcgetpgrp'
21621 d_tcsetpgrp='$d_tcsetpgrp'
21622 d_telldir='$d_telldir'
21623 d_telldirproto='$d_telldirproto'
21624 d_time='$d_time'
21625 d_times='$d_times'
21626 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21627 d_tm_tm_zone='$d_tm_tm_zone'
21628 d_tmpnam_r='$d_tmpnam_r'
21629 d_truncate='$d_truncate'
21630 d_ttyname_r='$d_ttyname_r'
21631 d_tzname='$d_tzname'
21632 d_u32align='$d_u32align'
21633 d_ualarm='$d_ualarm'
21634 d_umask='$d_umask'
21635 d_uname='$d_uname'
21636 d_union_semun='$d_union_semun'
21637 d_unordered='$d_unordered'
21638 d_unsetenv='$d_unsetenv'
21639 d_usleep='$d_usleep'
21640 d_usleepproto='$d_usleepproto'
21641 d_ustat='$d_ustat'
21642 d_vendorarch='$d_vendorarch'
21643 d_vendorbin='$d_vendorbin'
21644 d_vendorlib='$d_vendorlib'
21645 d_vendorscript='$d_vendorscript'
21646 d_vfork='$d_vfork'
21647 d_void_closedir='$d_void_closedir'
21648 d_voidsig='$d_voidsig'
21649 d_voidtty='$d_voidtty'
21650 d_volatile='$d_volatile'
21651 d_vprintf='$d_vprintf'
21652 d_vsnprintf='$d_vsnprintf'
21653 d_wait4='$d_wait4'
21654 d_waitpid='$d_waitpid'
21655 d_wcstombs='$d_wcstombs'
21656 d_wctomb='$d_wctomb'
21657 d_writev='$d_writev'
21658 d_xenix='$d_xenix'
21659 date='$date'
21660 db_hashtype='$db_hashtype'
21661 db_prefixtype='$db_prefixtype'
21662 db_version_major='$db_version_major'
21663 db_version_minor='$db_version_minor'
21664 db_version_patch='$db_version_patch'
21665 defvoidused='$defvoidused'
21666 direntrytype='$direntrytype'
21667 dlext='$dlext'
21668 dlsrc='$dlsrc'
21669 doublesize='$doublesize'
21670 drand01='$drand01'
21671 drand48_r_proto='$drand48_r_proto'
21672 dynamic_ext='$dynamic_ext'
21673 eagain='$eagain'
21674 ebcdic='$ebcdic'
21675 echo='$echo'
21676 egrep='$egrep'
21677 emacs='$emacs'
21678 endgrent_r_proto='$endgrent_r_proto'
21679 endhostent_r_proto='$endhostent_r_proto'
21680 endnetent_r_proto='$endnetent_r_proto'
21681 endprotoent_r_proto='$endprotoent_r_proto'
21682 endpwent_r_proto='$endpwent_r_proto'
21683 endservent_r_proto='$endservent_r_proto'
21684 eunicefix='$eunicefix'
21685 exe_ext='$exe_ext'
21686 expr='$expr'
21687 extensions='$extensions'
21688 extras='$extras'
21689 fflushNULL='$fflushNULL'
21690 fflushall='$fflushall'
21691 find='$find'
21692 firstmakefile='$firstmakefile'
21693 flex='$flex'
21694 fpossize='$fpossize'
21695 fpostype='$fpostype'
21696 freetype='$freetype'
21697 from='$from'
21698 full_ar='$full_ar'
21699 full_csh='$full_csh'
21700 full_sed='$full_sed'
21701 gccansipedantic='$gccansipedantic'
21702 gccosandvers='$gccosandvers'
21703 gccversion='$gccversion'
21704 getgrent_r_proto='$getgrent_r_proto'
21705 getgrgid_r_proto='$getgrgid_r_proto'
21706 getgrnam_r_proto='$getgrnam_r_proto'
21707 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21708 gethostbyname_r_proto='$gethostbyname_r_proto'
21709 gethostent_r_proto='$gethostent_r_proto'
21710 getlogin_r_proto='$getlogin_r_proto'
21711 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21712 getnetbyname_r_proto='$getnetbyname_r_proto'
21713 getnetent_r_proto='$getnetent_r_proto'
21714 getprotobyname_r_proto='$getprotobyname_r_proto'
21715 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21716 getprotoent_r_proto='$getprotoent_r_proto'
21717 getpwent_r_proto='$getpwent_r_proto'
21718 getpwnam_r_proto='$getpwnam_r_proto'
21719 getpwuid_r_proto='$getpwuid_r_proto'
21720 getservbyname_r_proto='$getservbyname_r_proto'
21721 getservbyport_r_proto='$getservbyport_r_proto'
21722 getservent_r_proto='$getservent_r_proto'
21723 getspnam_r_proto='$getspnam_r_proto'
21724 gidformat='$gidformat'
21725 gidsign='$gidsign'
21726 gidsize='$gidsize'
21727 gidtype='$gidtype'
21728 glibpth='$glibpth'
21729 gmake='$gmake'
21730 gmtime_r_proto='$gmtime_r_proto'
21731 gnulibc_version='$gnulibc_version'
21732 grep='$grep'
21733 groupcat='$groupcat'
21734 groupstype='$groupstype'
21735 gzip='$gzip'
21736 h_fcntl='$h_fcntl'
21737 h_sysfile='$h_sysfile'
21738 hint='$hint'
21739 hostcat='$hostcat'
21740 html1dir='$html1dir'
21741 html1direxp='$html1direxp'
21742 html3dir='$html3dir'
21743 html3direxp='$html3direxp'
21744 i16size='$i16size'
21745 i16type='$i16type'
21746 i32size='$i32size'
21747 i32type='$i32type'
21748 i64size='$i64size'
21749 i64type='$i64type'
21750 i8size='$i8size'
21751 i8type='$i8type'
21752 i_arpainet='$i_arpainet'
21753 i_bsdioctl='$i_bsdioctl'
21754 i_crypt='$i_crypt'
21755 i_db='$i_db'
21756 i_dbm='$i_dbm'
21757 i_dirent='$i_dirent'
21758 i_dld='$i_dld'
21759 i_dlfcn='$i_dlfcn'
21760 i_fcntl='$i_fcntl'
21761 i_float='$i_float'
21762 i_fp='$i_fp'
21763 i_fp_class='$i_fp_class'
21764 i_gdbm='$i_gdbm'
21765 i_grp='$i_grp'
21766 i_ieeefp='$i_ieeefp'
21767 i_inttypes='$i_inttypes'
21768 i_langinfo='$i_langinfo'
21769 i_libutil='$i_libutil'
21770 i_limits='$i_limits'
21771 i_locale='$i_locale'
21772 i_machcthr='$i_machcthr'
21773 i_malloc='$i_malloc'
21774 i_math='$i_math'
21775 i_memory='$i_memory'
21776 i_mntent='$i_mntent'
21777 i_ndbm='$i_ndbm'
21778 i_netdb='$i_netdb'
21779 i_neterrno='$i_neterrno'
21780 i_netinettcp='$i_netinettcp'
21781 i_niin='$i_niin'
21782 i_poll='$i_poll'
21783 i_prot='$i_prot'
21784 i_pthread='$i_pthread'
21785 i_pwd='$i_pwd'
21786 i_rpcsvcdbm='$i_rpcsvcdbm'
21787 i_sfio='$i_sfio'
21788 i_sgtty='$i_sgtty'
21789 i_shadow='$i_shadow'
21790 i_socks='$i_socks'
21791 i_stdarg='$i_stdarg'
21792 i_stddef='$i_stddef'
21793 i_stdlib='$i_stdlib'
21794 i_string='$i_string'
21795 i_sunmath='$i_sunmath'
21796 i_sysaccess='$i_sysaccess'
21797 i_sysdir='$i_sysdir'
21798 i_sysfile='$i_sysfile'
21799 i_sysfilio='$i_sysfilio'
21800 i_sysin='$i_sysin'
21801 i_sysioctl='$i_sysioctl'
21802 i_syslog='$i_syslog'
21803 i_sysmman='$i_sysmman'
21804 i_sysmode='$i_sysmode'
21805 i_sysmount='$i_sysmount'
21806 i_sysndir='$i_sysndir'
21807 i_sysparam='$i_sysparam'
21808 i_sysresrc='$i_sysresrc'
21809 i_syssecrt='$i_syssecrt'
21810 i_sysselct='$i_sysselct'
21811 i_syssockio='$i_syssockio'
21812 i_sysstat='$i_sysstat'
21813 i_sysstatfs='$i_sysstatfs'
21814 i_sysstatvfs='$i_sysstatvfs'
21815 i_systime='$i_systime'
21816 i_systimek='$i_systimek'
21817 i_systimes='$i_systimes'
21818 i_systypes='$i_systypes'
21819 i_sysuio='$i_sysuio'
21820 i_sysun='$i_sysun'
21821 i_sysutsname='$i_sysutsname'
21822 i_sysvfs='$i_sysvfs'
21823 i_syswait='$i_syswait'
21824 i_termio='$i_termio'
21825 i_termios='$i_termios'
21826 i_time='$i_time'
21827 i_unistd='$i_unistd'
21828 i_ustat='$i_ustat'
21829 i_utime='$i_utime'
21830 i_values='$i_values'
21831 i_varargs='$i_varargs'
21832 i_varhdr='$i_varhdr'
21833 i_vfork='$i_vfork'
21834 ignore_versioned_solibs='$ignore_versioned_solibs'
21835 inc_version_list='$inc_version_list'
21836 inc_version_list_init='$inc_version_list_init'
21837 incpath='$incpath'
21838 inews='$inews'
21839 installarchlib='$installarchlib'
21840 installbin='$installbin'
21841 installhtml1dir='$installhtml1dir'
21842 installhtml3dir='$installhtml3dir'
21843 installman1dir='$installman1dir'
21844 installman3dir='$installman3dir'
21845 installprefix='$installprefix'
21846 installprefixexp='$installprefixexp'
21847 installprivlib='$installprivlib'
21848 installscript='$installscript'
21849 installsitearch='$installsitearch'
21850 installsitebin='$installsitebin'
21851 installsitehtml1dir='$installsitehtml1dir'
21852 installsitehtml3dir='$installsitehtml3dir'
21853 installsitelib='$installsitelib'
21854 installsiteman1dir='$installsiteman1dir'
21855 installsiteman3dir='$installsiteman3dir'
21856 installsitescript='$installsitescript'
21857 installstyle='$installstyle'
21858 installusrbinperl='$installusrbinperl'
21859 installvendorarch='$installvendorarch'
21860 installvendorbin='$installvendorbin'
21861 installvendorhtml1dir='$installvendorhtml1dir'
21862 installvendorhtml3dir='$installvendorhtml3dir'
21863 installvendorlib='$installvendorlib'
21864 installvendorman1dir='$installvendorman1dir'
21865 installvendorman3dir='$installvendorman3dir'
21866 installvendorscript='$installvendorscript'
21867 intsize='$intsize'
21868 issymlink='$issymlink'
21869 ivdformat='$ivdformat'
21870 ivsize='$ivsize'
21871 ivtype='$ivtype'
21872 known_extensions='$known_extensions'
21873 ksh='$ksh'
21874 ld='$ld'
21875 lddlflags='$lddlflags'
21876 ldflags='$ldflags'
21877 ldflags_uselargefiles='$ldflags_uselargefiles'
21878 ldlibpthname='$ldlibpthname'
21879 less='$less'
21880 lib_ext='$lib_ext'
21881 libc='$libc'
21882 libperl='$libperl'
21883 libpth='$libpth'
21884 libs='$libs'
21885 libsdirs='$libsdirs'
21886 libsfiles='$libsfiles'
21887 libsfound='$libsfound'
21888 libspath='$libspath'
21889 libswanted='$libswanted'
21890 libswanted_uselargefiles='$libswanted_uselargefiles'
21891 line='$line'
21892 lint='$lint'
21893 lkflags='$lkflags'
21894 ln='$ln'
21895 lns='$lns'
21896 localtime_r_proto='$localtime_r_proto'
21897 locincpth='$locincpth'
21898 loclibpth='$loclibpth'
21899 longdblsize='$longdblsize'
21900 longlongsize='$longlongsize'
21901 longsize='$longsize'
21902 lp='$lp'
21903 lpr='$lpr'
21904 ls='$ls'
21905 lseeksize='$lseeksize'
21906 lseektype='$lseektype'
21907 mad='$mad'
21908 mail='$mail'
21909 mailx='$mailx'
21910 make='$make'
21911 make_set_make='$make_set_make'
21912 mallocobj='$mallocobj'
21913 mallocsrc='$mallocsrc'
21914 madlyh='$madlyh'
21915 madlyobj='$madlyobj'
21916 madlysrc='$madlysrc'
21917 malloctype='$malloctype'
21918 man1dir='$man1dir'
21919 man1direxp='$man1direxp'
21920 man1ext='$man1ext'
21921 man3dir='$man3dir'
21922 man3direxp='$man3direxp'
21923 man3ext='$man3ext'
21924 mips_type='$mips_type'
21925 mistrustnm='$mistrustnm'
21926 mkdir='$mkdir'
21927 mmaptype='$mmaptype'
21928 modetype='$modetype'
21929 more='$more'
21930 multiarch='$multiarch'
21931 mv='$mv'
21932 myarchname='$myarchname'
21933 mydomain='$mydomain'
21934 myhostname='$myhostname'
21935 myuname='$myuname'
21936 n='$n'
21937 need_va_copy='$need_va_copy'
21938 netdb_hlen_type='$netdb_hlen_type'
21939 netdb_host_type='$netdb_host_type'
21940 netdb_name_type='$netdb_name_type'
21941 netdb_net_type='$netdb_net_type'
21942 nm='$nm'
21943 nm_opt='$nm_opt'
21944 nm_so_opt='$nm_so_opt'
21945 nonxs_ext='$nonxs_ext'
21946 nroff='$nroff'
21947 nvEUformat='$nvEUformat'
21948 nvFUformat='$nvFUformat'
21949 nvGUformat='$nvGUformat'
21950 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21951 nveformat='$nveformat'
21952 nvfformat='$nvfformat'
21953 nvgformat='$nvgformat'
21954 nvsize='$nvsize'
21955 nvtype='$nvtype'
21956 o_nonblock='$o_nonblock'
21957 obj_ext='$obj_ext'
21958 old_pthread_create_joinable='$old_pthread_create_joinable'
21959 optimize='$optimize'
21960 orderlib='$orderlib'
21961 osname='$osname'
21962 osvers='$osvers'
21963 otherlibdirs='$otherlibdirs'
21964 package='$package'
21965 pager='$pager'
21966 passcat='$passcat'
21967 patchlevel='$patchlevel'
21968 path_sep='$path_sep'
21969 perl5='$perl5'
21970 perl='$perl'
21971 perl_patchlevel='$perl_patchlevel'
21972 perladmin='$perladmin'
21973 perllibs='$perllibs'
21974 perlpath='$perlpath'
21975 pg='$pg'
21976 phostname='$phostname'
21977 pidtype='$pidtype'
21978 plibpth='$plibpth'
21979 pmake='$pmake'
21980 pr='$pr'
21981 prefix='$prefix'
21982 prefixexp='$prefixexp'
21983 privlib='$privlib'
21984 privlibexp='$privlibexp'
21985 procselfexe='$procselfexe'
21986 prototype='$prototype'
21987 ptrsize='$ptrsize'
21988 quadkind='$quadkind'
21989 quadtype='$quadtype'
21990 randbits='$randbits'
21991 randfunc='$randfunc'
21992 random_r_proto='$random_r_proto'
21993 randseedtype='$randseedtype'
21994 ranlib='$ranlib'
21995 rd_nodata='$rd_nodata'
21996 readdir64_r_proto='$readdir64_r_proto'
21997 readdir_r_proto='$readdir_r_proto'
21998 revision='$revision'
21999 rm='$rm'
22000 rmail='$rmail'
22001 run='$run'
22002 runnm='$runnm'
22003 sPRIEUldbl='$sPRIEUldbl'
22004 sPRIFUldbl='$sPRIFUldbl'
22005 sPRIGUldbl='$sPRIGUldbl'
22006 sPRIXU64='$sPRIXU64'
22007 sPRId64='$sPRId64'
22008 sPRIeldbl='$sPRIeldbl'
22009 sPRIfldbl='$sPRIfldbl'
22010 sPRIgldbl='$sPRIgldbl'
22011 sPRIi64='$sPRIi64'
22012 sPRIo64='$sPRIo64'
22013 sPRIu64='$sPRIu64'
22014 sPRIx64='$sPRIx64'
22015 sSCNfldbl='$sSCNfldbl'
22016 sched_yield='$sched_yield'
22017 scriptdir='$scriptdir'
22018 scriptdirexp='$scriptdirexp'
22019 sed='$sed'
22020 seedfunc='$seedfunc'
22021 selectminbits='$selectminbits'
22022 selecttype='$selecttype'
22023 sendmail='$sendmail'
22024 setgrent_r_proto='$setgrent_r_proto'
22025 sethostent_r_proto='$sethostent_r_proto'
22026 setlocale_r_proto='$setlocale_r_proto'
22027 setnetent_r_proto='$setnetent_r_proto'
22028 setprotoent_r_proto='$setprotoent_r_proto'
22029 setpwent_r_proto='$setpwent_r_proto'
22030 setservent_r_proto='$setservent_r_proto'
22031 sh='$sh'
22032 shar='$shar'
22033 sharpbang='$sharpbang'
22034 shmattype='$shmattype'
22035 shortsize='$shortsize'
22036 shrpenv='$shrpenv'
22037 shsharp='$shsharp'
22038 sig_count='$sig_count'
22039 sig_name='$sig_name'
22040 sig_name_init='$sig_name_init'
22041 sig_num='$sig_num'
22042 sig_num_init='$sig_num_init'
22043 sig_size='$sig_size'
22044 signal_t='$signal_t'
22045 sitearch='$sitearch'
22046 sitearchexp='$sitearchexp'
22047 sitebin='$sitebin'
22048 sitebinexp='$sitebinexp'
22049 sitehtml1dir='$sitehtml1dir'
22050 sitehtml1direxp='$sitehtml1direxp'
22051 sitehtml3dir='$sitehtml3dir'
22052 sitehtml3direxp='$sitehtml3direxp'
22053 sitelib='$sitelib'
22054 sitelib_stem='$sitelib_stem'
22055 sitelibexp='$sitelibexp'
22056 siteman1dir='$siteman1dir'
22057 siteman1direxp='$siteman1direxp'
22058 siteman3dir='$siteman3dir'
22059 siteman3direxp='$siteman3direxp'
22060 siteprefix='$siteprefix'
22061 siteprefixexp='$siteprefixexp'
22062 sitescript='$sitescript'
22063 sitescriptexp='$sitescriptexp'
22064 sizesize='$sizesize'
22065 sizetype='$sizetype'
22066 sleep='$sleep'
22067 smail='$smail'
22068 so='$so'
22069 sockethdr='$sockethdr'
22070 socketlib='$socketlib'
22071 socksizetype='$socksizetype'
22072 sort='$sort'
22073 spackage='$spackage'
22074 spitshell='$spitshell'
22075 srand48_r_proto='$srand48_r_proto'
22076 srandom_r_proto='$srandom_r_proto'
22077 src='$src'
22078 ssizetype='$ssizetype'
22079 startperl='$startperl'
22080 startsh='$startsh'
22081 static_ext='$static_ext'
22082 stdchar='$stdchar'
22083 stdio_base='$stdio_base'
22084 stdio_bufsiz='$stdio_bufsiz'
22085 stdio_cnt='$stdio_cnt'
22086 stdio_filbuf='$stdio_filbuf'
22087 stdio_ptr='$stdio_ptr'
22088 stdio_stream_array='$stdio_stream_array'
22089 strerror_r_proto='$strerror_r_proto'
22090 strings='$strings'
22091 submit='$submit'
22092 subversion='$subversion'
22093 sysman='$sysman'
22094 tail='$tail'
22095 tar='$tar'
22096 targetarch='$targetarch'
22097 tbl='$tbl'
22098 tee='$tee'
22099 test='$test'
22100 timeincl='$timeincl'
22101 timetype='$timetype'
22102 tmpnam_r_proto='$tmpnam_r_proto'
22103 to='$to'
22104 touch='$touch'
22105 tr='$tr'
22106 trnl='$trnl'
22107 troff='$troff'
22108 ttyname_r_proto='$ttyname_r_proto'
22109 u16size='$u16size'
22110 u16type='$u16type'
22111 u32size='$u32size'
22112 u32type='$u32type'
22113 u64size='$u64size'
22114 u64type='$u64type'
22115 u8size='$u8size'
22116 u8type='$u8type'
22117 uidformat='$uidformat'
22118 uidsign='$uidsign'
22119 uidsize='$uidsize'
22120 uidtype='$uidtype'
22121 uname='$uname'
22122 uniq='$uniq'
22123 uquadtype='$uquadtype'
22124 use5005threads='$use5005threads'
22125 use64bitall='$use64bitall'
22126 use64bitint='$use64bitint'
22127 usecrosscompile='$usecrosscompile'
22128 usedl='$usedl'
22129 usefaststdio='$usefaststdio'
22130 useithreads='$useithreads'
22131 uselargefiles='$uselargefiles'
22132 uselongdouble='$uselongdouble'
22133 usemallocwrap='$usemallocwrap'
22134 usemorebits='$usemorebits'
22135 usemultiplicity='$usemultiplicity'
22136 usemymalloc='$usemymalloc'
22137 usenm='$usenm'
22138 useopcode='$useopcode'
22139 useperlio='$useperlio'
22140 useposix='$useposix'
22141 usereentrant='$usereentrant'
22142 userelocatableinc='$userelocatableinc'
22143 usesfio='$usesfio'
22144 useshrplib='$useshrplib'
22145 usesitecustomize='$usesitecustomize'
22146 usesocks='$usesocks'
22147 usethreads='$usethreads'
22148 usevendorprefix='$usevendorprefix'
22149 usevfork='$usevfork'
22150 usrinc='$usrinc'
22151 uuname='$uuname'
22152 uvXUformat='$uvXUformat'
22153 uvoformat='$uvoformat'
22154 uvsize='$uvsize'
22155 uvtype='$uvtype'
22156 uvuformat='$uvuformat'
22157 uvxformat='$uvxformat'
22158 vendorarch='$vendorarch'
22159 vendorarchexp='$vendorarchexp'
22160 vendorbin='$vendorbin'
22161 vendorbinexp='$vendorbinexp'
22162 vendorhtml1dir='$vendorhtml1dir'
22163 vendorhtml1direxp='$vendorhtml1direxp'
22164 vendorhtml3dir='$vendorhtml3dir'
22165 vendorhtml3direxp='$vendorhtml3direxp'
22166 vendorlib='$vendorlib'
22167 vendorlib_stem='$vendorlib_stem'
22168 vendorlibexp='$vendorlibexp'
22169 vendorman1dir='$vendorman1dir'
22170 vendorman1direxp='$vendorman1direxp'
22171 vendorman3dir='$vendorman3dir'
22172 vendorman3direxp='$vendorman3direxp'
22173 vendorprefix='$vendorprefix'
22174 vendorprefixexp='$vendorprefixexp'
22175 vendorscript='$vendorscript'
22176 vendorscriptexp='$vendorscriptexp'
22177 version='$version'
22178 version_patchlevel_string='$version_patchlevel_string'
22179 versiononly='$versiononly'
22180 vi='$vi'
22181 voidflags='$voidflags'
22182 xlibpth='$xlibpth'
22183 yacc='$yacc'
22184 yaccflags='$yaccflags'
22185 zcat='$zcat'
22186 zip='$zip'
22187 EOT
22188
22189 : Add in command line options if available
22190 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22191
22192 : add special variables
22193 $test -f $src/patchlevel.h && \
22194 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22195 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22196 echo "PERL_CONFIG_SH=true" >>config.sh
22197
22198 : propagate old symbols
22199 if $test -f UU/config.sh; then
22200         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22201         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22202         $sort | $uniq -u >UU/oldsyms
22203         set X `cat UU/oldsyms`
22204         shift
22205         case $# in
22206         0) ;;
22207         *)
22208                 cat <<EOM
22209 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22210 EOM
22211                 echo "# Variables propagated from previous config.sh file." >>config.sh
22212                 for sym in `cat UU/oldsyms`; do
22213                         echo "    Propagating $hint variable "'$'"$sym..."
22214                         eval 'tmp="$'"${sym}"'"'
22215                         echo "$tmp" | \
22216                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22217                 done
22218                 ;;
22219         esac
22220 fi
22221
22222 : Finish up by extracting the .SH files
22223 case "$alldone" in
22224 exit)
22225         $rm -rf UU
22226         echo "Extraction done."
22227         exit 0
22228         ;;
22229 cont)
22230         ;;
22231 '')
22232         dflt=''
22233         nostick=true
22234         $cat <<EOM
22235
22236 If you'd like to make any changes to the config.sh file before I begin
22237 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22238
22239 EOM
22240         rp="Press return or use a shell escape to edit config.sh:"
22241         . UU/myread
22242         nostick=''
22243         case "$ans" in
22244         '') ;;
22245         *) : in case they cannot read
22246                 sh 1>&4 -c "$ans";;
22247         esac
22248         ;;
22249 esac
22250
22251 : if this fails, just run all the .SH files by hand
22252 . ./config.sh
22253
22254 echo " "
22255 exec 1>&4
22256 pwd=`pwd`
22257 . ./UU/extract
22258 cd "$pwd"
22259
22260 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22261         dflt=y
22262         case "$silent" in
22263         true) ;;
22264         *)
22265                 $cat <<EOM
22266
22267 Now you need to generate make dependencies by running "$make depend".
22268 You might prefer to run it in background: "$make depend > makedepend.out &"
22269 It can take a while, so you might not want to run it right now.
22270
22271 EOM
22272                 ;;
22273         esac
22274         rp="Run $make depend now?"
22275         . UU/myread
22276         case "$ans" in
22277         y*)
22278                 $make depend && echo "Now you must run '$make'."
22279                 ;;
22280         *)
22281                 echo "You must run '$make depend' then '$make'."
22282                 ;;
22283         esac
22284 elif test -f [Mm]akefile; then
22285         echo " "
22286         echo "Now you must run a $make."
22287 else
22288         echo "Configure done."
22289 fi
22290
22291 if $test -f Policy.sh; then
22292     $cat <<EOM
22293
22294 If you compile $package on a different machine or from a different object
22295 directory, copy the Policy.sh file from this object directory to the
22296 new one before you run Configure -- this will help you with most of
22297 the policy defaults.
22298
22299 EOM
22300 fi
22301 if $test -f config.msg; then
22302     echo "Hmm.  I also noted the following information while running:"
22303     echo " "
22304     $cat config.msg >&4
22305     $rm -f config.msg
22306 fi
22307 $rm -f kit*isdone ark*isdone
22308 $rm -rf UU
22309
22310 : End of Configure
22311