This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add missing d_printf_format_null/PRINTF_FORMAT_NULL_OK to Win32 canned
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20 #
21 # 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 Tue Nov 21 16:13:46 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 if test ! -c /dev/null ; then
69         cat >&4 <<EOF
70 ***
71 *** I'm sorry, but /dev/null appears to be a file rather than a device.
72 *** Please consult your operating sytem's notes for making a device
73 *** in /dev.
74 *** Cannot continue, aborting.
75 ***
76 EOF
77         exit 1
78 fi
79
80 : compute my invocation name
81 me=$0
82 case "$0" in
83 */*)
84         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
85         test "$me" || me=$0
86         ;;
87 esac
88
89 : Proper separator for the PATH environment variable
90 p_=:
91 : On OS/2 this directory should exist if this is not floppy only system :-]
92 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
93     if test -n "$OS2_SHELL"; then
94                 p_=\;
95                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
96                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
97                 is_os2=yes
98         elif test -n "$DJGPP"; then
99                 case "X${MACHTYPE:-nonesuchmach}" in
100                 *cygwin) ;;
101                 *) p_=\; ;;
102                 esac
103         fi
104 fi
105
106 : Proper PATH setting
107 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
108 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
109 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
110 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
111 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
112 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
113 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
114 paths="$paths /sbin /usr/sbin /usr/libexec"
115 paths="$paths /system/gnu_library/bin"
116
117 for p in $paths
118 do
119         case "$p_$PATH$p_" in
120         *$p_$p$p_*) ;;
121         *) test -d $p && PATH=$PATH$p_$p ;;
122         esac
123 done
124
125 PATH=.$p_$PATH
126 export PATH
127
128 : shall we be using ksh?
129 inksh=''
130 needksh=''
131 avoidksh=''
132 newsh=/bin/ksh
133 changesh=''
134 if (PATH=.; alias -x) >/dev/null 2>&1; then
135                 inksh=true
136 fi
137 if test -f /hp-ux -a -f /bin/ksh; then
138         needksh='to avoid sh bug in "here document" expansion'
139 fi
140 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
141         if test X`/usr/bin/uname -v` = X4; then
142                 avoidksh="to avoid AIX 4's /bin/sh"
143                 newsh=/usr/bin/bsh
144         fi
145 fi
146 if test -f /osf_boot -a -f /usr/sbin/setld; then
147         if test X`/usr/bin/uname -s` = XOSF1; then
148                 avoidksh="to avoid Digital UNIX' ksh"
149                 newsh=/bin/sh
150                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
151         fi
152 fi
153 case "$inksh/$needksh" in
154 /[a-z]*)
155                 ENV=''
156                 changesh=true
157                 reason="$needksh"
158         ;;
159 esac
160 case "$inksh/$avoidksh" in
161 true/[a-z]*)
162         changesh=true
163         reason="$avoidksh"
164         ;;
165 esac
166 case "$inksh/$needksh-$avoidksh-" in
167 true/--)
168                 cat <<EOM
169 (I see you are using the Korn shell.  Some ksh's blow up on $me,
170 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
171 EOM
172         ;;
173 esac
174 case "$changesh" in
175 true)
176         export newsh
177         echo "(Feeding myself to $newsh $reason.)"
178         case "$0" in
179         Configure|*/Configure) exec $newsh $0 "$@";;
180         *) exec $newsh Configure "$@";;
181         esac
182         ;;
183 esac
184
185 : if needed set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *)              CDPATH='' ;;
192         esac
193         ;;
194 esac
195 : Configure runs within the UU subdirectory
196 test -d UU || mkdir UU
197 cd UU && rm -f ./*
198
199 ccname=''
200 ccversion=''
201 ccsymbols=''
202 cppccsymbols=''
203 cppsymbols=''
204 from=''
205 run=''
206 targetarch=''
207 to=''
208 usecrosscompile=''
209 mistrustnm=''
210 perllibs=''
211 dynamic_ext=''
212 extensions=''
213 known_extensions=''
214 nonxs_ext=''
215 static_ext=''
216 useopcode=''
217 useposix=''
218 extras=''
219 d_bsd=''
220 d_eunice=''
221 d_xenix=''
222 eunicefix=''
223 Mcc=''
224 ar=''
225 awk=''
226 bash=''
227 bison=''
228 byacc=''
229 cat=''
230 chgrp=''
231 chmod=''
232 chown=''
233 comm=''
234 compress=''
235 cp=''
236 cpio=''
237 cpp=''
238 csh=''
239 date=''
240 echo=''
241 egrep=''
242 emacs=''
243 expr=''
244 find=''
245 flex=''
246 gmake=''
247 grep=''
248 gzip=''
249 inews=''
250 ksh=''
251 less=''
252 line=''
253 lint=''
254 ln=''
255 lp=''
256 lpr=''
257 ls=''
258 mail=''
259 mailx=''
260 make=''
261 mkdir=''
262 more=''
263 mv=''
264 nm=''
265 nroff=''
266 perl=''
267 pg=''
268 pmake=''
269 pr=''
270 rm=''
271 rmail=''
272 sed=''
273 sendmail=''
274 shar=''
275 sleep=''
276 smail=''
277 sort=''
278 submit=''
279 tail=''
280 tar=''
281 tbl=''
282 tee=''
283 test=''
284 touch=''
285 tr=''
286 troff=''
287 uname=''
288 uniq=''
289 uuname=''
290 vi=''
291 zcat=''
292 zip=''
293 full_ar=''
294 full_sed=''
295 libswanted=''
296 hint=''
297 myuname=''
298 osname=''
299 osvers=''
300 Author=''
301 Date=''
302 Header=''
303 Id=''
304 Locker=''
305 Log=''
306 RCSfile=''
307 Revision=''
308 Source=''
309 State=''
310 _a=''
311 _exe=''
312 _o=''
313 archobjs=''
314 exe_ext=''
315 firstmakefile=''
316 lib_ext=''
317 obj_ext=''
318 path_sep=''
319 afs=''
320 afsroot=''
321 alignbytes=''
322 ansi2knr=''
323 archlib=''
324 archlibexp=''
325 d_archlib=''
326 installarchlib=''
327 archname=''
328 myarchname=''
329 d_atolf=''
330 d_atoll=''
331 baserev=''
332 bin=''
333 binexp=''
334 initialinstalllocation=''
335 installbin=''
336 userelocatableinc=''
337 byteorder=''
338 cc=''
339 ccflags=''
340 cppflags=''
341 ldflags=''
342 lkflags=''
343 locincpth=''
344 optimize=''
345 cf_email=''
346 cf_by=''
347 cf_time=''
348 charsize=''
349 contains=''
350 cpp_stuff=''
351 cpplast=''
352 cppminus=''
353 cpprun=''
354 cppstdin=''
355 d__fwalk=''
356 d_access=''
357 d_accessx=''
358 d_aintl=''
359 d_alarm=''
360 asctime_r_proto=''
361 d_asctime_r=''
362 d_attribute_format=''
363 d_attribute_malloc=''
364 d_attribute_nonnull=''
365 d_attribute_noreturn=''
366 d_attribute_pure=''
367 d_attribute_unused=''
368 d_attribute_warn_unused_result=''
369 d_printf_format_null=''
370 d_bcmp=''
371 d_bcopy=''
372 d_builtin_choose_expr=''
373 d_builtin_expect=''
374 d_bzero=''
375 d_c99_variadic_macros=''
376 d_casti32=''
377 castflags=''
378 d_castneg=''
379 d_chown=''
380 d_chroot=''
381 d_chsize=''
382 d_class=''
383 d_clearenv=''
384 d_closedir=''
385 d_void_closedir=''
386 d_cmsghdr_s=''
387 d_const=''
388 d_copysignl=''
389 d_cplusplus=''
390 cryptlib=''
391 d_crypt=''
392 crypt_r_proto=''
393 d_crypt_r=''
394 d_csh=''
395 full_csh=''
396 d_ctermid=''
397 ctermid_r_proto=''
398 d_ctermid_r=''
399 ctime_r_proto=''
400 d_ctime_r=''
401 d_cuserid=''
402 d_dbl_dig=''
403 d_dbminitproto=''
404 d_difftime=''
405 d_dir_dd_fd=''
406 d_dirfd=''
407 d_dlerror=''
408 d_dlopen=''
409 d_dlsymun=''
410 d_dosuid=''
411 d_suidsafe=''
412 d_drand48_r=''
413 drand48_r_proto=''
414 d_drand48proto=''
415 d_dup2=''
416 d_eaccess=''
417 d_endgrent=''
418 d_endgrent_r=''
419 endgrent_r_proto=''
420 d_endhent=''
421 d_endhostent_r=''
422 endhostent_r_proto=''
423 d_endnent=''
424 d_endnetent_r=''
425 endnetent_r_proto=''
426 d_endpent=''
427 d_endprotoent_r=''
428 endprotoent_r_proto=''
429 d_endpwent=''
430 d_endpwent_r=''
431 endpwent_r_proto=''
432 d_endsent=''
433 d_endservent_r=''
434 endservent_r_proto=''
435 d_faststdio=''
436 d_fchdir=''
437 d_fchmod=''
438 d_fchown=''
439 d_fcntl=''
440 d_fcntl_can_lock=''
441 d_fd_macros=''
442 d_fd_set=''
443 d_fds_bits=''
444 d_fgetpos=''
445 d_finite=''
446 d_finitel=''
447 d_flexfnam=''
448 d_flock=''
449 d_flockproto=''
450 d_fork=''
451 d_fp_class=''
452 d_fpclass=''
453 d_fpclassify=''
454 d_fpclassl=''
455 d_fpos64_t=''
456 d_frexpl=''
457 d_fs_data_s=''
458 d_fseeko=''
459 d_fsetpos=''
460 d_fstatfs=''
461 d_fsync=''
462 d_ftello=''
463 d_ftime=''
464 d_gettimeod=''
465 d_futimes=''
466 d_Gconvert=''
467 d_getcwd=''
468 d_getespwnam=''
469 d_getfsstat=''
470 d_getgrent=''
471 d_getgrent_r=''
472 getgrent_r_proto=''
473 d_getgrgid_r=''
474 getgrgid_r_proto=''
475 d_getgrnam_r=''
476 getgrnam_r_proto=''
477 d_getgrps=''
478 d_gethbyaddr=''
479 d_gethbyname=''
480 d_gethent=''
481 aphostname=''
482 d_gethname=''
483 d_phostname=''
484 d_uname=''
485 d_gethostbyaddr_r=''
486 gethostbyaddr_r_proto=''
487 d_gethostbyname_r=''
488 gethostbyname_r_proto=''
489 d_gethostent_r=''
490 gethostent_r_proto=''
491 d_gethostprotos=''
492 d_getitimer=''
493 d_getlogin=''
494 d_getlogin_r=''
495 getlogin_r_proto=''
496 d_getmnt=''
497 d_getmntent=''
498 d_getnbyaddr=''
499 d_getnbyname=''
500 d_getnent=''
501 d_getnetbyaddr_r=''
502 getnetbyaddr_r_proto=''
503 d_getnetbyname_r=''
504 getnetbyname_r_proto=''
505 d_getnetent_r=''
506 getnetent_r_proto=''
507 d_getnetprotos=''
508 d_getpagsz=''
509 d_getpent=''
510 d_getpgid=''
511 d_getpgrp2=''
512 d_bsdgetpgrp=''
513 d_getpgrp=''
514 d_getppid=''
515 d_getprior=''
516 d_getpbyname=''
517 d_getpbynumber=''
518 d_getprotobyname_r=''
519 getprotobyname_r_proto=''
520 d_getprotobynumber_r=''
521 getprotobynumber_r_proto=''
522 d_getprotoent_r=''
523 getprotoent_r_proto=''
524 d_getprotoprotos=''
525 d_getprpwnam=''
526 d_getpwent=''
527 d_getpwent_r=''
528 getpwent_r_proto=''
529 d_getpwnam_r=''
530 getpwnam_r_proto=''
531 d_getpwuid_r=''
532 getpwuid_r_proto=''
533 d_getsent=''
534 d_getservbyname_r=''
535 getservbyname_r_proto=''
536 d_getservbyport_r=''
537 getservbyport_r_proto=''
538 d_getservent_r=''
539 getservent_r_proto=''
540 d_getservprotos=''
541 d_getspnam=''
542 d_getspnam_r=''
543 getspnam_r_proto=''
544 d_getsbyname=''
545 d_getsbyport=''
546 d_gmtime_r=''
547 gmtime_r_proto=''
548 d_gnulibc=''
549 gnulibc_version=''
550 d_hasmntopt=''
551 d_htonl=''
552 d_ilogbl=''
553 d_inetaton=''
554 d_int64_t=''
555 d_isascii=''
556 d_isfinite=''
557 d_isinf=''
558 d_isnan=''
559 d_isnanl=''
560 d_killpg=''
561 d_lchown=''
562 d_ldbl_dig=''
563 d_libm_lib_version=''
564 d_link=''
565 d_localtime_r=''
566 d_localtime_r_needs_tzset=''
567 localtime_r_proto=''
568 d_locconv=''
569 d_lockf=''
570 d_longdbl=''
571 longdblsize=''
572 d_longlong=''
573 longlongsize=''
574 d_lseekproto=''
575 d_lstat=''
576 d_madvise=''
577 d_malloc_good_size=''
578 d_malloc_size=''
579 d_mblen=''
580 d_mbstowcs=''
581 d_mbtowc=''
582 d_memchr=''
583 d_memcmp=''
584 d_memcpy=''
585 d_memmove=''
586 d_memset=''
587 d_mkdir=''
588 d_mkdtemp=''
589 d_mkfifo=''
590 d_mkstemp=''
591 d_mkstemps=''
592 d_mktime=''
593 d_mmap=''
594 mmaptype=''
595 d_modfl=''
596 d_modfl_pow32_bug=''
597 d_modflproto=''
598 d_mprotect=''
599 d_msg=''
600 d_msgctl=''
601 d_msgget=''
602 d_msghdr_s=''
603 d_msgrcv=''
604 d_msgsnd=''
605 d_msync=''
606 d_munmap=''
607 d_nice=''
608 d_nl_langinfo=''
609 d_off64_t=''
610 d_open3=''
611 d_fpathconf=''
612 d_pathconf=''
613 d_pause=''
614 d_pipe=''
615 d_poll=''
616 d_portable=''
617 d_procselfexe=''
618 procselfexe=''
619 d_old_pthread_create_joinable=''
620 old_pthread_create_joinable=''
621 d_pthread_atfork=''
622 d_pthread_attr_setscope=''
623 d_pthread_yield=''
624 d_sched_yield=''
625 sched_yield=''
626 d_qgcvt=''
627 d_random_r=''
628 random_r_proto=''
629 d_readdir64_r=''
630 readdir64_r_proto=''
631 d_readdir=''
632 d_rewinddir=''
633 d_seekdir=''
634 d_telldir=''
635 d_readdir_r=''
636 readdir_r_proto=''
637 d_readlink=''
638 d_readv=''
639 d_recvmsg=''
640 d_rename=''
641 d_rmdir=''
642 d_safebcpy=''
643 d_safemcpy=''
644 d_sanemcmp=''
645 d_sbrkproto=''
646 d_scalbnl=''
647 d_select=''
648 d_sem=''
649 d_semctl=''
650 d_semget=''
651 d_semop=''
652 d_sendmsg=''
653 d_setegid=''
654 d_seteuid=''
655 d_setgrent=''
656 d_setgrent_r=''
657 setgrent_r_proto=''
658 d_setgrps=''
659 d_sethent=''
660 d_sethostent_r=''
661 sethostent_r_proto=''
662 d_setitimer=''
663 d_setlinebuf=''
664 d_setlocale=''
665 d_setlocale_r=''
666 setlocale_r_proto=''
667 d_setnent=''
668 d_setnetent_r=''
669 setnetent_r_proto=''
670 d_setpent=''
671 d_setpgid=''
672 d_setpgrp2=''
673 d_bsdsetpgrp=''
674 d_setpgrp=''
675 d_setprior=''
676 d_setproctitle=''
677 d_setprotoent_r=''
678 setprotoent_r_proto=''
679 d_setpwent=''
680 d_setpwent_r=''
681 setpwent_r_proto=''
682 d_setregid=''
683 d_setresgid=''
684 d_setresuid=''
685 d_setreuid=''
686 d_setrgid=''
687 d_setruid=''
688 d_setsent=''
689 d_setservent_r=''
690 setservent_r_proto=''
691 d_setsid=''
692 d_setvbuf=''
693 d_sfio=''
694 usesfio=''
695 d_shm=''
696 d_shmat=''
697 d_shmatprototype=''
698 shmattype=''
699 d_shmctl=''
700 d_shmdt=''
701 d_shmget=''
702 d_sigaction=''
703 d_sigprocmask=''
704 d_sigsetjmp=''
705 usesitecustomize=''
706 d_snprintf=''
707 d_vsnprintf=''
708 d_sockatmark=''
709 d_sockatmarkproto=''
710 d_msg_ctrunc=''
711 d_msg_dontroute=''
712 d_msg_oob=''
713 d_msg_peek=''
714 d_msg_proxy=''
715 d_oldsock=''
716 d_scm_rights=''
717 d_socket=''
718 d_sockpair=''
719 sockethdr=''
720 socketlib=''
721 d_socklen_t=''
722 d_socks5_init=''
723 d_sprintf_returns_strlen=''
724 d_sqrtl=''
725 d_srand48_r=''
726 srand48_r_proto=''
727 d_srandom_r=''
728 srandom_r_proto=''
729 d_sresgproto=''
730 d_sresuproto=''
731 d_statblks=''
732 d_statfs_f_flags=''
733 d_statfs_s=''
734 d_fstatvfs=''
735 d_statvfs=''
736 d_stdio_cnt_lval=''
737 d_stdio_ptr_lval=''
738 d_stdio_ptr_lval_nochange_cnt=''
739 d_stdio_ptr_lval_sets_cnt=''
740 d_stdiobase=''
741 d_stdstdio=''
742 stdio_base=''
743 stdio_bufsiz=''
744 stdio_cnt=''
745 stdio_filbuf=''
746 stdio_ptr=''
747 d_index=''
748 d_strchr=''
749 d_strcoll=''
750 d_strctcpy=''
751 d_strerrm=''
752 d_strerror=''
753 d_sysernlst=''
754 d_syserrlst=''
755 d_strerror_r=''
756 strerror_r_proto=''
757 d_strftime=''
758 d_strlcat=''
759 d_strlcpy=''
760 d_strtod=''
761 d_strtol=''
762 d_strtold=''
763 d_strtoll=''
764 d_strtoq=''
765 d_strtoul=''
766 d_strtoull=''
767 d_strtouq=''
768 d_strxfrm=''
769 d_symlink=''
770 d_syscall=''
771 d_syscallproto=''
772 d_sysconf=''
773 d_system=''
774 d_tcgetpgrp=''
775 d_tcsetpgrp=''
776 d_telldirproto=''
777 d_time=''
778 timetype=''
779 clocktype=''
780 d_times=''
781 d_tmpnam_r=''
782 tmpnam_r_proto=''
783 d_truncate=''
784 d_ttyname_r=''
785 ttyname_r_proto=''
786 d_tzname=''
787 d_u32align=''
788 d_ualarm=''
789 d_umask=''
790 d_semctl_semid_ds=''
791 d_semctl_semun=''
792 d_union_semun=''
793 d_unordered=''
794 d_unsetenv=''
795 d_usleep=''
796 d_usleepproto=''
797 d_ustat=''
798 d_vfork=''
799 usevfork=''
800 d_voidsig=''
801 signal_t=''
802 d_volatile=''
803 d_charvspr=''
804 d_vprintf=''
805 d_wait4=''
806 d_waitpid=''
807 d_wcstombs=''
808 d_wctomb=''
809 d_writev=''
810 dlext=''
811 cccdlflags=''
812 ccdlflags=''
813 dlsrc=''
814 ld=''
815 lddlflags=''
816 usedl=''
817 doublesize=''
818 ebcdic=''
819 fflushNULL=''
820 fflushall=''
821 fpossize=''
822 fpostype=''
823 gccansipedantic=''
824 gccosandvers=''
825 gccversion=''
826 gidformat=''
827 gidsign=''
828 gidsize=''
829 gidtype=''
830 groupstype=''
831 h_fcntl=''
832 h_sysfile=''
833 html1dir=''
834 html1direxp=''
835 installhtml1dir=''
836 html3dir=''
837 html3direxp=''
838 installhtml3dir=''
839 i_arpainet=''
840 i_crypt=''
841 db_hashtype=''
842 db_prefixtype=''
843 db_version_major=''
844 db_version_minor=''
845 db_version_patch=''
846 i_db=''
847 i_dbm=''
848 i_rpcsvcdbm=''
849 d_dirnamlen=''
850 direntrytype=''
851 i_dirent=''
852 i_dld=''
853 i_dlfcn=''
854 i_fcntl=''
855 i_float=''
856 i_fp=''
857 i_fp_class=''
858 i_gdbm=''
859 d_grpasswd=''
860 i_grp=''
861 i_ieeefp=''
862 i_inttypes=''
863 i_langinfo=''
864 i_libutil=''
865 i_limits=''
866 i_locale=''
867 i_machcthr=''
868 i_malloc=''
869 i_math=''
870 i_memory=''
871 i_mntent=''
872 i_ndbm=''
873 i_netdb=''
874 i_neterrno=''
875 i_netinettcp=''
876 i_niin=''
877 i_sysin=''
878 i_poll=''
879 i_prot=''
880 i_pthread=''
881 d_pwage=''
882 d_pwchange=''
883 d_pwclass=''
884 d_pwcomment=''
885 d_pwexpire=''
886 d_pwgecos=''
887 d_pwpasswd=''
888 d_pwquota=''
889 i_pwd=''
890 i_sfio=''
891 i_shadow=''
892 i_socks=''
893 i_stddef=''
894 i_stdlib=''
895 i_string=''
896 strings=''
897 i_sunmath=''
898 i_sysaccess=''
899 i_sysdir=''
900 i_sysfile=''
901 d_voidtty=''
902 i_bsdioctl=''
903 i_sysfilio=''
904 i_sysioctl=''
905 i_syssockio=''
906 i_syslog=''
907 i_sysmman=''
908 i_sysmode=''
909 i_sysmount=''
910 i_sysndir=''
911 i_sysparam=''
912 i_sysresrc=''
913 i_syssecrt=''
914 i_sysselct=''
915 i_sysstat=''
916 i_sysstatfs=''
917 i_sysstatvfs=''
918 i_systimes=''
919 i_systypes=''
920 i_sysuio=''
921 i_sysun=''
922 i_sysutsname=''
923 i_sysvfs=''
924 i_syswait=''
925 i_sgtty=''
926 i_termio=''
927 i_termios=''
928 d_tm_tm_gmtoff=''
929 d_tm_tm_zone=''
930 i_systime=''
931 i_systimek=''
932 i_time=''
933 timeincl=''
934 i_unistd=''
935 i_ustat=''
936 i_utime=''
937 i_values=''
938 i_stdarg=''
939 i_varargs=''
940 i_varhdr=''
941 i_vfork=''
942 d_inc_version_list=''
943 inc_version_list=''
944 inc_version_list_init=''
945 installprefix=''
946 installprefixexp=''
947 installstyle=''
948 installusrbinperl=''
949 intsize=''
950 longsize=''
951 shortsize=''
952 issymlink=''
953 libc=''
954 ldlibpthname=''
955 libperl=''
956 shrpenv=''
957 useshrplib=''
958 glibpth=''
959 libpth=''
960 loclibpth=''
961 plibpth=''
962 xlibpth=''
963 ignore_versioned_solibs=''
964 libs=''
965 libsdirs=''
966 libsfiles=''
967 libsfound=''
968 libspath=''
969 lns=''
970 d_PRIEUldbl=''
971 d_PRIFUldbl=''
972 d_PRIGUldbl=''
973 d_PRIeldbl=''
974 d_PRIfldbl=''
975 d_PRIgldbl=''
976 d_SCNfldbl=''
977 sPRIEUldbl=''
978 sPRIFUldbl=''
979 sPRIGUldbl=''
980 sPRIeldbl=''
981 sPRIfldbl=''
982 sPRIgldbl=''
983 sSCNfldbl=''
984 lseeksize=''
985 lseektype=''
986 mad=''
987 madlyh=''
988 madlyobj=''
989 madlysrc=''
990 make_set_make=''
991 d_mymalloc=''
992 freetype=''
993 mallocobj=''
994 mallocsrc=''
995 malloctype=''
996 usemallocwrap=''
997 usemymalloc=''
998 installman1dir=''
999 man1dir=''
1000 man1direxp=''
1001 man1ext=''
1002 installman3dir=''
1003 man3dir=''
1004 man3direxp=''
1005 man3ext=''
1006 modetype=''
1007 multiarch=''
1008 mydomain=''
1009 myhostname=''
1010 phostname=''
1011 c=''
1012 n=''
1013 d_eofnblk=''
1014 eagain=''
1015 o_nonblock=''
1016 rd_nodata=''
1017 need_va_copy=''
1018 netdb_hlen_type=''
1019 netdb_host_type=''
1020 netdb_name_type=''
1021 netdb_net_type=''
1022 groupcat=''
1023 hostcat=''
1024 passcat=''
1025 orderlib=''
1026 ranlib=''
1027 d_perl_otherlibdirs=''
1028 otherlibdirs=''
1029 package=''
1030 spackage=''
1031 pager=''
1032 api_revision=''
1033 api_subversion=''
1034 api_version=''
1035 api_versionstring=''
1036 patchlevel=''
1037 perl_patchlevel=''
1038 revision=''
1039 subversion=''
1040 version=''
1041 version_patchlevel_string=''
1042 perl5=''
1043 perladmin=''
1044 perlpath=''
1045 d_nv_preserves_uv=''
1046 d_nv_zero_is_allbits_zero=''
1047 i16size=''
1048 i16type=''
1049 i32size=''
1050 i32type=''
1051 i64size=''
1052 i64type=''
1053 i8size=''
1054 i8type=''
1055 ivsize=''
1056 ivtype=''
1057 nv_preserves_uv_bits=''
1058 nvsize=''
1059 nvtype=''
1060 u16size=''
1061 u16type=''
1062 u32size=''
1063 u32type=''
1064 u64size=''
1065 u64type=''
1066 u8size=''
1067 u8type=''
1068 uvsize=''
1069 uvtype=''
1070 ivdformat=''
1071 nvEUformat=''
1072 nvFUformat=''
1073 nvGUformat=''
1074 nveformat=''
1075 nvfformat=''
1076 nvgformat=''
1077 uvXUformat=''
1078 uvoformat=''
1079 uvuformat=''
1080 uvxformat=''
1081 pidtype=''
1082 prefix=''
1083 prefixexp=''
1084 installprivlib=''
1085 privlib=''
1086 privlibexp=''
1087 prototype=''
1088 ptrsize=''
1089 d_PRIXU64=''
1090 d_PRId64=''
1091 d_PRIi64=''
1092 d_PRIo64=''
1093 d_PRIu64=''
1094 d_PRIx64=''
1095 sPRIXU64=''
1096 sPRId64=''
1097 sPRIi64=''
1098 sPRIo64=''
1099 sPRIu64=''
1100 sPRIx64=''
1101 d_quad=''
1102 quadkind=''
1103 quadtype=''
1104 uquadtype=''
1105 drand01=''
1106 randbits=''
1107 randfunc=''
1108 randseedtype=''
1109 seedfunc=''
1110 installscript=''
1111 scriptdir=''
1112 scriptdirexp=''
1113 selectminbits=''
1114 selecttype=''
1115 sh=''
1116 sig_count=''
1117 sig_name=''
1118 sig_name_init=''
1119 sig_num=''
1120 sig_num_init=''
1121 sig_size=''
1122 d_sitearch=''
1123 installsitearch=''
1124 sitearch=''
1125 sitearchexp=''
1126 installsitebin=''
1127 sitebin=''
1128 sitebinexp=''
1129 installsitehtml1dir=''
1130 sitehtml1dir=''
1131 sitehtml1direxp=''
1132 installsitehtml3dir=''
1133 sitehtml3dir=''
1134 sitehtml3direxp=''
1135 installsitelib=''
1136 sitelib=''
1137 sitelib_stem=''
1138 sitelibexp=''
1139 installsiteman1dir=''
1140 siteman1dir=''
1141 siteman1direxp=''
1142 installsiteman3dir=''
1143 siteman3dir=''
1144 siteman3direxp=''
1145 siteprefix=''
1146 siteprefixexp=''
1147 installsitescript=''
1148 sitescript=''
1149 sitescriptexp=''
1150 sizesize=''
1151 sizetype=''
1152 so=''
1153 socksizetype=''
1154 sharpbang=''
1155 shsharp=''
1156 spitshell=''
1157 src=''
1158 ssizetype=''
1159 startperl=''
1160 startsh=''
1161 stdchar=''
1162 d_stdio_stream_array=''
1163 stdio_stream_array=''
1164 sysman=''
1165 trnl=''
1166 uidformat=''
1167 uidsign=''
1168 uidsize=''
1169 uidtype=''
1170 archname64=''
1171 use64bitall=''
1172 use64bitint=''
1173 usefaststdio=''
1174 ccflags_uselargefiles=''
1175 ldflags_uselargefiles=''
1176 libswanted_uselargefiles=''
1177 uselargefiles=''
1178 uselongdouble=''
1179 usemorebits=''
1180 usemultiplicity=''
1181 nm_opt=''
1182 nm_so_opt=''
1183 runnm=''
1184 usenm=''
1185 useperlio=''
1186 usesocks=''
1187 d_oldpthreads=''
1188 use5005threads=''
1189 useithreads=''
1190 usereentrant=''
1191 usethreads=''
1192 incpath=''
1193 mips_type=''
1194 usrinc=''
1195 d_vendorarch=''
1196 installvendorarch=''
1197 vendorarch=''
1198 vendorarchexp=''
1199 d_vendorbin=''
1200 installvendorbin=''
1201 vendorbin=''
1202 vendorbinexp=''
1203 installvendorhtml1dir=''
1204 vendorhtml1dir=''
1205 vendorhtml1direxp=''
1206 installvendorhtml3dir=''
1207 vendorhtml3dir=''
1208 vendorhtml3direxp=''
1209 d_vendorlib=''
1210 installvendorlib=''
1211 vendorlib=''
1212 vendorlib_stem=''
1213 vendorlibexp=''
1214 installvendorman1dir=''
1215 vendorman1dir=''
1216 vendorman1direxp=''
1217 installvendorman3dir=''
1218 vendorman3dir=''
1219 vendorman3direxp=''
1220 usevendorprefix=''
1221 vendorprefix=''
1222 vendorprefixexp=''
1223 d_vendorscript=''
1224 installvendorscript=''
1225 vendorscript=''
1226 vendorscriptexp=''
1227 versiononly=''
1228 defvoidused=''
1229 voidflags=''
1230 yacc=''
1231 yaccflags=''
1232 CONFIG=''
1233
1234 define='define'
1235 undef='undef'
1236 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1237 rmlist=''
1238
1239 : We must find out about Eunice early
1240 eunicefix=':'
1241 if test -f /etc/unixtovms; then
1242         eunicefix=/etc/unixtovms
1243 fi
1244 if test -f /etc/unixtovms.exe; then
1245         eunicefix=/etc/unixtovms.exe
1246 fi
1247
1248 : Set executable suffix now -- needed before hints available
1249 if test -f "/libs/version.library"; then
1250 : Amiga OS
1251     _exe=""
1252 elif test -f "/system/gnu_library/bin/ar.pm"; then
1253 : Stratus VOS
1254     _exe=".pm"
1255 elif test -n "$DJGPP"; then
1256 : DOS DJGPP
1257     _exe=".exe"
1258 elif test -d c:/. -o -n "$is_os2" ; then
1259 : OS/2 or cygwin
1260     _exe=".exe"
1261 fi
1262
1263 i_whoami=''
1264 ccname=''
1265 ccversion=''
1266 perllibs=''
1267 : set useposix=false in your hint file to disable the POSIX extension.
1268 useposix=true
1269 : set useopcode=false in your hint file to disable the Opcode extension.
1270 useopcode=true
1271 : Trailing extension.  Override this in a hint file, if needed.
1272 : Extra object files, if any, needed on this platform.
1273 archobjs=''
1274 archname=''
1275 : Possible local include directories to search.
1276 : Set locincpth to "" in a hint file to defeat local include searches.
1277 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1278 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1279 :
1280 : no include file wanted by default
1281 inclwanted=''
1282
1283 : Enable -DEBUGGING and -DDEBUGGING from the command line
1284 EBUGGING=''
1285 DEBUGGING=old
1286
1287 groupstype=''
1288 libnames=''
1289 : change the next line if compiling for Xenix/286 on Xenix/386
1290 xlibpth='/usr/lib/386 /lib/386'
1291 : Possible local library directories to search.
1292 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1293 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1294
1295 : general looking path for locating libraries
1296 glibpth="/lib /usr/lib $xlibpth"
1297 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1298 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1299 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1300
1301 : Private path used by Configure to find libraries.  Its value
1302 : is prepended to libpth. This variable takes care of special
1303 : machines, like the mips.  Usually, it should be empty.
1304 plibpth=''
1305
1306 : default library list
1307 libswanted=''
1308 : some systems want to use only the non-versioned libso:s
1309 ignore_versioned_solibs=''
1310 siteman1dir=''
1311 siteman3dir=''
1312 sitescript=''
1313 archname64=''
1314 ccflags_uselargefiles=''
1315 ldflags_uselargefiles=''
1316 libswanted_uselargefiles=''
1317 : set usemultiplicity on the Configure command line to enable multiplicity.
1318 : set usesocks on the Configure command line to enable socks.
1319 : set usethreads on the Configure command line to enable threads.
1320 usereentrant='undef'
1321 : full support for void wanted by default
1322 defvoidused=15
1323
1324 : List of libraries we want.
1325 : If anyone needs extra -lxxx, put those in a hint file.
1326 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1327 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1328 : We probably want to search /usr/shlib before most other libraries.
1329 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1330 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1331 glibpth="/usr/shlib $glibpth"
1332 : Do not use vfork unless overridden by a hint file.
1333 usevfork=false
1334
1335 : Find the basic shell for Bourne shell scripts
1336 case "$sh" in
1337 '')
1338         case "$SYSTYPE" in
1339         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1340         *) xxx='/bin/sh';;
1341         esac
1342         if test -f "$xxx"; then
1343                 sh="$xxx"
1344         else
1345                 : Build up a list and do a single loop so we can 'break' out.
1346                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1347                 for xxx in sh bash ksh pdksh ash; do
1348                         for p in $pth; do
1349                                 try="$try ${p}/${xxx}"
1350                         done
1351                 done
1352                 for xxx in $try; do
1353                         if test -f "$xxx"; then
1354                                 sh="$xxx";
1355                                 break
1356                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1357                                 sh="$xxx";
1358                                 break
1359                         elif test -f "$xxx.exe"; then
1360                                 sh="$xxx";
1361                                 break
1362                         fi
1363                 done
1364         fi
1365         ;;
1366 esac
1367
1368 case "$sh" in
1369 '')     cat >&2 <<EOM
1370 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1371
1372 Usually it's in /bin/sh.  How did you even get this far?
1373 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1374 we'll try to straighten this all out.
1375 EOM
1376         exit 1
1377         ;;
1378 esac
1379
1380 : see if sh knows # comments
1381 if `$sh -c '#' >/dev/null 2>&1`; then
1382         shsharp=true
1383         spitshell=cat
1384         xcat=/bin/cat
1385         test -f $xcat$_exe || xcat=/usr/bin/cat
1386         if test ! -f $xcat$_exe; then
1387                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1388                         if test -f $p/cat$_exe; then
1389                                 xcat=$p/cat
1390                                 break
1391                         fi
1392                 done
1393                 if test ! -f $xcat$_exe; then
1394                         echo "Can't find cat anywhere!"
1395                         exit 1
1396                 fi
1397         fi
1398         echo "#!$xcat" >sharp
1399         $eunicefix sharp
1400         chmod +x sharp
1401         ./sharp > today
1402         if test -s today; then
1403                 sharpbang='#!'
1404         else
1405                 echo "#! $xcat" > sharp
1406                 $eunicefix sharp
1407                 chmod +x sharp
1408                 ./sharp > today
1409                 if test -s today; then
1410                         sharpbang='#! '
1411                 else
1412                         sharpbang=': use '
1413                 fi
1414         fi
1415 else
1416         echo " "
1417         echo "Your $sh doesn't grok # comments--I will strip them later on."
1418         shsharp=false
1419         cd ..
1420         echo "exec grep -v '^[  ]*#'" >spitshell
1421         chmod +x spitshell
1422         $eunicefix spitshell
1423         spitshell=`pwd`/spitshell
1424         cd UU
1425         echo "I presume that if # doesn't work, #! won't work either!"
1426         sharpbang=': use '
1427 fi
1428 rm -f sharp today
1429
1430 : figure out how to guarantee sh startup
1431 case "$startsh" in
1432 '') startsh=${sharpbang}${sh} ;;
1433 *)
1434 esac
1435 cat >sharp <<EOSS
1436 $startsh
1437 set abc
1438 test "$?abc" != 1
1439 EOSS
1440
1441 chmod +x sharp
1442 $eunicefix sharp
1443 if ./sharp; then
1444         : echo "Yup, it does."
1445 else
1446         echo "Hmm... '$startsh' does not guarantee sh startup..."
1447         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1448 fi
1449 rm -f sharp
1450
1451
1452 : Save command line options in file UU/cmdline.opt for later use in
1453 : generating config.sh.
1454 cat > cmdline.opt <<EOSH
1455 # Configure command line arguments.
1456 config_arg0='$0'
1457 config_args='$*'
1458 config_argc=$#
1459 EOSH
1460 argn=1
1461 args_exp=''
1462 args_sep=''
1463 for arg in "$@"; do
1464         cat >>cmdline.opt <<EOSH
1465 config_arg$argn='$arg'
1466 EOSH
1467         # Extreme backslashitis: replace each ' by '"'"'
1468         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1469 $arg
1470 EOC
1471         arg_exp=`cat cmdl.opt`
1472         args_exp="$args_exp$args_sep'$arg_exp'"
1473         argn=`expr $argn + 1`
1474         args_sep=' '
1475 done
1476 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1477 # used by ./hints/os2.sh
1478 rm -f cmdl.opt
1479
1480 : produce awk script to parse command line options
1481 cat >options.awk <<'EOF'
1482 BEGIN {
1483         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1484
1485         len = length(optstr);
1486         for (i = 1; i <= len; i++) {
1487                 c = substr(optstr, i, 1);
1488                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1489                 if (a == ":") {
1490                         arg[c] = 1;
1491                         i++;
1492                 }
1493                 opt[c] = 1;
1494         }
1495 }
1496 {
1497         expect = 0;
1498         str = $0;
1499         if (substr(str, 1, 1) != "-") {
1500                 printf("'%s'\n", str);
1501                 next;
1502         }
1503         len = length($0);
1504         for (i = 2; i <= len; i++) {
1505                 c = substr(str, i, 1);
1506                 if (!opt[c]) {
1507                         printf("-%s\n", substr(str, i));
1508                         next;
1509                 }
1510                 printf("-%s\n", c);
1511                 if (arg[c]) {
1512                         if (i < len)
1513                                 printf("'%s'\n", substr(str, i + 1));
1514                         else
1515                                 expect = 1;
1516                         next;
1517                 }
1518         }
1519 }
1520 END {
1521         if (expect)
1522                 print "?";
1523 }
1524 EOF
1525
1526 : process the command line options
1527 set X `for arg in "$@"; do echo "X$arg"; done |
1528         sed -e s/X// | awk -f options.awk`
1529 eval "set $*"
1530 shift
1531 rm -f options.awk
1532
1533 : set up default values
1534 fastread=''
1535 reuseval=false
1536 config_sh=''
1537 alldone=''
1538 error=''
1539 silent=''
1540 extractsh=''
1541 override=''
1542 knowitall=''
1543 rm -f optdef.sh posthint.sh
1544 cat >optdef.sh <<EOS
1545 $startsh
1546 EOS
1547
1548
1549 : option parsing
1550 while test $# -gt 0; do
1551         case "$1" in
1552         -d) shift; fastread=yes;;
1553         -e) shift; alldone=cont;;
1554         -f)
1555                 shift
1556                 cd ..
1557                 if test -r "$1"; then
1558                         config_sh="$1"
1559                 else
1560                         echo "$me: cannot read config file $1." >&2
1561                         error=true
1562                 fi
1563                 cd UU
1564                 shift;;
1565         -h) shift; error=true;;
1566         -r) shift; reuseval=true;;
1567         -s) shift; silent=true; realsilent=true;;
1568         -E) shift; alldone=exit;;
1569         -K) shift; knowitall=true;;
1570         -O) shift; override=true;;
1571         -S) shift; silent=true; extractsh=true;;
1572         -D)
1573                 shift
1574                 case "$1" in
1575                 *=)
1576                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1577                         echo "$me: ignoring -D $1" >&2
1578                         ;;
1579                 *=*) echo "$1" | \
1580                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1581                 *) echo "$1='define'" >> optdef.sh;;
1582                 esac
1583                 shift
1584                 ;;
1585         -U)
1586                 shift
1587                 case "$1" in
1588                 *=) echo "$1" >> optdef.sh;;
1589                 *=*)
1590                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1591                         echo "$me: ignoring -U $1" >&2
1592                         ;;
1593                 *) echo "$1='undef'" >> optdef.sh;;
1594                 esac
1595                 shift
1596                 ;;
1597         -A)
1598             shift
1599             xxx=''
1600             yyy="$1"
1601             zzz=''
1602             uuu=undef
1603             case "$yyy" in
1604             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1605                  case "$zzz" in
1606                  *:*) zzz='' ;;
1607                  *)   xxx=append
1608                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1609                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1610                  esac
1611                  ;;
1612             esac
1613             case "$xxx" in
1614             '')  case "$yyy" in
1615                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1616                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1617                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1618                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1619                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1620                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1621                  esac
1622                  ;;       
1623             esac
1624             case "$xxx" in
1625             append)
1626                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1627             clear)
1628                 echo "$yyy=''"                  >> posthint.sh ;;
1629             define)
1630                 case "$zzz" in
1631                 '') zzz=define ;;
1632                 esac
1633                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1634             eval)
1635                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1636             prepend)
1637                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1638             undef)
1639                 case "$zzz" in
1640                 '') zzz="$uuu" ;;
1641                 esac
1642                 echo "$yyy=$zzz"                >> posthint.sh ;;
1643             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1644             esac
1645             shift
1646             ;;
1647         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1648             exit 0;;
1649         --) break;;
1650         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1651         *) break;;
1652         esac
1653 done
1654
1655 case "$error" in
1656 true)
1657         cat >&2 <<EOM
1658 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1659                  [-U symbol] [-U symbol=] [-A command:symbol...]
1660   -d : use defaults for all answers.
1661   -e : go on without questioning past the production of config.sh.
1662   -f : specify an alternate default configuration file.
1663   -h : print this help message and exit (with an error status).
1664   -r : reuse C symbols value if possible (skips costly nm extraction).
1665   -s : silent mode, only echoes questions and essential information.
1666   -D : define symbol to have some value:
1667          -D symbol         symbol gets the value 'define'
1668          -D symbol=value   symbol gets the value 'value'
1669   -E : stop at the end of questions, after having produced config.sh.
1670   -K : do not use unless you know what you are doing.
1671   -O : let -D and -U override definitions from loaded configuration file.
1672   -S : perform variable substitutions on all .SH files (can mix with -f)
1673   -U : undefine symbol:
1674          -U symbol    symbol gets the value 'undef'
1675          -U symbol=   symbol gets completely empty
1676   -A : manipulate symbol after the platform specific hints have been applied:
1677          -A symbol=value                append " "value to symbol
1678          -A append:symbol=value         append value to symbol
1679          -A define:symbol=value         define symbol to have value
1680          -A clear:symbol                define symbol to be ''
1681          -A define:symbol               define symbol to be 'define'
1682          -A eval:symbol=value           define symbol to be eval of value
1683          -A prepend:symbol=value        prepend value to symbol
1684          -A undef:symbol                define symbol to be 'undef'
1685          -A undef:symbol=               define symbol to be ''
1686   -V : print version number and exit (with a zero status).
1687 EOM
1688         exit 1
1689         ;;
1690 esac
1691
1692 : Sanity checks
1693 case "$fastread$alldone" in
1694 yescont|yesexit) ;;
1695 *)
1696         case "$extractsh" in
1697         true) ;;
1698         *)
1699                 if test ! -t 0; then
1700                         echo "Say 'sh Configure', not 'sh <Configure'"
1701                         exit 1
1702                 fi
1703                 ;;
1704         esac
1705         ;;
1706 esac
1707
1708 exec 4>&1
1709 case "$silent" in
1710 true) exec 1>/dev/null;;
1711 esac
1712
1713 : run the defines and the undefines, if any, but leave the file out there...
1714 touch optdef.sh
1715 . ./optdef.sh
1716 : create the posthint manipulation script and leave the file out there...
1717 touch posthint.sh
1718
1719 : set package name
1720 package=perl5
1721 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1722 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1723 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1724 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1725 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1726 esac
1727
1728 : Some greps do not return status, grrr.
1729 echo "grimblepritz" >grimble
1730 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1731         contains=contains
1732 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1733         contains=grep
1734 else
1735         contains=contains
1736 fi
1737 rm -f grimble
1738 : the following should work in any shell
1739 case "$contains" in
1740 contains*)
1741         echo " "
1742         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1743         cat >contains <<'EOSS'
1744 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1745 EOSS
1746 chmod +x contains
1747 esac
1748
1749 : Find the path to the source tree
1750 case "$src" in
1751 '') case "$0" in
1752     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1753          case "$src" in
1754          /*)    ;;
1755          .)     ;;
1756          *)     src=`cd ../$src && pwd` ;;
1757          esac
1758          ;;
1759     *)   src='.';;
1760     esac;;
1761 esac
1762 case "$src" in
1763 '')     src=/
1764         rsrc=/
1765         ;;
1766 /*) rsrc="$src";;
1767 *) rsrc="../$src";;
1768 esac
1769 if test -f $rsrc/Configure && \
1770         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1771 then
1772    : found it, so we are ok.
1773 else
1774         rsrc=''
1775         for src in . .. ../.. ../../.. ../../../..; do
1776                 if test -f ../$src/Configure && \
1777                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1778                 then
1779                         rsrc=../$src
1780                         break
1781                 fi
1782         done
1783 fi
1784 case "$rsrc" in
1785 '')
1786         cat <<EOM >&4
1787
1788 Sorry, I can't seem to locate the source dir for $package.  Please start
1789 Configure with an explicit path -- i.e. /some/path/Configure.
1790
1791 EOM
1792         exit 1
1793         ;;
1794 ../.)   rsrc='..';;
1795 *)
1796         echo " "
1797         echo "Sources for $package found in \"$src\"." >&4
1798         ;;
1799 esac
1800
1801 : script used to extract .SH files with variable substitutions
1802 cat >extract <<'EOS'
1803 PERL_CONFIG_SH=true
1804 echo "Doing variable substitutions on .SH files..."
1805 if test -f MANIFEST; then
1806         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1807 else
1808         echo "(Looking for .SH files under the source directory.)"
1809         set x `(cd "$src"; find . -name "*.SH" -print)`
1810 fi
1811 shift
1812 case $# in
1813 0) set x `(cd "$src"; echo *.SH)`; shift;;
1814 esac
1815 if test ! -f "$src/$1"; then
1816         shift
1817 fi
1818 mkdir_p='
1819 name=$1;
1820 create="";
1821 while test $name; do
1822         if test ! -d "$name"; then
1823                 create="$name $create";
1824                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1825                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1826         else
1827                 name="";
1828         fi;
1829 done;
1830 for file in $create; do
1831         mkdir $file;
1832 done
1833 '
1834 for file in $*; do
1835         case "$src" in
1836         ".")
1837                 case "$file" in
1838                 */*)
1839                         dir=`expr X$file : 'X\(.*\)/'`
1840                         file=`expr X$file : 'X.*/\(.*\)'`
1841                         (cd "$dir" && . ./$file)
1842                         ;;
1843                 *)
1844                         . ./$file
1845                         ;;
1846                 esac
1847                 ;;
1848         *)
1849                 case "$file" in
1850                 */*)
1851                         dir=`expr X$file : 'X\(.*\)/'`
1852                         file=`expr X$file : 'X.*/\(.*\)'`
1853                         (set x $dir; shift; eval $mkdir_p)
1854                         sh <"$src/$dir/$file"
1855                         ;;
1856                 *)
1857                         sh <"$src/$file"
1858                         ;;
1859                 esac
1860                 ;;
1861         esac
1862 done
1863 if test -f "$src/config_h.SH"; then
1864         if test ! -f config.h; then
1865         : oops, they left it out of MANIFEST, probably, so do it anyway.
1866         . "$src/config_h.SH"
1867         fi
1868 fi
1869 EOS
1870
1871 : extract files and exit if asked to do so
1872 case "$extractsh" in
1873 true)
1874         case "$realsilent" in
1875         true) ;;
1876         *) exec 1>&4;;
1877         esac
1878         case "$config_sh" in
1879         '') config_sh='config.sh';;
1880         esac
1881         echo " "
1882         echo "Fetching answers from $config_sh..."
1883         cd ..
1884         . $config_sh
1885         test "$override" && . ./optdef.sh
1886         echo " "
1887         . UU/extract
1888         rm -rf UU
1889         echo "Extraction done."
1890         exit 0
1891         ;;
1892 esac
1893
1894 : Eunice requires " " instead of "", can you believe it
1895 echo " "
1896 : Here we go...
1897 echo "Beginning of configuration questions for $package."
1898
1899 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1900
1901 : first determine how to suppress newline on echo command
1902 echo " "
1903 echo "Checking echo to see how to suppress newlines..."
1904 (echo "hi there\c" ; echo " ") >.echotmp
1905 if $contains c .echotmp >/dev/null 2>&1 ; then
1906         echo "...using -n."
1907         n='-n'
1908         c=''
1909 else
1910         cat <<'EOM'
1911 ...using \c
1912 EOM
1913         n=''
1914         c='\c'
1915 fi
1916 echo $n "The star should be here-->$c"
1917 echo '*'
1918 rm -f .echotmp
1919
1920 : Now test for existence of everything in MANIFEST
1921 echo " "
1922 if test -f "$rsrc/MANIFEST"; then
1923         echo "First let's make sure your kit is complete.  Checking..." >&4
1924         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1925         rm -f missing
1926         tmppwd=`pwd`
1927         for filelist in x??; do
1928                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1929         done
1930         if test -s missing; then
1931                 cat missing >&4
1932                 cat >&4 <<'EOM'
1933
1934 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1935
1936 You have the option of continuing the configuration process, despite the
1937 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1938 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1939 and contact the author (perlbug@perl.org).
1940
1941 EOM
1942                 echo $n "Continue? [n] $c" >&4
1943                 read ans
1944                 case "$ans" in
1945                 y*)
1946                         echo "Continuing..." >&4
1947                         rm -f missing
1948                         ;;
1949                 *)
1950                         echo "ABORTING..." >&4
1951                         kill $$
1952                         ;;
1953                 esac
1954         else
1955                 echo "Looks good..."
1956         fi
1957 else
1958         echo "There is no MANIFEST file.  I hope your kit is complete !"
1959 fi
1960 rm -f missing x??
1961
1962 echo " "
1963 : Find the appropriate value for a newline for tr
1964 if test -n "$DJGPP"; then
1965        trnl='\012'
1966 fi
1967 if test X"$trnl" = X; then
1968         case "`echo foo|tr '\n' x 2>/dev/null`" in
1969         foox) trnl='\n' ;;
1970         esac
1971 fi
1972 if test X"$trnl" = X; then
1973         case "`echo foo|tr '\012' x 2>/dev/null`" in
1974         foox) trnl='\012' ;;
1975         esac
1976 fi
1977 if test X"$trnl" = X; then
1978        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1979        fooxy) trnl='\n\r' ;;
1980        esac
1981 fi
1982 if test X"$trnl" = X; then
1983         cat <<EOM >&2
1984
1985 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1986
1987 EOM
1988         exit 1
1989 fi
1990
1991 : compute the number of columns on the terminal for proper question formatting
1992 case "$COLUMNS" in
1993 '') COLUMNS='80';;
1994 esac
1995
1996 : set up the echo used in my read
1997 myecho="case \"\$xxxm\" in
1998 '') echo $n \"\$rp $c\" >&4;;
1999 *) case \"\$rp\" in
2000         '') echo $n \"[\$xxxm] $c\";;
2001         *)
2002                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2003                         echo \"\$rp\" >&4
2004                         echo $n \"[\$xxxm] $c\" >&4
2005                 else
2006                         echo $n \"\$rp [\$xxxm] $c\" >&4
2007                 fi
2008                 ;;
2009         esac;;
2010 esac"
2011
2012 : now set up to do reads with possible shell escape and default assignment
2013 cat <<EOSC >myread
2014 $startsh
2015 xxxm=\$dflt
2016 $myecho
2017 ans='!'
2018 case "\$fastread" in
2019 yes) case "\$dflt" in
2020         '') ;;
2021         *) ans='';
2022                 case "\$silent-\$rp" in
2023                 true-) ;;
2024                 *) echo " " >&4;;
2025                 esac;;
2026         esac;;
2027 *) case "\$silent" in
2028         true) case "\$rp" in
2029                 '') ans='';;
2030                 esac;;
2031         esac;;
2032 esac
2033 while expr "X\$ans" : "X!" >/dev/null; do
2034         read answ
2035         set x \$xxxm
2036         shift
2037         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2038         case  "\$answ" in
2039         "!")
2040                 sh 1>&4
2041                 echo " "
2042                 $myecho
2043                 ;;
2044         !*)
2045                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2046                 shift
2047                 sh 1>&4 -c "\$*"
2048                 echo " "
2049                 $myecho
2050                 ;;
2051         "\$ans")
2052                 case "\$ans" in
2053                 \\&*)
2054                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2055                         shift
2056                         case "\$1" in
2057                         -d)
2058                                 fastread=yes
2059                                 echo "(OK, I'll run with -d after this question.)" >&4
2060                                 ;;
2061                         -*)
2062                                 echo "*** Sorry, \$1 not supported yet." >&4
2063                                 ;;
2064                         esac
2065                         $myecho
2066                         ans=!
2067                         ;;
2068                 esac;;
2069         *)
2070                 case "\$aok" in
2071                 y)
2072                         echo "*** Substitution done -- please confirm."
2073                         xxxm="\$ans"
2074                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2075                         xxxm="\$ans"
2076                         ans=!
2077                         ;;
2078                 *)
2079                         echo "*** Error -- try again."
2080                         ans=!
2081                         ;;
2082                 esac
2083                 $myecho
2084                 ;;
2085         esac
2086         case "\$ans\$xxxm\$nostick" in
2087         '')
2088                 ans=!
2089                 $myecho
2090                 ;;
2091         esac
2092 done
2093 case "\$ans" in
2094 '') ans="\$xxxm";;
2095 esac
2096 EOSC
2097
2098 : create .config dir to save info across Configure sessions
2099 test -d ../.config || mkdir ../.config
2100 cat >../.config/README <<EOF
2101 This directory created by Configure to save information that should
2102 persist across sessions for $package.
2103
2104 You may safely delete it if you wish.
2105 EOF
2106
2107 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2108 case "$usedevel" in
2109 $define|true|[yY]*) ;;
2110 *) case "$xversion" in
2111    *[13579])
2112         cat >&4 <<EOH
2113 *** WHOA THERE!!! ***
2114
2115     This is an UNSTABLE DEVELOPMENT release.
2116     The version of this $package distribution is $xversion, that is, odd,
2117     (as opposed to even) and that signifies a development release.
2118     If you want a maintenance release, you want an even-numbered version.
2119
2120     Do ***NOT*** install this into production use.
2121     Data corruption and crashes are possible.
2122
2123     It is most seriously suggested that you do not continue any further
2124     unless you want to help in developing and debugging Perl.
2125
2126     If you *still* want to build perl, you can answer 'y' now,
2127     or pass -Dusedevel to Configure.
2128
2129 EOH
2130         rp='Do you really want to continue?'
2131         dflt='n'
2132         . ./myread
2133         case "$ans" in
2134         [yY]) echo >&4 "Okay, continuing."
2135               usedevel="$define" ;;
2136         *) echo >&4 "Okay, bye."
2137            exit 1
2138            ;;
2139         esac
2140         ;;
2141     esac
2142     ;;
2143 esac
2144 case "$usedevel" in
2145 $define|true|[yY]*)
2146         case "$versiononly" in
2147         '') versiononly="$define" ;;
2148         esac
2149         case "$installusrbinperl" in
2150         '') installusrbinperl="$undef" ;;
2151         esac
2152         ;;
2153 esac
2154
2155 : general instructions
2156 needman=true
2157 firsttime=true
2158 user=`(logname) 2>/dev/null`
2159 case "$user" in
2160 '') user=`whoami 2>&1`;;
2161 esac
2162 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2163         firsttime=false
2164         echo " "
2165         rp='Would you like to see the instructions?'
2166         dflt=n
2167         . ./myread
2168         case "$ans" in
2169         [yY]*) ;;
2170         *) needman=false;;
2171         esac
2172 fi
2173 if $needman; then
2174         cat <<EOH
2175
2176 This installation shell script will examine your system and ask you questions
2177 to determine how the perl5 package should be installed. If you get
2178 stuck on a question, you may use a ! shell escape to start a subshell or
2179 execute a command.  Many of the questions will have default answers in square
2180 brackets; typing carriage return will give you the default.
2181
2182 On some of the questions which ask for file or directory names you are allowed
2183 to use the ~name construct to specify the login directory belonging to "name",
2184 even if you don't have a shell which knows about that.  Questions where this is
2185 allowed will be marked "(~name ok)".
2186
2187 EOH
2188         rp=''
2189         dflt='Type carriage return to continue'
2190         . ./myread
2191         cat <<'EOH'
2192
2193 The prompter used in this script allows you to use shell variables and
2194 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2195 in the default answer, as if the default line was a set of arguments given to a
2196 script shell.  This means you may also use $* to repeat the whole default line,
2197 so you do not have to re-type everything to add something to the default.
2198
2199 Everytime there is a substitution, you will have to confirm.  If there is an
2200 error (e.g. an unmatched backtick), the default answer will remain unchanged
2201 and you will be prompted again.
2202
2203 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2204 the questions and use the computed defaults (or the previous answers if there
2205 was already a config.sh file). Type 'Configure -h' for a list of options.
2206 You may also start interactively and then answer '& -d' at any prompt to turn
2207 on the non-interactive behaviour for the remainder of the execution.
2208
2209 EOH
2210         . ./myread
2211         cat <<EOH
2212
2213 Much effort has been expended to ensure that this shell script will run on any
2214 Unix system.  If despite that it blows up on yours, your best bet is to edit
2215 Configure and run it again.  If you can't run Configure for some reason,
2216 you'll have to generate a config.sh file by hand.  Whatever problems you
2217 have, let me (perlbug@perl.org) know how I blew it.
2218
2219 This installation script affects things in two ways:
2220
2221 1) it may do direct variable substitutions on some of the files included
2222    in this kit.
2223 2) it builds a config.h file for inclusion in C programs.  You may edit
2224    any of these files as the need arises after running this script.
2225
2226 If you make a mistake on a question, there is no easy way to back up to it
2227 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2228 files.  Configure will offer to let you do this before it runs the SH files.
2229
2230 EOH
2231         dflt='Type carriage return to continue'
2232         . ./myread
2233         case "$firsttime" in
2234         true) echo $user >>../.config/instruct;;
2235         esac
2236 fi
2237
2238 : find out where common programs are
2239 echo " "
2240 echo "Locating common programs..." >&4
2241 cat <<EOSC >loc
2242 $startsh
2243 case \$# in
2244 0) exit 1;;
2245 esac
2246 thing=\$1
2247 shift
2248 dflt=\$1
2249 shift
2250 for dir in \$*; do
2251         case "\$thing" in
2252         .)
2253         if test -d \$dir/\$thing; then
2254                 echo \$dir
2255                 exit 0
2256         fi
2257         ;;
2258         *)
2259         for thisthing in \$dir/\$thing; do
2260                 : just loop through to pick last item
2261         done
2262         if test -f \$thisthing; then
2263                 echo \$thisthing
2264                 exit 0
2265         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2266                 echo \$thisthing
2267                 exit 0
2268         elif test -f \$dir/\$thing.exe; then
2269                 if test -n "$DJGPP"; then
2270                         echo \$dir/\$thing.exe
2271                 elif test "$eunicefix" != ":"; then
2272                         : on Eunice apparently
2273                         echo \$dir/\$thing
2274                         exit 0
2275                 fi
2276                 exit 0
2277         fi
2278         ;;
2279         esac
2280 done
2281 echo \$dflt
2282 exit 1
2283 EOSC
2284 chmod +x loc
2285 $eunicefix loc
2286 loclist="
2287 awk
2288 cat
2289 chmod
2290 comm
2291 cp
2292 echo
2293 expr
2294 grep
2295 ls
2296 mkdir
2297 rm
2298 sed
2299 sort
2300 touch
2301 tr
2302 uniq
2303 "
2304 trylist="
2305 Mcc
2306 ar
2307 bison
2308 byacc
2309 cpp
2310 csh
2311 date
2312 egrep
2313 gmake
2314 gzip
2315 less
2316 ln
2317 make
2318 more
2319 nm
2320 nroff
2321 pg
2322 test
2323 uname
2324 zip
2325 "
2326 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2327 pth="$pth /lib /usr/lib"
2328 for file in $loclist; do
2329         eval xxx=\$$file
2330         case "$xxx" in
2331         /*|?:[\\/]*)
2332                 if test -f "$xxx"; then
2333                         : ok
2334                 else
2335                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2336                         xxx=`./loc $file $file $pth`
2337                 fi
2338                 ;;
2339         '') xxx=`./loc $file $file $pth`;;
2340         *) xxx=`./loc $xxx $xxx $pth`;;
2341         esac
2342         eval $file=$xxx$_exe
2343         eval _$file=$xxx
2344         case "$xxx" in
2345         /*)
2346                 echo $file is in $xxx.
2347                 ;;
2348         ?:[\\/]*)
2349                 echo $file is in $xxx.
2350                 ;;
2351         *)
2352                 echo "I don't know where '$file' is, and my life depends on it." >&4
2353                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2354                 exit 1
2355                 ;;
2356         esac
2357 done
2358 echo " "
2359 echo "Don't worry if any of the following aren't found..."
2360 say=offhand
2361 for file in $trylist; do
2362         eval xxx=\$$file
2363         case "$xxx" in
2364         /*|?:[\\/]*)
2365                 if test -f "$xxx"; then
2366                         : ok
2367                 else
2368                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2369                         xxx=`./loc $file $file $pth`
2370                 fi
2371                 ;;
2372         '') xxx=`./loc $file $file $pth`;;
2373         *) xxx=`./loc $xxx $xxx $pth`;;
2374         esac
2375         eval $file=$xxx$_exe
2376         eval _$file=$xxx
2377         case "$xxx" in
2378         /*)
2379                 echo $file is in $xxx.
2380                 ;;
2381         ?:[\\/]*)
2382                 echo $file is in $xxx.
2383                 ;;
2384         *)
2385                 echo "I don't see $file out there, $say."
2386                 say=either
2387                 ;;
2388         esac
2389 done
2390 case "$egrep" in
2391 egrep)
2392         echo "Substituting grep for egrep."
2393         egrep=$grep
2394         _egrep=$grep
2395         ;;
2396 esac
2397 case "$ln" in
2398 ln)
2399         echo "Substituting cp for ln."
2400         ln=$cp
2401         _ln=$cp
2402         ;;
2403 esac
2404 case "$make" in
2405 make)   
2406         case "$gmake" in
2407         gmake)
2408         echo "I can't find make or gmake, and my life depends on it." >&4
2409         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2410         exit 1
2411         ;;
2412         esac
2413         ;;
2414 esac    
2415 case "$gmake" in
2416 gmake)  ;;
2417 *)      # We can't have osname yet.
2418         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2419                 # Assume that gmake, if found, is definitely GNU make
2420                 # and prefer it over the system make.
2421                 echo "Substituting gmake for make."
2422                 make=$gmake
2423                 _make=$gmake
2424         fi
2425         ;;
2426 esac
2427 case "$test" in
2428 test)
2429         echo "Hopefully test is built into your sh."
2430         ;;
2431 *)
2432         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2433                 echo "Using the test built into your sh."
2434                 test=test
2435                 _test=test
2436         fi
2437         ;;
2438 esac
2439 case "$echo" in
2440 echo)
2441         echo "Hopefully echo is built into your sh."
2442         ;;
2443 '') ;;
2444 *)
2445         echo " "
2446 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2447         $echo $n "hi there$c" >foo1
2448         echo $n "hi there$c" >foo2
2449         if cmp foo1 foo2 >/dev/null 2>&1; then
2450                 echo "They are compatible.  In fact, they may be identical."
2451         else
2452                 case "$n" in
2453                 '-n') n='' c='\c';;
2454                 *) n='-n' c='';;
2455                 esac
2456                 cat <<FOO
2457 They are not compatible!  You are probably running ksh on a non-USG system.
2458 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2459 have echo built in and we may have to run some Bourne shell scripts.  That
2460 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2461
2462 FOO
2463                 $echo $n "The star should be here-->$c"
2464                 $echo "*"
2465         fi
2466         $rm -f foo1 foo2
2467         ;;
2468 esac
2469
2470 cat <<EOS >trygcc
2471 $startsh
2472 EOS
2473 cat <<'EOSC' >>trygcc
2474 case "$cc" in
2475 '') ;;
2476 *)  $rm -f try try.*
2477     $cat >try.c <<EOM
2478 int main(int argc, char *argv[]) {
2479   return 0;
2480 }
2481 EOM
2482     if $cc -o try $ccflags $ldflags try.c; then
2483        :
2484     else
2485         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2486         despair=yes
2487         trygcc=yes
2488         case "$cc" in
2489         *gcc*) trygcc=no ;;
2490         esac
2491         case "`$cc -v -c try.c 2>&1`" in
2492         *gcc*) trygcc=no ;;
2493         esac
2494         if $test X"$trygcc" = Xyes; then
2495             if gcc -o try -c try.c; then
2496                 echo " "
2497                 echo "You seem to have a working gcc, though." >&4
2498                 rp="Would you like to use it?"
2499                 dflt=y
2500                 if $test -f myread; then
2501                     . ./myread
2502                 else
2503                     if $test -f UU/myread; then
2504                         . ./UU/myread
2505                     else
2506                         echo "Cannot find myread, sorry.  Aborting." >&2
2507                         exit 1
2508                     fi
2509                 fi  
2510                 case "$ans" in
2511                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2512                        if $test -f usethreads.cbu; then
2513                            $cat >&4 <<EOM 
2514
2515 *** However, any setting of the C compiler flags (e.g. for thread support)
2516 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2517 *** (together with e.g. -Dusethreads).
2518
2519 EOM
2520                        fi;;
2521                 esac
2522             fi
2523         fi
2524     fi
2525     $rm -f try try.*
2526     ;;
2527 esac
2528 EOSC
2529
2530 cat <<EOS >checkcc
2531 $startsh
2532 EOS
2533 cat <<'EOSC' >>checkcc
2534 case "$cc" in        
2535 '') ;;
2536 *)  $rm -f try try.*              
2537     $cat >try.c <<EOM
2538 int main(int argc, char *argv[]) {
2539   return 0;
2540 }
2541 EOM
2542     if $cc -o try $ccflags $ldflags try.c; then
2543        :
2544     else
2545         if $test X"$despair" = Xyes; then
2546            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2547         fi
2548         $cat >&4 <<EOM         
2549 You need to find a working C compiler.
2550 Either (purchase and) install the C compiler supplied by your OS vendor,
2551 or for a free C compiler try http://gcc.gnu.org/
2552 I cannot continue any further, aborting.
2553 EOM
2554         exit 1
2555     fi
2556     $rm -f try try.*
2557     ;;
2558 esac
2559 EOSC
2560
2561 : determine whether symbolic links are supported
2562 echo " "
2563 $touch blurfl
2564 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2565         echo "Symbolic links are supported." >&4
2566         lns="$ln -s"
2567 else
2568         echo "Symbolic links are NOT supported." >&4
2569         lns="$ln"
2570 fi
2571 $rm -f blurfl sym
2572
2573 : determine whether symbolic links are supported
2574 echo " "
2575 case "$lns" in
2576 *"ln"*" -s")
2577         echo "Checking how to test for symbolic links..." >&4
2578         $lns blurfl sym
2579         if $test "X$issymlink" = X; then
2580                 case "$newsh" in
2581                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2582                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2583                 esac
2584                 if test $? = 0; then
2585                         issymlink="test -h"
2586                 else
2587                         echo "Your builtin 'test -h' may be broken." >&4
2588                         case "$test" in
2589                         /*)     ;;
2590                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2591                                 for p in $pth
2592                                 do
2593                                         if test -f "$p/$test"; then
2594                                                 test="$p/$test"
2595                                                 break
2596                                         fi
2597                                 done
2598                                 ;;
2599                         esac
2600                         case "$test" in
2601                         /*)
2602                                 echo "Trying external '$test -h'." >&4
2603                                 issymlink="$test -h"
2604                                 if $test ! -h sym >/dev/null 2>&1; then
2605                                         echo "External '$test -h' is broken, too." >&4
2606                                         issymlink=''
2607                                 fi
2608                                 ;;
2609                         *)      issymlink='' ;;
2610                         esac
2611                 fi              
2612         fi
2613         if $test "X$issymlink" = X; then
2614                 if $test -L sym 2>/dev/null; then
2615                         issymlink="$test -L"
2616                         echo "The builtin '$test -L' worked." >&4
2617                 fi
2618         fi
2619         if $test "X$issymlink" != X; then
2620                 echo "You can test for symbolic links with '$issymlink'." >&4
2621         else
2622                 echo "I do not know how you can test for symbolic links." >&4
2623         fi
2624         $rm -f blurfl sym
2625         ;;
2626 *)      echo "No symbolic links, so not testing for their testing..." >&4
2627         ;;
2628 esac
2629 echo " "
2630
2631
2632 case "$mksymlinks" in
2633 $define|true|[yY]*)
2634         case "$src" in
2635         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2636                 exit 1
2637                 ;;
2638         *)      case "$lns:$issymlink" in
2639                 *"ln"*" -s:"*"test -"?)
2640                         echo "Creating the symbolic links..." >&4
2641                         echo "(First creating the subdirectories...)" >&4
2642                         cd ..
2643                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2644                                 read directory
2645                                 test -z "$directory" && break
2646                                 mkdir -p $directory
2647                         done
2648                         # Sanity check 1.
2649                         if test ! -d t/base; then
2650                                 echo "Failed to create the subdirectories.  Aborting." >&4
2651                                 exit 1
2652                         fi
2653                         echo "(Then creating the symlinks...)" >&4
2654                         awk '{print $1}' $src/MANIFEST | while true; do
2655                                 read filename
2656                                 test -z "$filename" && break
2657                                 if test -f $filename; then
2658                                         if $issymlink $filename; then
2659                                                 rm -f $filename
2660                                         fi
2661                                 fi
2662                                 if test -f $filename; then
2663                                         echo "$filename already exists, not symlinking."
2664                                 else
2665                                         ln -s $src/$filename $filename
2666                                 fi
2667                         done
2668                         # Sanity check 2.
2669                         if test ! -f t/base/lex.t; then
2670                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2671                                 exit 1
2672                         fi
2673                         cd UU
2674                         ;;
2675                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2676                         ;;
2677                 esac
2678                 ;;
2679         esac
2680         ;;
2681 esac
2682
2683
2684 case "$usecrosscompile" in
2685 $define|true|[yY]*)
2686         $echo "Cross-compiling..."
2687         croak=''
2688         case "$cc" in
2689         *-*-gcc) # A cross-compiling gcc, probably.
2690             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2691             ar=$targetarch-ar
2692             # leave out ld, choosing it is more complex
2693             nm=$targetarch-nm
2694             ranlib=$targetarch-ranlib
2695             $echo 'extern int foo;' > try.c
2696             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2697             shift
2698             if $test $# -gt 0; then
2699                 incpth="$incpth $*"
2700                 incpth="`$echo $incpth|$sed 's/^ //'`"
2701                 echo "Guessing incpth '$incpth'." >&4
2702                 for i in $*; do
2703                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2704                     if $test -d $j; then
2705                         libpth="$libpth $j"
2706                     fi
2707                 done   
2708                 libpth="`$echo $libpth|$sed 's/^ //'`"
2709                 echo "Guessing libpth '$libpth'." >&4
2710             fi
2711             $rm -f try.c
2712             ;;
2713         esac
2714         case "$targetarch" in
2715         '') echo "Targetarch not defined." >&4; croak=y ;;
2716         *)  echo "Using targetarch $targetarch." >&4 ;;
2717         esac
2718         case "$incpth" in
2719         '') echo "Incpth not defined." >&4; croak=y ;;
2720         *)  echo "Using incpth '$incpth'." >&4 ;;
2721         esac
2722         case "$libpth" in
2723         '') echo "Libpth not defined." >&4; croak=y ;;
2724         *)  echo "Using libpth '$libpth'." >&4 ;;
2725         esac
2726         case "$usrinc" in
2727         '') for i in $incpth; do
2728                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2729                     usrinc=$i
2730                     echo "Guessing usrinc $usrinc." >&4
2731                     break
2732                 fi
2733             done
2734             case "$usrinc" in
2735             '') echo "Usrinc not defined." >&4; croak=y ;;
2736             esac
2737             ;;
2738         *)  echo "Using usrinc $usrinc." >&4 ;;
2739         esac
2740         case "$targethost" in
2741         '') echo "Targethost not defined." >&4; croak=y ;;
2742         *)  echo "Using targethost $targethost." >&4
2743         esac
2744         locincpth=' '
2745         loclibpth=' '
2746         case "$croak" in
2747         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2748         esac
2749         case "$src" in
2750         /*) run=$src/Cross/run
2751             targetmkdir=$src/Cross/mkdir
2752             to=$src/Cross/to
2753             from=$src/Cross/from
2754             ;;
2755         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2756             run=$pwd/Cross/run
2757             targetmkdir=$pwd/Cross/mkdir
2758             to=$pwd/Cross/to
2759             from=$pwd/Cross/from
2760             ;;
2761         esac
2762         case "$targetrun" in
2763         '') targetrun=ssh ;;
2764         esac
2765         case "$targetto" in
2766         '') targetto=scp ;;
2767         esac
2768         case "$targetfrom" in
2769         '') targetfrom=scp ;;
2770         esac
2771         run=$run-$targetrun
2772         to=$to-$targetto
2773         from=$from-$targetfrom
2774         case "$targetdir" in
2775         '')  targetdir=/tmp
2776              echo "Guessing targetdir $targetdir." >&4
2777              ;;
2778         esac
2779         case "$targetuser" in
2780         '')  targetuser=root
2781              echo "Guessing targetuser $targetuser." >&4
2782              ;;
2783         esac
2784         case "$targetfrom" in
2785         scp)    q=-q ;;
2786         *)      q='' ;;
2787         esac
2788         case "$targetrun" in
2789         ssh|rsh)
2790             cat >$run <<EOF
2791 #!/bin/sh
2792 case "\$1" in
2793 -cwd)
2794   shift
2795   cwd=\$1
2796   shift
2797   ;;
2798 esac
2799 case "\$cwd" in
2800 '') cwd=$targetdir ;;
2801 esac
2802 exe=\$1
2803 shift
2804 if $test ! -f \$exe.xok; then
2805   $to \$exe
2806   $touch \$exe.xok
2807 fi
2808 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2809 EOF
2810             ;;
2811         *)  echo "Unknown targetrun '$targetrun'" >&4
2812             exit 1
2813             ;;
2814         esac
2815         case "$targetmkdir" in
2816         */Cross/mkdir)
2817             cat >$targetmkdir <<EOF
2818 #!/bin/sh
2819 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2820 EOF
2821             $chmod a+rx $targetmkdir
2822             ;;
2823         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2824             exit 1
2825             ;;
2826         esac
2827         case "$targetto" in
2828         scp|rcp)
2829             cat >$to <<EOF
2830 #!/bin/sh
2831 for f in \$@
2832 do
2833   case "\$f" in
2834   /*)
2835     $targetmkdir \`dirname \$f\`
2836     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2837     ;;
2838   *)
2839     $targetmkdir $targetdir/\`dirname \$f\`
2840     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2841     ;;
2842   esac
2843 done
2844 exit 0
2845 EOF
2846             ;;
2847         cp) cat >$to <<EOF
2848 #!/bin/sh
2849 for f in \$@
2850 do
2851   case "\$f" in
2852   /*)
2853     $mkdir -p $targetdir/\`dirname \$f\`
2854     $cp \$f $targetdir/\$f || exit 1
2855     ;;
2856   *)
2857     $targetmkdir $targetdir/\`dirname \$f\`
2858     $cp \$f $targetdir/\$f || exit 1
2859     ;;
2860   esac
2861 done
2862 exit 0
2863 EOF
2864             ;;
2865         *)  echo "Unknown targetto '$targetto'" >&4
2866             exit 1
2867             ;;
2868         esac
2869         case "$targetfrom" in
2870         scp|rcp)
2871           cat >$from <<EOF
2872 #!/bin/sh
2873 for f in \$@
2874 do
2875   $rm -f \$f
2876   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2877 done
2878 exit 0
2879 EOF
2880             ;;
2881         cp) cat >$from <<EOF
2882 #!/bin/sh
2883 for f in \$@
2884 do
2885   $rm -f \$f
2886   cp $targetdir/\$f . || exit 1
2887 done
2888 exit 0
2889 EOF
2890             ;;
2891         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2892             exit 1
2893             ;;
2894         esac
2895         if $test ! -f $run; then
2896             echo "Target 'run' script '$run' not found." >&4
2897         else
2898             $chmod a+rx $run
2899         fi
2900         if $test ! -f $to; then
2901             echo "Target 'to' script '$to' not found." >&4
2902         else
2903             $chmod a+rx $to
2904         fi
2905         if $test ! -f $from; then
2906             echo "Target 'from' script '$from' not found." >&4
2907         else
2908             $chmod a+rx $from
2909         fi
2910         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2911             exit 1
2912         fi
2913         cat >&4 <<EOF
2914 Using '$run' for remote execution,
2915 and '$from' and '$to'
2916 for remote file transfer.
2917 EOF
2918         ;;
2919 *)      run=''
2920         to=:
2921         from=:
2922         usecrosscompile='undef'
2923         targetarch=''
2924         ;;
2925 esac
2926
2927 : see whether [:lower:] and [:upper:] are supported character classes
2928 echo " "
2929 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2930 ABYZ)
2931         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2932         up='[:upper:]'
2933         low='[:lower:]'
2934         ;;
2935 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2936         # (0xd9 and 0xe2), therefore that is a nice testing point.
2937         if test "X$up" = X -o "X$low" = X; then
2938             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2939             rs) up='[A-Z]'
2940                 low='[a-z]'
2941                 ;;
2942             esac
2943         fi
2944         if test "X$up" = X -o "X$low" = X; then
2945             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2946             rs) up='A-Z'
2947                 low='a-z'
2948                 ;;
2949             esac
2950         fi
2951         if test "X$up" = X -o "X$low" = X; then
2952             case "`echo RS | od -x 2>/dev/null`" in
2953             *D9E2*|*d9e2*)
2954                 echo "Hey, this might be EBCDIC." >&4
2955                 if test "X$up" = X -o "X$low" = X; then
2956                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2957                     rs) up='[A-IJ-RS-Z]'
2958                         low='[a-ij-rs-z]'
2959                         ;;
2960                     esac
2961                 fi
2962                 if test "X$up" = X -o "X$low" = X; then
2963                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2964                     rs) up='A-IJ-RS-Z'
2965                         low='a-ij-rs-z'
2966                         ;;
2967                     esac
2968                 fi
2969                 ;;
2970             esac
2971         fi
2972 esac
2973 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2974 rs)
2975     echo "Using $up and $low to convert case." >&4
2976     ;;
2977 *)
2978     echo "I don't know how to translate letters from upper to lower case." >&4
2979     echo "Your tr is not acting any way I know of." >&4
2980     exit 1
2981     ;;
2982 esac
2983 : set up the translation script tr, must be called with ./tr of course
2984 cat >tr <<EOSC
2985 $startsh
2986 case "\$1\$2" in
2987 '[A-Z][a-z]') exec $tr '$up' '$low';;
2988 '[a-z][A-Z]') exec $tr '$low' '$up';;
2989 esac
2990 exec $tr "\$@"
2991 EOSC
2992 chmod +x tr
2993 $eunicefix tr
2994
2995 : Try to determine whether config.sh was made on this system
2996 case "$config_sh" in
2997 '')
2998 myuname=`$uname -a 2>/dev/null`
2999 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3000 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3001 # because the A-Z/a-z are not consecutive.
3002 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3003         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3004 newmyuname="$myuname"
3005 dflt=n
3006 case "$knowitall" in
3007 '')
3008         if test -f ../config.sh; then
3009                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3010                         eval "`grep myuname= ../config.sh`"
3011                 fi
3012                 if test "X$myuname" = "X$newmyuname"; then
3013                         dflt=y
3014                 fi
3015         fi
3016         ;;
3017 *) dflt=y;;
3018 esac
3019
3020 : Get old answers from old config file if Configure was run on the
3021 : same system, otherwise use the hints.
3022 hint=default
3023 cd ..
3024 if test -f config.sh; then
3025         echo " "
3026         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3027         . UU/myread
3028         case "$ans" in
3029         n*|N*) echo "OK, I'll ignore it."
3030                 mv config.sh config.sh.old
3031                 myuname="$newmyuname"
3032                 ;;
3033         *)  echo "Fetching default answers from your old config.sh file..." >&4
3034                 tmp_n="$n"
3035                 tmp_c="$c"
3036                 tmp_sh="$sh"
3037                 . ./config.sh
3038                 cp config.sh UU
3039                 n="$tmp_n"
3040                 c="$tmp_c"
3041                 : Older versions did not always set $sh.  Catch re-use of such
3042                 : an old config.sh.
3043                 case "$sh" in
3044                 '') sh="$tmp_sh" ;;
3045                 esac
3046                 hint=previous
3047                 ;;
3048         esac
3049 fi
3050 . ./UU/checkcc
3051 if test ! -f config.sh; then
3052         $cat <<EOM
3053
3054 First time through, eh?  I have some defaults handy for some systems
3055 that need some extra help getting the Configure answers right:
3056
3057 EOM
3058         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3059         dflt=''
3060         : Half the following guesses are probably wrong... If you have better
3061         : tests or hints, please send them to perlbug@perl.org
3062         : The metaconfig authors would also appreciate a copy...
3063         $test -f /irix && osname=irix
3064         $test -f /xenix && osname=sco_xenix
3065         $test -f /dynix && osname=dynix
3066         $test -f /dnix && osname=dnix
3067         $test -f /lynx.os && osname=lynxos
3068         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3069         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3070         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3071         $test -f /bin/mips && /bin/mips && osname=mips
3072         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3073                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3074         $test -d /usr/apollo/bin && osname=apollo
3075         $test -f /etc/saf/_sactab && osname=svr4
3076         $test -d /usr/include/minix && osname=minix
3077         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3078         if $test -d /MachTen -o -d /MachTen_Folder; then
3079                 osname=machten
3080                 if $test -x /sbin/version; then
3081                         osvers=`/sbin/version | $awk '{print $2}' |
3082                         $sed -e 's/[A-Za-z]$//'`
3083                 elif $test -x /usr/etc/version; then
3084                         osvers=`/usr/etc/version | $awk '{print $2}' |
3085                         $sed -e 's/[A-Za-z]$//'`
3086                 else
3087                         osvers="$2.$3"
3088                 fi
3089         fi
3090
3091         $test -f /sys/posix.dll &&
3092                 $test -f /usr/bin/what &&
3093                 set X `/usr/bin/what /sys/posix.dll` &&
3094                 $test "$3" = UWIN &&
3095                 osname=uwin &&
3096                 osvers="$5"
3097
3098         if $test -f $uname; then
3099                 set X $myuname
3100                 shift
3101
3102                 case "$5" in
3103                 fps*) osname=fps ;;
3104                 mips*)
3105                         case "$4" in
3106                         umips) osname=umips ;;
3107                         *) osname=mips ;;
3108                         esac;;
3109                 [23]100) osname=mips ;;
3110                 next*) osname=next ;;
3111                 i386*)
3112                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3113                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3114                                 osname='sco'
3115                                 osvers=$tmp
3116                         elif $test -f /etc/kconfig; then
3117                                 osname=isc
3118                                 if test "$lns" = "$ln -s"; then
3119                                         osvers=4
3120                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3121                                         osvers=3
3122                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3123                                         osvers=2
3124                                 fi
3125                         fi
3126                         tmp=''
3127                         ;;
3128                 pc*)
3129                         if test -n "$DJGPP"; then
3130                                 osname=dos
3131                                 osvers=djgpp
3132                         fi
3133                         ;;
3134                 esac
3135
3136                 case "$1" in
3137                 aix) osname=aix
3138                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3139                         case "$tmp" in
3140                         # oslevel can fail with:
3141                         # oslevel: Unable to acquire lock.
3142                         *not\ found) osvers="$4"."$3" ;;
3143                         '<3240'|'<>3240') osvers=3.2.0 ;;
3144                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3145                         '=3250'|'>3250') osvers=3.2.5 ;;
3146                         *) osvers=$tmp;;
3147                         esac
3148                         ;;
3149                 bsd386) osname=bsd386
3150                         osvers=`$uname -r`
3151                         ;;
3152                 cygwin*) osname=cygwin
3153                         osvers="$3"
3154                         ;;
3155                 *dc.osx) osname=dcosx
3156                         osvers="$3"
3157                         ;;
3158                 dnix) osname=dnix
3159                         osvers="$3"
3160                         ;;
3161                 domainos) osname=apollo
3162                         osvers="$3"
3163                         ;;
3164                 dgux)   osname=dgux
3165                         osvers="$3"
3166                         ;;
3167                 dragonfly) osname=dragonfly
3168                         osvers="$3"
3169                         ;;
3170                 dynixptx*) osname=dynixptx
3171                         osvers=`echo "$4"|sed 's/^v//'`
3172                         ;;
3173                 freebsd) osname=freebsd
3174                         osvers="$3" ;;
3175                 genix)  osname=genix ;;
3176                 gnu)    osname=gnu
3177                         osvers="$3" ;;
3178                 hp*)    osname=hpux
3179                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3180                         ;;
3181                 irix*)  osname=irix
3182                         case "$3" in
3183                         4*) osvers=4 ;;
3184                         5*) osvers=5 ;;
3185                         *)      osvers="$3" ;;
3186                         esac
3187                         ;;
3188                 linux)  osname=linux
3189                         case "$3" in
3190                         *)      osvers="$3" ;;
3191                         esac
3192                         ;;
3193                 MiNT)   osname=mint
3194                         ;;
3195                 netbsd*) osname=netbsd
3196                         osvers="$3"
3197                         ;;
3198                 news-os) osvers="$3"
3199                         case "$3" in
3200                         4*) osname=newsos4 ;;
3201                         *) osname=newsos ;;
3202                         esac
3203                         ;;
3204                 next*) osname=next ;;
3205                 nonstop-ux) osname=nonstopux ;;
3206                 openbsd) osname=openbsd
3207                         osvers="$3"
3208                         ;;
3209                 os2)    osname=os2
3210                         osvers="$4"
3211                         ;;
3212                 POSIX-BC | posix-bc ) osname=posix-bc
3213                         osvers="$3"
3214                         ;;
3215                 powerux | power_ux | powermax_os | powermaxos | \
3216                 powerunix | power_unix) osname=powerux
3217                         osvers="$3"
3218                         ;;
3219                 qnx) osname=qnx
3220                         osvers="$4"
3221                         ;;
3222                 solaris) osname=solaris
3223                         case "$3" in
3224                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3225                         *)      osvers="$3" ;;
3226                         esac
3227                         ;;
3228                 sunos) osname=sunos
3229                         case "$3" in
3230                         5*) osname=solaris
3231                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3232                         *)      osvers="$3" ;;
3233                         esac
3234                         ;;
3235                 titanos) osname=titanos
3236                         case "$3" in
3237                         1*) osvers=1 ;;
3238                         2*) osvers=2 ;;
3239                         3*) osvers=3 ;;
3240                         4*) osvers=4 ;;
3241                         *)      osvers="$3" ;;
3242                         esac
3243                         ;;
3244                 ultrix) osname=ultrix
3245                         osvers="$3"
3246                         ;;
3247                 osf1|mls+)      case "$5" in
3248                                 alpha)
3249                                         osname=dec_osf
3250                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3251                                         case "$osvers" in
3252                                         [1-9].[0-9]*) ;;
3253                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3254                                         esac
3255                                         ;;
3256                         hp*)    osname=hp_osf1  ;;
3257                         mips)   osname=mips_osf1 ;;
3258                         esac
3259                         ;;
3260                 # UnixWare 7.1.2 is known as Open UNIX 8
3261                 openunix|unixware) osname=svr5
3262                         osvers="$4"
3263                         ;;
3264                 uts)    osname=uts
3265                         osvers="$3"
3266                         ;;
3267                 vos) osvers="$3"
3268                         ;;
3269                 $2) case "$osname" in
3270                         *isc*) ;;
3271                         *freebsd*) ;;
3272                         svr*)
3273                                 : svr4.x or possibly later
3274                                 case "svr$3" in
3275                                 ${osname}*)
3276                                         osname=svr$3
3277                                         osvers=$4
3278                                         ;;
3279                                 esac
3280                                 case "$osname" in
3281                                 svr4.0)
3282                                         : Check for ESIX
3283                                         if test -f /stand/boot ; then
3284                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3285                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3286                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3287                                                         if test -n "$isesix"; then
3288                                                                 osname=esix4
3289                                                         fi
3290                                                 fi
3291                                         fi
3292                                         ;;
3293                                 esac
3294                                 ;;
3295                         *)      if test -f /etc/systemid; then
3296                                         osname=sco
3297                                         set `echo $3 | $sed 's/\./ /g'` $4
3298                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3299                                                 osvers=$1.$2.$3
3300                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3301                                                 osvers=$1.$2
3302                                         elif $test -f $src/hints/sco_$1.sh; then
3303                                                 osvers=$1
3304                                         fi
3305                                 else
3306                                         case "$osname" in
3307                                         '') : Still unknown.  Probably a generic Sys V.
3308                                                 osname="sysv"
3309                                                 osvers="$3"
3310                                                 ;;
3311                                         esac
3312                                 fi
3313                                 ;;
3314                         esac
3315                         ;;
3316                 *)      case "$osname" in
3317                         '') : Still unknown.  Probably a generic BSD.
3318                                 osname="$1"
3319                                 osvers="$3"
3320                                 ;;
3321                         esac
3322                         ;;
3323                 esac
3324         else
3325                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3326                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3327                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3328                                 osname=news_os
3329                         fi
3330                         $rm -f UU/kernel.what
3331                 elif test -d c:/. -o -n "$is_os2" ; then
3332                         set X $myuname
3333                         osname=os2
3334                         osvers="$5"
3335                 fi
3336         fi
3337
3338         case "$targetarch" in
3339         '') ;;
3340         *)  hostarch=$osname
3341             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3342             osvers=''
3343             ;;
3344         esac
3345
3346         : Now look for a hint file osname_osvers, unless one has been
3347         : specified already.
3348         case "$hintfile" in
3349         ''|' ')
3350                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3351                 : Also try without trailing minor version numbers.
3352                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3353                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3354                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3355                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3356                 case "$file" in
3357                 '') dflt=none ;;
3358                 *)  case "$osvers" in
3359                         '') dflt=$file
3360                                 ;;
3361                         *)  if $test -f $src/hints/$file.sh ; then
3362                                         dflt=$file
3363                                 elif $test -f $src/hints/$xfile.sh ; then
3364                                         dflt=$xfile
3365                                 elif $test -f $src/hints/$xxfile.sh ; then
3366                                         dflt=$xxfile
3367                                 elif $test -f $src/hints/$xxxfile.sh ; then
3368                                         dflt=$xxxfile
3369                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3370                                         dflt=$xxxxfile
3371                                 elif $test -f "$src/hints/${osname}.sh" ; then
3372                                         dflt="${osname}"
3373                                 else
3374                                         dflt=none
3375                                 fi
3376                                 ;;
3377                         esac
3378                         ;;
3379                 esac
3380                 if $test -f Policy.sh ; then
3381                         case "$dflt" in
3382                         *Policy*) ;;
3383                         none) dflt="Policy" ;;
3384                         *) dflt="Policy $dflt" ;;
3385                         esac
3386                 fi
3387                 ;;
3388         *)
3389                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3390                 ;;
3391         esac
3392
3393         if $test -f Policy.sh ; then
3394                 $cat <<EOM
3395
3396 There's also a Policy hint file available, which should make the
3397 site-specific (policy) questions easier to answer.
3398 EOM
3399
3400         fi
3401
3402         $cat <<EOM
3403
3404 You may give one or more space-separated answers, or "none" if appropriate.
3405 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3406 previous run of Configure, you may specify it as well as or instead of
3407 OS-specific hints.  If hints are provided for your OS, you should use them:
3408 although Perl can probably be built without hints on many platforms, using
3409 hints often improve performance and may enable features that Configure can't
3410 set up on its own. If there are no hints that match your OS, specify "none";
3411 DO NOT give a wrong version or a wrong OS.
3412
3413 EOM
3414
3415         rp="Which of these apply, if any?"
3416         . UU/myread
3417         tans=$ans
3418         for file in $tans; do
3419                 if $test X$file = XPolicy -a -f Policy.sh; then
3420                         . Policy.sh
3421                         $cat Policy.sh >> UU/config.sh
3422                 elif $test -f $src/hints/$file.sh; then
3423                         . $src/hints/$file.sh
3424                         $cat $src/hints/$file.sh >> UU/config.sh
3425                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3426                         : nothing
3427                 else
3428                         : Give one chance to correct a possible typo.
3429                         echo "$file.sh does not exist"
3430                         dflt=$file
3431                         rp="hint to use instead?"
3432                         . UU/myread
3433                         for file in $ans; do
3434                                 if $test -f "$src/hints/$file.sh"; then
3435                                         . $src/hints/$file.sh
3436                                         $cat $src/hints/$file.sh >> UU/config.sh
3437                                 elif $test X$ans = X -o X$ans = Xnone ; then
3438                                         : nothing
3439                                 else
3440                                         echo "$file.sh does not exist -- ignored."
3441                                 fi
3442                         done
3443                 fi
3444         done
3445
3446         hint=recommended
3447         : Remember our hint file for later.
3448         if $test -f "$src/hints/$file.sh" ; then
3449                 hintfile="$file"
3450         else
3451                 hintfile=''
3452         fi
3453 fi
3454 cd UU
3455 ;;
3456 *)
3457         echo " "
3458         echo "Fetching default answers from $config_sh..." >&4
3459         tmp_n="$n"
3460         tmp_c="$c"
3461         cd ..
3462         cp $config_sh config.sh 2>/dev/null
3463         chmod +w config.sh
3464         . ./config.sh
3465         cd UU
3466         cp ../config.sh .
3467         n="$tmp_n"
3468         c="$tmp_c"
3469         hint=previous
3470         ;;
3471 esac
3472 test "$override" && . ./optdef.sh
3473
3474 : Restore computed paths
3475 for file in $loclist $trylist; do
3476         eval $file="\$_$file"
3477 done
3478
3479 cat << EOM
3480
3481 Configure uses the operating system name and version to set some defaults.
3482 The default value is probably right if the name rings a bell. Otherwise,
3483 since spelling matters for me, either accept the default or answer "none"
3484 to leave it blank.
3485
3486 EOM
3487 case "$osname" in
3488         ''|' ')
3489                 case "$hintfile" in
3490                 ''|' '|none) dflt=none ;;
3491                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3492                 esac
3493                 ;;
3494         *) dflt="$osname" ;;
3495 esac
3496 rp="Operating system name?"
3497 . ./myread
3498 case "$ans" in
3499 none)  osname='' ;;
3500 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3501 esac
3502 echo " "
3503 case "$osvers" in
3504         ''|' ')
3505                 case "$hintfile" in
3506                 ''|' '|none) dflt=none ;;
3507                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3508                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3509                         case "$dflt" in
3510                         ''|' ') dflt=none ;;
3511                         esac
3512                         ;;
3513                 esac
3514                 ;;
3515         *) dflt="$osvers" ;;
3516 esac
3517 rp="Operating system version?"
3518 . ./myread
3519 case "$ans" in
3520 none)  osvers='' ;;
3521 *) osvers="$ans" ;;
3522 esac
3523
3524
3525 . ./posthint.sh
3526
3527 : who configured the system
3528 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3529 case "$cf_by" in
3530 "")
3531         cf_by=`(logname) 2>/dev/null`
3532         case "$cf_by" in
3533         "")
3534                 cf_by=`(whoami) 2>/dev/null`
3535                 case "$cf_by" in
3536                 "") cf_by=unknown ;;
3537                 esac ;;
3538         esac ;;
3539 esac
3540
3541 : decide how portable to be.  Allow command line overrides.
3542 case "$d_portable" in
3543 "$undef") ;;
3544 *)      d_portable="$define" ;;
3545 esac
3546
3547 : set up shell script to do ~ expansion
3548 cat >filexp <<EOSS
3549 $startsh
3550 : expand filename
3551 case "\$1" in
3552  ~/*|~)
3553         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3554         ;;
3555  ~*)
3556         if $test -f /bin/csh; then
3557                 /bin/csh -f -c "glob \$1"
3558                 failed=\$?
3559                 echo ""
3560                 exit \$failed
3561         else
3562                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3563                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3564                 if $test ! -d "\$dir"; then
3565                         me=\`basename \$0\`
3566                         echo "\$me: can't locate home directory for: \$name" >&2
3567                         exit 1
3568                 fi
3569                 case "\$1" in
3570                 */*)
3571                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3572                         ;;
3573                 *)
3574                         echo \$dir
3575                         ;;
3576                 esac
3577         fi
3578         ;;
3579 *)
3580         echo \$1
3581         ;;
3582 esac
3583 EOSS
3584 chmod +x filexp
3585 $eunicefix filexp
3586
3587 : now set up to get a file name
3588 cat <<EOS >getfile
3589 $startsh
3590 EOS
3591 cat <<'EOSC' >>getfile
3592 tilde=''
3593 fullpath=''
3594 already=''
3595 skip=''
3596 none_ok=''
3597 exp_file=''
3598 nopath_ok=''
3599 orig_rp="$rp"
3600 orig_dflt="$dflt"
3601 case "$gfpth" in
3602 '') gfpth='.' ;;
3603 esac
3604
3605 case "$fn" in
3606 *\(*)
3607         : getfile will accept an answer from the comma-separated list
3608         : enclosed in parentheses even if it does not meet other criteria.
3609         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3610         fn=`echo $fn | sed 's/(.*)//'`
3611         ;;
3612 esac
3613
3614 case "$fn" in
3615 *:*)
3616         loc_file=`expr $fn : '.*:\(.*\)'`
3617         fn=`expr $fn : '\(.*\):.*'`
3618         ;;
3619 esac
3620
3621 case "$fn" in
3622 *~*) tilde=true;;
3623 esac
3624 case "$fn" in
3625 */*) fullpath=true;;
3626 esac
3627 case "$fn" in
3628 *+*) skip=true;;
3629 esac
3630 case "$fn" in
3631 *n*) none_ok=true;;
3632 esac
3633 case "$fn" in
3634 *e*) exp_file=true;;
3635 esac
3636 case "$fn" in
3637 *p*) nopath_ok=true;;
3638 esac
3639
3640 case "$fn" in
3641 *f*) type='File';;
3642 *d*) type='Directory';;
3643 *l*) type='Locate';;
3644 esac
3645
3646 what="$type"
3647 case "$what" in
3648 Locate) what='File';;
3649 esac
3650
3651 case "$exp_file" in
3652 '')
3653         case "$d_portable" in
3654         "$define") ;;
3655         *) exp_file=true;;
3656         esac
3657         ;;
3658 esac
3659
3660 cd ..
3661 while test "$type"; do
3662         redo=''
3663         rp="$orig_rp"
3664         dflt="$orig_dflt"
3665         case "$tilde" in
3666         true) rp="$rp (~name ok)";;
3667         esac
3668         . UU/myread
3669         if test -f UU/getfile.ok && \
3670                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3671         then
3672                 value="$ans"
3673                 ansexp="$ans"
3674                 break
3675         fi
3676         case "$ans" in
3677         none)
3678                 value=''
3679                 ansexp=''
3680                 case "$none_ok" in
3681                 true) type='';;
3682                 esac
3683                 ;;
3684         *)
3685                 case "$tilde" in
3686                 '') value="$ans"
3687                         ansexp="$ans";;
3688                 *)
3689                         value=`UU/filexp $ans`
3690                         case $? in
3691                         0)
3692                                 if test "$ans" != "$value"; then
3693                                         echo "(That expands to $value on this system.)"
3694                                 fi
3695                                 ;;
3696                         *) value="$ans";;
3697                         esac
3698                         ansexp="$value"
3699                         case "$exp_file" in
3700                         '') value="$ans";;
3701                         esac
3702                         ;;
3703                 esac
3704                 case "$fullpath" in
3705                 true)
3706                         case "$ansexp" in
3707                         /*) value="$ansexp" ;;
3708                         [a-zA-Z]:/*) value="$ansexp" ;;
3709                         *)
3710                                 redo=true
3711                                 case "$already" in
3712                                 true)
3713                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3714                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3715                                         ;;
3716                                 *)
3717                                 echo "Please give a full path name, starting with slash." >&4
3718                                         case "$tilde" in
3719                                         true)
3720                                 echo "Note that using ~name is ok provided it expands well." >&4
3721                                                 already=true
3722                                                 ;;
3723                                         esac
3724                                 esac
3725                                 ;;
3726                         esac
3727                         ;;
3728                 esac
3729                 case "$redo" in
3730                 '')
3731                         case "$type" in
3732                         File)
3733                                 for fp in $gfpth; do
3734                                         if test "X$fp" = X.; then
3735                                             pf="$ansexp"
3736                                         else    
3737                                             pf="$fp/$ansexp"
3738                                         fi
3739                                         if test -f "$pf"; then
3740                                                 type=''
3741                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3742                                         then
3743                                                 echo "($value is not a plain file, but that's ok.)"
3744                                                 type=''
3745                                         fi
3746                                         if test X"$type" = X; then
3747                                             value="$pf"
3748                                             break
3749                                         fi
3750                                 done
3751                                 ;;
3752                         Directory)
3753                                 for fp in $gfpth; do
3754                                         if test "X$fp" = X.; then
3755                                             dir="$ans"
3756                                             direxp="$ansexp"
3757                                         else    
3758                                             dir="$fp/$ansexp"
3759                                             direxp="$fp/$ansexp"
3760                                         fi
3761                                         if test -d "$direxp"; then
3762                                                 type=''
3763                                                 value="$dir"
3764                                                 break
3765                                         fi
3766                                 done
3767                                 ;;
3768                         Locate)
3769                                 if test -d "$ansexp"; then
3770                                         echo "(Looking for $loc_file in directory $value.)"
3771                                         value="$value/$loc_file"
3772                                         ansexp="$ansexp/$loc_file"
3773                                 fi
3774                                 if test -f "$ansexp"; then
3775                                         type=''
3776                                 fi
3777                                 case "$nopath_ok" in
3778                                 true)   case "$value" in
3779                                         */*) ;;
3780                                         *)      echo "Assuming $value will be in people's path."
3781                                                 type=''
3782                                                 ;;
3783                                         esac
3784                                         ;;
3785                                 esac
3786                                 ;;
3787                         esac
3788
3789                         case "$skip" in
3790                         true) type='';
3791                         esac
3792
3793                         case "$type" in
3794                         '') ;;
3795                         *)
3796                                 if test "$fastread" = yes; then
3797                                         dflt=y
3798                                 else
3799                                         dflt=n
3800                                 fi
3801                                 rp="$what $value doesn't exist.  Use that name anyway?"
3802                                 . UU/myread
3803                                 dflt=''
3804                                 case "$ans" in
3805                                 y*) type='';;
3806                                 *) echo " ";;
3807                                 esac
3808                                 ;;
3809                         esac
3810                         ;;
3811                 esac
3812                 ;;
3813         esac
3814 done
3815 cd UU
3816 ans="$value"
3817 rp="$orig_rp"
3818 dflt="$orig_dflt"
3819 rm -f getfile.ok
3820 test "X$gfpthkeep" != Xy && gfpth=""
3821 EOSC
3822
3823 : determine root of directory hierarchy where package will be installed.
3824 case "$prefix" in
3825 '')
3826         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3827         ;;
3828 *?/)
3829         dflt=`echo "$prefix" | sed 's/.$//'`
3830         ;;
3831 *)
3832         dflt="$prefix"
3833         ;;
3834 esac
3835 $cat <<EOM
3836
3837 By default, $package will be installed in $dflt/bin, manual pages
3838 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3839 installation directories. Typically this is something like /usr/local.
3840 If you wish to have binaries under /usr/bin but other parts of the
3841 installation under /usr/local, that's ok: you will be prompted
3842 separately for each of the installation directories, the prefix being
3843 only used to set the defaults.
3844
3845 EOM
3846 fn=d~
3847 rp='Installation prefix to use?'
3848 . ./getfile
3849 oldprefix=''
3850 case "$prefix" in
3851 '') ;;
3852 *)
3853         case "$ans" in
3854         "$prefix") ;;
3855         *) oldprefix="$prefix";;
3856         esac
3857         ;;
3858 esac
3859 prefix="$ans"
3860 prefixexp="$ansexp"
3861
3862 case "$afsroot" in
3863 '')     afsroot=/afs ;;
3864 *)      afsroot=$afsroot ;;
3865 esac
3866
3867 : is AFS running?
3868 echo " "
3869 case "$afs" in
3870 $define|true)   afs=true ;;
3871 $undef|false)   afs=false ;;
3872 *)      if test -d $afsroot; then
3873                 afs=true
3874         else
3875                 afs=false
3876         fi
3877         ;;
3878 esac
3879 if $afs; then
3880         echo "AFS may be running... I'll be extra cautious then..." >&4
3881 else
3882         echo "AFS does not seem to be running..." >&4
3883 fi
3884
3885 : determine installation prefix for where package is to be installed.
3886 if $afs; then 
3887 $cat <<EOM
3888
3889 Since you are running AFS, I need to distinguish the directory in which
3890 files will reside from the directory in which they are installed (and from
3891 which they are presumably copied to the former directory by occult means).
3892
3893 EOM
3894         case "$installprefix" in
3895         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3896         *) dflt="$installprefix";;
3897         esac
3898 else
3899 $cat <<EOM
3900
3901 In some special cases, particularly when building $package for distribution,
3902 it is convenient to distinguish the directory in which files should be
3903 installed from the directory ($prefix) in which they will
3904 eventually reside.  For most users, these two directories are the same.
3905
3906 EOM
3907         case "$installprefix" in
3908         '') dflt=$prefix ;;
3909         *) dflt=$installprefix;;
3910         esac
3911 fi
3912 fn=d~
3913 rp='What installation prefix should I use for installing files?'
3914 . ./getfile
3915 installprefix="$ans"
3916 installprefixexp="$ansexp"
3917
3918 : Perform the prefixexp/installprefixexp correction if necessary
3919 cat <<EOS >installprefix
3920 $startsh
3921 EOS
3922 cat <<'EOSC' >>installprefix
3923 : Change installation prefix, if necessary.
3924 if $test X"$prefix" != X"$installprefix"; then
3925     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3926 else
3927     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3928 fi
3929 EOSC
3930 chmod +x installprefix
3931 $eunicefix installprefix
3932
3933 : Set variables such as privlib and privlibexp from the output of ./getfile
3934 : performing the prefixexp/installprefixexp correction if necessary.
3935 cat <<EOS >setprefixvar
3936 $startsh
3937 EOS
3938 cat <<'EOSC' >>setprefixvar
3939 eval "${prefixvar}=\"\$ans\""
3940 eval "${prefixvar}exp=\"\$ansexp\""
3941 . ./installprefix
3942 EOSC
3943 chmod +x setprefixvar
3944 $eunicefix setprefixvar
3945
3946 : set up the script used to warn in case of inconsistency
3947 cat <<EOS >whoa
3948 $startsh
3949 EOS
3950 cat <<'EOSC' >>whoa
3951 dflt=y
3952 case "$hint" in
3953     recommended)
3954         case "$hintfile" in
3955         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3956                 ;;
3957         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
3958                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3959                 ;;
3960         esac
3961         ;;
3962     *)  echo " "
3963         echo "*** WHOA THERE!!! ***" >&4
3964         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3965         ;;
3966 esac
3967 rp="    Keep the $hint value?"
3968 . ./myread
3969 case "$ans" in
3970 y) td=$was; tu=$was;;
3971 esac
3972 EOSC
3973
3974 : function used to set $1 to $val
3975 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3976 case "$val$was" in
3977 $define$undef) . ./whoa; eval "$var=\$td";;
3978 $undef$define) . ./whoa; eval "$var=\$tu";;
3979 *) eval "$var=$val";;
3980 esac'
3981
3982 case "$usesocks" in
3983 $define|true|[yY]*)     dflt='y';;
3984 *) dflt='n';;
3985 esac
3986 cat <<EOM
3987
3988 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3989 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3990 to use the PerlIO abstraction layer, this will be implicitly selected.
3991
3992 If this doesn't make any sense to you, just accept the default '$dflt'.
3993 EOM
3994 rp='Build Perl for SOCKS?'
3995 . ./myread
3996 case "$ans" in
3997 y|Y)    val="$define" ;;     
3998 *)      val="$undef" ;;
3999 esac
4000 set usesocks
4001 eval $setvar
4002
4003 case "$usesocks" in
4004 $define|true|[yY]*) useperlio="$define";;
4005 esac
4006
4007 case "$useperlio" in
4008 $define|true|[yY]*|'')  dflt='y';;
4009 *) dflt='n';;
4010 esac
4011 cat <<EOM
4012
4013 Previous version of $package used the standard IO mechanisms as
4014 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4015 alternate IO mechanisms via the PerlIO abstraction layer, but the
4016 stdio mechanism is still available if needed.  The abstraction layer
4017 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4018 Using PerlIO with sfio may cause problems with some extension modules.
4019
4020 If this doesn't make any sense to you, just accept the default '$dflt'.
4021 EOM
4022 rp='Use the PerlIO abstraction layer?'
4023 . ./myread
4024 case "$ans" in
4025 y|Y) 
4026         val="$define"
4027         ;;
4028 *)      
4029         echo "Ok, doing things the stdio way."
4030         val="$undef"
4031         ;;
4032 esac
4033 set useperlio
4034 eval $setvar 
4035
4036 case "$usesocks" in
4037 $define|true|[yY]*)
4038         case "$useperlio" in
4039         $define|true|[yY]*) ;;
4040         *)      cat >&4 <<EOM
4041
4042 You are using the SOCKS proxy protocol library which means that you
4043 should also use the PerlIO layer.  You may be headed for trouble.
4044
4045 EOM
4046                 ;;
4047         esac
4048         ;;
4049 esac
4050
4051         
4052 : get the patchlevel
4053 echo " "
4054 echo "Getting the current patchlevel..." >&4
4055 if $test -r $rsrc/patchlevel.h;then
4056         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4057         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4058         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4059         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4060         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4061         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4062         perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
4063 else
4064         revision=0
4065         patchlevel=0
4066         subversion=0
4067         api_revision=0
4068         api_version=0
4069         api_subversion=0
4070         perl_patchlevel=0
4071         $echo "(You do not have patchlevel.h.  Eek.)"
4072 fi
4073 if $test -r $rsrc/.patch ; then
4074         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4075                 perl_patchlevel=`cat $rsrc/.patch`
4076         fi
4077 fi
4078 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4079 version_patchlevel_string="version $patchlevel subversion $subversion"
4080 case "$perl_patchlevel" in
4081 0|'') ;;
4082 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4083 esac
4084
4085 $echo "(You have $package $version_patchlevel_string.)"
4086
4087 case "$osname" in
4088 dos|vms)
4089         : XXX Should be a Configure test for double-dots in filenames.
4090         version=`echo $revision $patchlevel $subversion | \
4091                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4092         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4093                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4094         ;;
4095 *)
4096         version=`echo $revision $patchlevel $subversion | \
4097                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4098         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4099                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4100         ;;
4101 esac
4102 : Special case the 5.005_xx maintenance series, which used 5.005
4103 : without any subversion label as a subdirectory in $sitelib
4104 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4105         api_versionstring='5.005'
4106 fi
4107
4108 case "$usethreads" in
4109 $define|true|[yY]*)     dflt='y';;
4110 *)     # Catch case where user specified ithreads or 5005threads but
4111        # forgot -Dusethreads (A.D. 4/2002)
4112        case "$useithreads$use5005threads" in
4113        *$define*)      
4114                 case "$useperlio" in
4115                 "$define")      dflt='y' ;;
4116                 *)              dflt='n' ;;
4117                 esac
4118                 ;;
4119        *)       dflt='n';;
4120        esac
4121        ;;
4122 esac
4123 cat <<EOM
4124
4125 Perl can be built to take advantage of threads on some systems.
4126 To do so, Configure can be run with -Dusethreads.
4127
4128 Note that Perl built with threading support runs slightly slower
4129 and uses more memory than plain Perl. The current implementation
4130 is believed to be stable, but it is fairly new, and so should be
4131 treated with caution.
4132
4133 If this doesn't make any sense to you, just accept the default '$dflt'.
4134 EOM
4135 rp='Build a threading Perl?'
4136 . ./myread
4137 case "$ans" in
4138 y|Y)    val="$define" ;;
4139 *)      val="$undef" ;;
4140 esac
4141 set usethreads
4142 eval $setvar
4143
4144 if $test $patchlevel -lt 9; then
4145     case "$usethreads" in
4146     $define)
4147         $cat <<EOM
4148
4149 Since release 5.6, Perl has had two different threading implementations,
4150 the newer interpreter-based version (ithreads) with one interpreter per
4151 thread, and the older 5.005 version (5005threads).
4152 The 5005threads version is effectively unmaintained and will probably be
4153 removed in Perl 5.10, so there should be no need to build a Perl using it
4154 unless needed for backwards compatibility with some existing 5.005threads
4155 code.
4156
4157 EOM
4158         : Default to ithreads unless overridden on command line or with
4159         : old config.sh
4160         dflt='y'
4161         case "$use5005threads" in
4162                 $define|true|[yY]*) dflt='n';;
4163         esac
4164         case "$useithreads" in
4165                 $undef|false|[nN]*) dflt='n';;
4166         esac
4167         rp='Use the newer interpreter-based ithreads?'
4168         . ./myread
4169         case "$ans" in
4170         y|Y)    val="$define" ;;
4171         *)      val="$undef" ;;
4172         esac
4173         set useithreads
4174         eval $setvar
4175         : Now set use5005threads to the opposite value.
4176         case "$useithreads" in
4177         $define) val="$undef" ;;
4178         *) val="$define" ;;
4179         esac
4180         set use5005threads
4181         eval $setvar
4182         ;;
4183     *)
4184         useithreads="$undef"
4185         use5005threads="$undef"
4186         ;;
4187     esac
4188
4189     case "$useithreads$use5005threads" in
4190     "$define$define")
4191         $cat >&4 <<EOM
4192
4193 You cannot have both the ithreads and the 5.005 threads enabled
4194 at the same time.  Disabling the 5.005 threads since they are
4195 much less stable than the ithreads.
4196
4197 EOM
4198         use5005threads="$undef"
4199         ;;
4200     esac
4201
4202 else
4203 : perl-5.9.x and later
4204
4205     use5005threads="$undef"
4206     case "$usethreads" in
4207     $define)
4208         : Default to ithreads unless overridden on command line or with
4209         : old config.sh
4210         dflt='y'
4211         case "$useithreads" in
4212                 $undef|false|[nN]*) dflt='n';;
4213         esac
4214         rp='Use the newer interpreter-based ithreads?'
4215         . ./myread
4216         case "$ans" in
4217         y|Y)    val="$define" ;;
4218         *)      val="$undef" ;;
4219         esac
4220         set useithreads
4221         eval $setvar
4222         ;;
4223     *)
4224         useithreads="$undef"
4225         ;;
4226     esac
4227
4228 fi
4229
4230 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4231         cat >&4 <<EOF
4232 ***
4233 *** To build with ithreads you must also use the PerlIO layer.
4234 *** Cannot continue, aborting.
4235 ***
4236 EOF
4237         exit 1
4238 fi
4239
4240 case "$d_oldpthreads" in
4241 '')     : Configure tests would be welcome here.  For now, assume undef.
4242         val="$undef" ;;
4243 *)      val="$d_oldpthreads" ;;
4244 esac
4245 set d_oldpthreads
4246 eval $setvar
4247
4248
4249 : Look for a hint-file generated 'call-back-unit'.  If the
4250 : user has specified that a threading perl is to be built,
4251 : we may need to set or change some other defaults.
4252 if $test -f usethreads.cbu; then
4253     echo "Your platform has some specific hints regarding threaded builds, using them..."
4254     . ./usethreads.cbu
4255 else
4256     case "$usethreads" in
4257         "$define"|true|[yY]*)
4258                 $cat <<EOM
4259 (Your platform does not have any specific hints for threaded builds.
4260  Assuming POSIX threads, then.)
4261 EOM
4262         ;;
4263     esac
4264 fi
4265
4266 cat <<EOM
4267
4268 Perl can be built so that multiple Perl interpreters can coexist
4269 within the same Perl executable.
4270 EOM
4271
4272 case "$useithreads" in
4273 $define)
4274         cat <<EOM
4275 This multiple interpreter support is required for interpreter-based threads.
4276 EOM
4277         val="$define"
4278         ;;
4279 *)      case "$usemultiplicity" in
4280         $define|true|[yY]*)     dflt='y';;
4281         *) dflt='n';;
4282         esac
4283         echo " "
4284         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4285         rp='Build Perl for multiplicity?'
4286         . ./myread
4287         case "$ans" in
4288         y|Y)    val="$define" ;;
4289         *)      val="$undef" ;;
4290         esac
4291         ;;
4292 esac
4293 set usemultiplicity
4294 eval $setvar
4295
4296
4297 case "$usemorebits" in
4298 "$define"|true|[yY]*)
4299         use64bitint="$define"
4300         uselongdouble="$define"
4301         usemorebits="$define"
4302         ;;
4303 *)      usemorebits="$undef"
4304         ;;
4305 esac
4306
4307 : make some quick guesses about what we are up against
4308 echo " "
4309 $echo $n "Hmm...  $c"
4310 echo exit 1 >bsd
4311 echo exit 1 >usg
4312 echo exit 1 >v7
4313 echo exit 1 >osf1
4314 echo exit 1 >eunice
4315 echo exit 1 >xenix
4316 echo exit 1 >venix
4317 echo exit 1 >os2
4318 d_bsd="$undef"
4319 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4320 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4321 then
4322         echo "Looks kind of like an OSF/1 system, but we'll see..."
4323         echo exit 0 >osf1
4324 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4325         xxx=`./loc addbib blurfl $pth`
4326         if $test -f $xxx; then
4327         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4328                 echo exit 0 >bsd
4329                 echo exit 0 >usg
4330         else
4331                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4332                         echo "Looks kind of like an extended USG system, but we'll see..."
4333                 else
4334                         echo "Looks kind of like a USG system, but we'll see..."
4335                 fi
4336                 echo exit 0 >usg
4337         fi
4338 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4339         echo "Looks kind of like a BSD system, but we'll see..."
4340         d_bsd="$define"
4341         echo exit 0 >bsd
4342 else
4343         echo "Looks kind of like a Version 7 system, but we'll see..."
4344         echo exit 0 >v7
4345 fi
4346 case "$eunicefix" in
4347 *unixtovms*)
4348         $cat <<'EOI'
4349 There is, however, a strange, musty smell in the air that reminds me of
4350 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4351 EOI
4352         echo exit 0 >eunice
4353         d_eunice="$define"
4354 : it so happens the Eunice I know will not run shell scripts in Unix format
4355         ;;
4356 *)
4357         echo " "
4358         echo "Congratulations.  You aren't running Eunice."
4359         d_eunice="$undef"
4360         ;;
4361 esac
4362 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4363 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4364 : semicolon as a patch separator
4365 case "$p_" in
4366 :) ;;
4367 *)
4368         $cat <<'EOI'
4369 I have the feeling something is not exactly right, however...don't tell me...
4370 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4371 (Or you may be running DOS with DJGPP.)
4372 EOI
4373         echo exit 0 >os2
4374         ;;
4375 esac
4376 if test -f /xenix; then
4377         echo "Actually, this looks more like a XENIX system..."
4378         echo exit 0 >xenix
4379         d_xenix="$define"
4380 else
4381         echo " "
4382         echo "It's not Xenix..."
4383         d_xenix="$undef"
4384 fi
4385 chmod +x xenix
4386 $eunicefix xenix
4387 if test -f /venix; then
4388         echo "Actually, this looks more like a VENIX system..."
4389         echo exit 0 >venix
4390 else
4391         echo " "
4392         if ./xenix; then
4393                 : null
4394         else
4395                 echo "Nor is it Venix..."
4396         fi
4397 fi
4398 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4399 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4400 $rm -f foo
4401
4402 case "$cc" in
4403 '') dflt=cc;;
4404 *) dflt="$cc";;
4405 esac
4406 rp="Use which C compiler?"
4407 . ./myread
4408 cc="$ans"
4409
4410 : See if they have not cc but they do have gcc
4411 . ./trygcc
4412 : Look for a hint-file generated 'call-back-unit'.  Now that the
4413 : user has specified the compiler, we may need to set or change some
4414 : other defaults.
4415 if $test -f cc.cbu; then
4416     . ./cc.cbu
4417 fi
4418 . ./checkcc
4419
4420 echo " "
4421 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4422 $cat >try.c <<EOM
4423 #include <stdio.h>
4424 int main() {
4425 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4426 #ifdef __VERSION__
4427         printf("%s\n", __VERSION__);
4428 #else
4429         printf("%s\n", "1");
4430 #endif
4431 #endif
4432         return(0);
4433 }
4434 EOM
4435 if $cc -o try $ccflags $ldflags try.c; then
4436         gccversion=`$run ./try`
4437         case "$gccversion" in
4438         '') echo "You are not using GNU cc." ;;
4439         *)  echo "You are using GNU cc $gccversion."
4440             ccname=gcc
4441             ;;
4442         esac
4443 else
4444         echo " "
4445         echo "*** WHOA THERE!!! ***" >&4
4446         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4447         case "$knowitall" in
4448         '')
4449         echo "    You'd better start hunting for one and let me know about it." >&4
4450                 exit 1
4451                 ;;
4452         esac
4453 fi
4454 $rm -f try try.*
4455 case "$gccversion" in
4456 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4457 esac
4458 case "$gccversion" in
4459 '') gccosandvers='' ;;
4460 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4461    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4462    gccshortvers=''
4463    case "$gccosandvers" in
4464    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4465    $osname$osvers) ;; # looking good
4466    $osname*) cat <<EOM >&4
4467
4468 *** WHOA THERE!!! ***
4469
4470     Your gcc has not been compiled for the exact release of
4471     your operating system ($gccosandvers versus $osname$osvers).
4472
4473     In general it is a good idea to keep gcc synchronized with
4474     the operating system because otherwise serious problems
4475     may ensue when trying to compile software, like Perl.
4476
4477     I'm trying to be optimistic here, though, and will continue.
4478     If later during the configuration and build icky compilation
4479     problems appear (headerfile conflicts being the most common
4480     manifestation), I suggest reinstalling the gcc to match
4481     your operating system release.
4482
4483 EOM
4484       ;;
4485    *) gccosandvers='' ;; # failed to parse, better be silent
4486    esac
4487    ;;
4488 esac
4489 case "$ccname" in
4490 '') ccname="$cc" ;;
4491 esac
4492
4493 # gcc 3.* complain about adding -Idirectories that they already know about,
4494 # so we will take those off from locincpth.
4495 case "$gccversion" in
4496 3*)
4497     echo "main(){}">try.c
4498     for incdir in $locincpth; do
4499        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4500              grep '^c[cp]p*[01]: warning: changing search order '`
4501        if test "X$warn" != X; then
4502            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4503        fi
4504     done
4505     $rm -f try try.*
4506 esac
4507
4508 : What should the include directory be ?
4509 echo " "
4510 $echo $n "Hmm...  $c"
4511 dflt='/usr/include'
4512 incpath=''
4513 mips_type=''
4514 if $test -f /bin/mips && /bin/mips; then
4515         echo "Looks like a MIPS system..."
4516         $cat >usr.c <<'EOCP'
4517 #ifdef SYSTYPE_BSD43
4518 /bsd43
4519 #endif
4520 EOCP
4521         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4522                 dflt='/bsd43/usr/include'
4523                 incpath='/bsd43'
4524                 mips_type='BSD 4.3'
4525         else
4526                 mips_type='System V'
4527         fi
4528         $rm -f usr.c usr.out
4529         echo "and you're compiling with the $mips_type compiler and libraries."
4530         xxx_prompt=y
4531         echo "exit 0" >mips
4532 else
4533         echo "Doesn't look like a MIPS system."
4534         xxx_prompt=n
4535         echo "exit 1" >mips
4536 fi
4537 chmod +x mips
4538 $eunicefix mips
4539 case "$usrinc" in
4540 '') ;;
4541 *) dflt="$usrinc";;
4542 esac
4543 case "$xxx_prompt" in
4544 y)      fn=d/
4545         echo " "
4546         rp='Where are the include files you want to use?'
4547         . ./getfile
4548         usrinc="$ans"
4549         ;;
4550 *)      usrinc="$dflt"
4551         ;;
4552 esac
4553
4554 : see how we invoke the C preprocessor
4555 echo " "
4556 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4557 cat <<'EOT' >testcpp.c
4558 #define ABC abc
4559 #define XYZ xyz
4560 ABC.XYZ
4561 EOT
4562 cd ..
4563 if test ! -f cppstdin; then
4564         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4565                 # AIX cc -E doesn't show the absolute headerfile
4566                 # locations but we'll cheat by using the -M flag.
4567                 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
4568         else
4569                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4570         fi
4571 else
4572         echo "Keeping your $hint cppstdin wrapper."
4573 fi
4574 chmod 755 cppstdin
4575 wrapper=`pwd`/cppstdin
4576 ok='false'
4577 cd UU
4578
4579 if $test "X$cppstdin" != "X" && \
4580         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4581         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4582 then
4583         echo "You used to use $cppstdin $cppminus so we'll use that again."
4584         case "$cpprun" in
4585         '') echo "But let's see if we can live without a wrapper..." ;;
4586         *)
4587                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4588                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4589                 then
4590                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4591                         ok='true'
4592                 else
4593                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4594                 fi
4595                 ;;
4596         esac
4597 else
4598         case "$cppstdin" in
4599         '') ;;
4600         *)
4601                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4602                 ;;
4603         esac
4604 fi
4605
4606 if $ok; then
4607         : nothing
4608 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4609         $cc -E <testcpp.c >testcpp.out 2>&1; \
4610         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4611         echo "Yup, it does."
4612         x_cpp="$cc -E"
4613         x_minus='';
4614 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4615         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4616         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4617         echo "Yup, it does."
4618         x_cpp="$cc -E"
4619         x_minus='-';
4620 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4621         $cc -P <testcpp.c >testcpp.out 2>&1; \
4622         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4623         echo "Yipee, that works!"
4624         x_cpp="$cc -P"
4625         x_minus='';
4626 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4627         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4628         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4629         echo "At long last!"
4630         x_cpp="$cc -P"
4631         x_minus='-';
4632 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4633         $cpp <testcpp.c >testcpp.out 2>&1; \
4634         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4635         echo "It works!"
4636         x_cpp="$cpp"
4637         x_minus='';
4638 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4639         $cpp - <testcpp.c >testcpp.out 2>&1; \
4640         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4641         echo "Hooray, it works!  I was beginning to wonder."
4642         x_cpp="$cpp"
4643         x_minus='-';
4644 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4645         $wrapper <testcpp.c >testcpp.out 2>&1; \
4646         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4647         x_cpp="$wrapper"
4648         x_minus=''
4649         echo "Eureka!"
4650 else
4651         dflt=''
4652         rp="No dice.  I can't find a C preprocessor.  Name one:"
4653         . ./myread
4654         x_cpp="$ans"
4655         x_minus=''
4656         $x_cpp <testcpp.c >testcpp.out 2>&1
4657         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4658                 echo "OK, that will do." >&4
4659         else
4660 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4661                 exit 1
4662         fi
4663 fi
4664
4665 case "$ok" in
4666 false)
4667         cppstdin="$x_cpp"
4668         cppminus="$x_minus"
4669         cpprun="$x_cpp"
4670         cpplast="$x_minus"
4671         set X $x_cpp
4672         shift
4673         case "$1" in
4674         "$cpp")
4675                 echo "Perhaps can we force $cc -E using a wrapper..."
4676                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4677                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4678                 then
4679                         echo "Yup, we can."
4680                         cppstdin="$wrapper"
4681                         cppminus='';
4682                 else
4683                         echo "Nope, we'll have to live without it..."
4684                 fi
4685                 ;;
4686         esac
4687         case "$cpprun" in
4688         "$wrapper")
4689                 cpprun=''
4690                 cpplast=''
4691                 ;;
4692         esac
4693         ;;
4694 esac
4695
4696 case "$cppstdin" in
4697 "$wrapper"|'cppstdin') ;;
4698 *) $rm -f $wrapper;;
4699 esac
4700 $rm -f testcpp.c testcpp.out
4701
4702 : Set private lib path
4703 case "$plibpth" in
4704 '') if ./mips; then
4705                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4706         fi;;
4707 esac
4708 case "$libpth" in
4709 ' ') dlist='';;
4710 '') dlist="$loclibpth $plibpth $glibpth";;
4711 *) dlist="$libpth";;
4712 esac
4713
4714 : Now check and see which directories actually exist, avoiding duplicates
4715 libpth=''
4716 for xxx in $dlist
4717 do
4718     if $test -d $xxx; then
4719                 case " $libpth " in
4720                 *" $xxx "*) ;;
4721                 *) libpth="$libpth $xxx";;
4722                 esac
4723     fi
4724 done
4725 $cat <<'EOM'
4726
4727 Some systems have incompatible or broken versions of libraries.  Among
4728 the directories listed in the question below, please remove any you
4729 know not to be holding relevant libraries, and add any that are needed.
4730 Say "none" for none.
4731
4732 EOM
4733 case "$libpth" in
4734 '') dflt='none';;
4735 *)
4736         set X $libpth
4737         shift
4738         dflt=${1+"$@"}
4739         ;;
4740 esac
4741 rp="Directories to use for library searches?"
4742 . ./myread
4743 case "$ans" in
4744 none) libpth=' ';;
4745 *) libpth="$ans";;
4746 esac
4747
4748 : compute shared library extension
4749 case "$so" in
4750 '')
4751         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4752                 dflt='sl'
4753         else
4754                 dflt='so'
4755         fi
4756         ;;
4757 *) dflt="$so";;
4758 esac
4759 $cat <<EOM
4760
4761 On some systems, shared libraries may be available.  Answer 'none' if
4762 you want to suppress searching of shared libraries for the remainder
4763 of this configuration.
4764
4765 EOM
4766 rp='What is the file extension used for shared libraries?'
4767 . ./myread
4768 so="$ans"
4769
4770 : Define several unixisms.
4771 : Hints files or command line option can be used to override them.
4772 : The convoluted testing is in case hints files set either the old
4773 : or the new name.
4774 case "$_exe" in
4775 '')     case "$exe_ext" in
4776         '')     ;;
4777         *)      _exe="$exe_ext" ;;
4778         esac
4779         ;;
4780 esac
4781 case "$_a" in
4782 '')     case "$lib_ext" in
4783     '') _a='.a';;
4784         *)      _a="$lib_ext" ;;
4785         esac
4786         ;;
4787 esac
4788 case "$_o" in
4789 '') case "$obj_ext" in
4790         '')     _o='.o';;
4791         *)      _o="$obj_ext";;
4792         esac
4793         ;;
4794 esac
4795 case "$p_" in
4796 '') case "$path_sep" in
4797         '')     p_=':';;
4798         *)      p_="$path_sep";;
4799         esac
4800         ;;
4801 esac
4802 exe_ext=$_exe
4803 lib_ext=$_a
4804 obj_ext=$_o
4805 path_sep=$p_
4806
4807 : Which makefile gets called first.  This is used by make depend.
4808 case "$firstmakefile" in
4809 '') firstmakefile='makefile';;
4810 esac
4811
4812 case "$ccflags" in
4813 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4814 esac
4815
4816 case "$uselongdouble" in
4817 $define|true|[yY]*)     dflt='y';;
4818 *) dflt='n';;
4819 esac
4820 cat <<EOM
4821
4822 Perl can be built to take advantage of long doubles which
4823 (if available) may give more accuracy and range for floating point numbers.
4824
4825 If this doesn't make any sense to you, just accept the default '$dflt'.
4826 EOM
4827 rp='Try to use long doubles if available?'
4828 . ./myread
4829 case "$ans" in
4830 y|Y)    val="$define"   ;;
4831 *)      val="$undef"    ;;
4832 esac
4833 set uselongdouble
4834 eval $setvar
4835
4836 case "$uselongdouble" in
4837 true|[yY]*) uselongdouble="$define" ;;
4838 esac
4839
4840 : Look for a hint-file generated 'call-back-unit'.  If the
4841 : user has specified that long doubles should be used,
4842 : we may need to set or change some other defaults.
4843 if $test -f uselongdouble.cbu; then
4844     echo "Your platform has some specific hints regarding long doubles, using them..."
4845     . ./uselongdouble.cbu
4846 else
4847     case "$uselongdouble" in
4848         $define)
4849                 $cat <<EOM
4850 (Your platform does not have any specific hints for long doubles.)
4851 EOM
4852         ;;
4853     esac
4854 fi
4855
4856 : Looking for optional libraries
4857 echo " "
4858 echo "Checking for optional libraries..." >&4
4859 case "$libs" in
4860 ' '|'') dflt='';;
4861 *) dflt="$libs";;
4862 esac
4863 case "$libswanted" in
4864 '') libswanted='c_s';;
4865 esac
4866 case "$usesocks" in
4867 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4868 esac
4869 libsfound=''
4870 libsfiles=''
4871 libsdirs=''
4872 libspath=''
4873 for thisdir in $libpth $xlibpth; do
4874   test -d $thisdir && libspath="$libspath $thisdir"
4875 done
4876 for thislib in $libswanted; do
4877         for thisdir in $libspath; do
4878             xxx=''
4879             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4880                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4881                 $test -f "$xxx" && eval $libscheck
4882                 $test -f "$xxx" && libstyle=shared
4883             fi
4884             if test ! -f "$xxx"; then
4885                 xxx=$thisdir/lib$thislib.$so
4886                 $test -f "$xxx" && eval $libscheck
4887                 $test -f "$xxx" && libstyle=shared
4888             fi  
4889             if test ! -f "$xxx"; then
4890                 xxx=$thisdir/lib$thislib$_a
4891                 $test -f "$xxx" && eval $libscheck
4892                 $test -f "$xxx" && libstyle=static
4893             fi
4894             if test ! -f "$xxx"; then
4895                 xxx=$thisdir/$thislib$_a
4896                 $test -f "$xxx" && eval $libscheck
4897                 $test -f "$xxx" && libstyle=static
4898             fi
4899             if test ! -f "$xxx"; then
4900                 xxx=$thisdir/lib${thislib}_s$_a
4901                 $test -f "$xxx" && eval $libscheck
4902                 $test -f "$xxx" && libstyle=static
4903                 $test -f "$xxx" && thislib=${thislib}_s
4904             fi
4905             if test ! -f "$xxx"; then
4906                 xxx=$thisdir/Slib$thislib$_a
4907                 $test -f "$xxx" && eval $libscheck
4908                 $test -f "$xxx" && libstyle=static
4909             fi
4910             if $test -f "$xxx"; then
4911                 case "$libstyle" in
4912                 shared) echo "Found -l$thislib (shared)." ;;
4913                 static) echo "Found -l$thislib." ;;
4914                 *)      echo "Found -l$thislib ($libstyle)." ;;
4915                 esac
4916                 case " $dflt " in
4917                 *"-l$thislib "*);;
4918                 *) dflt="$dflt -l$thislib"
4919                    libsfound="$libsfound $xxx"
4920                    yyy=`basename $xxx`
4921                    libsfiles="$libsfiles $yyy"
4922                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4923                    case " $libsdirs " in
4924                    *" $yyy "*) ;;
4925                    *) libsdirs="$libsdirs $yyy" ;;
4926                    esac
4927                    ;;
4928                 esac
4929                 break
4930             fi  
4931         done
4932         if $test ! -f "$xxx"; then
4933             echo "No -l$thislib."
4934         fi
4935 done
4936 set X $dflt
4937 shift
4938 dflt="$*"
4939 case "$libs" in
4940 '') dflt="$dflt";;
4941 *) dflt="$libs";;
4942 esac
4943 case "$dflt" in
4944 ' '|'') dflt='none';;
4945 esac
4946
4947 $cat <<EOM
4948
4949 In order to compile $package on your machine, a number of libraries
4950 are usually needed.  Include any other special libraries here as well.
4951 Say "none" for none.  The default list is almost always right.
4952 EOM
4953
4954 echo " "
4955 rp="What libraries to use?"
4956 . ./myread
4957 case "$ans" in
4958 none) libs=' ';;
4959 *) libs="$ans";;
4960 esac
4961
4962 : determine optimization, if desired, or use for debug flag also
4963 case "$optimize" in
4964 ' '|$undef) dflt='none';;
4965 '') dflt='-O';;
4966 *) dflt="$optimize";;
4967 esac
4968 $cat <<EOH
4969
4970 By default, $package compiles with the -O flag to use the optimizer.
4971 Alternately, you might want to use the symbolic debugger, which uses
4972 the -g flag (on traditional Unix systems).  Either flag can be
4973 specified here.  To use neither flag, specify the word "none".
4974
4975 EOH
4976 rp="What optimizer/debugger flag should be used?"
4977 . ./myread
4978 optimize="$ans"
4979 case "$optimize" in
4980 'none') optimize=" ";;
4981 esac
4982
4983 : Check what DEBUGGING is required from the command line
4984 : -DEBUGGING      or -DDEBUGGING or
4985 : -DEBUGGING=both                       = -g + -DDEBUGGING
4986 : -DEBUGGING=-g   or -Doptimize=-g      = -g
4987 : -DEBUGGING=none or -UDEBUGGING        =
4988 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
4989 case "$EBUGGING" in
4990 '')     ;;
4991 *)      DEBUGGING=$EBUGGING ;;
4992 esac
4993
4994 case "$DEBUGGING" in
4995 -g|$define)
4996     case "$optimize" in
4997         *-g*) ;;
4998         *)    optimize="$optimize -g" ;;
4999     esac ;;
5000 none|$undef)
5001     case "$optimize" in
5002         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5003                 shift
5004                 optimize="$*"
5005                 ;;
5006     esac ;;
5007 esac
5008
5009 dflt=''
5010 case "$DEBUGGING" in
5011 both|$define) dflt='-DDEBUGGING'
5012 esac
5013
5014 : We will not override a previous value, but we might want to
5015 : augment a hint file
5016 case "$hint" in
5017 default|recommended)
5018         case "$gccversion" in
5019         1*) dflt="$dflt -fpcc-struct-return" ;;
5020         esac
5021         case "$optimize:$DEBUGGING" in
5022         *-g*:old) dflt="$dflt -DDEBUGGING";;
5023         esac
5024         case "$gccversion" in
5025         2*) if test -d /etc/conf/kconfig.d &&
5026                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5027                 then
5028                         # Interactive Systems (ISC) POSIX mode.
5029                         dflt="$dflt -posix"
5030                 fi
5031                 ;;
5032         esac
5033         case "$gccversion" in
5034         1*) ;;
5035         2.[0-8]*) ;;
5036         ?*)     echo " "
5037                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
5038                 echo 'int main(void) { return 0; }' > gcctest.c
5039                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
5040                         echo "Yes, it does." 2>&1
5041                         case "$ccflags" in
5042                         *strict-aliasing*)
5043                                 echo "Leaving current flags $ccflags alone." 2>&1
5044                                 ;;
5045                         *) dflt="$dflt -fno-strict-aliasing" ;;
5046                         esac
5047                 else
5048                         echo "Nope, it doesn't, but that's ok." 2>&1
5049                 fi
5050                 ;;
5051         esac
5052         # For gcc, adding -pipe speeds up compilations for some, but apparently
5053         # some assemblers can't read from stdin.  (It also slows down compilations
5054         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5055         case "$gccversion" in
5056         ?*)     echo " "
5057                 echo "Checking if your compiler accepts -pipe" 2>&1
5058                 echo 'int main(void) { return 0; }' > gcctest.c
5059                 if $cc -pipe -o gcctest gcctest.c; then
5060                         echo "Yes, it does." 2>&1
5061                         case "$ccflags" in
5062                         *-pipe*)
5063                                 echo "Leaving current flags $ccflags alone." 2>&1
5064                                 ;;
5065                         *) dflt="$dflt -pipe" ;;
5066                         esac
5067                 else
5068                         echo "Nope, it doesn't, but that's ok." 2>&1
5069                 fi
5070                 ;;
5071         esac
5072         ;;
5073 esac
5074
5075 case "$mips_type" in
5076 *BSD*|'') inclwanted="$locincpth $usrinc";;
5077 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5078 esac
5079 for thisincl in $inclwanted; do
5080         if $test -d $thisincl; then
5081                 if $test x$thisincl != x$usrinc; then
5082                         case "$dflt" in
5083                         *" -I$thisincl "*);;
5084                         *) dflt="$dflt -I$thisincl ";;
5085                         esac
5086                 fi
5087         fi
5088 done
5089
5090 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5091         xxx=true;
5092 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5093         xxx=true;
5094 else
5095         xxx=false;
5096 fi;
5097 if $xxx; then
5098         case "$dflt" in
5099         *$2*);;
5100         *) dflt="$dflt -D$2";;
5101         esac;
5102 fi'
5103
5104 set signal.h LANGUAGE_C; eval $inctest
5105
5106 case "$usesocks" in
5107 $define)
5108         ccflags="$ccflags -DSOCKS"
5109         ;;
5110 esac
5111
5112 case "$hint" in
5113 default|recommended) dflt="$ccflags $dflt" ;;
5114 *) dflt="$ccflags";;
5115 esac
5116
5117 case "$dflt" in
5118 ''|' ') dflt=none;;
5119 esac
5120
5121 $cat <<EOH
5122
5123 Your C compiler may want other flags.  For this question you should include
5124 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5125 but you should NOT include libraries or ld flags like -lwhatever.  If you
5126 want $package to honor its debug switch, you should include -DDEBUGGING here.
5127 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5128
5129 To use no flags, specify the word "none".
5130
5131 EOH
5132 set X $dflt
5133 shift
5134 dflt=${1+"$@"}
5135 rp="Any additional cc flags?"
5136 . ./myread
5137 case "$ans" in
5138 none) ccflags='';;
5139 *) ccflags="$ans";;
5140 esac
5141
5142 : the following weeds options from ccflags that are of no interest to cpp
5143 case "$cppflags" in
5144 '') cppflags="$ccflags" ;;
5145 *)  cppflags="$cppflags $ccflags" ;;
5146 esac
5147 case "$gccversion" in
5148 1*) cppflags="$cppflags -D__GNUC__"
5149 esac
5150 case "$mips_type" in
5151 '');;
5152 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5153 esac
5154 case "$cppflags" in
5155 '');;
5156 *)
5157         echo " "
5158         echo "Let me guess what the preprocessor flags are..." >&4
5159         set X $cppflags
5160         shift
5161         cppflags=''
5162         $cat >cpp.c <<'EOM'
5163 #define BLURFL foo
5164
5165 BLURFL xx LFRULB
5166 EOM
5167         previous=''
5168         for flag in $*
5169         do
5170                 case "$flag" in
5171                 -*) ftry="$flag";;
5172                 *) ftry="$previous $flag";;
5173                 esac
5174                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5175                         >cpp1.out 2>/dev/null && \
5176                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5177                         >cpp2.out 2>/dev/null && \
5178                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5179                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5180                 then
5181                         cppflags="$cppflags $ftry"
5182                         previous=''
5183                 else
5184                         previous="$flag"
5185                 fi
5186         done
5187         set X $cppflags
5188         shift
5189         cppflags=${1+"$@"}
5190         case "$cppflags" in
5191         *-*)  echo "They appear to be: $cppflags";;
5192         esac
5193         $rm -f cpp.c cpp?.out
5194         ;;
5195 esac
5196
5197 : flags used in final linking phase
5198 case "$ldflags" in
5199 '') if ./venix; then
5200                 dflt='-i -z'
5201         else
5202                 dflt=''
5203         fi
5204         case "$ccflags" in
5205         *-posix*) dflt="$dflt -posix" ;;
5206         esac
5207         ;;
5208 *) dflt="$ldflags";;
5209 esac
5210
5211 : Try to guess additional flags to pick up local libraries.
5212 for thislibdir in $libpth; do
5213         case " $loclibpth " in
5214         *" $thislibdir "*)
5215                 case "$dflt " in
5216                 *"-L$thislibdir "*) ;;
5217                 *)  dflt="$dflt -L$thislibdir" ;;
5218                 esac
5219                 ;;
5220         esac
5221 done
5222
5223 case "$dflt" in
5224 '') dflt='none' ;;
5225 esac
5226
5227 $cat <<EOH
5228
5229 Your C linker may need flags.  For this question you should
5230 include -L/whatever and any other flags used by the C linker, but you
5231 should NOT include libraries like -lwhatever.
5232
5233 Make sure you include the appropriate -L/path flags if your C linker
5234 does not normally search all of the directories you specified above,
5235 namely
5236         $libpth
5237 To use no flags, specify the word "none".
5238
5239 EOH
5240
5241 rp="Any additional ld flags (NOT including libraries)?"
5242 . ./myread
5243 case "$ans" in
5244 none) ldflags='';;
5245 *) ldflags="$ans";;
5246 esac
5247 rmlist="$rmlist pdp11"
5248
5249 : coherency check
5250 echo " "
5251 echo "Checking your choice of C compiler and flags for coherency..." >&4
5252 $cat > try.c <<'EOF'
5253 #include <stdio.h>
5254 int main() { printf("Ok\n"); return(0); }
5255 EOF
5256 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5257 shift
5258 $cat >try.msg <<'EOM'
5259 I've tried to compile and run the following simple program:
5260
5261 EOM
5262 $cat try.c >> try.msg
5263
5264 $cat >> try.msg <<EOM
5265
5266 I used the command:
5267
5268         $*
5269         $run ./try
5270
5271 and I got the following output:
5272
5273 EOM
5274 dflt=y
5275 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5276         if $sh -c "$run ./try" >>try.msg 2>&1; then
5277                 xxx=`$run ./try`
5278                 case "$xxx" in
5279                 "Ok") dflt=n ;;
5280                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5281                         case " $libs " in
5282                         *" -lsfio "*)
5283                                 cat >> try.msg <<'EOQS'
5284 If $libs contains -lsfio, and sfio is mis-configured, then it
5285 sometimes (apparently) runs and exits with a 0 status, but with no
5286 output!  It may have to do with sfio's use of _exit vs. exit.
5287
5288 EOQS
5289                                 rp="You have a big problem.  Shall I abort Configure"
5290                                 dflt=y
5291                                 ;;
5292                         esac
5293                         ;;
5294                 esac
5295         else
5296                 echo "The program compiled OK, but exited with status $?." >>try.msg
5297                 rp="You have a problem.  Shall I abort Configure"
5298                 dflt=y
5299         fi
5300 else
5301         echo "I can't compile the test program." >>try.msg
5302         rp="You have a BIG problem.  Shall I abort Configure"
5303         dflt=y
5304 fi
5305 case "$dflt" in
5306 y)
5307         $cat try.msg >&4
5308         case "$knowitall" in
5309         '')
5310                 echo "(The supplied flags or libraries might be incorrect.)"
5311                 ;;
5312         *) dflt=n;;
5313         esac
5314         echo " "
5315         . ./myread
5316         case "$ans" in
5317         n*|N*) ;;
5318         *)      echo "Ok.  Stopping Configure." >&4
5319                 exit 1
5320                 ;;
5321         esac
5322         ;;
5323 n) echo "OK, that should do.";;
5324 esac
5325 $rm -f try try.* core
5326
5327 : define a shorthand compile call
5328 compile='
5329 mc_file=$1;
5330 shift;
5331 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5332 : define a shorthand compile call for compilations that should be ok.
5333 compile_ok='
5334 mc_file=$1;
5335 shift;
5336 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5337
5338 : determine filename position in cpp output
5339 echo " "
5340 echo "Computing filename position in cpp output for #include directives..." >&4
5341 case "$osname" in
5342 vos) testaccess=-e ;;
5343 *)   testaccess=-r ;;
5344 esac
5345 echo '#include <stdio.h>' > foo.c
5346 $cat >fieldn <<EOF
5347 $startsh
5348 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5349 $grep '^[       ]*#.*stdio\.h' | \
5350 while read cline; do
5351         pos=1
5352         set \$cline
5353         while $test \$# -gt 0; do
5354                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5355                         echo "\$pos"
5356                         exit 0
5357                 fi
5358                 shift
5359                 pos=\`expr \$pos + 1\`
5360         done
5361 done
5362 EOF
5363 chmod +x fieldn
5364 fieldn=`./fieldn`
5365 $rm -f foo.c fieldn
5366 case $fieldn in
5367 '') pos='???';;
5368 1) pos=first;;
5369 2) pos=second;;
5370 3) pos=third;;
5371 *) pos="${fieldn}th";;
5372 esac
5373 echo "Your cpp writes the filename in the $pos field of the line."
5374
5375 case "$osname" in
5376 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5377 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5378 *)   cppfilter='' ;;
5379 esac
5380 : locate header file
5381 $cat >findhdr <<EOF
5382 $startsh
5383 wanted=\$1
5384 name=''
5385 for usrincdir in $usrinc
5386 do
5387         if test -f \$usrincdir/\$wanted; then
5388                 echo "\$usrincdir/\$wanted"
5389                 exit 0
5390         fi
5391 done
5392 awkprg='{ print \$$fieldn }'
5393 echo "#include <\$wanted>" > foo\$\$.c
5394 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5395 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5396 while read cline; do
5397         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5398         case "\$name" in
5399         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5400         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5401         *) exit 2;;
5402         esac;
5403 done;
5404 #
5405 # status = 0: grep returned 0 lines, case statement not executed
5406 # status = 1: headerfile found
5407 # status = 2: while loop executed, no headerfile found
5408 #
5409 status=\$?
5410 $rm -f foo\$\$.c;
5411 if test \$status -eq 1; then
5412         exit 0;
5413 fi
5414 exit 1
5415 EOF
5416 chmod +x findhdr
5417
5418 : define an alternate in-header-list? function
5419 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5420 cont=true; xxf="echo \"<\$1> found.\" >&4";
5421 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5422 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5423 esac;
5424 case $# in 4) instead=instead;; *) instead="at last";; esac;
5425 while $test "$cont"; do
5426         xxx=`./findhdr $1`
5427         var=$2; eval "was=\$$2";
5428         if $test "$xxx" && $test -r "$xxx";
5429         then eval $xxf;
5430         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5431                 cont="";
5432         else eval $xxnf;
5433         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5434         set $yyy; shift; shift; yyy=$@;
5435         case $# in 0) cont="";;
5436         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5437                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5438         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5439                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5440         esac;
5441 done;
5442 while $test "$yyy";
5443 do set $yyy; var=$2; eval "was=\$$2";
5444         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5445         set $yyy; shift; shift; yyy=$@;
5446 done'
5447
5448 : see if stdlib is available
5449 set stdlib.h i_stdlib
5450 eval $inhdr
5451
5452 : check for lengths of integral types
5453 echo " "
5454 case "$intsize" in
5455 '')
5456         echo "Checking to see how big your integers are..." >&4
5457         $cat >try.c <<EOCP
5458 #include <stdio.h>
5459 #$i_stdlib I_STDLIB
5460 #ifdef I_STDLIB
5461 #include <stdlib.h>
5462 #endif
5463 int main()
5464 {
5465         printf("intsize=%d;\n", (int)sizeof(int));
5466         printf("longsize=%d;\n", (int)sizeof(long));
5467         printf("shortsize=%d;\n", (int)sizeof(short));
5468         exit(0);
5469 }
5470 EOCP
5471         set try
5472         if eval $compile_ok && $run ./try > /dev/null; then
5473                 eval `$run ./try`
5474                 echo "Your integers are $intsize bytes long."
5475                 echo "Your long integers are $longsize bytes long."
5476                 echo "Your short integers are $shortsize bytes long."
5477         else
5478                 $cat >&4 <<EOM
5479 !
5480 Help! I can't compile and run the intsize test program: please enlighten me!
5481 (This is probably a misconfiguration in your system or libraries, and
5482 you really ought to fix it.  Still, I'll try anyway.)
5483 !
5484 EOM
5485                 dflt=4
5486                 rp="What is the size of an integer (in bytes)?"
5487                 . ./myread
5488                 intsize="$ans"
5489                 dflt=$intsize
5490                 rp="What is the size of a long integer (in bytes)?"
5491                 . ./myread
5492                 longsize="$ans"
5493                 dflt=2
5494                 rp="What is the size of a short integer (in bytes)?"
5495                 . ./myread
5496                 shortsize="$ans"
5497         fi
5498         ;;
5499 esac
5500 $rm -f try try.*
5501
5502 : check for long long
5503 echo " "
5504 echo "Checking to see if you have long long..." >&4
5505 echo 'int main() { long long x = 7; return 0; }' > try.c
5506 set try
5507 if eval $compile; then
5508         val="$define"
5509         echo "You have long long."
5510 else
5511         val="$undef"
5512         echo "You do not have long long."
5513 fi
5514 $rm try.*
5515 set d_longlong
5516 eval $setvar
5517
5518 : check for length of long long
5519 case "${d_longlong}${longlongsize}" in
5520 $define)
5521         echo " "
5522         echo "Checking to see how big your long longs are..." >&4
5523         $cat >try.c <<'EOCP'
5524 #include <stdio.h>
5525 int main()
5526 {
5527     printf("%d\n", (int)sizeof(long long));
5528     return(0);
5529 }
5530 EOCP
5531         set try
5532         if eval $compile_ok; then
5533                 longlongsize=`$run ./try`
5534                 echo "Your long longs are $longlongsize bytes long."
5535         else
5536                 dflt='8'
5537                 echo " "
5538                 echo "(I can't seem to compile the test program.  Guessing...)"
5539                 rp="What is the size of a long long (in bytes)?"
5540                 . ./myread
5541                 longlongsize="$ans"
5542         fi
5543         if $test "X$longsize" = "X$longlongsize"; then
5544                 echo "(That isn't any different from an ordinary long.)"
5545         fi      
5546         ;;
5547 esac
5548 $rm -f try.* try
5549
5550 : see if inttypes.h is available
5551 : we want a real compile instead of Inhdr because some systems
5552 : have an inttypes.h which includes non-existent headers
5553 echo " "
5554 $cat >try.c <<EOCP
5555 #include <inttypes.h>
5556 int main() {
5557         static int32_t foo32 = 0x12345678;
5558 }
5559 EOCP
5560 set try
5561 if eval $compile; then
5562         echo "<inttypes.h> found." >&4
5563         val="$define"
5564 else
5565         echo "<inttypes.h> NOT found." >&4
5566         val="$undef"
5567 fi
5568 $rm -f try.c try
5569 set i_inttypes
5570 eval $setvar
5571
5572 : check for int64_t
5573 echo " "
5574 echo "Checking to see if you have int64_t..." >&4
5575 $cat >try.c <<EOCP
5576 #include <sys/types.h>
5577 #$i_inttypes I_INTTYPES
5578 #ifdef I_INTTYPES
5579 #include <inttypes.h>
5580 #endif
5581 int main() { int64_t x = 7; }
5582 EOCP
5583 set try
5584 if eval $compile; then
5585         val="$define"
5586         echo "You have int64_t."
5587 else
5588         val="$undef"
5589         echo "You do not have int64_t."
5590 fi
5591 $rm -f try try.*
5592 set d_int64_t
5593 eval $setvar
5594
5595
5596 echo " "
5597 echo "Checking which 64-bit integer type we could use..." >&4
5598
5599 case "$intsize" in
5600 8) val=int
5601    set quadtype
5602    eval $setvar
5603    val='"unsigned int"'
5604    set uquadtype
5605    eval $setvar
5606    quadkind=1
5607    ;;
5608 *) case "$longsize" in
5609    8) val=long
5610       set quadtype
5611       eval $setvar
5612       val='"unsigned long"'
5613       set uquadtype
5614       eval $setvar
5615       quadkind=2
5616       ;;
5617    *) case "$d_longlong:$longlongsize" in
5618       define:8)
5619         val='"long long"'
5620         set quadtype
5621         eval $setvar
5622         val='"unsigned long long"'
5623         set uquadtype
5624         eval $setvar
5625         quadkind=3
5626         ;;
5627       *) case "$d_int64_t" in
5628          define)
5629            val=int64_t
5630            set quadtype
5631            eval $setvar
5632            val=uint64_t
5633            set uquadtype
5634            eval $setvar
5635            quadkind=4
5636            ;;
5637          esac
5638          ;;
5639       esac
5640       ;;
5641    esac
5642    ;;
5643 esac
5644
5645 case "$quadtype" in
5646 '')     echo "Alas, no 64-bit integer types in sight." >&4
5647         d_quad="$undef"
5648         ;;
5649 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5650         d_quad="$define"
5651         ;;
5652 esac
5653
5654
5655 case "$uselonglong" in
5656 "$define"|true|[yY]*)
5657         cat <<EOM >&4
5658
5659 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5660 EOM
5661         use64bitint="$define"
5662         ;;
5663 esac                          
5664 case "$use64bits" in
5665 "$define"|true|[yY]*)
5666         cat <<EOM >&4
5667
5668 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5669 EOM
5670         use64bitint="$define"
5671         ;;
5672 esac                          
5673 case "$use64bitints" in
5674 "$define"|true|[yY]*)
5675         cat <<EOM >&4
5676
5677 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5678 EOM
5679         use64bitint="$define"
5680         ;;
5681 esac                          
5682 case "$use64bitsint" in
5683 "$define"|true|[yY]*)
5684         cat <<EOM >&4
5685
5686 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5687 EOM
5688         use64bitint="$define"
5689         ;;
5690 esac                          
5691 case "$uselonglongs" in
5692 "$define"|true|[yY]*)
5693         cat <<EOM >&4
5694
5695 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5696 EOM
5697         use64bitint="$define"
5698         ;;
5699 esac                          
5700 case "$use64bitsall" in
5701 "$define"|true|[yY]*)
5702         cat <<EOM >&4
5703
5704 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5705 EOM
5706         use64bitall="$define"
5707         ;;
5708 esac                          
5709
5710 case "$ccflags" in
5711 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5712 esac
5713 case "$use64bitall" in
5714 "$define"|true|[yY]*) use64bitint="$define" ;;
5715 esac
5716
5717 case "$longsize" in
5718 8) cat <<EOM
5719
5720 You have natively 64-bit long integers.
5721 EOM
5722    val="$define"
5723    ;;
5724 *) case "$use64bitint" in
5725    "$define"|true|[yY]*) dflt='y';;
5726    *) dflt='n';;
5727    esac
5728    case "$d_quad" in
5729    "$define") ;;
5730    *) dflt='n' ;;
5731    esac
5732    cat <<EOM
5733
5734 Perl can be built to take advantage of 64-bit integer types
5735 on some systems.  To do so, Configure can be run with -Duse64bitint.
5736 Choosing this option will most probably introduce binary incompatibilities.
5737
5738 If this doesn't make any sense to you, just accept the default '$dflt'.
5739 (The default has been chosen based on your configuration.)
5740 EOM
5741    rp='Try to use 64-bit integers, if available?'
5742    . ./myread
5743    case "$ans" in
5744    [yY]*) val="$define" ;;
5745    *)     val="$undef"  ;;
5746    esac
5747    ;;
5748 esac
5749 set use64bitint
5750 eval $setvar
5751
5752 case "$use64bitall" in
5753 "$define"|true|[yY]*) dflt='y' ;;
5754 *) case "$longsize" in
5755    8) dflt='y' ;;
5756    *) dflt='n' ;;
5757    esac
5758    ;;
5759 esac    
5760 cat <<EOM
5761
5762 You may also choose to try maximal 64-bitness.  It means using as much
5763 64-bitness as possible on the platform.  This in turn means even more
5764 binary incompatibilities.  On the other hand, your platform may not
5765 have any more 64-bitness available than what you already have chosen.
5766
5767 If this doesn't make any sense to you, just accept the default '$dflt'.
5768 (The default has been chosen based on your configuration.)
5769 EOM
5770 rp='Try to use maximal 64-bit support, if available?'
5771 . ./myread
5772 case "$ans" in
5773 [yY]*) val="$define" ;;
5774 *)     val="$undef"  ;;
5775 esac
5776 set use64bitall
5777 eval $setvar
5778 case "$use64bitall" in
5779 "$define")
5780         case "$use64bitint" in
5781         "$undef")
5782                 cat <<EOM
5783
5784 Since you have chosen a maximally 64-bit build, I'm also turning on
5785 the use of 64-bit integers.
5786 EOM
5787                 use64bitint="$define" ;;
5788         esac
5789         ;;
5790 esac
5791
5792 : Look for a hint-file generated 'call-back-unit'.  If the
5793 : user has specified that a 64-bit perl is to be built,
5794 : we may need to set or change some other defaults.
5795 if $test -f use64bitint.cbu; then
5796         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5797         . ./use64bitint.cbu
5798 fi
5799 case "$use64bitint" in
5800 "$define"|true|[yY]*)
5801         case "$longsize" in
5802         4) case "$archname64" in
5803            '') archname64=64int ;;
5804            esac
5805            ;;
5806         esac
5807         ;;
5808 esac
5809
5810 : Look for a hint-file generated 'call-back-unit'.  If the
5811 : user has specified that a maximally 64-bit perl is to be built,
5812 : we may need to set or change some other defaults.
5813 if $test -f use64bitall.cbu; then
5814         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5815         . ./use64bitall.cbu
5816 fi
5817 case "$use64bitall" in
5818 "$define"|true|[yY]*)
5819         case "$longsize" in
5820         4) case "$archname64" in
5821            ''|64int) archname64=64all ;;
5822            esac
5823            ;;
5824         esac
5825         ;;
5826 esac
5827
5828 case "$d_quad:$use64bitint" in
5829 $undef:$define)
5830         cat >&4 <<EOF
5831
5832 *** You have chosen to use 64-bit integers,
5833 *** but none can be found.
5834 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5835 *** Cannot continue, aborting.
5836
5837 EOF
5838         exit 1
5839         ;;
5840 esac
5841
5842 : check for length of double
5843 echo " "
5844 case "$doublesize" in
5845 '')
5846         echo "Checking to see how big your double precision numbers are..." >&4
5847         $cat >try.c <<EOCP
5848 #include <stdio.h>
5849 #$i_stdlib I_STDLIB
5850 #ifdef I_STDLIB
5851 #include <stdlib.h>
5852 #endif
5853 int main()
5854 {
5855     printf("%d\n", (int)sizeof(double));
5856     exit(0);
5857 }
5858 EOCP
5859         set try
5860         if eval $compile_ok; then
5861                 doublesize=`$run ./try`
5862                 echo "Your double is $doublesize bytes long."
5863         else
5864                 dflt='8'
5865                 echo "(I can't seem to compile the test program.  Guessing...)"
5866                 rp="What is the size of a double precision number (in bytes)?"
5867                 . ./myread
5868                 doublesize="$ans"
5869         fi
5870         ;;
5871 esac
5872 $rm -f try.c try
5873
5874 : check for long doubles
5875 echo " "
5876 echo "Checking to see if you have long double..." >&4
5877 echo 'int main() { long double x = 7.0; }' > try.c
5878 set try
5879 if eval $compile; then
5880         val="$define"
5881         echo "You have long double."
5882 else
5883         val="$undef"
5884         echo "You do not have long double."
5885 fi
5886 $rm try.*
5887 set d_longdbl
5888 eval $setvar
5889
5890 : check for length of long double
5891 case "${d_longdbl}${longdblsize}" in
5892 $define)
5893         echo " "
5894         echo "Checking to see how big your long doubles are..." >&4
5895         $cat >try.c <<'EOCP'
5896 #include <stdio.h>
5897 int main()
5898 {
5899         printf("%d\n", sizeof(long double));
5900 }
5901 EOCP
5902         set try
5903         set try
5904         if eval $compile; then
5905                 longdblsize=`$run ./try`
5906                 echo "Your long doubles are $longdblsize bytes long."
5907         else
5908                 dflt='8'
5909                 echo " "
5910                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5911                 rp="What is the size of a long double (in bytes)?"
5912                 . ./myread
5913                 longdblsize="$ans"
5914         fi
5915         if $test "X$doublesize" = "X$longdblsize"; then
5916                 echo "That isn't any different from an ordinary double."
5917                 echo "I'll keep your setting anyway, but you may see some"
5918                 echo "harmless compilation warnings."
5919         fi      
5920         ;;
5921 esac
5922 $rm -f try.* try
5923
5924 : determine the architecture name
5925 echo " "
5926 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5927         tarch=`arch`"-$osname"
5928 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5929         if uname -m > tmparch 2>&1 ; then
5930                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5931                         -e 's/$/'"-$osname/" tmparch`
5932         else
5933                 tarch="$osname"
5934         fi
5935         $rm -f tmparch
5936 else
5937         tarch="$osname"
5938 fi
5939 case "$myarchname" in
5940 ''|"$tarch") ;;
5941 *)
5942         echo "(Your architecture name used to be $myarchname.)"
5943         archname=''
5944         ;;
5945 esac
5946 case "$targetarch" in
5947 '') ;;
5948 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5949 esac
5950 myarchname="$tarch"
5951 case "$archname" in
5952 '') dflt="$tarch";;
5953 *) dflt="$archname";;
5954 esac
5955 rp='What is your architecture name'
5956 . ./myread
5957 archname="$ans"
5958 case "$usethreads" in
5959 $define)
5960         echo "Threads selected." >&4
5961         case "$archname" in
5962         *-thread*) echo "...and architecture name already has -thread." >&4
5963                 ;;
5964         *)      archname="$archname-thread"
5965                 echo "...setting architecture name to $archname." >&4
5966                 ;;
5967         esac
5968         ;;
5969 esac
5970 case "$usemultiplicity" in
5971 $define)
5972         echo "Multiplicity selected." >&4
5973         case "$archname" in
5974         *-multi*) echo "...and architecture name already has -multi." >&4
5975                 ;;
5976         *)      archname="$archname-multi"
5977                 echo "...setting architecture name to $archname." >&4
5978                 ;;
5979         esac
5980         ;;
5981 esac
5982 case "$use64bitint$use64bitall" in
5983 *"$define"*)
5984         case "$archname64" in
5985         '')
5986                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5987                 ;;
5988         *)
5989                 case "$use64bitint" in
5990                 "$define") echo "64 bit integers selected." >&4 ;;
5991                 esac
5992                 case "$use64bitall" in
5993                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5994                 esac
5995                 case "$archname" in
5996                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5997                         ;;
5998                 *)      archname="$archname-$archname64"
5999                         echo "...setting architecture name to $archname." >&4
6000                         ;;
6001                 esac
6002                 ;;
6003         esac
6004 esac
6005 case "$uselongdouble" in
6006 $define)
6007         echo "Long doubles selected." >&4
6008         case "$longdblsize" in
6009         $doublesize)
6010                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6011                 ;;
6012         *)
6013                 case "$archname" in
6014                 *-ld*) echo "...and architecture name already has -ld." >&4
6015                         ;;
6016                 *)      archname="$archname-ld"
6017                         echo "...setting architecture name to $archname." >&4
6018                         ;;
6019                 esac
6020                 ;;
6021         esac
6022         ;;
6023 esac
6024 case "$useperlio" in
6025 $define)
6026         echo "Perlio selected." >&4
6027         ;;
6028 *)
6029         echo "Perlio not selected, using stdio." >&4
6030         case "$archname" in
6031         *-stdio*) echo "...and architecture name already has -stdio." >&4
6032                 ;;
6033         *)      archname="$archname-stdio"
6034                 echo "...setting architecture name to $archname." >&4
6035                 ;;
6036         esac
6037         ;;
6038 esac
6039 if $test -f archname.cbu; then
6040         echo "Your platform has some specific hints for architecture name, using them..."
6041         . ./archname.cbu
6042 fi
6043
6044 : set the prefixit variable, to compute a suitable default value
6045 prefixit='case "$3" in
6046 ""|none)
6047         case "$oldprefix" in
6048         "") eval "$1=\"\$$2\"";;
6049         *)
6050                 case "$3" in
6051                 "") eval "$1=";;
6052                 none)
6053                         eval "tp=\"\$$2\"";
6054                         case "$tp" in
6055                         ""|" ") eval "$1=\"\$$2\"";;
6056                         *) eval "$1=";;
6057                         esac;;
6058                 esac;;
6059         esac;;
6060 *)
6061         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6062         case "$tp" in
6063         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6064         /*-$oldprefix/*|\~*-$oldprefix/*)
6065                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6066         *) eval "$1=\"\$$2\"";;
6067         esac;;
6068 esac'
6069
6070 : determine installation style
6071 : For now, try to deduce it from prefix unless it is already set.
6072 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6073 case "$installstyle" in
6074 '')     case "$prefix" in
6075                 *perl*) dflt='lib';;
6076                 *) dflt='lib/perl5' ;;
6077         esac
6078         ;;
6079 *)      dflt="$installstyle" ;;
6080 esac
6081 : Probably not worth prompting for this since we prompt for all
6082 : the directories individually, and the prompt would be too long and
6083 : confusing anyway.
6084 installstyle=$dflt
6085
6086 : determine where public executables go
6087 echo " "
6088 set dflt bin bin
6089 eval $prefixit
6090 fn=d~
6091 rp='Pathname where the public executables will reside?'
6092 . ./getfile
6093 if $test "X$ansexp" != "X$binexp"; then
6094         installbin=''
6095 fi
6096 prefixvar=bin
6097 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6098 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6099 :     this via initialinstalllocation
6100 . ./setprefixvar
6101
6102 case "$userelocatableinc" in
6103 $define|true|[yY]*)     dflt='y' ;;
6104 *)                      dflt='n' ;;
6105 esac
6106 cat <<EOM
6107
6108 Would you like to build Perl so that the installation is relocatable, so that
6109 library paths in @INC are determined relative to the path of the perl binary?
6110 This is not advised for system Perl installs, or if you need to run setid
6111 scripts or scripts under taint mode.
6112
6113 If this doesn't make any sense to you, just accept the default '$dflt'.
6114 EOM
6115 rp='Use relocatable @INC?'
6116 . ./myread
6117 case "$ans" in
6118 y|Y)    val="$define" ;;
6119 *)      val="$undef"  ;;
6120 esac
6121 set userelocatableinc
6122 eval $setvar
6123
6124 initialinstalllocation="$binexp"
6125 : Default prefix is now "up one level from where the binaries are"
6126 case "$userelocatableinc" in
6127 $define|true|[yY]*)
6128     bin=".../"
6129     binexp=".../"
6130     prefix=".../.."
6131     prefixexp=".../.."
6132     installprefixexp=".../.."
6133     ;;
6134 esac
6135
6136 : determine where private library files go
6137 : Usual default is /usr/local/lib/perl5/$version.
6138 : Also allow things like /opt/perl/lib/$version, since
6139 : /opt/perl/lib/perl5... would be redundant.
6140 : The default "style" setting is made in installstyle.U
6141 case "$installstyle" in
6142 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6143 *)       set dflt privlib lib/$version ;;
6144 esac
6145 eval $prefixit
6146 $cat <<EOM
6147
6148 There are some auxiliary files for $package that need to be put into a
6149 private library directory that is accessible by everyone.
6150
6151 EOM
6152 fn=$binexp
6153 fn=d~+
6154 rp='Pathname where the private library files will reside?'
6155 . ./getfile
6156 prefixvar=privlib
6157 . ./setprefixvar
6158
6159 : set the prefixup variable, to restore leading tilda escape
6160 prefixup='case "$prefixexp" in
6161 "$prefix") ;;
6162 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6163 esac'
6164
6165 : determine where public architecture dependent libraries go
6166 set archlib archlib
6167 eval $prefixit
6168 : privlib default is /usr/local/lib/$package/$version
6169 : archlib default is /usr/local/lib/$package/$version/$archname
6170 : privlib may have an optional trailing /share.
6171 tdflt=`echo $privlib | $sed 's,/share$,,'`
6172 tdflt=$tdflt/$archname
6173 case "$archlib" in
6174 '')     dflt=$tdflt
6175         ;;
6176 *)      dflt="$archlib"
6177     ;;
6178 esac
6179 $cat <<EOM
6180
6181 $spackage contains architecture-dependent library files.  If you are
6182 sharing libraries in a heterogeneous environment, you might store
6183 these files in a separate location.  Otherwise, you can just include
6184 them with the rest of the public library files.
6185
6186 EOM
6187 fn=$binexp
6188 fn=d+~
6189 rp='Where do you want to put the public architecture-dependent libraries?'
6190 . ./getfile
6191 prefixvar=archlib
6192 . ./setprefixvar
6193 if $test X"$archlib" = X"$privlib"; then
6194         d_archlib="$undef"
6195 else
6196         d_archlib="$define"
6197 fi
6198
6199 : see if setuid scripts can be secure
6200 $cat <<EOM
6201
6202 Some kernels have a bug that prevents setuid #! scripts from being
6203 secure.  Some sites have disabled setuid #! scripts because of this.
6204
6205 First let's decide if your kernel supports secure setuid #! scripts.
6206 (If setuid #! scripts would be secure but have been disabled anyway,
6207 don't say that they are secure if asked.)
6208
6209 EOM
6210
6211 val="$undef"
6212 if $test -d /dev/fd; then
6213         echo "#!$ls" >reflect
6214         chmod +x,u+s reflect
6215         ./reflect >flect 2>&1
6216         if $contains "/dev/fd" flect >/dev/null; then
6217                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6218                 val="$define"
6219         else
6220                 $cat <<EOM
6221 If you are not sure if they are secure, I can check but I'll need a
6222 username and password different from the one you are using right now.
6223 If you don't have such a username or don't want me to test, simply
6224 enter 'none'.
6225
6226 EOM
6227                 rp='Other username to test security of setuid scripts with?'
6228                 dflt='none'
6229                 . ./myread
6230                 case "$ans" in
6231                 n|none)
6232                         case "$d_suidsafe" in
6233                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6234                                 dflt=n;;
6235                         "$undef")
6236                                 echo "Well, the $hint value is *not* secure." >&4
6237                                 dflt=n;;
6238                         *)      echo "Well, the $hint value *is* secure." >&4
6239                                 dflt=y;;
6240                         esac
6241                         ;;
6242                 *)
6243                         $rm -f reflect flect
6244                         echo "#!$ls" >reflect
6245                         chmod +x,u+s reflect
6246                         echo >flect
6247                         chmod a+w flect
6248                         echo '"su" will (probably) prompt you for '"$ans's password."
6249                         su $ans -c './reflect >flect'
6250                         if $contains "/dev/fd" flect >/dev/null; then
6251                                 echo "Okay, it looks like setuid scripts are secure." >&4
6252                                 dflt=y
6253                         else
6254                                 echo "I don't think setuid scripts are secure." >&4
6255                                 dflt=n
6256                         fi
6257                         ;;
6258                 esac
6259                 rp='Does your kernel have *secure* setuid scripts?'
6260                 . ./myread
6261                 case "$ans" in
6262                 [yY]*)  val="$define";;
6263                 *)      val="$undef";;
6264                 esac
6265         fi
6266 else
6267         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6268         echo "(That's for file descriptors, not floppy disks.)"
6269         val="$undef"
6270 fi
6271 set d_suidsafe
6272 eval $setvar
6273
6274 $rm -f reflect flect
6275
6276 : now see if they want to do setuid emulation
6277 echo " "
6278 val="$undef"
6279 case "$d_suidsafe" in
6280 "$define")
6281         val="$undef"
6282         echo "No need to emulate SUID scripts since they are secure here." >&4
6283         ;;
6284 *)
6285         $cat <<EOM
6286 Some systems have disabled setuid scripts, especially systems where
6287 setuid scripts cannot be secure.  On systems where setuid scripts have
6288 been disabled, the setuid/setgid bits on scripts are currently
6289 useless.  It is possible for $package to detect those bits and emulate
6290 setuid/setgid in a secure fashion.  This emulation will only work if
6291 setuid scripts have been disabled in your kernel.
6292
6293 EOM
6294         case "$d_dosuid" in
6295         "$define") dflt=y ;;
6296         *) dflt=n ;;
6297         esac
6298         rp="Do you want to do setuid/setgid emulation?"
6299         . ./myread
6300         case "$ans" in
6301         [yY]*)  val="$define";;
6302         *)      val="$undef";;
6303         esac
6304         ;;
6305 esac
6306 set d_dosuid
6307 eval $setvar
6308
6309 : Find perl5.005 or later.
6310 echo "Looking for a previously installed perl5.005 or later... "
6311 case "$perl5" in
6312 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6313                 : Check if this perl is recent and can load a simple module
6314                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6315                         perl5=$tdir/perl
6316                         break;
6317                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6318                         perl5=$tdir/perl5
6319                         break;
6320                 fi
6321         done
6322         ;;
6323 *)      perl5="$perl5"
6324         ;;
6325 esac
6326 case "$perl5" in
6327 '')     echo "None found.  That's ok.";;
6328 *)      echo "Using $perl5." ;;
6329 esac
6330
6331 $cat <<EOM
6332
6333 After $package is installed, you may wish to install various
6334 add-on modules and utilities.  Typically, these add-ons will
6335 be installed under $prefix with the rest
6336 of this package.  However, you may wish to install such add-ons
6337 elsewhere under a different prefix.
6338
6339 If you do not wish to put everything under a single prefix, that's
6340 ok.  You will be prompted for the individual locations; this siteprefix
6341 is only used to suggest the defaults.
6342
6343 The default should be fine for most people.
6344
6345 EOM
6346 fn=d~+
6347 rp='Installation prefix to use for add-on modules and utilities?'
6348 : XXX Here might be another good place for an installstyle setting.
6349 case "$siteprefix" in
6350 '') dflt=$prefix ;;
6351 *)  dflt=$siteprefix ;;
6352 esac
6353 . ./getfile
6354 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6355 oldsiteprefix=''
6356 case "$siteprefix" in
6357 '') ;;
6358 *)      case "$ans" in
6359         "$prefix") ;;
6360         *) oldsiteprefix="$prefix";;
6361         esac
6362         ;;
6363 esac
6364 siteprefix="$ans"
6365 siteprefixexp="$ansexp"
6366
6367 : determine where site specific libraries go.
6368 : Usual default is /usr/local/lib/perl5/site_perl/$version
6369 : The default "style" setting is made in installstyle.U
6370 : XXX No longer works with Prefixit stuff.
6371 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6372 case "$sitelib" in
6373 '') case "$installstyle" in
6374         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6375         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6376         esac
6377         ;;
6378 *)      dflt="$sitelib"
6379         ;;
6380 esac
6381 $cat <<EOM
6382
6383 The installation process will create a directory for
6384 site-specific extensions and modules.  Most users find it convenient
6385 to place all site-specific files in this directory rather than in the
6386 main distribution directory.
6387
6388 EOM
6389 fn=d~+
6390 rp='Pathname for the site-specific library files?'
6391 . ./getfile
6392 prefixvar=sitelib
6393 . ./setprefixvar
6394 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6395
6396 : Determine list of previous versions to include in @INC
6397 $cat > getverlist <<EOPL
6398 #!$perl5 -w
6399 use File::Basename;
6400 \$api_versionstring = "$api_versionstring";
6401 \$version = "$version";
6402 \$stem = "$sitelib_stem";
6403 \$archname = "$archname";
6404 EOPL
6405         $cat >> getverlist <<'EOPL'
6406 # The list found is store twice for each entry: the original name, and
6407 # the binary broken down version as pack "sss", so sorting is easy and
6408 # unambiguous. This will work for all versions that have a maximum of
6409 # three digit groups, separate by '.'s or '_'s. Names are extended with
6410 # ".0.0" to ensure at least three elements for the pack.
6411 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6412
6413 # Can't have leading @ because metaconfig interprets it as a command!
6414 ;@inc_version_list=();
6415 # XXX Redo to do opendir/readdir?
6416 if (-d $stem) {
6417     chdir($stem);
6418     ;@candidates = map {
6419         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6420 }
6421 else {
6422     ;@candidates = ();
6423 }
6424
6425 ($pversion, $aversion, $vsn5005) = map {
6426     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6427 foreach $d (@candidates) {
6428     if ($d->[1] lt $pversion) {
6429         if ($d->[1] ge $aversion) {
6430             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6431         }
6432         elsif ($d->[1] ge $vsn5005) {
6433             unshift(@inc_version_list, grep { -d } $d->[0]);
6434         }
6435     }
6436     else {
6437         # Skip newer version.  I.e. don't look in
6438         # 5.7.0 if we're installing 5.6.1.
6439     }
6440 }
6441
6442 if (@inc_version_list) {
6443     print join(' ', @inc_version_list);
6444 }
6445 else {
6446     # Blank space to preserve value for next Configure run.
6447     print " ";
6448 }
6449 EOPL
6450 chmod +x getverlist
6451 case "$inc_version_list" in
6452 '')     if test -x "$perl5$exe_ext"; then
6453                 dflt=`$perl5 getverlist`
6454         else
6455                 dflt='none'
6456         fi
6457         ;;
6458 $undef) dflt='none' ;;
6459 *)  eval dflt=\"$inc_version_list\" ;;
6460 esac
6461 case "$dflt" in
6462 ''|' ') dflt=none ;;
6463 esac
6464 case "$dflt" in
6465 5.005) dflt=none ;;
6466 esac
6467 $cat <<EOM
6468
6469 In order to ease the process of upgrading, this version of perl
6470 can be configured to use modules built and installed with earlier
6471 versions of perl that were installed under $prefix.  Specify here
6472 the list of earlier versions that this version of perl should check.
6473 If Configure detected no earlier versions of perl installed under
6474 $prefix, then the list will be empty.  Answer 'none' to tell perl
6475 to not search earlier versions.
6476
6477 The default should almost always be sensible, so if you're not sure,
6478 just accept the default.
6479 EOM
6480
6481 rp='List of earlier versions to include in @INC?'
6482 . ./myread
6483 case "$ans" in
6484 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6485 *) inc_version_list="$ans" ;;
6486 esac
6487 case "$inc_version_list" in
6488 ''|' ')
6489         inc_version_list_init='0'
6490         d_inc_version_list="$undef"
6491         ;;
6492 *)      inc_version_list_init=`echo $inc_version_list |
6493                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6494         d_inc_version_list="$define"
6495         ;;
6496 esac
6497 $rm -f getverlist
6498
6499 : see if this is a malloc.h system
6500 : we want a real compile instead of Inhdr because some systems have a
6501 : malloc.h that just gives a compile error saying to use stdlib.h instead
6502 echo " "
6503 $cat >try.c <<EOCP
6504 #include <stdlib.h>
6505 #include <malloc.h>
6506 int main () { return 0; }
6507 EOCP
6508 set try
6509 if eval $compile; then
6510     echo "<malloc.h> found." >&4
6511     val="$define"
6512 else
6513     echo "<malloc.h> NOT found." >&4
6514     val="$undef"
6515 fi
6516 $rm -f try.c try
6517 set i_malloc
6518 eval $setvar
6519
6520 : check for void type
6521 echo " "
6522 echo "Checking to see how well your C compiler groks the void type..." >&4
6523 case "$voidflags" in
6524 '')
6525         $cat >try.c <<EOCP
6526 #$i_stdlib I_STDLIB
6527 #ifdef I_STDLIB
6528 #include <stdlib.h>
6529 #endif
6530 #if TRY & 1
6531 void sub() {
6532 #else
6533 sub() {
6534 #endif
6535         extern void moo();      /* function returning void */
6536         void (*goo)();          /* ptr to func returning void */
6537 #if TRY & 8
6538         void *hue;              /* generic ptr */
6539 #endif
6540 #if TRY & 2
6541         void (*foo[10])();
6542 #endif
6543
6544 #if TRY & 4
6545         if(goo == moo) {
6546                 exit(0);
6547         }
6548 #endif
6549         exit(0);
6550 }
6551 int main() { sub(); }
6552 EOCP
6553         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6554                 voidflags=$defvoidused
6555         echo "Good.  It appears to support void to the level $package wants.">&4
6556                 if $contains warning .out >/dev/null 2>&1; then
6557                         echo "However, you might get some warnings that look like this:"
6558                         $cat .out
6559                 fi
6560         else
6561 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6562                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6563                         echo "It supports 1..."
6564                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6565                                 echo "It also supports 2..."
6566                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6567                                         voidflags=7
6568                                         echo "And it supports 4 but not 8 definitely."
6569                                 else
6570                                         echo "It doesn't support 4..."
6571                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6572                                                 voidflags=11
6573                                                 echo "But it supports 8."
6574                                         else
6575                                                 voidflags=3
6576                                                 echo "Neither does it support 8."
6577                                         fi
6578                                 fi
6579                         else
6580                                 echo "It does not support 2..."
6581                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6582                                         voidflags=13
6583                                         echo "But it supports 4 and 8."
6584                                 else
6585                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6586                                                 voidflags=5
6587                                                 echo "And it supports 4 but has not heard about 8."
6588                                         else
6589                                                 echo "However it supports 8 but not 4."
6590                                         fi
6591                                 fi
6592                         fi
6593                 else
6594                         echo "There is no support at all for void."
6595                         voidflags=0
6596                 fi
6597         fi
6598 esac
6599 case "$voidflags" in
6600 "$defvoidused") ;;
6601 *)      $cat >&4 <<'EOM'
6602   Support flag bits are:
6603     1: basic void declarations.
6604     2: arrays of pointers to functions returning void.
6605     4: operations between pointers to and addresses of void functions.
6606     8: generic void pointers.
6607 EOM
6608         dflt="$voidflags";
6609         rp="Your void support flags add up to what?"
6610         . ./myread
6611         voidflags="$ans"
6612         ;;
6613 esac
6614 $rm -f try.* .out
6615
6616 : check for length of pointer
6617 echo " "
6618 case "$ptrsize" in
6619 '')
6620         echo "Checking to see how big your pointers are..." >&4
6621         if test "$voidflags" -gt 7; then
6622                 echo '#define VOID_PTR char *' > try.c
6623         else
6624                 echo '#define VOID_PTR void *' > try.c
6625         fi
6626         $cat >>try.c <<EOCP
6627 #include <stdio.h>
6628 #$i_stdlib I_STDLIB
6629 #ifdef I_STDLIB
6630 #include <stdlib.h>
6631 #endif
6632 int main()
6633 {
6634     printf("%d\n", (int)sizeof(VOID_PTR));
6635     exit(0);
6636 }
6637 EOCP
6638         set try
6639         if eval $compile_ok; then
6640                 ptrsize=`$run ./try`
6641                 echo "Your pointers are $ptrsize bytes long."
6642         else
6643                 dflt='4'
6644                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6645                 rp="What is the size of a pointer (in bytes)?"
6646                 . ./myread
6647                 ptrsize="$ans"
6648         fi
6649         ;;
6650 esac
6651 $rm -f try.c try
6652 case "$use64bitall" in
6653 "$define"|true|[yY]*)
6654         case "$ptrsize" in
6655         4)      cat <<EOM >&4
6656
6657 *** You have chosen a maximally 64-bit build,
6658 *** but your pointers are only 4 bytes wide.
6659 *** Please rerun Configure without -Duse64bitall.
6660 EOM
6661                 case "$d_quad" in
6662                 define)
6663                         cat <<EOM >&4
6664 *** Since you have quads, you could possibly try with -Duse64bitint.
6665 EOM
6666                         ;;
6667                 esac
6668                 cat <<EOM >&4
6669 *** Cannot continue, aborting.
6670
6671 EOM
6672
6673                 exit 1
6674                 ;;
6675         esac
6676         ;;
6677 esac
6678
6679
6680 : determine whether to use malloc wrapping
6681 echo " "
6682 case "$usemallocwrap" in
6683 [yY]*|true|$define)     dflt='y' ;;
6684 [nN]*|false|$undef)     dflt='n' ;;
6685 *)      case "$usedevel" in
6686         [yY]*|true|$define)     dflt='y' ;;
6687         *) dflt='n' ;;
6688         esac
6689         ;;
6690 esac
6691 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6692 . ./myread
6693 usemallocwrap="$ans"
6694 case "$ans" in
6695 y*|true)
6696         usemallocwrap="$define" ;;
6697 *)
6698         usemallocwrap="$undef" ;;
6699 esac
6700
6701 : determine which malloc to compile in
6702 echo " "
6703 case "$usemymalloc" in
6704 [yY]*|true|$define)     dflt='y' ;;
6705 [nN]*|false|$undef)     dflt='n' ;;
6706 *)      case "$ptrsize" in
6707         4) dflt='y' ;;
6708         *) dflt='n' ;;
6709         esac
6710         ;;
6711 esac
6712 rp="Do you wish to attempt to use the malloc that comes with $package?"
6713 . ./myread
6714 usemymalloc="$ans"
6715 case "$ans" in
6716 y*|true)
6717         usemymalloc='y'
6718         mallocsrc='malloc.c'
6719         mallocobj="malloc$_o"
6720         d_mymalloc="$define"
6721         case "$libs" in
6722         *-lmalloc*)
6723                 : Remove malloc from list of libraries to use
6724                 echo "Removing unneeded -lmalloc from library list" >&4
6725                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6726                 shift
6727                 libs="$*"
6728                 echo "libs = $libs" >&4
6729                 ;;
6730         esac
6731         ;;
6732 *)
6733         usemymalloc='n'
6734         mallocsrc=''
6735         mallocobj=''
6736         d_mymalloc="$undef"
6737         ;;
6738 esac
6739
6740 : compute the return types of malloc and free
6741 echo " "
6742 $cat >malloc.c <<END
6743 #$i_malloc I_MALLOC
6744 #$i_stdlib I_STDLIB
6745 #include <stdio.h>
6746 #include <sys/types.h>
6747 #ifdef I_MALLOC
6748 #include <malloc.h>
6749 #endif
6750 #ifdef I_STDLIB
6751 #include <stdlib.h>
6752 #endif
6753 #ifdef TRY_MALLOC
6754 void *malloc();
6755 #endif
6756 #ifdef TRY_FREE
6757 void free();
6758 #endif
6759 END
6760 case "$malloctype" in
6761 '')
6762         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6763                 malloctype='void *'
6764         else
6765                 malloctype='char *'
6766         fi
6767         ;;
6768 esac
6769 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6770
6771 case "$freetype" in
6772 '')
6773         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6774                 freetype='void'
6775         else
6776                 freetype='int'
6777         fi
6778         ;;
6779 esac
6780 echo "Your system uses $freetype free(), it would seem." >&4
6781 $rm -f malloc.[co]
6782 : determine where site specific architecture-dependent libraries go.
6783 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6784 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6785 : sitelib may have an optional trailing /share.
6786 case "$sitearch" in
6787 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6788         dflt="$dflt/$archname"
6789         ;;
6790 *)      dflt="$sitearch"
6791         ;;
6792 esac
6793 set sitearch sitearch none
6794 eval $prefixit
6795 $cat <<EOM
6796
6797 The installation process will also create a directory for
6798 architecture-dependent site-specific extensions and modules.
6799
6800 EOM
6801 fn=d~+
6802 rp='Pathname for the site-specific architecture-dependent library files?'
6803 . ./getfile
6804 prefixvar=sitearch
6805 . ./setprefixvar
6806 if $test X"$sitearch" = X"$sitelib"; then
6807         d_sitearch="$undef"
6808 else
6809         d_sitearch="$define"
6810 fi
6811
6812 $cat <<EOM
6813
6814 The installation process will also create a directory for
6815 vendor-supplied add-ons.  Vendors who supply perl with their system
6816 may find it convenient to place all vendor-supplied files in this
6817 directory rather than in the main distribution directory.  This will
6818 ease upgrades between binary-compatible maintenance versions of perl.
6819
6820 Of course you may also use these directories in whatever way you see
6821 fit.  For example, you might use them to access modules shared over a
6822 company-wide network.
6823
6824 The default answer should be fine for most people.
6825 This causes further questions about vendor add-ons to be skipped
6826 and no vendor-specific directories will be configured for perl.
6827
6828 EOM
6829 rp='Do you want to configure vendor-specific add-on directories?'
6830 case "$usevendorprefix" in
6831 define|true|[yY]*) dflt=y ;;
6832 *)      : User may have set vendorprefix directly on Configure command line.
6833         case "$vendorprefix" in
6834         ''|' ') dflt=n ;;
6835         *)      dflt=y ;;
6836         esac
6837         ;;
6838 esac
6839 . ./myread
6840 case "$ans" in
6841 [yY]*)  fn=d~+
6842         rp='Installation prefix to use for vendor-supplied add-ons?'
6843         case "$vendorprefix" in
6844         '') dflt='' ;;
6845         *)  dflt=$vendorprefix ;;
6846         esac
6847         . ./getfile
6848         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6849         oldvendorprefix=''
6850         case "$vendorprefix" in
6851         '') ;;
6852         *)      case "$ans" in
6853                 "$prefix") ;;
6854                 *) oldvendorprefix="$prefix";;
6855                 esac
6856                 ;;
6857         esac
6858         usevendorprefix="$define"
6859         vendorprefix="$ans"
6860         vendorprefixexp="$ansexp"
6861         ;;
6862 *)      usevendorprefix="$undef"
6863         vendorprefix=''
6864         vendorprefixexp=''
6865         ;;
6866 esac
6867
6868 case "$vendorprefix" in
6869 '')     d_vendorlib="$undef"
6870         vendorlib=''
6871         vendorlibexp=''
6872         ;;
6873 *)      d_vendorlib="$define"
6874         : determine where vendor-supplied modules go.
6875         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6876         case "$vendorlib" in
6877         '')
6878                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6879                 case "$installstyle" in
6880                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6881                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6882                 esac
6883                 ;;
6884         *)      dflt="$vendorlib"
6885                 ;;
6886         esac
6887         fn=d~+
6888         rp='Pathname for the vendor-supplied library files?'
6889         . ./getfile
6890         vendorlib="$ans"
6891         vendorlibexp="$ansexp"
6892         ;;
6893 esac
6894 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6895 prefixvar=vendorlib
6896 . ./installprefix
6897
6898 case "$vendorprefix" in
6899 '')     d_vendorarch="$undef"
6900         vendorarch=''
6901         vendorarchexp=''
6902         ;;
6903 *)      d_vendorarch="$define"
6904         : determine where vendor-supplied architecture-dependent libraries go.
6905         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6906         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6907         : vendorlib may have an optional trailing /share.
6908         case "$vendorarch" in
6909         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6910                 dflt="$dflt/$archname"
6911                 ;;
6912         *)      dflt="$vendorarch" ;;
6913         esac
6914         fn=d~+
6915         rp='Pathname for vendor-supplied architecture-dependent files?'
6916         . ./getfile
6917         vendorarch="$ans"
6918         vendorarchexp="$ansexp"
6919         ;;
6920 esac
6921 prefixvar=vendorarch
6922 . ./installprefix
6923
6924 : Final catch-all directories to search
6925 $cat <<EOM
6926
6927 Lastly, you can have perl look in other directories for extensions and
6928 modules in addition to those already specified.
6929 These directories will be searched after 
6930         $sitearch 
6931         $sitelib 
6932 EOM
6933 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6934 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6935 echo ' '
6936 case "$otherlibdirs" in
6937 ''|' ') dflt='none' ;;
6938 *)      dflt="$otherlibdirs" ;;
6939 esac
6940 $cat <<EOM
6941 Enter a colon-separated set of extra paths to include in perl's @INC
6942 search path, or enter 'none' for no extra paths.
6943
6944 EOM
6945
6946 rp='Colon-separated list of additional directories for perl to search?'
6947 . ./myread
6948 case "$ans" in
6949 ' '|''|none)    otherlibdirs=' ' ;;     
6950 *)      otherlibdirs="$ans" ;;
6951 esac
6952 case "$otherlibdirs" in
6953 ' ') val=$undef ;;
6954 *)      val=$define ;;
6955 esac
6956 set d_perl_otherlibdirs
6957 eval $setvar
6958
6959 : Cruising for prototypes
6960 echo " "
6961 echo "Checking out function prototypes..." >&4
6962 $cat >prototype.c <<EOCP
6963 #$i_stdlib I_STDLIB
6964 #ifdef I_STDLIB
6965 #include <stdlib.h>
6966 #endif
6967 int main(int argc, char *argv[]) {
6968         exit(0);}
6969 EOCP
6970 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6971         echo "Your C compiler appears to support function prototypes."
6972         val="$define"
6973 else
6974         echo "Your C compiler doesn't seem to understand function prototypes."
6975         val="$undef"
6976 fi
6977 set prototype
6978 eval $setvar
6979 $rm -f prototype*
6980
6981 case "$prototype" in
6982 "$define") ;;
6983 *)      ansi2knr='ansi2knr'
6984         echo " "
6985         cat <<EOM >&4
6986
6987 $me:  FATAL ERROR:
6988 This version of $package can only be compiled by a compiler that 
6989 understands function prototypes.  Unfortunately, your C compiler 
6990         $cc $ccflags
6991 doesn't seem to understand them.  Sorry about that.
6992
6993 If GNU cc is available for your system, perhaps you could try that instead.  
6994
6995 Eventually, we hope to support building Perl with pre-ANSI compilers.
6996 If you would like to help in that effort, please contact <perlbug@perl.org>.
6997
6998 Aborting Configure now.
6999 EOM
7000         exit 2
7001         ;;
7002 esac
7003
7004 echo " "
7005 case "$extras" in
7006 '') dflt='n';;
7007 *) dflt='y';;
7008 esac
7009 cat <<EOM
7010 Perl can be built with extra modules or bundles of modules which
7011 will be fetched from the CPAN and installed alongside Perl.
7012
7013 Notice that you will need access to the CPAN; either via the Internet,
7014 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7015 be asked later to configure the CPAN.pm module which will in turn do
7016 the installation of the rest of the extra modules or bundles.)
7017
7018 Notice also that if the modules require any external software such as
7019 libraries and headers (the libz library and the zlib.h header for the
7020 Compress::Zlib module, for example) you MUST have any such software
7021 already installed, this configuration process will NOT install such
7022 things for you.
7023
7024 If this doesn't make any sense to you, just accept the default '$dflt'.
7025 EOM
7026 rp='Install any extra modules (y or n)?'
7027 . ./myread
7028 case "$ans" in
7029 y|Y)
7030         cat <<EOM
7031
7032 Please list any extra modules or bundles to be installed from CPAN,
7033 with spaces between the names.  The names can be in any format the
7034 'install' command of CPAN.pm will understand.  (Answer 'none',
7035 without the quotes, to install no extra modules or bundles.)
7036 EOM
7037         rp='Extras?'
7038         dflt="$extras"
7039         . ./myread
7040         extras="$ans"
7041 esac
7042 case "$extras" in
7043 ''|'none')
7044         val=''
7045         $rm -f ../extras.lst
7046         ;;
7047 *)      echo "(Saving the list of extras for later...)"
7048         echo "$extras" > ../extras.lst
7049         val="'$extras'"
7050         ;;
7051 esac
7052 set extras
7053 eval $setvar
7054 echo " "
7055
7056 : determine where html pages for programs go
7057 set html1dir html1dir none
7058 eval $prefixit
7059 $cat <<EOM
7060
7061 If you wish to install html files for programs in $spackage, indicate
7062 the appropriate directory here.  To skip installing html files,
7063 answer "none".
7064 EOM
7065 case "$html1dir" in
7066 ''|none|$undef|' ') dflt=none ;;
7067 *) dflt=$html1dir ;;
7068 esac
7069 fn=dn+~
7070 rp="Directory for the main $spackage html pages?"
7071 . ./getfile
7072 prefixvar=html1dir
7073 . ./setprefixvar
7074 : Use ' ' for none so value is preserved next time through Configure
7075 $test X"$html1dir" = "X" && html1dir=' '
7076
7077 : determine where html pages for libraries and modules go
7078 set html3dir html3dir none
7079 eval $prefixit
7080 $cat <<EOM
7081
7082 If you wish to install html files for modules associated with $spackage,
7083 indicate the appropriate directory here.  To skip installing html files,
7084 answer "none".
7085 EOM
7086 : There is no obvious default.  If they have specified html1dir, then
7087 : try to key off that, possibly changing .../html1 into .../html3.
7088 case "$html3dir" in
7089 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7090 *) dflt=$html3dir ;;
7091 esac
7092 fn=dn+~
7093 rp="Directory for the $spackage module html pages?"
7094 . ./getfile
7095 prefixvar=html3dir
7096 . ./setprefixvar
7097 : Use ' ' for none so value is preserved next time through Configure
7098 $test X"$html3dir" = "X" && html3dir=' '
7099
7100 : determine whether to install perl also as /usr/bin/perl
7101
7102 echo " "
7103 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7104         $cat <<EOM
7105 Many scripts expect perl to be installed as /usr/bin/perl.
7106
7107 If you want to, I can install the perl you are about to compile
7108 as /usr/bin/perl (in addition to $bin/perl).
7109 EOM
7110         if test -f /usr/bin/perl; then
7111             $cat <<EOM
7112
7113 However, please note that because you already have a /usr/bin/perl,
7114 overwriting that with a new Perl would very probably cause problems.
7115 Therefore I'm assuming you don't want to do that (unless you insist).
7116
7117 EOM
7118             case "$installusrbinperl" in
7119             "$define"|[yY]*)    dflt='y';;
7120             *)                  dflt='n';;
7121             esac
7122         else
7123             $cat <<EOM
7124
7125 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7126
7127 EOM
7128             case "$installusrbinperl" in
7129             "$undef"|[nN]*)     dflt='n';;
7130             *)                  dflt='y';;
7131             esac
7132         fi
7133         rp="Do you want to install perl as /usr/bin/perl?"
7134         . ./myread
7135         case "$ans" in
7136         [yY]*)  val="$define";;
7137         *)      val="$undef" ;;
7138         esac
7139 else
7140         val="$undef"
7141 fi
7142 set installusrbinperl
7143 eval $setvar
7144
7145 echo " "
7146 echo "Checking for GNU C Library..." >&4
7147 cat >try.c <<'EOCP'
7148 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7149    alone are insufficient to distinguish different versions, such as
7150    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7151    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7152 */
7153 #include <stdio.h>
7154 int main(void)
7155 {
7156 #ifdef __GLIBC__
7157 #   ifdef __GLIBC_MINOR__
7158 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7159 #           include <gnu/libc-version.h>
7160             printf("%s\n",  gnu_get_libc_version());
7161 #       else
7162             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7163 #       endif
7164 #   else
7165         printf("%d\n",  __GLIBC__);
7166 #   endif
7167     return 0;
7168 #else
7169     return 1;
7170 #endif
7171 }
7172 EOCP
7173 set try
7174 if eval $compile_ok && $run ./try > glibc.ver; then
7175         val="$define"
7176         gnulibc_version=`$cat glibc.ver`
7177         echo "You are using the GNU C Library version $gnulibc_version"
7178 else
7179         val="$undef"
7180         gnulibc_version=''
7181         echo "You are not using the GNU C Library"
7182 fi
7183 $rm -f try try.* glibc.ver
7184 set d_gnulibc
7185 eval $setvar
7186
7187 : see if nm is to be used to determine whether a symbol is defined or not
7188 case "$usenm" in
7189 '')
7190         dflt=''
7191         case "$d_gnulibc" in
7192         "$define")
7193                 echo " "
7194                 echo "nm probably won't work on the GNU C Library." >&4
7195                 dflt=n
7196                 ;;
7197         esac
7198         case "$dflt" in
7199         '') 
7200                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7201                         echo " "
7202                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7203                         echo "'nm' won't be sufficient on this sytem." >&4
7204                         dflt=n
7205                 fi
7206                 ;;
7207         esac
7208         case "$dflt" in
7209         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7210                 if $test $dflt -gt 20; then
7211                         dflt=y
7212                 else
7213                         dflt=n
7214                 fi
7215                 ;;
7216         esac
7217         ;;
7218 *)
7219         case "$usenm" in
7220         true|$define) dflt=y;;
7221         *) dflt=n;;
7222         esac
7223         ;;
7224 esac
7225 $cat <<EOM
7226
7227 I can use $nm to extract the symbols from your C libraries. This
7228 is a time consuming task which may generate huge output on the disk (up
7229 to 3 megabytes) but that should make the symbols extraction faster. The
7230 alternative is to skip the 'nm' extraction part and to compile a small
7231 test program instead to determine whether each symbol is present. If
7232 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7233 this may be the best solution.
7234
7235 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7236
7237 EOM
7238 rp="Shall I use $nm to extract C symbols from the libraries?"
7239 . ./myread
7240 case "$ans" in
7241 [Nn]*) usenm=false;;
7242 *) usenm=true;;
7243 esac
7244
7245 runnm=$usenm
7246 case "$reuseval" in
7247 true) runnm=false;;
7248 esac
7249
7250 : nm options which may be necessary
7251 case "$nm_opt" in
7252 '') if $test -f /mach_boot; then
7253                 nm_opt=''       # Mach
7254         elif $test -d /usr/ccs/lib; then
7255                 nm_opt='-p'     # Solaris (and SunOS?)
7256         elif $test -f /dgux; then
7257                 nm_opt='-p'     # DG-UX
7258         elif $test -f /lib64/rld; then
7259                 nm_opt='-p'     # 64-bit Irix
7260         else
7261                 nm_opt=''
7262         fi;;
7263 esac
7264
7265 : nm options which may be necessary for shared libraries but illegal
7266 : for archive libraries.  Thank you, Linux.
7267 case "$nm_so_opt" in
7268 '')     case "$myuname" in
7269         *linux*|gnu*)
7270                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7271                         nm_so_opt='--dynamic'
7272                 fi
7273                 ;;
7274         esac
7275         ;;
7276 esac
7277
7278 case "$runnm" in
7279 true)
7280 : get list of predefined functions in a handy place
7281 echo " "
7282 case "$libc" in
7283 '') libc=unknown
7284         case "$libs" in
7285         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7286         esac
7287         ;;
7288 esac
7289 case "$libs" in
7290 '') ;;
7291 *)  for thislib in $libs; do
7292         case "$thislib" in
7293         -lc|-lc_s)
7294                 : Handle C library specially below.
7295                 ;;
7296         -l*)
7297                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7298                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7299                         :
7300                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7301                         :
7302                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7303                         :
7304                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7305                         :
7306                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7307                         :
7308                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7309                         :
7310                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7311                         :
7312                 else
7313                         try=''
7314                 fi
7315                 libnames="$libnames $try"
7316                 ;;
7317         *) libnames="$libnames $thislib" ;;
7318         esac
7319         done
7320         ;;
7321 esac
7322 xxx=normal
7323 case "$libc" in
7324 unknown)
7325         set /lib/libc.$so
7326         for xxx in $libpth; do
7327                 $test -r $1 || set $xxx/libc.$so
7328                 : The messy sed command sorts on library version numbers.
7329                 $test -r $1 || \
7330                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7331                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7332                                 h
7333                                 s/[0-9][0-9]*/0000&/g
7334                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7335                                 G
7336                                 s/\n/ /' | \
7337                          $sort | $sed -e 's/^.* //'`
7338                 eval set \$$#
7339         done
7340         $test -r $1 || set /usr/ccs/lib/libc.$so
7341         $test -r $1 || set /lib/libsys_s$_a
7342         ;;
7343 *)
7344         set blurfl
7345         ;;
7346 esac
7347 if $test -r "$1"; then
7348         echo "Your (shared) C library seems to be in $1."
7349         libc="$1"
7350 elif $test -r /lib/libc && $test -r /lib/clib; then
7351         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7352         xxx=apollo
7353         libc='/lib/clib /lib/libc'
7354         if $test -r /lib/syslib; then
7355                 echo "(Your math library is in /lib/syslib.)"
7356                 libc="$libc /lib/syslib"
7357         fi
7358 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7359         echo "Your C library seems to be in $libc, as you said before."
7360 elif $test -r $incpath/usr/lib/libc$_a; then
7361         libc=$incpath/usr/lib/libc$_a;
7362         echo "Your C library seems to be in $libc.  That's fine."
7363 elif $test -r /lib/libc$_a; then
7364         libc=/lib/libc$_a;
7365         echo "Your C library seems to be in $libc.  You're normal."
7366 else
7367         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7368                 :
7369         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7370                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7371         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7372                 :
7373         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7374                 :
7375         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7376                 :
7377         else
7378                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7379         fi
7380         if $test -r "$tans"; then
7381                 echo "Your C library seems to be in $tans, of all places."
7382                 libc=$tans
7383         else
7384                 libc='blurfl'
7385         fi
7386 fi
7387 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7388         dflt="$libc"
7389         cat <<EOM
7390
7391 If the guess above is wrong (which it might be if you're using a strange
7392 compiler, or your machine supports multiple models), you can override it here.
7393
7394 EOM
7395 else
7396         dflt=''
7397         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7398         cat >&4 <<EOM
7399 I can't seem to find your C library.  I've looked in the following places:
7400
7401 EOM
7402         $sed 's/^/      /' libpath
7403         cat <<EOM
7404
7405 None of these seems to contain your C library. I need to get its name...
7406
7407 EOM
7408 fi
7409 fn=f
7410 rp='Where is your C library?'
7411 . ./getfile
7412 libc="$ans"
7413
7414 echo " "
7415 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7416 set X `cat libnames`
7417 shift
7418 xxx=files
7419 case $# in 1) xxx=file; esac
7420 echo "Extracting names from the following $xxx for later perusal:" >&4
7421 echo " "
7422 $sed 's/^/      /' libnames >&4
7423 echo " "
7424 $echo $n "This may take a while...$c" >&4
7425
7426 for file in $*; do
7427         case $file in
7428         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7429         *) $nm $nm_opt $file 2>/dev/null;;
7430         esac
7431 done >libc.tmp
7432
7433 $echo $n ".$c"
7434 $grep fprintf libc.tmp > libc.ptf
7435 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7436 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7437 xxx='[ADTSIW]'
7438 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7439         eval $xscan;\
7440         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7441                 eval $xrun
7442 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7443         eval $xscan;\
7444         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7445                 eval $xrun
7446 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7447         eval $xscan;\
7448         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7449                 eval $xrun
7450 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7451         eval $xscan;\
7452         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7453                 eval $xrun
7454 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7455         eval $xscan;\
7456         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7457                 eval $xrun
7458 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7459         eval $xscan;\
7460         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7461                 eval $xrun
7462 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7463                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7464         eval $xscan;\
7465         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7466                 eval $xrun
7467 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7468         eval $xscan;\
7469         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7470                 eval $xrun
7471 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7472         eval $xscan;\
7473         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7474                 eval $xrun
7475 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7476         eval $xscan;\
7477         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7478                 eval $xrun
7479 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7480         eval $xscan;\
7481         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7482                 eval $xrun
7483 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7484         eval $xscan;\
7485         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7486                 eval $xrun
7487 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7488         eval $xscan;\
7489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7490                 eval $xrun
7491 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7492         eval $xscan;\
7493         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7494                 eval $xrun
7495 else
7496         $nm -p $* 2>/dev/null >libc.tmp
7497         $grep fprintf libc.tmp > libc.ptf
7498         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7499                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7500         then
7501                 nm_opt='-p'
7502                 eval $xrun
7503         else
7504                 echo " "
7505                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7506                 com=''
7507                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7508                         for thisname in $libnames $libc; do
7509                                 $ar t $thisname >>libc.tmp
7510                         done
7511                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7512                         echo "Ok." >&4
7513                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7514                         # Repeat libc to extract forwarders to DLL entries too
7515                         for thisname in $libnames $libc; do
7516                                 $ar tv $thisname >>libc.tmp
7517                                 # Revision 50 of EMX has bug in $ar.
7518                                 # it will not extract forwarders to DLL entries
7519                                 # Use emximp which will extract exactly them.
7520                                 emximp -o tmp.imp $thisname \
7521                                     2>/dev/null && \
7522                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7523                                     < tmp.imp >>libc.tmp
7524                                 $rm tmp.imp
7525                         done
7526                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7527                         echo "Ok." >&4
7528                 else
7529                         echo "$ar didn't seem to work right." >&4
7530                         echo "Maybe this is a Cray...trying bld instead..." >&4
7531                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7532                         then
7533                                 for thisname in $libnames; do
7534                                         bld t $libnames | \
7535                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7536                                         $ar t $thisname >>libc.tmp
7537                                 done
7538                                 echo "Ok." >&4
7539                         else
7540                                 echo "That didn't work either.  Giving up." >&4
7541                                 exit 1
7542                         fi
7543                 fi
7544         fi
7545 fi
7546 nm_extract="$com"
7547 case "$PASE" in
7548 define)
7549     echo " "
7550     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7551     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7552     ;;
7553 *)  if $test -f /lib/syscalls.exp; then
7554         echo " "
7555         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7556         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7557     fi
7558     ;;
7559 esac
7560 ;;
7561 esac
7562 $rm -f libnames libpath
7563
7564 : see if dld is available
7565 set dld.h i_dld
7566 eval $inhdr
7567
7568 : is a C symbol defined?
7569 csym='tlook=$1;
7570 case "$3" in
7571 -v) tf=libc.tmp; tdc="";;
7572 -a) tf=libc.tmp; tdc="[]";;
7573 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7574 esac;
7575 tx=yes;
7576 case "$reuseval-$4" in
7577 true-) ;;
7578 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7579 esac;
7580 case "$tx" in
7581 yes)
7582         tval=false;
7583         if $test "$runnm" = true; then
7584                 if $contains $tlook $tf >/dev/null 2>&1; then
7585                         tval=true;
7586                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7587                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7588                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7589                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7590                         $rm -f try$_exe try.c core core.* try.core;
7591                 fi;
7592         else
7593                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7594                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7595                 $rm -f try$_exe try.c;
7596         fi;
7597         ;;
7598 *)
7599         case "$tval" in
7600         $define) tval=true;;
7601         *) tval=false;;
7602         esac;
7603         ;;
7604 esac;
7605 eval "$2=$tval"'
7606
7607 : define an is-in-libc? function
7608 inlibc='echo " "; td=$define; tu=$undef;
7609 sym=$1; var=$2; eval "was=\$$2";
7610 tx=yes;
7611 case "$reuseval$was" in
7612 true) ;;
7613 true*) tx=no;;
7614 esac;
7615 case "$tx" in
7616 yes)
7617         set $sym tres -f;
7618         eval $csym;
7619         case "$tres" in
7620         true)
7621                 echo "$sym() found." >&4;
7622                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7623         *)
7624                 echo "$sym() NOT found." >&4;
7625                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7626         esac;;
7627 *)
7628         case "$was" in
7629         $define) echo "$sym() found." >&4;;
7630         *) echo "$sym() NOT found." >&4;;
7631         esac;;
7632 esac'
7633
7634
7635 echo " "
7636 echo "Checking for C++..." >&4
7637 cat >try.c <<'EOCP'
7638 #include <stdio.h>
7639 int main(void)
7640 {
7641 #ifdef __cplusplus
7642     printf("define\n");
7643 #else
7644     printf("undef\n");
7645 #endif
7646     return 0;
7647 }
7648 EOCP
7649 set try
7650 if eval $compile_ok && $run ./try >cplusplus$$; then
7651         val=`$cat cplusplus$$`
7652         echo "You are using a C++ compiler."
7653 else
7654         val="$undef"
7655         echo "You are not using a C++ compiler."
7656 fi
7657 $rm -f try try.* cplusplus$$
7658 set d_cplusplus
7659 eval $setvar
7660
7661 : see if dlopen exists
7662 xxx_runnm="$runnm"
7663 xxx_ccflags="$ccflags"
7664 runnm=false
7665 : with g++ one needs -shared to get is-in-libc to work for dlopen
7666 case "$gccversion" in
7667 '')     ;;
7668 *)      case "$d_cplusplus" in
7669         "$define") ccflags="$ccflags -shared" ;;
7670         esac
7671         ;;
7672 esac
7673 set dlopen d_dlopen
7674 eval $inlibc
7675 runnm="$xxx_runnm"
7676 ccflags="$xxx_ccflags"
7677
7678 : see if this is a unistd.h system
7679 set unistd.h i_unistd
7680 eval $inhdr
7681
7682 : determine which dynamic loading, if any, to compile in
7683 echo " "
7684 dldir="ext/DynaLoader"
7685 case "$usedl" in
7686 $define|y|true)
7687         dflt='y'
7688         usedl="$define"
7689         ;;
7690 $undef|n|false)
7691         dflt='n'
7692         usedl="$undef"
7693         ;;
7694 *) 
7695         dflt='n'
7696         case "$d_dlopen" in
7697             $define) dflt='y' ;;
7698         esac
7699         case "$i_dld" in
7700             $define) dflt='y' ;;
7701         esac
7702         : Does a dl_xxx.xs file exist for this operating system
7703         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7704         ;;
7705 esac
7706 rp="Do you wish to use dynamic loading?"
7707 . ./myread
7708 usedl="$ans"
7709 case "$ans" in
7710 y*) usedl="$define"
7711         case "$dlsrc" in
7712         '')
7713                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7714                         dflt="$dldir/dl_${osname}.xs"
7715                 elif $test "$d_dlopen" = "$define" ; then
7716                         dflt="$dldir/dl_dlopen.xs"
7717                 elif $test "$i_dld" = "$define" ; then
7718                         dflt="$dldir/dl_dld.xs"
7719                 else
7720                         dflt=''
7721                 fi
7722                 ;;
7723         *)      dflt="$dldir/$dlsrc"
7724                 ;;
7725         esac
7726     echo "The following dynamic loading files are available:"
7727         : Can not go over to $dldir because getfile has path hard-coded in.
7728         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7729         rp="Source file to use for dynamic loading"
7730         fn="fne"
7731         gfpth="$src"
7732         . ./getfile
7733         usedl="$define"
7734         : emulate basename
7735         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7736
7737         $cat << EOM
7738
7739 Some systems may require passing special flags to $cc -c to
7740 compile modules that will be used to create a shared library.
7741 To use no flags, say "none".
7742
7743 EOM
7744     case "$cccdlflags" in
7745     '') case "$gccversion" in
7746                 '') case "$osname" in
7747                         hpux)   dflt='+z' ;;
7748                         next)   dflt='none' ;;
7749                         irix*)  dflt='-KPIC' ;;
7750                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7751                         sunos)  dflt='-pic' ;;
7752                         *)      dflt='none' ;;
7753                     esac
7754                         ;;
7755                 *)  case "$osname" in
7756                         darwin) dflt='none' ;;
7757                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7758                         *)      dflt='-fpic' ;;
7759                     esac ;;
7760             esac ;;
7761         ' ') dflt='none' ;;
7762     *)  dflt="$cccdlflags" ;;
7763     esac
7764     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7765     . ./myread
7766     case "$ans" in
7767     none) cccdlflags=' ' ;;
7768     *) cccdlflags="$ans" ;;
7769     esac
7770
7771     cat << EOM
7772
7773 Some systems use ld to create libraries that can be dynamically loaded,
7774 while other systems (such as those using ELF) use $cc.
7775
7776 EOM
7777         case "$ld" in
7778         '')     $cat >try.c <<EOM
7779 /* Test for whether ELF binaries are produced */
7780 #include <fcntl.h>
7781 #$i_stdlib I_STDLIB
7782 #ifdef I_STDLIB
7783 #include <stdlib.h>
7784 #endif
7785 #$i_unistd I_UNISTD
7786 #ifdef I_UNISTD
7787 #include <unistd.h>
7788 #endif
7789 int main() {
7790         char b[4];
7791         int i = open("a.out",O_RDONLY);
7792         if(i == -1) 
7793                 exit(1); /* fail */
7794         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7795                 exit(0); /* succeed (yes, it's ELF) */
7796         else
7797                 exit(1); /* fail */
7798 }
7799 EOM
7800                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7801                         cat <<EOM
7802 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7803 EOM
7804                         dflt="$cc"
7805                 else
7806                         echo "I'll use ld to build dynamic libraries."
7807                         dflt='ld'
7808                 fi
7809                 rm -f try.c a.out
7810                 ;;
7811         *)      dflt="$ld"
7812                 ;;
7813         esac
7814
7815     rp="What command should be used to create dynamic libraries?"
7816     . ./myread
7817         ld="$ans"
7818
7819     cat << EOM
7820
7821 Some systems may require passing special flags to $ld to create a
7822 library that can be dynamically loaded.  If your ld flags include
7823 -L/other/path options to locate libraries outside your loader's normal
7824 search path, you may need to specify those -L options here as well.  To
7825 use no flags, say "none".
7826
7827 EOM
7828     case "$lddlflags" in
7829     '') case "$osname" in
7830                         beos) dflt='-nostart' ;;
7831                         hpux) dflt='-b';
7832                               case "$gccversion" in
7833                               '') dflt="$dflt +vnocompatwarnings" ;;
7834                               esac
7835                               ;;        
7836                         linux|irix*|gnu*)       dflt='-shared' ;;
7837                         next)  dflt='none' ;;
7838                         solaris) dflt='-G' ;;
7839                         sunos) dflt='-assert nodefinitions' ;;
7840                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7841                 *)     dflt='none' ;;
7842                         esac
7843                         ;;
7844     *) dflt="$lddlflags" ;;
7845     esac
7846
7847         : Try to guess additional flags to pick up local libraries.
7848         : Be careful not to append to a plain 'none'
7849         case "$dflt" in
7850         none) dflt='' ;;
7851         esac
7852         for thisflag in $ldflags; do
7853                 case "$thisflag" in
7854                 -L*|-R*|-Wl,-R*)
7855                         case " $dflt " in
7856                         *" $thisflag "*) ;;
7857                         *) dflt="$dflt $thisflag" ;;
7858                         esac
7859                         ;;
7860                 esac
7861         done
7862
7863         case "$dflt" in
7864         ''|' ') dflt='none' ;;
7865         esac
7866
7867     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7868     . ./myread
7869     case "$ans" in
7870     none) lddlflags=' ' ;;
7871     *) lddlflags="$ans" ;;
7872     esac
7873
7874         cat <<EOM
7875
7876 Some systems may require passing special flags to $cc to indicate that
7877 the resulting executable will use dynamic linking.  To use no flags,
7878 say "none".
7879
7880 EOM
7881     case "$ccdlflags" in
7882     '') case "$osname" in
7883             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7884             next|sunos) dflt='none' ;;
7885             *)          dflt='none' ;;
7886             esac ;;
7887     ' ')  dflt='none' ;;
7888     *)  dflt="$ccdlflags" ;;
7889     esac
7890     rp="Any special flags to pass to $cc to use dynamic linking?"
7891     . ./myread
7892     case "$ans" in
7893     none) ccdlflags=' ' ;;
7894     *) ccdlflags="$ans" ;;
7895     esac
7896     ;;
7897 *)  usedl="$undef"
7898         ld='ld'
7899     dlsrc='dl_none.xs'
7900     lddlflags=''
7901     ccdlflags=''
7902     ;;
7903 esac
7904
7905 also=''
7906 case "$usedl" in
7907 $undef)
7908         # No dynamic loading being used, so don't bother even to prompt.
7909         useshrplib='false'
7910         ;;
7911 *)      case "$useshrplib" in
7912         '')     case "$osname" in
7913                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7914                         dflt=y
7915                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7916                         ;;
7917                 next*)
7918                         case "$osvers" in
7919                         4*)     dflt=y
7920                                 also='Building a shared libperl is needed for MAB support.'
7921                                 ;;
7922                         *)      dflt=n
7923                                 ;;
7924                         esac
7925                         ;;
7926                 *)      dflt=n
7927                         ;;
7928                 esac
7929                 ;;
7930         $define|true|[Yy]*)
7931                 dflt=y
7932                 ;;
7933         *)      dflt=n
7934                 ;;
7935         esac
7936         $cat << EOM
7937
7938 The perl executable is normally obtained by linking perlmain.c with
7939 libperl${_a}, any static extensions (usually just DynaLoader), and
7940 any other libraries needed on this system (such as -lm, etc.).  Since
7941 your system supports dynamic loading, it is probably possible to build
7942 a shared libperl.$so.  If you will have more than one executable linked
7943 to libperl.$so, this will significantly reduce the size of each
7944 executable, but it may have a noticeable effect on performance.  The
7945 default is probably sensible for your system.
7946 $also
7947
7948 EOM
7949         rp="Build a shared libperl.$so (y/n)"
7950         . ./myread
7951         case "$ans" in
7952         true|$define|[Yy]*)
7953                 useshrplib='true'  ;;
7954         *)      useshrplib='false' ;;
7955         esac
7956         ;;
7957 esac
7958
7959 case "$useshrplib" in
7960 true)
7961         case "$libperl" in
7962         '')
7963                 # Figure out a good name for libperl.so.  Since it gets stored in
7964                 # a version-specific architecture-dependent library, the version
7965                 # number isn't really that important, except for making cc/ld happy.
7966                 #
7967                 # A name such as libperl.so.3.1
7968                 majmin="libperl.$so.$patchlevel.$subversion"
7969                 # A name such as libperl.so.301
7970                 majonly=`echo $patchlevel $subversion |
7971                         $awk '{printf "%d%02d", $1, $2}'`
7972                 majonly=libperl.$so.$majonly
7973                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7974                 # rely on figuring it out from the naming of libc.
7975                 case "${osname}${osvers}" in
7976                 next4*)
7977                         dflt=libperl.5.$so
7978                         # XXX How handle the --version stuff for MAB?
7979                         ;;
7980                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
7981                         dflt=libperl.$so
7982                         ;;
7983                 cygwin*) # ld links against an importlib
7984                         dflt=libperl$lib_ext
7985                         ;;
7986                 *)      # Try to guess based on whether libc has major.minor.
7987                         case "$libc" in
7988                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7989                         *libc.$so.[0-9]*) dflt=$majonly ;;
7990                         *)      dflt=libperl.$so ;;
7991                         esac
7992                         ;;
7993                 esac
7994                 ;;
7995         *)      dflt=$libperl
7996                 ;;
7997         esac
7998         cat << EOM
7999
8000 I need to select a good name for the shared libperl.  If your system uses
8001 library names with major and minor numbers, then you might want something
8002 like $majmin.  Alternatively, if your system uses a single version
8003 number for shared libraries, then you might want to use $majonly.
8004 Or, your system might be quite happy with a simple libperl.$so.
8005
8006 Since the shared libperl will get installed into a version-specific
8007 architecture-dependent directory, the version number of the shared perl
8008 library probably isn't important, so the default should be o.k.
8009
8010 EOM
8011         rp='What name do you want to give to the shared libperl?'
8012         . ./myread
8013         libperl=$ans
8014         echo "Ok, I'll use $libperl"
8015         ;;
8016 *)
8017         libperl="libperl${_a}"
8018         ;;
8019 esac
8020
8021 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8022 case "$shrpdir" in
8023 '') ;;
8024 *)      $cat >&4 <<EOM
8025 WARNING:  Use of the shrpdir variable for the installation location of
8026 the shared $libperl is not supported.  It was never documented and
8027 will not work in this version.  Let me (perlbug@perl.org)
8028 know of any problems this may cause.
8029
8030 EOM
8031         case "$shrpdir" in
8032         "$archlibexp/CORE")
8033                 $cat >&4 <<EOM
8034 But your current setting of $shrpdir is
8035 the default anyway, so it's harmless.
8036 EOM
8037                 ;;
8038         *)
8039                 $cat >&4 <<EOM
8040 Further, your current attempted setting of $shrpdir
8041 conflicts with the value of $archlibexp/CORE
8042 that installperl will use.
8043 EOM
8044                 ;;
8045         esac
8046         ;;
8047 esac
8048
8049 # How will the perl executable find the installed shared $libperl?
8050 # Add $xxx to ccdlflags.
8051 # If we can't figure out a command-line option, use $shrpenv to
8052 # set env LD_RUN_PATH.  The main perl makefile uses this.
8053 shrpdir=$archlibexp/CORE
8054 xxx=''
8055 tmp_shrpenv=''
8056 if "$useshrplib"; then
8057     case "$osname" in 
8058         aix)
8059                 # We'll set it in Makefile.SH...
8060                 ;;
8061         solaris)
8062                 xxx="-R $shrpdir"
8063                 ;;
8064         freebsd|netbsd|openbsd|interix|dragonfly)
8065                 xxx="-Wl,-R$shrpdir"
8066                 ;;
8067         bsdos|linux|irix*|dec_osf|gnu*)
8068                 xxx="-Wl,-rpath,$shrpdir"
8069                 ;;
8070         next)
8071                 # next doesn't like the default...
8072                 ;;
8073         beos)
8074                 # beos doesn't like the default, either.
8075                 ;;
8076         hpux*)
8077                 # hpux doesn't like the default, either.
8078                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8079                 ;;
8080         *)
8081                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8082                 ;;
8083         esac
8084         case "$xxx" in
8085         '') ;;
8086         *)      
8087                 # Only add $xxx if it isn't already in ccdlflags.
8088                 case " $ccdlflags " in
8089                 *" $xxx "*)     ;;
8090                 *)      ccdlflags="$ccdlflags $xxx"
8091                         cat <<EOM >&4
8092
8093 Adding $xxx to the flags
8094 passed to $ld so that the perl executable will find the 
8095 installed shared $libperl.
8096
8097 EOM
8098                         ;;
8099                 esac
8100                 ;;
8101         esac
8102 fi
8103 # Fix ccdlflags in AIX for building external extensions.
8104 # (For building Perl itself bare -bE:perl.exp is needed,
8105 #  Makefile.SH takes care of this.)
8106 case "$osname" in
8107 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8108 esac
8109 # Respect a hint or command-line value.
8110 case "$shrpenv" in
8111 '') shrpenv="$tmp_shrpenv" ;;
8112 esac
8113 case "$ldlibpthname" in
8114 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8115 none)   ldlibpthname='' ;;
8116 esac
8117
8118 : determine where manual pages are on this system
8119 echo " "
8120 case "$sysman" in
8121 '') 
8122         syspath='/usr/share/man/man1 /usr/man/man1'
8123         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8124         syspath="$syspath /usr/man/u_man/man1"
8125         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8126         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8127         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8128         sysman=`./loc . /usr/man/man1 $syspath`
8129         ;;
8130 esac
8131 if $test -d "$sysman"; then
8132         echo "System manual is in $sysman." >&4
8133 else
8134         echo "Could not find manual pages in source form." >&4
8135 fi
8136
8137 : determine where manual pages go
8138 set man1dir man1dir none
8139 eval $prefixit
8140 $cat <<EOM
8141
8142 $spackage has manual pages available in source form.
8143 EOM
8144 case "$nroff" in
8145 nroff)
8146         echo "However, you don't have nroff, so they're probably useless to you."
8147         case "$man1dir" in
8148         '') man1dir="none";;
8149         esac;;
8150 esac
8151 echo "If you don't want the manual sources installed, answer 'none'."
8152 case "$man1dir" in
8153 ' ') dflt=none
8154         ;;
8155 '')
8156         lookpath="$prefixexp/share/man/man1"
8157         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8158         lookpath="$lookpath $prefixexp/man/p_man/man1"
8159         lookpath="$lookpath $prefixexp/man/u_man/man1"
8160         lookpath="$lookpath $prefixexp/man/man.1"
8161         case "$sysman" in
8162         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8163         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8164         esac
8165         set dflt
8166         eval $prefixup
8167         ;;
8168 *)  dflt="$man1dir"
8169         ;;
8170 esac
8171 echo " "
8172 fn=dn+~
8173 rp="Where do the main $spackage manual pages (source) go?"
8174 . ./getfile
8175 if $test "X$man1direxp" != "X$ansexp"; then
8176         installman1dir=''
8177 fi
8178 prefixvar=man1dir
8179 . ./setprefixvar
8180
8181 case "$man1dir" in
8182 '')     man1dir=' '
8183         installman1dir='';;
8184 esac
8185
8186 : What suffix to use on installed man pages
8187
8188 case "$man1dir" in
8189 ' ')
8190         man1ext='0'
8191         ;;
8192 *)
8193         rp="What suffix should be used for the main $spackage man pages?"
8194         case "$man1ext" in
8195         '')     case "$man1dir" in
8196                 *1)  dflt=1 ;;
8197                 *1p) dflt=1p ;;
8198                 *1pm) dflt=1pm ;;
8199                 *l) dflt=l;;
8200                 *n) dflt=n;;
8201                 *o) dflt=o;;
8202                 *p) dflt=p;;
8203                 *C) dflt=C;;
8204                 *L) dflt=L;;
8205                 *L1) dflt=L1;;
8206                 *) dflt=1;;
8207                 esac
8208                 ;;
8209         *)      dflt="$man1ext";;
8210         esac
8211         . ./myread
8212         man1ext="$ans"
8213         ;;
8214 esac
8215
8216 : see if we can have long filenames
8217 echo " "
8218 first=123456789abcdef
8219 $rm -f $first
8220 if (echo hi >$first) 2>/dev/null; then
8221         if $test -f 123456789abcde; then
8222                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8223                 val="$undef"
8224         else
8225                 echo 'You can have filenames longer than 14 characters.'>&4
8226                 val="$define"
8227         fi
8228 else
8229         $cat <<'EOM'
8230 You can't have filenames longer than 14 chars.
8231 You can't even think about them!
8232 EOM
8233         val="$undef"
8234 fi 
8235 set d_flexfnam
8236 eval $setvar
8237 $rm -rf 123456789abcde*
8238
8239 : determine where library module manual pages go
8240 set man3dir man3dir none
8241 eval $prefixit
8242 $cat <<EOM
8243
8244 $spackage has manual pages for many of the library modules.
8245 EOM
8246
8247 case "$nroff" in
8248 nroff)
8249         $cat <<'EOM'
8250 However, you don't have nroff, so they're probably useless to you.
8251 EOM
8252         case "$man3dir" in
8253         '') man3dir="none";;
8254         esac;;
8255 esac
8256
8257 case "$d_flexfnam" in
8258 undef)
8259         $cat <<'EOM'
8260 However, your system can't handle the long file names like File::Basename.3.
8261 EOM
8262         case "$man3dir" in
8263         '') man3dir="none";;
8264         esac;;
8265 esac
8266
8267 echo "If you don't want the manual sources installed, answer 'none'."
8268 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8269 case "$man3dir" in
8270 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8271         if $test -d "$privlib/man/man3"; then
8272                 cat <<EOM >&4
8273
8274 WARNING:  Previous versions of perl installed man3 pages into
8275 $privlib/man/man3.  This version will suggest a
8276 new default of $dflt.
8277 EOM
8278                 tdflt=$dflt
8279                 dflt='n'
8280                 rp='Do you wish to preserve the old behavior?(y/n)'
8281                 . ./myread
8282                 case "$ans" in
8283                 y*) dflt="$privlib/man/man3" ;;
8284                 *)  dflt=$tdflt ;;
8285                 esac
8286     fi
8287         ;;
8288 *)      dflt="$man3dir" ;;
8289 esac
8290 case "$dflt" in
8291 ' ') dflt=none ;;
8292 esac
8293 echo " "
8294 fn=dn+~
8295 rp="Where do the $package library man pages (source) go?"
8296 . ./getfile
8297 prefixvar=man3dir
8298 . ./setprefixvar
8299
8300 case "$man3dir" in
8301 '')     man3dir=' '
8302         installman3dir='';;
8303 esac
8304
8305 : What suffix to use on installed man pages
8306 case "$man3dir" in
8307 ' ')
8308         man3ext='0'
8309         ;;
8310 *)
8311         rp="What suffix should be used for the $package library man pages?"
8312         case "$man3ext" in
8313         '')     case "$man3dir" in
8314                 *3)  dflt=3 ;;
8315                 *3p) dflt=3p ;;
8316                 *3pm) dflt=3pm ;;
8317                 *l) dflt=l;;
8318                 *n) dflt=n;;
8319                 *o) dflt=o;;
8320                 *p) dflt=p;;
8321                 *C) dflt=C;;
8322                 *L) dflt=L;;
8323                 *L3) dflt=L3;;
8324                 *) dflt=3;;
8325                 esac
8326                 ;;
8327         *)      dflt="$man3ext";;
8328         esac
8329         . ./myread
8330         man3ext="$ans"
8331         ;;
8332 esac
8333
8334 : see if we have to deal with yellow pages, now NIS.
8335 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8336         if $test -f /usr/etc/nibindd; then
8337                 echo " "
8338                 echo "I'm fairly confident you're on a NeXT."
8339                 echo " "
8340                 rp='Do you get the hosts file via NetInfo?'
8341                 dflt=y
8342                 case "$hostcat" in
8343                 nidump*) ;;
8344                 '') ;;
8345                 *) dflt=n;;
8346                 esac
8347                 . ./myread
8348                 case "$ans" in
8349                 y*) hostcat='nidump hosts .';;
8350                 *)      case "$hostcat" in
8351                         nidump*) hostcat='';;
8352                         esac
8353                         ;;
8354                 esac
8355         fi
8356         case "$hostcat" in
8357         nidump*) ;;
8358         *)
8359                 case "$hostcat" in
8360                 *ypcat*) dflt=y;;
8361                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8362                                 dflt=y
8363                         else
8364                                 dflt=n
8365                         fi;;
8366                 *) dflt=n;;
8367                 esac
8368                 echo " "
8369                 rp='Are you getting the hosts file via yellow pages?'
8370                 . ./myread
8371                 case "$ans" in
8372                 y*) hostcat='ypcat hosts';;
8373                 *) hostcat='cat /etc/hosts';;
8374                 esac
8375                 ;;
8376         esac
8377 fi
8378 case "$hostcat" in
8379 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8380 esac
8381 case "$groupcat" in
8382 '') test -f /etc/group && groupcat='cat /etc/group';;
8383 esac
8384 case "$passcat" in
8385 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8386 esac
8387
8388 : now get the host name
8389 echo " "
8390 echo "Figuring out host name..." >&4
8391 case "$myhostname" in
8392 '') cont=true
8393         echo 'Maybe "hostname" will work...'
8394         if tans=`sh -c hostname 2>&1` ; then
8395                 myhostname=$tans
8396                 phostname=hostname
8397                 cont=''
8398         fi
8399         ;;
8400 *) cont='';;
8401 esac
8402 if $test "$cont"; then
8403         if ./xenix; then
8404                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8405                 if tans=`cat /etc/systemid 2>&1` ; then
8406                         myhostname=$tans
8407                         phostname='cat /etc/systemid'
8408                         echo "Whadyaknow.  Xenix always was a bit strange..."
8409                         cont=''
8410                 fi
8411         elif $test -r /etc/systemid; then
8412                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8413         fi
8414 fi
8415 if $test "$cont"; then
8416         echo 'No, maybe "uuname -l" will work...'
8417         if tans=`sh -c 'uuname -l' 2>&1` ; then
8418                 myhostname=$tans
8419                 phostname='uuname -l'
8420         else
8421                 echo 'Strange.  Maybe "uname -n" will work...'
8422                 if tans=`sh -c 'uname -n' 2>&1` ; then
8423                         myhostname=$tans
8424                         phostname='uname -n'
8425                 else
8426                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8427                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8428                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8429                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8430                         else
8431                                 case "$myhostname" in
8432                                 '') echo "Does this machine have an identity crisis or something?"
8433                                         phostname='';;
8434                                 *)
8435                                         echo "Well, you said $myhostname before..."
8436                                         phostname='echo $myhostname';;
8437                                 esac
8438                         fi
8439                 fi
8440         fi
8441 fi
8442 case "$myhostname" in
8443 '') myhostname=noname ;;
8444 esac
8445 : you do not want to know about this
8446 set $myhostname
8447 myhostname=$1
8448
8449 : verify guess
8450 if $test "$myhostname" ; then
8451         dflt=y
8452         rp='Your host name appears to be "'$myhostname'".'" Right?"
8453         . ./myread
8454         case "$ans" in
8455         y*) ;;
8456         *) myhostname='';;
8457         esac
8458 fi
8459
8460 : bad guess or no guess
8461 while $test "X$myhostname" = X ; do
8462         dflt=''
8463         rp="Please type the (one word) name of your host:"
8464         . ./myread
8465         myhostname="$ans"
8466 done
8467
8468 : translate upper to lower if necessary
8469 case "$myhostname" in
8470 *[A-Z]*)
8471         echo "(Normalizing case in your host name)"
8472         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8473         ;;
8474 esac
8475
8476 case "$myhostname" in
8477 *.*)
8478         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8479         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8480         echo "(Trimming domain name from host name--host name is now $myhostname)"
8481         ;;
8482 *) case "$mydomain" in
8483         '')
8484                 {
8485                         test "X$hostcat" = "Xypcat hosts" &&
8486                         ypmatch "$myhostname" hosts 2>/dev/null |\
8487                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8488                         $test -s hosts
8489                 } || {
8490                         test "X$hostcat" != "X" &&
8491                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8492                                         /[       ]$myhostname[  . ]/p" > hosts
8493                 }
8494                 tmp_re="[       . ]"
8495                 if $test -f hosts; then
8496                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8497                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8498                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8499                                 hosts | $sort | $uniq | \
8500                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8501                         case `$echo X$dflt` in
8502                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8503                                 dflt=.
8504                                 ;;
8505                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8506                                 ;;
8507                         esac
8508                 else
8509                         echo "(I cannot locate a hosts database anywhere)"
8510                         dflt=.
8511                 fi
8512                 case "$dflt" in
8513                 .)
8514                         tans=`./loc resolv.conf X /etc /usr/etc`
8515                         if $test -f "$tans"; then
8516                                 echo "(Attempting domain name extraction from $tans)"
8517                                 dflt=.`$sed -n -e 's/   / /g' \
8518                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8519                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8520                                 case "$dflt" in
8521                                 .) dflt=.`$sed -n -e 's/        / /g' \
8522                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8523                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8524                                         ;;
8525                                 esac
8526                         fi
8527                         ;;
8528                 esac
8529                 case "$dflt" in
8530                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8531                         dflt=.`sh -c domainname 2>/dev/null`
8532                         case "$dflt" in
8533                         '') dflt='.';;
8534                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8535                         esac
8536                         ;;
8537                 esac
8538                 case "$dflt$osname" in
8539                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8540                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8541                         ;;
8542                 esac
8543                 case "$dflt" in
8544                 .) echo "(Lost all hope -- silly guess then)"
8545                         dflt='.nonet'
8546                         ;;
8547                 esac
8548                 $rm -f hosts
8549                 ;;
8550         *) dflt="$mydomain";;
8551         esac;;
8552 esac
8553 echo " "
8554 rp="What is your domain name?"
8555 . ./myread
8556 tans="$ans"
8557 case "$ans" in
8558 '') ;;
8559 .*) ;;
8560 *) tans=".$tans";;
8561 esac
8562 mydomain="$tans"
8563
8564 : translate upper to lower if necessary
8565 case "$mydomain" in
8566 *[A-Z]*)
8567         echo "(Normalizing case in your domain name)"
8568         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8569         ;;
8570 esac
8571
8572 : a little sanity check here
8573 case "$phostname" in
8574 '') ;;
8575 *)
8576         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8577         $myhostname$mydomain|$myhostname) ;;
8578         *)
8579                 case "$phostname" in
8580                 sed*)
8581                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8582                         ;;
8583                 *)
8584                         echo "(That doesn't agree with your $phostname command, by the way.)"
8585                         ;;
8586                 esac
8587         ;;
8588         esac
8589         ;;
8590 esac
8591
8592 $cat <<EOM
8593
8594 I need to get your e-mail address in Internet format if possible, i.e.
8595 something like user@host.domain. Please answer accurately since I have
8596 no easy means to double check it. The default value provided below
8597 is most probably close to reality but may not be valid from outside
8598 your organization...
8599
8600 EOM
8601 cont=x
8602 while test "$cont"; do
8603         case "$cf_email" in
8604         '') dflt="$cf_by@$myhostname$mydomain";;
8605         *) dflt="$cf_email";;
8606         esac
8607         rp='What is your e-mail address?'
8608         . ./myread
8609         cf_email="$ans"
8610         case "$cf_email" in
8611         *@*.*) cont='' ;;
8612         *)
8613                 rp='Address does not look like an Internet one.  Use it anyway?'
8614                 case "$fastread" in
8615                 yes) dflt=y ;;
8616                 *) dflt=n ;;
8617                 esac
8618                 . ./myread
8619                 case "$ans" in
8620                 y*) cont='' ;;
8621                 *) echo " " ;;
8622                 esac
8623                 ;;
8624         esac
8625 done
8626
8627 $cat <<EOM
8628
8629 If you or somebody else will be maintaining perl at your site, please
8630 fill in the correct e-mail address here so that they may be contacted
8631 if necessary. Currently, the "perlbug" program included with perl
8632 will send mail to this address in addition to perlbug@perl.org. You may
8633 enter "none" for no administrator.
8634
8635 EOM
8636 case "$perladmin" in
8637 '') dflt="$cf_email";;
8638 *) dflt="$perladmin";;
8639 esac
8640 rp='Perl administrator e-mail address'
8641 . ./myread
8642 perladmin="$ans"
8643
8644 : determine whether to only install version-specific parts.
8645 echo " "
8646 $cat <<EOM
8647 Do you want to install only the version-specific parts of the perl
8648 distribution?  Usually you do *not* want to do this.
8649 EOM
8650 case "$versiononly" in
8651 "$define"|[Yy]*|true) dflt='y' ;;
8652 *) dflt='n';
8653 esac
8654 rp="Do you want to install only the version-specific parts of perl?"
8655 . ./myread
8656 case "$ans" in
8657 [yY]*)  val="$define";;
8658 *)      val="$undef" ;;
8659 esac
8660 set versiononly
8661 eval $setvar
8662
8663 case "$versiononly" in
8664 "$define") inc_version_list=''
8665            inc_version_list_init=0
8666            ;;
8667 esac
8668
8669 : figure out how to guarantee perl startup
8670 : XXX Note that this currently takes advantage of the bug that binexp ignores
8671 :     the Configure -Dinstallprefix setting, which in turn means that under
8672 :     relocatable @INC, initialinstalllocation is what binexp started as.
8673 case "$startperl" in
8674 '')
8675         case "$sharpbang" in
8676         *!)
8677                 $cat <<EOH
8678
8679 I can use the #! construct to start perl on your system. This will
8680 make startup of perl scripts faster, but may cause problems if you
8681 want to share those scripts and perl is not in a standard place
8682 ($initialinstalllocation/perl) on all your platforms. The alternative
8683 is to force a shell by starting the script with a single ':' character.
8684
8685 EOH
8686                 case "$versiononly" in
8687                 "$define")      dflt="$initialinstalllocation/perl$version";;
8688                 *)              dflt="$initialinstalllocation/perl";;
8689                 esac
8690                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8691                 . ./myread
8692                 case "$ans" in
8693                 none)   startperl=": # use perl";;
8694                 *)      startperl="#!$ans"
8695                         if $test 30 -lt `echo "$ans" | wc -c`; then
8696                                 $cat >&4 <<EOM
8697
8698 WARNING:  Some systems limit the #! command to 32 characters.
8699 If you experience difficulty running Perl scripts with #!, try
8700 installing Perl in a directory with a shorter pathname.
8701
8702 EOM
8703                         fi ;;
8704                 esac
8705                 ;;
8706         *) startperl=": # use perl"
8707                 ;;
8708         esac
8709         ;;
8710 esac
8711 echo "I'll use $startperl to start perl scripts."
8712
8713 : figure best path for perl in scripts
8714 case "$perlpath" in
8715 '')
8716         case "$versiononly" in
8717         "$define")      perlpath="$initialinstalllocation/perl$version";;
8718         *)              perlpath="$initialinstalllocation/perl";;
8719         esac
8720         case "$startperl" in
8721         *!*) ;;
8722         *)
8723                 $cat <<EOH
8724
8725 I will use the "eval 'exec'" idiom to start Perl on your system.
8726 I can use the full path of your Perl binary for this purpose, but
8727 doing so may cause problems if you want to share those scripts and
8728 Perl is not always in a standard place ($initialinstalllocation/perl).
8729
8730 EOH
8731                 dflt="$initialinstalllocation/perl"
8732                 rp="What path shall I use in \"eval 'exec'\"?"
8733                 . ./myread
8734                 perlpath="$ans"
8735                 ;;
8736         esac
8737         ;;
8738 esac
8739 case "$startperl" in
8740 *!*)    ;;
8741 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8742 esac
8743
8744 : determine where public executable scripts go
8745 set scriptdir scriptdir
8746 eval $prefixit
8747 case "$scriptdir" in
8748 '')
8749         dflt="$bin"
8750         : guess some guesses
8751         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8752         $test -d /usr/share/bin     && dflt=/usr/share/bin
8753         $test -d /usr/local/script  && dflt=/usr/local/script
8754         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8755         $test -d $prefixexp/script  && dflt=$prefixexp/script
8756         set dflt
8757         eval $prefixup
8758         ;;
8759 *)  dflt="$scriptdir"
8760         ;;
8761 esac
8762 $cat <<EOM
8763
8764 Some installations have a separate directory just for executable scripts so
8765 that they can mount it across multiple architectures but keep the scripts in
8766 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8767 Or you might just lump your scripts in with all your other executables.
8768
8769 EOM
8770 fn=d~
8771 rp='Where do you keep publicly executable scripts?'
8772 . ./getfile
8773 if $test "X$ansexp" != "X$scriptdirexp"; then
8774         installscript=''
8775 fi
8776 installscriptdir=''
8777 prefixvar=scriptdir
8778 . ./setprefixvar
8779 : A little fix up for an irregularly named variable.
8780 installscript="$installscriptdir"
8781
8782 : determine where add-on public executables go
8783 case "$sitebin" in
8784 '')     dflt=$siteprefix/bin ;;
8785 *)      dflt=$sitebin ;;
8786 esac
8787 fn=d~
8788 rp='Pathname where the add-on public executables should be installed?'
8789 . ./getfile
8790 prefixvar=sitebin
8791 . ./setprefixvar
8792
8793 : determine where add-on html pages go
8794 : There is no standard location, so try to copy the previously-selected
8795 : directory structure for the core html pages.
8796 case "$sitehtml1dir" in
8797 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8798 *)     dflt=$sitehtml1dir ;;
8799 esac
8800 case "$dflt" in
8801 ''|' ') dflt=none ;;
8802 esac
8803 fn=dn+~
8804 rp='Pathname where the site-specific html pages should be installed?'
8805 . ./getfile
8806 prefixvar=sitehtml1dir
8807 . ./setprefixvar
8808
8809 : determine where add-on library html pages go
8810 : There is no standard location, so try to copy the previously-selected
8811 : directory structure for the core html pages.
8812 case "$sitehtml3dir" in
8813 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8814 *)     dflt=$sitehtml3dir ;;
8815 esac
8816 case "$dflt" in
8817 ''|' ') dflt=none ;;
8818 esac
8819 fn=dn+~
8820 rp='Pathname where the site-specific library html pages should be installed?'
8821 . ./getfile
8822 prefixvar=sitehtml3dir
8823 . ./setprefixvar
8824
8825 : determine where add-on manual pages go
8826 case "$siteman1dir" in
8827 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8828 *)      dflt=$siteman1dir ;;
8829 esac
8830 case "$dflt" in
8831 ''|' ') dflt=none ;;
8832 esac
8833 fn=dn+~
8834 rp='Pathname where the site-specific manual pages should be installed?'
8835 . ./getfile
8836 prefixvar=siteman1dir
8837 . ./setprefixvar
8838
8839 : determine where add-on library man pages go
8840 case "$siteman3dir" in
8841 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8842 *)      dflt=$siteman3dir ;;
8843 esac
8844 case "$dflt" in
8845 ''|' ') dflt=none ;;
8846 esac
8847 fn=dn+~
8848 rp='Pathname where the site-specific library manual pages should be installed?'
8849 . ./getfile
8850 prefixvar=siteman3dir
8851 . ./setprefixvar
8852
8853 : determine where add-on public executable scripts go
8854 case "$sitescript" in
8855 '')     dflt=$siteprefix/script
8856         $test -d $dflt || dflt=$sitebin ;;
8857 *)  dflt="$sitescript" ;;
8858 esac
8859 fn=d~+
8860 rp='Pathname where add-on public executable scripts should be installed?'
8861 . ./getfile
8862 prefixvar=sitescript
8863 . ./setprefixvar
8864
8865 case "$usefaststdio" in
8866 $define|true|[yY]*|'')
8867         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8868         case "$xversion" in
8869         [68])   dflt='y' ;;
8870         *)      dflt='n' ;;
8871         esac
8872         ;;
8873 *) dflt='n';;
8874 esac
8875 cat <<EOM
8876
8877 Perl can be built to use 'fast stdio', which means using the stdio
8878 library but also directly manipulating the stdio buffers to enable
8879 faster I/O.  Using stdio is better for backward compatibility (especially
8880 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8881 interface has been preferred instead of stdio.
8882
8883 If this doesn't make any sense to you, just accept the default '$dflt'.
8884 EOM
8885 rp='Use the "fast stdio" if available?'
8886 . ./myread
8887 case "$ans" in
8888 y|Y)    val="$define" ;;     
8889 *)      val="$undef" ;;
8890 esac
8891 set usefaststdio
8892 eval $setvar
8893
8894
8895 : define an is-a-typedef? function
8896 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8897 case "$inclist" in
8898 "") inclist="sys/types.h";;
8899 esac;
8900 eval "varval=\$$var";
8901 case "$varval" in
8902 "")
8903         $rm -f temp.c;
8904         for inc in $inclist; do
8905                 echo "#include <$inc>" >>temp.c;
8906         done;
8907         echo "#ifdef $type" >> temp.c;
8908         echo "printf(\"We have $type\");" >> temp.c;
8909         echo "#endif" >> temp.c;
8910         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8911         if $contains $type temp.E >/dev/null 2>&1; then
8912                 eval "$var=\$type";
8913         else
8914                 eval "$var=\$def";
8915         fi;
8916         $rm -f temp.?;;
8917 *) eval "$var=\$varval";;
8918 esac'
8919
8920 : define an is-a-typedef? function that prompts if the type is not available.
8921 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8922 case "$inclist" in
8923 "") inclist="sys/types.h";;
8924 esac;
8925 eval "varval=\$$var";
8926 case "$varval" in
8927 "")
8928         $rm -f temp.c;
8929         for inc in $inclist; do
8930                 echo "#include <$inc>" >>temp.c;
8931         done;
8932         echo "#ifdef $type" >> temp.c;
8933         echo "printf(\"We have $type\");" >> temp.c;
8934         echo "#endif" >> temp.c;
8935         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8936         echo " " ;
8937         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8938         if $contains $type temp.E >/dev/null 2>&1; then
8939                 echo "$type found." >&4;
8940                 eval "$var=\$type";
8941         else
8942                 echo "$type NOT found." >&4;
8943                 dflt="$def";
8944                 . ./myread ;
8945                 eval "$var=\$ans";
8946         fi;
8947         $rm -f temp.?;;
8948 *) eval "$var=\$varval";;
8949 esac'
8950
8951 : see what type lseek is declared as in the kernel
8952 rp="What is the type used for lseek's offset on this system?"
8953 set off_t lseektype long stdio.h sys/types.h
8954 eval $typedef_ask
8955
8956 echo " "
8957 echo "Checking to see how big your file offsets are..." >&4
8958 $cat >try.c <<EOCP
8959 #include <sys/types.h>
8960 #include <stdio.h>
8961 int main()
8962 {
8963     printf("%d\n", (int)sizeof($lseektype));
8964     return(0); 
8965 }
8966 EOCP
8967 set try
8968 if eval $compile_ok; then
8969         lseeksize=`$run ./try`
8970         echo "Your file offsets are $lseeksize bytes long."
8971 else
8972         dflt=$longsize
8973         echo " "
8974         echo "(I can't seem to compile the test program.  Guessing...)"
8975         rp="What is the size of your file offsets (in bytes)?"
8976         . ./myread
8977         lseeksize="$ans"
8978 fi
8979 $rm -f try.c try
8980
8981 : see what type file positions are declared as in the library
8982 rp="What is the type for file position used by fsetpos()?"
8983 set fpos_t fpostype long stdio.h sys/types.h
8984 eval $typedef_ask
8985
8986 echo " "
8987 case "$fpostype" in
8988 *_t) zzz="$fpostype"    ;;
8989 *)   zzz="fpos_t"       ;;
8990 esac
8991 echo "Checking the size of $zzz..." >&4 
8992 cat > try.c <<EOCP
8993 #include <sys/types.h>
8994 #include <stdio.h>
8995 #$i_stdlib I_STDLIB
8996 #ifdef I_STDLIB
8997 #include <stdlib.h>
8998 #endif
8999 int main() {
9000     printf("%d\n", (int)sizeof($fpostype));
9001     exit(0);
9002 }
9003 EOCP
9004 set try
9005 if eval $compile_ok; then
9006         yyy=`$run ./try`
9007         case "$yyy" in
9008         '')     fpossize=4
9009                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9010                 ;;
9011         *)      fpossize=$yyy
9012                 echo "Your $zzz is $fpossize bytes long."
9013                 ;;
9014         esac
9015 else
9016         dflt="$longsize"
9017         echo " " >&4
9018         echo "(I can't compile the test program.  Guessing...)" >&4
9019         rp="What is the size of your file positions (in bytes)?"
9020         . ./myread
9021         fpossize="$ans"
9022 fi
9023
9024 # Backward compatibility (uselfs is deprecated).
9025 case "$uselfs" in
9026 "$define"|true|[yY]*)
9027         cat <<EOM >&4
9028
9029 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9030 EOM
9031         uselargefiles="$define"
9032         ;;
9033 esac                          
9034
9035 case "$lseeksize:$fpossize" in
9036 8:8) cat <<EOM
9037
9038 You can have files larger than 2 gigabytes.
9039 EOM
9040    val="$define" ;;
9041 *)    case "$uselargefiles" in
9042    "$undef"|false|[nN]*) dflt='n' ;;
9043    *)   dflt='y' ;;
9044    esac
9045    cat <<EOM
9046
9047 Perl can be built to understand large files (files larger than 2 gigabytes)
9048 on some systems.  To do so, Configure can be run with -Duselargefiles.
9049
9050 If this doesn't make any sense to you, just accept the default '$dflt'.
9051 EOM
9052    rp='Try to understand large files, if available?'
9053    . ./myread
9054    case "$ans" in
9055    y|Y)         val="$define" ;;
9056    *)           val="$undef"  ;;
9057    esac
9058    ;;
9059 esac
9060 set uselargefiles
9061 eval $setvar
9062 : Look for a hint-file generated 'call-back-unit'.  If the
9063 : user has specified that a large files perl is to be built,
9064 : we may need to set or change some other defaults.
9065 if $test -f uselargefiles.cbu; then
9066         echo "Your platform has some specific hints regarding large file builds, using them..."
9067         . ./uselargefiles.cbu
9068 fi
9069 case "$uselargefiles" in
9070 "$define")
9071         if $test -f uselargefiles.cbu; then
9072                 echo " "
9073                 echo "Rechecking to see how big your file offsets are..." >&4
9074                 $cat >try.c <<EOCP
9075 #include <sys/types.h>
9076 #include <stdio.h>
9077 int main()
9078 {
9079     printf("%d\n", (int)sizeof($lseektype));
9080     return(0); 
9081 }
9082 EOCP
9083                 set try
9084                 if eval $compile_ok; then
9085                         lseeksize=`$run ./try`
9086                         $echo "Your file offsets are now $lseeksize bytes long."
9087                 else
9088                         dflt="$lseeksize"
9089                         echo " "
9090                         echo "(I can't seem to compile the test program.  Guessing...)"
9091                         rp="What is the size of your file offsets (in bytes)?"
9092                         . ./myread
9093                         lseeksize="$ans"
9094                 fi
9095                 case "$fpostype" in
9096                 *_t) zzz="$fpostype"    ;;
9097                 *)   zzz="fpos_t"       ;;
9098                 esac
9099                 $echo $n "Rechecking the size of $zzz...$c" >&4 
9100                 $cat > try.c <<EOCP
9101 #include <sys/types.h>
9102 #include <stdio.h>
9103 #$i_stdlib I_STDLIB
9104 #ifdef I_STDLIB
9105 #include <stdlib.h>
9106 #endif
9107 int main() {
9108     printf("%d\n", (int)sizeof($fpostype));
9109     return(0);
9110 }
9111 EOCP
9112                 set try
9113                 if eval $compile_ok; then
9114                         yyy=`$run ./try`
9115                         dflt="$lseeksize"
9116                         case "$yyy" in
9117                         '')     echo " "
9118                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9119                                 ;;
9120                         *)      fpossize=$yyy
9121                                 echo " $fpossize bytes." >&4
9122                                 ;;
9123                         esac
9124                 else
9125                         dflt="$fpossize"
9126                         echo " "
9127                         echo "(I can't compile the test program.  Guessing...)" >&4
9128                         rp="What is the size of your file positions (in bytes)?"
9129                         . ./myread
9130                         fpossize="$ans"
9131                 fi
9132                 $rm -f try.c try
9133         fi
9134         ;;
9135 esac
9136
9137 case "$vendorprefix" in
9138 '')     d_vendorbin="$undef"
9139         vendorbin=''
9140         vendorbinexp=''
9141         ;;
9142 *)      d_vendorbin="$define"
9143         : determine where vendor-supplied executables go.
9144         case "$vendorbin" in
9145         '') dflt=$vendorprefix/bin ;;
9146         *)      dflt="$vendorbin" ;;
9147         esac
9148         fn=d~+
9149         rp='Pathname for the vendor-supplied executables directory?'
9150         . ./getfile
9151         vendorbin="$ans"
9152         vendorbinexp="$ansexp"
9153         ;;
9154 esac
9155 prefixvar=vendorbin
9156 . ./installprefix
9157
9158 case "$vendorprefix" in
9159 '')     vendorhtml1dir=''
9160         vendorhtml1direxp=''
9161         ;;
9162 *)      : determine where vendor-supplied html pages go.
9163         : There is no standard location, so try to copy the previously-selected
9164         : directory structure for the core html pages.
9165         : XXX Better default suggestions would be welcome.
9166         case "$vendorhtml1dir" in
9167         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9168         *)      dflt=$vendorhtml1dir ;;
9169         esac
9170         case "$dflt" in
9171         ''|' ') dflt=none ;;
9172         esac
9173         fn=dn+~
9174         rp='Pathname for the vendor-supplied html pages?'
9175         . ./getfile
9176         vendorhtml1dir="$ans"
9177         vendorhtml1direxp="$ansexp"
9178         ;;
9179 esac
9180 : Use ' ' for none so value is preserved next time through Configure
9181 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9182 prefixvar=vendorhtml1dir
9183 . ./installprefix
9184
9185 case "$vendorprefix" in
9186 '')     vendorhtml3dir=''
9187         vendorhtml3direxp=''
9188         ;;
9189 *)      : determine where vendor-supplied module html pages go.
9190         : There is no standard location, so try to copy the previously-selected
9191         : directory structure for the core html pages.
9192         : XXX Better default suggestions would be welcome.
9193         case "$vendorhtml3dir" in
9194         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9195         *)      dflt=$vendorhtml3dir ;;
9196         esac
9197         case "$dflt" in
9198         ''|' ') dflt=none ;;
9199         esac
9200         fn=dn+~
9201         rp='Pathname for the vendor-supplied html pages?'
9202         . ./getfile
9203         vendorhtml3dir="$ans"
9204         vendorhtml3direxp="$ansexp"
9205         ;;
9206 esac
9207 : Use ' ' for none so value is preserved next time through Configure
9208 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9209 prefixvar=vendorhtml3dir
9210 . ./installprefix
9211
9212 case "$vendorprefix" in
9213 '')     vendorman1dir=''
9214         vendorman1direxp=''
9215         ;;
9216 *)      : determine where vendor-supplied manual pages go.
9217         case "$vendorman1dir" in
9218         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9219         *)      dflt=$vendorman1dir ;;
9220         esac
9221         case "$dflt" in
9222         ''|' ') dflt=none ;;
9223         esac
9224         fn=nd~+
9225         rp='Pathname for the vendor-supplied manual section 1 pages?'
9226         . ./getfile
9227         vendorman1dir="$ans"
9228         vendorman1direxp="$ansexp"
9229         ;;
9230 esac
9231 : Use ' ' for none so value is preserved next time through Configure
9232 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9233 prefixvar=vendorman1dir
9234 . ./installprefix
9235
9236 case "$vendorprefix" in
9237 '')     vendorman3dir=''
9238         vendorman3direxp=''
9239         ;;
9240 *)      : determine where vendor-supplied module manual pages go.
9241         case "$vendorman3dir" in
9242         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9243         *)      dflt=$vendorman3dir ;;
9244         esac
9245         case "$dflt" in
9246         ''|' ') dflt=none ;;
9247         esac
9248         fn=nd~+
9249         rp='Pathname for the vendor-supplied manual section 3 pages?'
9250         . ./getfile
9251         vendorman3dir="$ans"
9252         vendorman3direxp="$ansexp"
9253         ;;
9254 esac
9255 : Use ' ' for none so value is preserved next time through Configure
9256 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9257 prefixvar=vendorman3dir
9258 . ./installprefix
9259
9260 case "$vendorprefix" in
9261 '')     d_vendorscript="$undef"
9262         vendorscript=''
9263         vendorscriptexp=''
9264         ;;
9265 *)      d_vendorscript="$define"
9266         : determine where vendor-supplied scripts go.
9267         case "$vendorscript" in
9268         '')     dflt=$vendorprefix/script
9269                 $test -d $dflt || dflt=$vendorbin ;;
9270         *)  dflt="$vendorscript" ;;
9271         esac
9272         $cat <<EOM
9273
9274 The installation process will create a directory for
9275 vendor-supplied scripts.
9276
9277 EOM
9278         fn=d~+
9279         rp='Pathname for the vendor-supplied scripts directory?'
9280         . ./getfile
9281         vendorscript="$ans"
9282         vendorscriptexp="$ansexp"
9283         ;;
9284 esac
9285 prefixvar=vendorscript
9286 . ./installprefix
9287
9288 : see if qgcvt exists
9289 set qgcvt d_qgcvt
9290 eval $inlibc
9291
9292 echo " "
9293
9294 if $test X"$d_longdbl" = X"$define"; then
9295
9296 echo "Checking how to print long doubles..." >&4
9297
9298 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9299         $cat >try.c <<'EOCP'
9300 #include <sys/types.h>
9301 #include <stdio.h>
9302 int main() {
9303   double d = 123.456;
9304   printf("%.3f\n", d);
9305 }
9306 EOCP
9307         set try
9308         if eval $compile; then
9309                 yyy=`$run ./try`
9310                 case "$yyy" in
9311                 123.456)
9312                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9313                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9314                         echo "We will use %f."
9315                         ;;
9316                 esac
9317         fi
9318 fi
9319
9320 if $test X"$sPRIfldbl" = X; then
9321         $cat >try.c <<'EOCP'
9322 #include <sys/types.h>
9323 #include <stdio.h>
9324 int main() {
9325   long double d = 123.456;
9326   printf("%.3Lf\n", d);
9327 }
9328 EOCP
9329         set try
9330         if eval $compile; then
9331                 yyy=`$run ./try`
9332                 case "$yyy" in
9333                 123.456)
9334                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9335                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9336                         echo "We will use %Lf."
9337                         ;;
9338                 esac
9339         fi
9340 fi
9341
9342 if $test X"$sPRIfldbl" = X; then
9343         $cat >try.c <<'EOCP'
9344 #include <sys/types.h>
9345 #include <stdio.h>
9346 int main() {
9347   long double d = 123.456;
9348   printf("%.3llf\n", d);
9349 }
9350 EOCP
9351         set try
9352         if eval $compile; then
9353                 yyy=`$run ./try`
9354                 case "$yyy" in
9355                 123.456)
9356                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9357                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9358                         echo "We will use %llf."
9359                         ;;
9360                 esac
9361         fi
9362 fi
9363
9364 if $test X"$sPRIfldbl" = X; then
9365         $cat >try.c <<'EOCP'
9366 #include <sys/types.h>
9367 #include <stdio.h>
9368 int main() {
9369   long double d = 123.456;
9370   printf("%.3lf\n", d);
9371 }
9372 EOCP
9373         set try
9374         if eval $compile; then
9375                 yyy=`$run ./try`
9376                 case "$yyy" in
9377                 123.456)
9378                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9379                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9380                         echo "We will use %lf."
9381                         ;;
9382                 esac
9383         fi
9384 fi
9385
9386 if $test X"$sPRIfldbl" = X; then
9387         echo "Cannot figure out how to print long doubles." >&4
9388 else
9389         sSCNfldbl=$sPRIfldbl    # expect consistency
9390 fi
9391
9392 $rm -f try try.*
9393
9394 fi # d_longdbl
9395
9396 case "$sPRIfldbl" in
9397 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9398         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9399         d_SCNfldbl="$undef";
9400         ;;
9401 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9402         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9403         d_SCNfldbl="$define";
9404         ;;
9405 esac
9406
9407 : Check how to convert floats to strings.
9408
9409 if test "X$d_Gconvert" = X; then
9410
9411 echo " "
9412 echo "Checking for an efficient way to convert floats to strings."
9413 echo " " > try.c
9414 case "$uselongdouble" in
9415 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9416 esac
9417 case "$d_longdbl" in
9418 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9419 esac
9420 case "$d_PRIgldbl" in
9421 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9422 esac
9423 $cat >>try.c <<EOP
9424 #ifdef TRY_gconvert
9425 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9426 char *myname = "gconvert";
9427 #endif
9428 #ifdef TRY_gcvt
9429 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9430 char *myname = "gcvt";
9431 #endif
9432 #ifdef TRY_qgcvt
9433 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9434 char *myname = "qgcvt";
9435 #define DOUBLETYPE long double
9436 #endif
9437 #ifdef TRY_sprintf
9438 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9439 #ifdef HAS_PRIgldbl
9440 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9441 #else
9442 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9443 #endif
9444 #else
9445 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9446 #endif
9447 char *myname = "sprintf";
9448 #endif
9449
9450 #ifndef DOUBLETYPE
9451 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9452 #define DOUBLETYPE long double
9453 #else
9454 #define DOUBLETYPE double
9455 #endif
9456 #endif
9457
9458 #include <stdio.h>
9459
9460 #define I_STDLIB $i_stdlib
9461 #ifdef I_STDLIB
9462 #include <stdlib.h>
9463 #endif
9464
9465 int
9466 checkit(expect, got)
9467 char *expect;
9468 char *got;
9469 {
9470     if (strcmp(expect, got)) {
9471                 printf("%s oddity:  Expected %s, got %s\n",
9472                         myname, expect, got);
9473                 exit(1);
9474         }
9475 }
9476
9477 int main()
9478
9479         char buf[64]; 
9480         buf[63] = '\0';
9481
9482         /* This must be 1st test on (which?) platform */
9483         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9484         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9485         checkit("0.1", buf);
9486
9487         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9488         checkit("0.01", buf);
9489
9490         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9491         checkit("0.001", buf);
9492
9493         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9494         checkit("0.0001", buf);
9495
9496         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9497         if (strlen(buf) > 5)
9498             checkit("9e-005", buf); /* for Microsoft ?? */
9499         else
9500             checkit("9e-05", buf);
9501
9502         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9503         checkit("1", buf);
9504
9505         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9506         checkit("1.1", buf);
9507
9508         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9509         checkit("1.01", buf);
9510
9511         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9512         checkit("1.001", buf);
9513
9514         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9515         checkit("1.0001", buf);
9516
9517         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9518         checkit("1.00001", buf);
9519
9520         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9521         checkit("1.000001", buf);
9522
9523         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9524         checkit("0", buf);
9525
9526         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9527         checkit("-1", buf);
9528
9529         /* Some Linux gcvt's give 1.e+5 here. */
9530         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9531         checkit("100000", buf);
9532         
9533         /* Some Linux gcvt's give -1.e+5 here. */
9534         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9535         checkit("-100000", buf);
9536
9537         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9538         checkit("123.456", buf);
9539
9540         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9541         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9542         /* 34 should be enough to scare even long double
9543          * places into using the e notation. */
9544         if (strlen(buf) > 5)
9545             checkit("1e+034", buf); /* for Microsoft */
9546         else
9547             checkit("1e+34", buf);
9548
9549         /* For Perl, if you add additional tests here, also add them to
9550          * t/base/num.t for benefit of platforms not using Configure or
9551          * overriding d_Gconvert */
9552
9553         exit(0);
9554 }
9555 EOP
9556 : first add preferred functions to our list
9557 xxx_list=""
9558 for xxx_convert in $gconvert_preference; do
9559     case $xxx_convert in
9560     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9561     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9562     esac 
9563 done
9564 : then add any others
9565 for xxx_convert in gconvert gcvt sprintf; do
9566     case "$xxx_list" in
9567     *$xxx_convert*) ;;
9568     *) xxx_list="$xxx_list $xxx_convert" ;;
9569     esac 
9570 done
9571
9572 case "$d_longdbl$uselongdouble" in
9573 "$define$define")
9574     : again, add prefered functions to our list first
9575     xxx_ld_list=""
9576     for xxx_convert in $gconvert_ld_preference; do
9577         case $xxx_convert in
9578         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9579         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9580         esac
9581     done
9582     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9583     for xxx_convert in qgcvt sprintf $xxx_list; do
9584         case "$xxx_ld_list" in
9585         $xxx_convert*|*" $xxx_convert"*) ;;
9586         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9587         esac
9588     done
9589     : if sprintf cannot do long doubles, move it to the end
9590     if test "$d_PRIgldbl" != "$define"; then
9591         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9592     fi
9593     : if no qgcvt, remove it
9594     if test "$d_qgcvt" != "$define"; then
9595         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9596     fi
9597     : use the ld_list
9598     xxx_list="$xxx_ld_list"
9599     ;;
9600 esac
9601
9602 for xxx_convert in $xxx_list; do
9603         echo "Trying $xxx_convert..."
9604         $rm -f try try$_o
9605         set try -DTRY_$xxx_convert
9606         if eval $compile; then
9607                 echo "$xxx_convert() found." >&4
9608                 if $run ./try; then
9609                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9610                         break;
9611                 else
9612                         echo "...But $xxx_convert didn't work as I expected."
9613                         xxx_convert=''
9614                 fi
9615         else
9616                 echo "$xxx_convert NOT found." >&4
9617         fi
9618 done
9619
9620 if test X$xxx_convert = X; then
9621     echo "*** WHOA THERE!!! ***" >&4
9622     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9623     xxx_convert=sprintf
9624 fi
9625
9626 case "$xxx_convert" in
9627 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9628 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9629 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9630 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9631    "$define$define$define")
9632       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9633    "$define$define$undef")
9634       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9635    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9636    esac
9637    ;;  
9638 esac
9639
9640 fi
9641
9642 : see if _fwalk exists
9643 set fwalk d__fwalk
9644 eval $inlibc
9645
9646 : Initialize h_fcntl
9647 h_fcntl=false
9648
9649 : Initialize h_sysfile
9650 h_sysfile=false
9651
9652 : access call always available on UNIX
9653 set access d_access
9654 eval $inlibc
9655
9656 : locate the flags for 'access()'
9657 case "$d_access" in
9658 "$define")
9659         echo " "
9660         $cat >access.c <<EOCP
9661 #include <sys/types.h>
9662 #ifdef I_FCNTL
9663 #include <fcntl.h>
9664 #endif
9665 #ifdef I_SYS_FILE
9666 #include <sys/file.h>
9667 #endif
9668 #ifdef I_UNISTD
9669 #include <unistd.h>
9670 #endif
9671 #$i_stdlib I_STDLIB
9672 #ifdef I_STDLIB
9673 #include <stdlib.h>
9674 #endif
9675 int main() {
9676         exit(R_OK);
9677 }
9678 EOCP
9679         : check sys/file.h first, no particular reason here
9680         if $test `./findhdr sys/file.h` && \
9681                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9682                 h_sysfile=true;
9683                 echo "<sys/file.h> defines the *_OK access constants." >&4
9684         elif $test `./findhdr fcntl.h` && \
9685                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9686                 h_fcntl=true;
9687                 echo "<fcntl.h> defines the *_OK access constants." >&4
9688         elif $test `./findhdr unistd.h` && \
9689                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9690                 echo "<unistd.h> defines the *_OK access constants." >&4
9691         else
9692                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9693         fi
9694         ;;
9695 esac
9696 $rm -f access*
9697
9698 : see if accessx exists
9699 set accessx d_accessx
9700 eval $inlibc
9701
9702 : see if aintl exists
9703 set aintl d_aintl
9704 eval $inlibc
9705
9706 : see if alarm exists
9707 set alarm d_alarm
9708 eval $inlibc
9709
9710 : see if POSIX threads are available
9711 set pthread.h i_pthread
9712 eval $inhdr
9713
9714 : define a fucntion to check prototypes
9715 $cat > protochk <<EOSH
9716 $startsh
9717 cc="$cc"
9718 optimize="$optimize"
9719 ccflags="$ccflags"
9720 prototype="$prototype"
9721 define="$define"
9722 rm=$rm
9723 usethreads=$usethreads
9724 i_pthread=$i_pthread
9725 pthread_h_first=$pthread_h_first
9726 EOSH
9727
9728 $cat >> protochk <<'EOSH'
9729
9730 $rm -f try.c
9731 foo="$1"
9732 shift
9733 while test $# -ge 2; do
9734         case "$1" in
9735                 $define) echo "#include <$2>" >> try.c ;;
9736                 literal) echo "$2" >> try.c ;;
9737         esac
9738     # Extra magic for the benefit of systems that need pthread.h
9739     # to be included early to correctly detect threadsafe functions.
9740     # Such functions must guarantee themselves, though, that the usethreads
9741     # and i_pthread have been defined, before calling protochk.
9742     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9743         echo "#include <pthread.h>" >> try.c
9744         pthread_h_done=yes
9745     fi
9746     shift 2
9747 done
9748 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9749 cat >> try.c <<'EOCP'
9750 #ifdef CAN_PROTOTYPE
9751 #define _(args) args
9752 #else
9753 #define _(args) ()
9754 #endif
9755 EOCP
9756 echo "$foo" >> try.c
9757 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9758 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9759 status=$?
9760 $rm -f try.[co]
9761 exit $status
9762 EOSH
9763 chmod +x protochk
9764 $eunicefix protochk
9765
9766 hasproto='varname=$1; func=$2; shift; shift;
9767 while $test $# -ge 2; do
9768         case "$1" in
9769         $define) echo "#include <$2>";;
9770         esac ;
9771     shift 2;
9772 done > try.c;
9773 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9774 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9775         echo "$func() prototype found.";
9776         val="$define";
9777 else
9778         echo "$func() prototype NOT found.";
9779         val="$undef";
9780 fi;
9781 set $varname;
9782 eval $setvar;
9783 $rm -f try.c tryout.c'
9784
9785 : see if sys/types.h has to be included
9786 set sys/types.h i_systypes
9787 eval $inhdr
9788
9789 : see if sys/select.h has to be included
9790 set sys/select.h i_sysselct
9791 eval $inhdr
9792
9793 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9794 while $test $# -ge 2; do
9795         case "$1" in
9796         $define) echo "#include <$2>";;
9797         esac ;
9798     shift 2;
9799 done > try.c;
9800 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9801 set try;
9802 if eval $compile; then
9803         val="$define";
9804 else
9805         val="$undef";
9806 fi;
9807 set $varname;
9808 eval $setvar;
9809 $rm -f try.c try.o'
9810
9811 : see if we should include time.h, sys/time.h, or both
9812 echo " "
9813 if test "X$timeincl" = X; then
9814         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9815         $echo $n "I'm now running the test program...$c"
9816         $cat >try.c <<EOCP
9817 #include <sys/types.h>
9818 #ifdef I_TIME
9819 #include <time.h>
9820 #endif
9821 #ifdef I_SYSTIME
9822 #ifdef SYSTIMEKERNEL
9823 #define KERNEL
9824 #endif
9825 #include <sys/time.h>
9826 #endif
9827 #ifdef I_SYSSELECT
9828 #include <sys/select.h>
9829 #endif
9830 #$i_stdlib I_STDLIB
9831 #ifdef I_STDLIB
9832 #include <stdlib.h>
9833 #endif
9834 int main()
9835 {
9836         struct tm foo;
9837 #ifdef S_TIMEVAL
9838         struct timeval bar;
9839 #endif
9840 #ifdef S_TIMEZONE
9841         struct timezone tzp;
9842 #endif
9843         if (foo.tm_sec == foo.tm_sec)
9844                 exit(0);
9845 #ifdef S_TIMEVAL
9846         if (bar.tv_sec == bar.tv_sec)
9847                 exit(0);
9848 #endif
9849         exit(1);
9850 }
9851 EOCP
9852         flags=''
9853         for s_timezone in '-DS_TIMEZONE' ''; do
9854         sysselect=''
9855         for s_timeval in '-DS_TIMEVAL' ''; do
9856         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9857         for i_time in '' '-DI_TIME'; do
9858         for i_systime in '-DI_SYSTIME' ''; do
9859                 case "$flags" in
9860                 '') $echo $n ".$c"
9861                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9862                         if eval $compile; then
9863                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9864                                 shift
9865                                 flags="$*"
9866                                 echo " "
9867                                 $echo $n "Succeeded with $flags$c"
9868                         fi
9869                         ;;
9870                 esac
9871         done
9872         done
9873         done
9874         done
9875         done
9876         timeincl=''
9877         echo " "
9878         case "$flags" in
9879         *SYSTIMEKERNEL*) i_systimek="$define"
9880                 timeincl=`./findhdr sys/time.h`
9881                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9882         *) i_systimek="$undef";;
9883         esac
9884         case "$flags" in
9885         *I_TIME*) i_time="$define"
9886                 timeincl=`./findhdr time.h`" $timeincl"
9887                 echo "We'll include <time.h>." >&4;;
9888         *) i_time="$undef";;
9889         esac
9890         case "$flags" in
9891         *I_SYSTIME*) i_systime="$define"
9892                 timeincl=`./findhdr sys/time.h`" $timeincl"
9893                 echo "We'll include <sys/time.h>." >&4;;
9894         *) i_systime="$undef";;
9895         esac
9896         $rm -f try.c try
9897 fi
9898 : see if struct tm knows about tm_zone
9899 case "$i_systime$i_time" in
9900 *$define*) 
9901         echo " "
9902         echo "Checking to see if your struct tm has tm_zone field..." >&4
9903         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9904         eval $hasfield
9905         ;;
9906 *)      val="$undef"
9907         set d_tm_tm_zone
9908         eval $setvar
9909         ;;
9910 esac
9911 case "$d_tm_tm_zone" in
9912 "$define")      echo "Yes, it does."   ;;
9913 *)              echo "No, it doesn't." ;;
9914 esac
9915 : see if struct tm knows about tm_gmtoff
9916 case "$i_systime$i_time" in
9917 *$define*) 
9918         echo " "
9919         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9920         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9921         eval $hasfield
9922         ;;
9923 *)      val="$undef"
9924         set d_tm_tm_gmtoff
9925         eval $setvar
9926         ;;
9927 esac
9928 case "$d_tm_tm_gmtoff" in
9929 "$define")      echo "Yes, it does."   ;;
9930 *)              echo "No, it doesn't." ;;
9931 esac
9932
9933 : see if asctime_r exists
9934 set asctime_r d_asctime_r
9935 eval $inlibc
9936 case "$d_asctime_r" in
9937 "$define")
9938         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9939         case "$d_asctime_r_proto:$usethreads" in
9940         ":define")      d_asctime_r_proto=define
9941                 set d_asctime_r_proto asctime_r $hdrs
9942                 eval $hasproto ;;
9943         *)      ;;
9944         esac
9945         case "$d_asctime_r_proto" in
9946         define)
9947         case "$asctime_r_proto" in
9948         ''|0) try='char* asctime_r(const struct tm*, char*);'
9949         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9950         esac
9951         case "$asctime_r_proto" in
9952         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9953         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9954         esac
9955         case "$asctime_r_proto" in
9956         ''|0) try='int asctime_r(const struct tm*, char*);'
9957         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9958         esac
9959         case "$asctime_r_proto" in
9960         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9961         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9962         esac
9963         case "$asctime_r_proto" in
9964         ''|0)   d_asctime_r=undef
9965                 asctime_r_proto=0
9966                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9967         * )     case "$asctime_r_proto" in
9968                 REENTRANT_PROTO*) ;;
9969                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9970                 esac
9971                 echo "Prototype: $try" ;;
9972         esac
9973         ;;
9974         *)      case "$usethreads" in
9975                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9976                 esac
9977                 d_asctime_r=undef
9978                 asctime_r_proto=0
9979                 ;;
9980         esac
9981         ;;
9982 *)      asctime_r_proto=0
9983         ;;
9984 esac
9985
9986 : see if atolf exists
9987 set atolf d_atolf
9988 eval $inlibc
9989
9990 : see if atoll exists
9991 set atoll d_atoll
9992 eval $inlibc
9993
9994 : Look for GCC-style attribute format
9995 case "$d_attribute_format" in
9996 '')
9997 echo " "
9998 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
9999 $cat >attrib.c <<'EOCP'
10000 #include <stdio.h>
10001 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10002 EOCP
10003 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10004         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10005                 echo "Your C compiler doesn't support __attribute__((format))."
10006                 val="$undef"
10007         else
10008                 echo "Your C compiler supports __attribute__((format))."
10009                 val="$define"
10010         fi
10011 else
10012         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10013         val="$undef"
10014 fi
10015 ;;
10016 *) val="$d_attribute_format" ;;
10017 esac
10018 set d_attribute_format
10019 eval $setvar
10020 $rm -f attrib*
10021
10022 : Look for GCC-style attribute format with null format allowed
10023 case "$d_printf_format_null" in
10024 '') case "$d_attribute_format" in
10025     $define)
10026         echo " "
10027         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10028 $cat >attrib.c <<EOCP
10029 #include <stdio.h>
10030 #$i_stdlib I_STDLIB
10031 #ifdef I_STDLIB
10032 #include <stdlib.h>
10033 #endif
10034 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10035 int null_printf (char* pat,...) { return (int)pat; }
10036 int main () { exit(null_printf(NULL)); }
10037 EOCP
10038         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10039             : run the executable in case it produces a run-time warning
10040             if $run ./attrib >>attrib.out 2>&1; then
10041                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10042                     echo "Your C compiler doesn't allow __printf__ format to be null."
10043                     val="$undef"
10044                 else
10045                     echo "Your C compiler allows __printf__ format to be null."
10046                     val="$define"
10047                 fi
10048             else
10049             echo "Your C compiler executable failed with __printf__ format null."
10050             val="$undef"
10051         fi
10052     else
10053         echo "Your C compiler fails with __printf__ format null."
10054         val="$undef"
10055     fi
10056     ;;
10057     *)  val="$undef" ;;
10058     esac
10059 ;;
10060 *)  val="$d_printf_format_null" ;;
10061 esac
10062 set d_printf_format_null
10063 eval $setvar
10064 $rm -f attrib*
10065
10066 : Look for GCC-style attribute malloc
10067 case "$d_attribute_malloc" in
10068 '')
10069 echo " "
10070 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10071 $cat >attrib.c <<'EOCP'
10072 #include <stdio.h>
10073 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10074 EOCP
10075 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10076         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10077                 echo "Your C compiler doesn't support __attribute__((malloc))."
10078                 val="$undef"
10079         else
10080                 echo "Your C compiler supports __attribute__((malloc))."
10081                 val="$define"
10082         fi
10083 else
10084         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10085         val="$undef"
10086 fi
10087 ;;
10088 *) val="$d_attribute_malloc" ;;
10089 esac
10090 set d_attribute_malloc
10091 eval $setvar
10092 $rm -f attrib*
10093
10094 : Look for GCC-style attribute nonnull
10095 case "$d_attribute_nonnull" in
10096 '')
10097 echo " "
10098 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10099 $cat >attrib.c <<'EOCP'
10100 #include <stdio.h>
10101 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10102 EOCP
10103 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10104         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10105                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10106                 val="$undef"
10107         else
10108                 echo "Your C compiler supports __attribute__((nonnull))."
10109                 val="$define"
10110         fi
10111 else
10112         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10113         val="$undef"
10114 fi
10115 ;;
10116 *) val="$d_attribute_nonnull" ;;
10117 esac
10118 set d_attribute_nonnull
10119 eval $setvar
10120 $rm -f attrib*
10121
10122 : Look for GCC-style attribute noreturn
10123 case "$d_attribute_noreturn" in
10124 '')
10125 echo " "
10126 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10127 $cat >attrib.c <<'EOCP'
10128 #include <stdio.h>
10129 void fall_over_dead( void ) __attribute__((noreturn));
10130 EOCP
10131 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10132         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10133                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10134                 val="$undef"
10135         else
10136                 echo "Your C compiler supports __attribute__((noreturn))."
10137                 val="$define"
10138         fi
10139 else
10140         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10141         val="$undef"
10142 fi
10143 ;;
10144 *) val="$d_attribute_noreturn" ;;
10145 esac
10146 set d_attribute_noreturn
10147 eval $setvar
10148 $rm -f attrib*
10149
10150 : Look for GCC-style attribute pure
10151 case "$d_attribute_pure" in
10152 '')
10153 echo " "
10154 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10155 $cat >attrib.c <<'EOCP'
10156 #include <stdio.h>
10157 int square( int n ) __attribute__((pure));
10158 EOCP
10159 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10160         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10161                 echo "Your C compiler doesn't support __attribute__((pure))."
10162                 val="$undef"
10163         else
10164                 echo "Your C compiler supports __attribute__((pure))."
10165                 val="$define"
10166         fi
10167 else
10168         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10169         val="$undef"
10170 fi
10171 ;;
10172 *) val="$d_attribute_pure" ;;
10173 esac
10174 set d_attribute_pure
10175 eval $setvar
10176 $rm -f attrib*
10177
10178 : Look for GCC-style attribute unused
10179 case "$d_attribute_unused" in
10180 '')
10181 echo " "
10182 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10183 $cat >attrib.c <<'EOCP'
10184 #include <stdio.h>
10185 int do_something( int dummy __attribute__((unused)), int n );
10186 EOCP
10187 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10188         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10189                 echo "Your C compiler doesn't support __attribute__((unused))."
10190                 val="$undef"
10191         else
10192                 echo "Your C compiler supports __attribute__((unused))."
10193                 val="$define"
10194         fi
10195 else
10196         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10197         val="$undef"
10198 fi
10199 ;;
10200 *) val="$d_attribute_unused" ;;
10201 esac
10202 set d_attribute_unused
10203 eval $setvar
10204 $rm -f attrib*
10205
10206 : Look for GCC-style attribute warn_unused_result
10207 case "$d_attribute_warn_unused_result" in
10208 '')
10209 echo " "
10210 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10211 $cat >attrib.c <<'EOCP'
10212 #include <stdio.h>
10213 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10214 EOCP
10215 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10216         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10217                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10218                 val="$undef"
10219         else
10220                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10221                 val="$define"
10222         fi
10223 else
10224         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10225         val="$undef"
10226 fi
10227 ;;
10228 *) val="$d_attribute_warn_unused_result" ;;
10229 esac
10230 set d_attribute_warn_unused_result
10231 eval $setvar
10232 $rm -f attrib*
10233
10234 : see if bcmp exists
10235 set bcmp d_bcmp
10236 eval $inlibc
10237
10238 : see if bcopy exists
10239 set bcopy d_bcopy
10240 eval $inlibc
10241
10242 : see if getpgrp exists
10243 set getpgrp d_getpgrp
10244 eval $inlibc
10245
10246 case "$d_getpgrp" in
10247 "$define")
10248         echo " "
10249         echo "Checking to see which flavor of getpgrp is in use..."
10250         $cat >try.c <<EOP
10251 #$i_unistd I_UNISTD
10252 #include <sys/types.h>
10253 #ifdef I_UNISTD
10254 #  include <unistd.h>
10255 #endif
10256 #$i_stdlib I_STDLIB
10257 #ifdef I_STDLIB
10258 #include <stdlib.h>
10259 #endif
10260 int main()
10261 {
10262         if (getuid() == 0) {
10263                 printf("(I see you are running Configure as super-user...)\n");
10264                 setuid(1);
10265         }
10266 #ifdef TRY_BSD_PGRP
10267         if (getpgrp(1) == 0)
10268                 exit(0);
10269 #else
10270         if (getpgrp() > 0)
10271                 exit(0);
10272 #endif
10273         exit(1);
10274 }
10275 EOP
10276         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10277                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10278                 val="$define"
10279         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10280                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10281                 val="$undef"
10282         else
10283                 echo "I can't seem to compile and run the test program."
10284                 if ./usg; then
10285                         xxx="a USG one, i.e. you use getpgrp()."
10286                 else
10287                         # SVR4 systems can appear rather BSD-ish.
10288                         case "$i_unistd" in
10289                         $undef)
10290                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10291                                 val="$define"
10292                                 ;;
10293                         $define)
10294                                 xxx="probably a USG one, i.e. you use getpgrp()."
10295                                 val="$undef"
10296                                 ;;
10297                         esac
10298                 fi
10299                 echo "Assuming your getpgrp is $xxx" >&4
10300         fi
10301         ;;
10302 *) val="$undef";;
10303 esac
10304 set d_bsdgetpgrp
10305 eval $setvar
10306 $rm -f try try.*
10307
10308 : see if setpgrp exists
10309 set setpgrp d_setpgrp
10310 eval $inlibc
10311
10312 case "$d_setpgrp" in
10313 "$define")
10314         echo " "
10315         echo "Checking to see which flavor of setpgrp is in use..."
10316         $cat >try.c <<EOP
10317 #$i_unistd I_UNISTD
10318 #include <sys/types.h>
10319 #ifdef I_UNISTD
10320 #  include <unistd.h>
10321 #endif
10322 #$i_stdlib I_STDLIB
10323 #ifdef I_STDLIB
10324 #include <stdlib.h>
10325 #endif
10326 int main()
10327 {
10328         if (getuid() == 0) {
10329                 printf("(I see you are running Configure as super-user...)\n");
10330                 setuid(1);
10331         }
10332 #ifdef TRY_BSD_PGRP
10333         if (-1 == setpgrp(1, 1))
10334                 exit(0);
10335 #else
10336         if (setpgrp() != -1)
10337                 exit(0);
10338 #endif
10339         exit(1);
10340 }
10341 EOP
10342         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10343                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10344                 val="$define"
10345         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10346                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10347                 val="$undef"
10348         else
10349                 echo "(I can't seem to compile and run the test program.)"
10350                 if ./usg; then
10351                         xxx="a USG one, i.e. you use setpgrp()."
10352                 else
10353                         # SVR4 systems can appear rather BSD-ish.
10354                         case "$i_unistd" in
10355                         $undef)
10356                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10357                                 val="$define"
10358                                 ;;
10359                         $define)
10360                                 xxx="probably a USG one, i.e. you use setpgrp()."
10361                                 val="$undef"
10362                                 ;;
10363                         esac
10364                 fi
10365                 echo "Assuming your setpgrp is $xxx" >&4
10366         fi
10367         ;;
10368 *) val="$undef";;
10369 esac
10370 set d_bsdsetpgrp
10371 eval $setvar
10372 $rm -f try try.*
10373 : Look for GCC-style __builtin_choose_expr
10374 case "$d_builtin_choose_expr" in
10375 '')
10376     echo " "
10377     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10378     $cat >try.c <<'EOCP'
10379 #include <assert.h>
10380 #include <stdlib.h>
10381 #include <stdio.h>
10382
10383 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10384
10385 int main(void) {
10386     assert( SYRINX(1) == 2112 );
10387     assert( SYRINX(1) != 5150 );
10388     assert( SYRINX(0) == 5150 );
10389     assert( SYRINX(0) != 2112 );
10390     puts( "All good!" );
10391     exit(0);
10392 }
10393
10394 EOCP
10395     set try
10396     if eval $compile; then
10397         echo "Your C compiler supports __builtin_choose_expr."
10398         val="$define"
10399     else
10400         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10401         val="$undef"
10402     fi
10403 ;;
10404 *) val="$d_builtin_choose_expr" ;;
10405 esac
10406
10407 set d_builtin_choose_expr
10408 eval $setvar
10409 $rm -f try.* try core core.try.*
10410
10411 : Look for GCC-style __builtin_expect
10412 case "$d_builtin_expect" in
10413 '')
10414     echo " "
10415     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10416     $cat >builtin.c <<'EOCP'
10417 int main(void) {
10418     int n = 50;
10419     if ( __builtin_expect(n, 0) ) n = 1;
10420 }
10421 EOCP
10422     set try
10423     if eval $compile; then
10424         echo "Your C compiler supports __builtin_choose_expr."
10425         val="$define"
10426     else
10427         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10428         val="$undef"
10429     fi
10430     ;;
10431 *) val="$d_builtin_expect" ;;
10432 esac
10433
10434 set d_builtin_expect
10435 eval $setvar
10436 $rm -f try.* try core core.try.*
10437
10438 : see if bzero exists
10439 set bzero d_bzero
10440 eval $inlibc
10441
10442 : see if stdarg is available
10443 echo " "
10444 if $test `./findhdr stdarg.h`; then
10445         echo "<stdarg.h> found." >&4
10446         valstd="$define"
10447 else
10448         echo "<stdarg.h> NOT found." >&4
10449         valstd="$undef"
10450 fi
10451
10452 : see if varags is available
10453 echo " "
10454 if $test `./findhdr varargs.h`; then
10455         echo "<varargs.h> found." >&4
10456 else
10457         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10458 fi
10459
10460 : set up the varargs testing programs
10461 $cat > varargs.c <<EOP
10462 #ifdef I_STDARG
10463 #include <stdarg.h>
10464 #endif
10465 #ifdef I_VARARGS
10466 #include <varargs.h>
10467 #endif
10468
10469 #ifdef I_STDARG
10470 int f(char *p, ...)
10471 #else
10472 int f(va_alist)
10473 va_dcl
10474 #endif
10475 {
10476         va_list ap;
10477 #ifndef I_STDARG
10478         char *p;
10479 #endif
10480 #ifdef I_STDARG
10481         va_start(ap,p);
10482 #else
10483         va_start(ap);
10484         p = va_arg(ap, char *);
10485 #endif
10486         va_end(ap);
10487         return 0;
10488 }
10489 EOP
10490 $cat > varargs <<EOP
10491 $startsh
10492 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10493         echo "true"
10494 else
10495         echo "false"
10496 fi
10497 $rm -f varargs$_o
10498 EOP
10499 chmod +x varargs
10500
10501 : now check which varargs header should be included
10502 echo " "
10503 i_varhdr=''
10504 case "$valstd" in
10505 "$define")
10506         if `./varargs I_STDARG`; then
10507                 val='stdarg.h'
10508         elif `./varargs I_VARARGS`; then
10509                 val='varargs.h'
10510         fi
10511         ;;
10512 *)
10513         if `./varargs I_VARARGS`; then
10514                 val='varargs.h'
10515         fi
10516         ;;
10517 esac
10518 case "$val" in
10519 '')
10520 echo "I could not find the definition for va_dcl... You have problems..." >&4
10521         val="$undef"; set i_stdarg; eval $setvar
10522         val="$undef"; set i_varargs; eval $setvar
10523         ;;
10524 *) 
10525         set i_varhdr
10526         eval $setvar
10527         case "$i_varhdr" in
10528         stdarg.h)
10529                 val="$define"; set i_stdarg; eval $setvar
10530                 val="$undef"; set i_varargs; eval $setvar
10531                 ;;
10532         varargs.h)
10533                 val="$undef"; set i_stdarg; eval $setvar
10534                 val="$define"; set i_varargs; eval $setvar
10535                 ;;
10536         esac
10537         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10538 esac
10539 $rm -f varargs*
10540
10541 : see if the Compiler supports C99 variadic macros
10542 case "$i_stdarg$i_stdlib" in
10543     "$define$define")
10544     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10545     $cat >try.c <<EOCP
10546 #include <stdio.h>
10547 #include <stdarg.h>
10548
10549 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10550
10551 int main() {
10552   char buf[20];
10553   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10554   puts(buf);
10555   return 0;
10556 }
10557 EOCP
10558     set try
10559     if eval $compile && $run ./try 2>&1 >/dev/null; then
10560         case "`$run ./try`" in
10561             "123 456 789")
10562             echo "You have C99 variadic macros." >&4
10563             d_c99_variadic_macros="$define"
10564             ;;
10565             *)
10566             echo "You don't have functional C99 variadic macros." >&4
10567             d_c99_variadic_macros="$undef"
10568             ;;
10569         esac
10570     else
10571         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10572         d_c99_variadic_macros="$undef"
10573     fi
10574     $rm -f try.* try core core.try.*
10575     ;;
10576     *)
10577     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10578     d_c99_variadic_macros="$undef"
10579     ;;
10580 esac
10581
10582 : see if signal is declared as pointer to function returning int or void
10583 echo " "
10584 xxx=`./findhdr signal.h`
10585 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10586 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10587         echo "You have int (*signal())() instead of void." >&4
10588         val="$undef"
10589 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10590         echo "You have void (*signal())()." >&4
10591         val="$define"
10592 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10593         echo "You have int (*signal())() instead of void." >&4
10594         val="$undef"
10595 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10596         echo "You have void (*signal())()." >&4
10597         val="$define"
10598 else
10599         case "$d_voidsig" in
10600         '')
10601         echo "I can't determine whether signal handler returns void or int..." >&4
10602                 dflt=void
10603                 rp="What type does your signal handler return?"
10604                 . ./myread
10605                 case "$ans" in
10606                 v*) val="$define";;
10607                 *) val="$undef";;
10608                 esac;;
10609         "$define")
10610                 echo "As you already told me, signal handler returns void." >&4
10611                 val="$define"
10612                 ;;
10613         *)      echo "As you already told me, signal handler returns int." >&4
10614                 val="$undef"
10615                 ;;
10616         esac
10617 fi
10618 set d_voidsig
10619 eval $setvar
10620 case "$d_voidsig" in
10621 "$define") signal_t="void";;
10622 *) signal_t="int";;
10623 esac
10624 $rm -f $$.tmp
10625
10626 : check for ability to cast large floats to 32-bit ints.
10627 echo " "
10628 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10629 if $test "$intsize" -ge 4; then
10630         xxx=int
10631 else
10632         xxx=long
10633 fi
10634 $cat >try.c <<EOCP
10635 #include <stdio.h>
10636 #$i_stdlib I_STDLIB
10637 #ifdef I_STDLIB
10638 #include <stdlib.h>
10639 #endif
10640 #include <sys/types.h>
10641 #include <signal.h>
10642 $signal_t blech(int s) { exit(3); }
10643 int main()
10644 {
10645         $xxx i32;
10646         double f, g;
10647         int result = 0;
10648         char str[16];
10649         signal(SIGFPE, blech);
10650
10651         /* Don't let compiler optimize the test away.  Store the number 
10652            in a writable string for gcc to pass to sscanf under HP/UX.
10653         */
10654         sprintf(str, "2147483647");
10655         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10656         g = 10 * f;
10657         i32  = ($xxx) g;
10658
10659         /* x86 processors will probably give 0x8000 0000, which is a
10660            sign change.  We don't want that.  We want to mimic SPARC
10661            behavior here, which is to preserve the sign and give
10662            back 0x7fff ffff.
10663         */
10664         if (i32 != ($xxx) f)
10665                 result |= 1;
10666         exit(result);
10667 }
10668 EOCP
10669 set try
10670 if eval $compile_ok; then
10671         $run ./try
10672         yyy=$?
10673 else
10674         echo "(I can't seem to compile the test program--assuming it can't)"
10675         yyy=1
10676 fi
10677 case "$yyy" in
10678 0)      val="$define"
10679         echo "Yup, it can."
10680         ;;
10681 *)      val="$undef"
10682         echo "Nope, it can't."
10683         ;;
10684 esac
10685 set d_casti32
10686 eval $setvar
10687 $rm -f try try.*
10688
10689 : check for ability to cast negative floats to unsigned
10690 echo " "
10691 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10692 $cat >try.c <<EOCP
10693 #include <stdio.h>
10694 #$i_stdlib I_STDLIB
10695 #ifdef I_STDLIB
10696 #include <stdlib.h>
10697 #endif
10698 #include <sys/types.h>
10699 #include <signal.h>
10700 $signal_t blech(int s) { exit(7); }
10701 $signal_t blech_in_list(int s) { exit(4); }
10702 unsigned long dummy_long(unsigned long p) { return p; }
10703 unsigned int dummy_int(unsigned int p) { return p; }
10704 unsigned short dummy_short(unsigned short p) { return p; }
10705 int main()
10706 {
10707         double f;
10708         unsigned long along;
10709         unsigned int aint;
10710         unsigned short ashort;
10711         int result = 0;
10712         char str[16];
10713         
10714         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10715            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10716            optimized the whole file away
10717         */
10718         /* Store the number in a writable string for gcc to pass to 
10719            sscanf under HP/UX.
10720         */
10721         sprintf(str, "-123");
10722         sscanf(str, "%lf", &f);  /* f = -123.; */
10723
10724         signal(SIGFPE, blech);
10725         along = (unsigned long)f;
10726         aint = (unsigned int)f;
10727         ashort = (unsigned short)f;
10728         if (along != (unsigned long)-123)
10729                 result |= 1;
10730         if (aint != (unsigned int)-123)
10731                 result |= 1;
10732         if (ashort != (unsigned short)-123)
10733                 result |= 1;
10734         sprintf(str, "1073741824.");
10735         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10736         f = f + f;
10737         along = 0;
10738         along = (unsigned long)f;
10739         if (along != 0x80000000)
10740                 result |= 2;
10741         f -= 1.;
10742         along = 0;
10743         along = (unsigned long)f;
10744         if (along != 0x7fffffff)
10745                 result |= 1;
10746         f += 2.;
10747         along = 0;
10748         along = (unsigned long)f;
10749         if (along != 0x80000001)
10750                 result |= 2;
10751         if (result)
10752                 exit(result);
10753         signal(SIGFPE, blech_in_list);
10754         sprintf(str, "123.");
10755         sscanf(str, "%lf", &f);  /* f = 123.; */
10756         along = dummy_long((unsigned long)f);
10757         aint = dummy_int((unsigned int)f);
10758         ashort = dummy_short((unsigned short)f);
10759         if (along != (unsigned long)123)
10760                 result |= 4;
10761         if (aint != (unsigned int)123)
10762                 result |= 4;
10763         if (ashort != (unsigned short)123)
10764                 result |= 4;
10765         exit(result);
10766
10767 }
10768 EOCP
10769 set try
10770 if eval $compile_ok; then
10771         $run ./try
10772         castflags=$?
10773 else
10774         echo "(I can't seem to compile the test program--assuming it can't)"
10775         castflags=7
10776 fi
10777 case "$castflags" in
10778 0)      val="$define"
10779         echo "Yup, it can."
10780         ;;
10781 *)      val="$undef"
10782         echo "Nope, it can't."
10783         ;;
10784 esac
10785 set d_castneg
10786 eval $setvar
10787 $rm -f try.*
10788
10789 : see if vprintf exists
10790 echo " "
10791 if set vprintf val -f d_vprintf; eval $csym; $val; then
10792         echo 'vprintf() found.' >&4
10793         val="$define"
10794         $cat >try.c <<EOF
10795 #include <varargs.h>
10796 #$i_stdlib I_STDLIB
10797 #ifdef I_STDLIB
10798 #include <stdlib.h>
10799 #endif
10800
10801 int main() { xxx("foo"); }
10802
10803 xxx(va_alist)
10804 va_dcl
10805 {
10806         va_list args;
10807         char buf[10];
10808
10809         va_start(args);
10810         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10811 }
10812 EOF
10813         set try
10814         if eval $compile && $run ./try; then
10815                 echo "Your vsprintf() returns (int)." >&4
10816                 val2="$undef"
10817         else
10818                 echo "Your vsprintf() returns (char*)." >&4
10819                 val2="$define"
10820         fi
10821 else
10822         echo 'vprintf() NOT found.' >&4
10823                 val="$undef"
10824                 val2="$undef"
10825 fi
10826 $rm -f try try.*
10827 set d_vprintf
10828 eval $setvar
10829 val=$val2
10830 set d_charvspr
10831 eval $setvar
10832
10833 : see if chown exists
10834 set chown d_chown
10835 eval $inlibc
10836
10837 : see if chroot exists
10838 set chroot d_chroot
10839 eval $inlibc
10840
10841 : see if chsize exists
10842 set chsize d_chsize
10843 eval $inlibc
10844
10845 : see if class exists
10846 set class d_class
10847 eval $inlibc
10848
10849 : see if clearenv exists
10850 set clearenv d_clearenv
10851 eval $inlibc
10852
10853 hasstruct='varname=$1; struct=$2; shift; shift;
10854 while $test $# -ge 2; do
10855         case "$1" in
10856         $define) echo "#include <$2>";;
10857         esac ;
10858     shift 2;
10859 done > try.c;
10860 echo "int main () { struct $struct foo; }" >> try.c;
10861 set try;
10862 if eval $compile; then
10863         val="$define";
10864 else
10865         val="$undef";
10866 fi;
10867 set $varname;
10868 eval $setvar;
10869 $rm -f try.c try.o'
10870
10871 socketlib=''
10872 sockethdr=''
10873 : see whether socket exists
10874 echo " "
10875 $echo $n "Hmm... $c" >&4
10876 if set socket val -f d_socket; eval $csym; $val; then
10877         echo "Looks like you have Berkeley networking support." >&4
10878         d_socket="$define"
10879         if set setsockopt val -f; eval $csym; $val; then
10880                 d_oldsock="$undef"
10881         else
10882                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10883                 d_oldsock="$define"
10884         fi
10885 else
10886         if $contains socklib libc.list >/dev/null 2>&1; then
10887                 echo "Looks like you have Berkeley networking support." >&4
10888                 d_socket="$define"
10889                 : we will have to assume that it supports the 4.2 BSD interface
10890                 d_oldsock="$undef"
10891         else
10892                 echo "You don't have Berkeley networking in libc$_a..." >&4
10893                 if test "X$d_socket" = "X$define"; then
10894                    echo "...but you seem to believe that you have sockets." >&4
10895                 else
10896                         for net in net socket
10897                         do
10898                                 if test -f /usr/lib/lib$net$_a; then
10899                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10900                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10901                                         if $contains socket libc.list >/dev/null 2>&1; then
10902                                                 d_socket="$define"
10903                                                 socketlib="-l$net"
10904                                                 case "$net" in
10905                                                 net)
10906                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10907                                                         sockethdr="-I/usr/netinclude"
10908                                                         ;;
10909                                                 esac
10910                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10911                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10912                                                         d_oldsock="$undef"
10913                                                 else
10914                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10915                                                         d_oldsock="$define"
10916                                                 fi
10917                                                 break
10918                                         fi
10919                                 fi
10920                         done
10921                         if test "X$d_socket" != "X$define"; then
10922                            echo "or anywhere else I see." >&4
10923                            d_socket="$undef"
10924                            d_oldsock="$undef"
10925                         fi
10926                 fi
10927         fi
10928 fi
10929
10930 : see if socketpair exists
10931 set socketpair d_sockpair
10932 eval $inlibc
10933
10934
10935 echo " "
10936 echo "Checking the availability of certain socket constants..." >&4
10937 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10938         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10939         $cat >try.c <<EOF
10940 #include <sys/types.h>
10941 #include <sys/socket.h>
10942 int main() {
10943     int i = $ENUM;
10944 }
10945 EOF
10946         val="$undef"
10947         set try; if eval $compile; then
10948                 val="$define"
10949         fi
10950         set d_${enum}; eval $setvar
10951         $rm -f try.c try
10952 done
10953
10954 : see if this is a sys/uio.h system
10955 set sys/uio.h i_sysuio
10956 eval $inhdr
10957
10958
10959 echo " "
10960 echo "Checking to see if your system supports struct cmsghdr..." >&4
10961 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10962 eval $hasstruct
10963 case "$d_cmsghdr_s" in
10964 "$define")      echo "Yes, it does."   ;;
10965 *)              echo "No, it doesn't." ;;
10966 esac
10967
10968
10969 : check for const keyword
10970 echo " "
10971 echo 'Checking to see if your C compiler knows about "const"...' >&4
10972 $cat >const.c <<'EOCP'
10973 typedef struct spug { int drokk; } spug;
10974 int main()
10975 {
10976         const char *foo;
10977         const spug y = { 0 };
10978 }
10979 EOCP
10980 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10981         val="$define"
10982         echo "Yup, it does."
10983 else
10984         val="$undef"
10985         echo "Nope, it doesn't."
10986 fi
10987 set d_const
10988 eval $setvar
10989
10990 : see if copysignl exists
10991 set copysignl d_copysignl
10992 eval $inlibc
10993
10994 : see if crypt exists
10995 echo " "
10996 set crypt d_crypt
10997 eval $inlibc
10998 case "$d_crypt" in
10999 $define) cryptlib='' ;;
11000 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11001                 echo 'crypt() found.' >&4
11002                 val="$define"
11003                 cryptlib=''
11004         else
11005                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11006                 if $test -z "$cryptlib"; then
11007                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11008                 else
11009                         cryptlib=-lcrypt
11010                 fi
11011                 if $test -z "$cryptlib"; then
11012                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11013                 else
11014                         cryptlib=-lcrypt
11015                 fi
11016                 if $test -z "$cryptlib"; then
11017                         cryptlib=`./loc libcrypt$_a "" $libpth`
11018                 else
11019                         cryptlib=-lcrypt
11020                 fi
11021                 if $test -z "$cryptlib"; then
11022                         echo 'crypt() NOT found.' >&4
11023                         val="$undef"
11024                 else
11025                         val="$define"
11026                 fi
11027         fi
11028         set d_crypt
11029         eval $setvar
11030         ;;
11031 esac
11032
11033 : see if this is a crypt.h system
11034 set crypt.h i_crypt
11035 eval $inhdr
11036
11037 : see if crypt_r exists
11038 set crypt_r d_crypt_r
11039 eval $inlibc
11040 case "$d_crypt_r" in
11041 "$define")
11042         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11043         case "$d_crypt_r_proto:$usethreads" in
11044         ":define")      d_crypt_r_proto=define
11045                 set d_crypt_r_proto crypt_r $hdrs
11046                 eval $hasproto ;;
11047         *)      ;;
11048         esac
11049         case "$d_crypt_r_proto" in
11050         define)
11051         case "$crypt_r_proto" in
11052         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11053         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11054         esac
11055         case "$crypt_r_proto" in
11056         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11057         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11058         esac
11059         case "$crypt_r_proto" in
11060         ''|0)   d_crypt_r=undef
11061                 crypt_r_proto=0
11062                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11063         * )     case "$crypt_r_proto" in
11064                 REENTRANT_PROTO*) ;;
11065                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11066                 esac
11067                 echo "Prototype: $try" ;;
11068         esac
11069         ;;
11070         *)      case "$usethreads" in
11071                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11072                 esac
11073                 d_crypt_r=undef
11074                 crypt_r_proto=0
11075                 ;;
11076         esac
11077         ;;
11078 *)      crypt_r_proto=0
11079         ;;
11080 esac
11081
11082 : get csh whereabouts
11083 case "$csh" in
11084 'csh') val="$undef" ;;
11085 *) val="$define" ;;
11086 esac
11087 set d_csh
11088 eval $setvar
11089 : Respect a hint or command line value for full_csh.
11090 case "$full_csh" in
11091 '') full_csh=$csh ;;
11092 esac
11093
11094 : see if ctermid exists
11095 set ctermid d_ctermid
11096 eval $inlibc
11097
11098 : see if ctermid_r exists
11099 set ctermid_r d_ctermid_r
11100 eval $inlibc
11101 case "$d_ctermid_r" in
11102 "$define")
11103         hdrs="$i_systypes sys/types.h define stdio.h "
11104         case "$d_ctermid_r_proto:$usethreads" in
11105         ":define")      d_ctermid_r_proto=define
11106                 set d_ctermid_r_proto ctermid_r $hdrs
11107                 eval $hasproto ;;
11108         *)      ;;
11109         esac
11110         case "$d_ctermid_r_proto" in
11111         define)
11112         case "$ctermid_r_proto" in
11113         ''|0) try='char* ctermid_r(char*);'
11114         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11115         esac
11116         case "$ctermid_r_proto" in
11117         ''|0)   d_ctermid_r=undef
11118                 ctermid_r_proto=0
11119                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11120         * )     case "$ctermid_r_proto" in
11121                 REENTRANT_PROTO*) ;;
11122                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11123                 esac
11124                 echo "Prototype: $try" ;;
11125         esac
11126         ;;
11127         *)      case "$usethreads" in
11128                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11129                 esac
11130                 d_ctermid_r=undef
11131                 ctermid_r_proto=0
11132                 ;;
11133         esac
11134         ;;
11135 *)      ctermid_r_proto=0
11136         ;;
11137 esac
11138
11139 : see if ctime_r exists
11140 set ctime_r d_ctime_r
11141 eval $inlibc
11142 case "$d_ctime_r" in
11143 "$define")
11144         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11145         case "$d_ctime_r_proto:$usethreads" in
11146         ":define")      d_ctime_r_proto=define
11147                 set d_ctime_r_proto ctime_r $hdrs
11148                 eval $hasproto ;;
11149         *)      ;;
11150         esac
11151         case "$d_ctime_r_proto" in
11152         define)
11153         case "$ctime_r_proto" in
11154         ''|0) try='char* ctime_r(const time_t*, char*);'
11155         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11156         esac
11157         case "$ctime_r_proto" in
11158         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11159         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11160         esac
11161         case "$ctime_r_proto" in
11162         ''|0) try='int ctime_r(const time_t*, char*);'
11163         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11164         esac
11165         case "$ctime_r_proto" in
11166         ''|0) try='int ctime_r(const time_t*, char*, int);'
11167         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11168         esac
11169         case "$ctime_r_proto" in
11170         ''|0)   d_ctime_r=undef
11171                 ctime_r_proto=0
11172                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11173         * )     case "$ctime_r_proto" in
11174                 REENTRANT_PROTO*) ;;
11175                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11176                 esac
11177                 echo "Prototype: $try" ;;
11178         esac
11179         ;;
11180         *)      case "$usethreads" in
11181                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11182                 esac
11183                 d_ctime_r=undef
11184                 ctime_r_proto=0
11185                 ;;
11186         esac
11187         ;;
11188 *)      ctime_r_proto=0
11189         ;;
11190 esac
11191
11192 : see if cuserid exists
11193 set cuserid d_cuserid
11194 eval $inlibc
11195
11196 : see if this is a limits.h system
11197 set limits.h i_limits
11198 eval $inhdr
11199
11200 : see if this is a float.h system
11201 set float.h i_float
11202 eval $inhdr
11203
11204 : See if number of significant digits in a double precision number is known
11205 echo " "
11206 $cat >dbl_dig.c <<EOM
11207 #$i_limits I_LIMITS
11208 #$i_float I_FLOAT
11209 #ifdef I_LIMITS
11210 #include <limits.h>
11211 #endif
11212 #ifdef I_FLOAT
11213 #include <float.h>
11214 #endif
11215 #ifdef DBL_DIG
11216 printf("Contains DBL_DIG");
11217 #endif
11218 EOM
11219 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11220 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11221         echo "DBL_DIG found." >&4
11222         val="$define"
11223 else
11224         echo "DBL_DIG NOT found." >&4
11225         val="$undef"
11226 fi
11227 $rm -f dbl_dig.?
11228 set d_dbl_dig
11229 eval $setvar
11230
11231 : see if dbm.h is available
11232 : see if dbmclose exists
11233 set dbmclose d_dbmclose
11234 eval $inlibc
11235
11236 case "$d_dbmclose" in
11237 $define)
11238         set dbm.h i_dbm
11239         eval $inhdr
11240         case "$i_dbm" in
11241         $define)
11242                 val="$undef"
11243                 set i_rpcsvcdbm
11244                 eval $setvar
11245                 ;;
11246         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11247                 eval $inhdr
11248                 ;;
11249         esac
11250         ;;
11251 *)      echo "We won't be including <dbm.h>"
11252         val="$undef"
11253         set i_dbm
11254         eval $setvar
11255         val="$undef"
11256         set i_rpcsvcdbm
11257         eval $setvar
11258         ;;
11259 esac
11260
11261 : see if prototype for dbminit is available
11262 echo " "
11263 set d_dbminitproto dbminit $i_dbm dbm.h
11264 eval $hasproto
11265
11266 : see if difftime exists
11267 set difftime d_difftime
11268 eval $inlibc
11269
11270 : see if this is a dirent system
11271 echo " "
11272 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11273         val="$define"
11274         echo "<dirent.h> found." >&4
11275 else
11276         val="$undef"
11277         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11278                 echo "<sys/dir.h> found." >&4
11279                 echo " "
11280         else
11281                 xinc=`./findhdr sys/ndir.h`
11282         fi
11283         echo "<dirent.h> NOT found." >&4
11284 fi
11285 set i_dirent
11286 eval $setvar
11287
11288 : Look for type of directory structure.
11289 echo " "
11290 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11291
11292 case "$direntrytype" in
11293 ''|' ')
11294         case "$i_dirent" in
11295         $define) guess1='struct dirent' ;;
11296         *) guess1='struct direct'  ;;
11297         esac
11298         ;;
11299 *)      guess1="$direntrytype"
11300         ;;
11301 esac
11302
11303 case "$guess1" in
11304 'struct dirent') guess2='struct direct' ;;
11305 *) guess2='struct dirent' ;;
11306 esac
11307                 
11308 if $contains "$guess1" try.c >/dev/null 2>&1; then
11309         direntrytype="$guess1"
11310         echo "Your directory entries are $direntrytype." >&4
11311 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11312         direntrytype="$guess2"
11313         echo "Your directory entries seem to be $direntrytype." >&4
11314 else
11315         echo "I don't recognize your system's directory entries." >&4
11316         rp="What type is used for directory entries on this system?"
11317         dflt="$guess1"
11318         . ./myread
11319         direntrytype="$ans"
11320 fi
11321 $rm -f try.c
11322
11323
11324 : see if the directory entry stores field length
11325 echo " "
11326 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11327 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11328         echo "Good, your directory entry keeps length information in d_namlen." >&4
11329         val="$define"
11330 else
11331         echo "Your directory entry does not know about the d_namlen field." >&4
11332         val="$undef"
11333 fi
11334 set d_dirnamlen
11335 eval $setvar
11336 $rm -f try.c
11337
11338 : Look for DIR.dd_fd
11339 case "$i_dirent" in
11340 "$define")
11341     echo "Checking to see if DIR has a dd_fd member variable" >&4
11342     $cat >try.c <<EOCP
11343 #$i_stdlib I_STDLIB
11344 #ifdef I_STDLIB
11345 #include <stdlib.h>
11346 #endif
11347 #include <dirent.h>
11348
11349 int main() {
11350     DIR dir;
11351     dir.dd_fd = 1;
11352     return 0;
11353 }
11354 EOCP
11355     val=$undef
11356     set try
11357     if eval $compile; then
11358         echo "Yes, it does."
11359         val="$define"
11360     else
11361         echo "No, it does not."
11362         val="$undef"
11363     fi
11364     ;;
11365 *)
11366     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11367     val="$undef"
11368     ;;
11369 esac
11370 set d_dir_dd_fd
11371 eval $setvar
11372 $rm -f try try.*
11373
11374 : see if this is an sysdir system
11375 set sys/dir.h i_sysdir
11376 eval $inhdr
11377
11378 : see if this is an sysndir system
11379 set sys/ndir.h i_sysndir
11380 eval $inhdr
11381
11382 : Look for dirfd
11383 echo " "
11384 $cat >dirfd.c <<EOM
11385 #include <stdio.h>
11386 #$i_stdlib I_STDLIB
11387 #ifdef I_STDLIB
11388 #include <stdlib.h>
11389 #endif
11390 #$i_dirent I_DIRENT             /**/
11391 #$i_sysdir I_SYS_DIR            /**/
11392 #$i_sysndir I_SYS_NDIR          /**/
11393 #$i_systypes I_SYS_TYPES        /**/
11394 #if defined(I_SYS_TYPES)
11395 #include <sys/types.h>
11396 #endif
11397 #if defined(I_DIRENT)
11398 #include <dirent.h>
11399 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11400 #include <sys/dir.h>
11401 #endif
11402 #else
11403 #ifdef I_SYS_NDIR
11404 #include <sys/ndir.h>
11405 #else
11406 #ifdef I_SYS_DIR
11407 #ifdef hp9000s500
11408 #include <ndir.h>       /* may be wrong in the future */
11409 #else
11410 #include <sys/dir.h>
11411 #endif
11412 #endif
11413 #endif
11414 #endif 
11415 int main() {
11416         DIR *dirp = opendir(".");
11417         if (dirfd(dirp) >= 0)
11418                 exit(0);
11419         else
11420                 exit(1);
11421 }
11422 EOM
11423 val=$undef
11424 set dirfd
11425 if eval $compile; then
11426         val="$define"
11427 fi
11428 case "$val" in
11429 $define)        echo "dirfd() found." >&4       ;;
11430 *)              echo "dirfd() NOT found." >&4   ;;
11431 esac
11432 set d_dirfd
11433 eval $setvar
11434 $rm -f dirfd*
11435
11436 : see if dlerror exists
11437 xxx_runnm="$runnm"
11438 runnm=false
11439 set dlerror d_dlerror
11440 eval $inlibc
11441 runnm="$xxx_runnm"
11442
11443 : see if dlfcn is available
11444 set dlfcn.h i_dlfcn
11445 eval $inhdr
11446
11447 case "$usedl" in
11448 $define|y|true)
11449         $cat << EOM
11450
11451 On a few systems, the dynamically loaded modules that perl generates and uses
11452 will need a different extension than shared libs. The default will probably
11453 be appropriate.
11454
11455 EOM
11456         case "$dlext" in
11457         '')     dflt="$so" ;;
11458         *)      dflt="$dlext" ;;
11459         esac
11460         rp='What is the extension of dynamically loaded modules'
11461         . ./myread
11462         dlext="$ans"
11463         ;;
11464 *)
11465         dlext="none"
11466         ;;
11467 esac
11468
11469 : Check if dlsym need a leading underscore
11470 echo " "
11471 val="$undef"
11472
11473 case "$dlsrc" in
11474 dl_dlopen.xs)
11475         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11476         $cat >dyna.c <<'EOM'
11477 fred () { }
11478 EOM
11479
11480 $cat >fred.c<<EOM
11481
11482 #include <stdio.h>
11483 #$i_stdlib I_STDLIB
11484 #ifdef I_STDLIB
11485 #include <stdlib.h>
11486 #endif
11487 #$i_dlfcn I_DLFCN
11488 #ifdef I_DLFCN
11489 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11490 #else
11491 #include <sys/types.h>
11492 #include <nlist.h>
11493 #include <link.h>
11494 #endif
11495
11496 extern int fred() ;
11497
11498 int main()
11499 {
11500     void * handle ;
11501     void * symbol ;
11502 #ifndef RTLD_LAZY
11503     int mode = 1 ;
11504 #else
11505     int mode = RTLD_LAZY ;
11506 #endif
11507     handle = dlopen("./dyna.$dlext", mode) ;
11508     if (handle == NULL) {
11509         printf ("1\n") ;
11510         fflush (stdout) ;
11511         exit(0);
11512     }
11513     symbol = dlsym(handle, "fred") ;
11514     if (symbol == NULL) {
11515         /* try putting a leading underscore */
11516         symbol = dlsym(handle, "_fred") ;
11517         if (symbol == NULL) {
11518             printf ("2\n") ;
11519             fflush (stdout) ;
11520             exit(0);
11521         }
11522         printf ("3\n") ;
11523     }
11524     else
11525         printf ("4\n") ;
11526     fflush (stdout) ;
11527     exit(0);
11528 }
11529 EOM
11530         : Call the object file tmp-dyna.o in case dlext=o.
11531         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
11532                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
11533                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
11534                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11535                 xxx=`$run ./fred`
11536                 case $xxx in
11537                 1)      echo "Test program failed using dlopen." >&4
11538                         echo "Perhaps you should not use dynamic loading." >&4;;
11539                 2)      echo "Test program failed using dlsym." >&4
11540                         echo "Perhaps you should not use dynamic loading." >&4;;
11541                 3)      echo "dlsym needs a leading underscore" >&4
11542                         val="$define" ;;
11543                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11544                 esac
11545         else
11546                 echo "I can't compile and run the test program." >&4
11547                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11548         fi
11549         ;;
11550 esac
11551                 
11552 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11553
11554 set d_dlsymun
11555 eval $setvar
11556
11557 : see if drand48_r exists
11558 set drand48_r d_drand48_r
11559 eval $inlibc
11560 case "$d_drand48_r" in
11561 "$define")
11562         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11563         case "$d_drand48_r_proto:$usethreads" in
11564         ":define")      d_drand48_r_proto=define
11565                 set d_drand48_r_proto drand48_r $hdrs
11566                 eval $hasproto ;;
11567         *)      ;;
11568         esac
11569         case "$d_drand48_r_proto" in
11570         define)
11571         case "$drand48_r_proto" in
11572         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11573         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11574         esac
11575         case "$drand48_r_proto" in
11576         ''|0)   d_drand48_r=undef
11577                 drand48_r_proto=0
11578                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11579         * )     case "$drand48_r_proto" in
11580                 REENTRANT_PROTO*) ;;
11581                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11582                 esac
11583                 echo "Prototype: $try" ;;
11584         esac
11585         ;;
11586         *)      case "$usethreads" in
11587                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11588                 esac
11589                 d_drand48_r=undef
11590                 drand48_r_proto=0
11591                 ;;
11592         esac
11593         ;;
11594 *)      drand48_r_proto=0
11595         ;;
11596 esac
11597
11598 : see if prototype for drand48 is available
11599 echo " "
11600 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11601 eval $hasproto
11602
11603 : see if dup2 exists
11604 set dup2 d_dup2
11605 eval $inlibc
11606
11607 : see if eaccess exists
11608 set eaccess d_eaccess
11609 eval $inlibc
11610
11611 : see if endgrent exists
11612 set endgrent d_endgrent
11613 eval $inlibc
11614
11615 : see if this is an grp system
11616 set grp.h i_grp
11617 eval $inhdr
11618
11619 case "$i_grp" in
11620 $define)
11621         xxx=`./findhdr grp.h`
11622         $cppstdin $cppflags $cppminus < $xxx >$$.h
11623
11624         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11625                 val="$define"
11626         else
11627                 val="$undef"
11628         fi
11629         set d_grpasswd
11630         eval $setvar
11631
11632         $rm -f $$.h
11633         ;;
11634 *)
11635         val="$undef";
11636         set d_grpasswd; eval $setvar
11637         ;;
11638 esac
11639
11640 : see if endgrent_r exists
11641 set endgrent_r d_endgrent_r
11642 eval $inlibc
11643 case "$d_endgrent_r" in
11644 "$define")
11645         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11646         case "$d_endgrent_r_proto:$usethreads" in
11647         ":define")      d_endgrent_r_proto=define
11648                 set d_endgrent_r_proto endgrent_r $hdrs
11649                 eval $hasproto ;;
11650         *)      ;;
11651         esac
11652         case "$d_endgrent_r_proto" in
11653         define)
11654         case "$endgrent_r_proto" in
11655         ''|0) try='int endgrent_r(FILE**);'
11656         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11657         esac
11658         case "$endgrent_r_proto" in
11659         ''|0) try='void endgrent_r(FILE**);'
11660         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11661         esac
11662         case "$endgrent_r_proto" in
11663         ''|0)   d_endgrent_r=undef
11664                 endgrent_r_proto=0
11665                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11666         * )     case "$endgrent_r_proto" in
11667                 REENTRANT_PROTO*) ;;
11668                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11669                 esac
11670                 echo "Prototype: $try" ;;
11671         esac
11672         ;;
11673         *)      case "$usethreads" in
11674                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11675                 esac
11676                 d_endgrent_r=undef
11677                 endgrent_r_proto=0
11678                 ;;
11679         esac
11680         ;;
11681 *)      endgrent_r_proto=0
11682         ;;
11683 esac
11684
11685 : see if endhostent exists
11686 set endhostent d_endhent
11687 eval $inlibc
11688
11689 : see if this is a netdb.h system
11690 set netdb.h i_netdb
11691 eval $inhdr
11692
11693 : see if endhostent_r exists
11694 set endhostent_r d_endhostent_r
11695 eval $inlibc
11696 case "$d_endhostent_r" in
11697 "$define")
11698         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11699         case "$d_endhostent_r_proto:$usethreads" in
11700         ":define")      d_endhostent_r_proto=define
11701                 set d_endhostent_r_proto endhostent_r $hdrs
11702                 eval $hasproto ;;
11703         *)      ;;
11704         esac
11705         case "$d_endhostent_r_proto" in
11706         define)
11707         case "$endhostent_r_proto" in
11708         ''|0) try='int endhostent_r(struct hostent_data*);'
11709         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11710         esac
11711         case "$endhostent_r_proto" in
11712         ''|0) try='void endhostent_r(struct hostent_data*);'
11713         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11714         esac
11715         case "$endhostent_r_proto" in
11716         ''|0)   d_endhostent_r=undef
11717                 endhostent_r_proto=0
11718                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11719         * )     case "$endhostent_r_proto" in
11720                 REENTRANT_PROTO*) ;;
11721                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11722                 esac
11723                 echo "Prototype: $try" ;;
11724         esac
11725         ;;
11726         *)      case "$usethreads" in
11727                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11728                 esac
11729                 d_endhostent_r=undef
11730                 endhostent_r_proto=0
11731                 ;;
11732         esac
11733         ;;
11734 *)      endhostent_r_proto=0
11735         ;;
11736 esac
11737
11738 : see if endnetent exists
11739 set endnetent d_endnent
11740 eval $inlibc
11741
11742 : see if endnetent_r exists
11743 set endnetent_r d_endnetent_r
11744 eval $inlibc
11745 case "$d_endnetent_r" in
11746 "$define")
11747         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11748         case "$d_endnetent_r_proto:$usethreads" in
11749         ":define")      d_endnetent_r_proto=define
11750                 set d_endnetent_r_proto endnetent_r $hdrs
11751                 eval $hasproto ;;
11752         *)      ;;
11753         esac
11754         case "$d_endnetent_r_proto" in
11755         define)
11756         case "$endnetent_r_proto" in
11757         ''|0) try='int endnetent_r(struct netent_data*);'
11758         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11759         esac
11760         case "$endnetent_r_proto" in
11761         ''|0) try='void endnetent_r(struct netent_data*);'
11762         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11763         esac
11764         case "$endnetent_r_proto" in
11765         ''|0)   d_endnetent_r=undef
11766                 endnetent_r_proto=0
11767                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11768         * )     case "$endnetent_r_proto" in
11769                 REENTRANT_PROTO*) ;;
11770                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11771                 esac
11772                 echo "Prototype: $try" ;;
11773         esac
11774         ;;
11775         *)      case "$usethreads" in
11776                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11777                 esac
11778                 d_endnetent_r=undef
11779                 endnetent_r_proto=0
11780                 ;;
11781         esac
11782         ;;
11783 *)      endnetent_r_proto=0
11784         ;;
11785 esac
11786
11787 : see if endprotoent exists
11788 set endprotoent d_endpent
11789 eval $inlibc
11790
11791 : see if endprotoent_r exists
11792 set endprotoent_r d_endprotoent_r
11793 eval $inlibc
11794 case "$d_endprotoent_r" in
11795 "$define")
11796         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11797         case "$d_endprotoent_r_proto:$usethreads" in
11798         ":define")      d_endprotoent_r_proto=define
11799                 set d_endprotoent_r_proto endprotoent_r $hdrs
11800                 eval $hasproto ;;
11801         *)      ;;
11802         esac
11803         case "$d_endprotoent_r_proto" in
11804         define)
11805         case "$endprotoent_r_proto" in
11806         ''|0) try='int endprotoent_r(struct protoent_data*);'
11807         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11808         esac
11809         case "$endprotoent_r_proto" in
11810         ''|0) try='void endprotoent_r(struct protoent_data*);'
11811         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11812         esac
11813         case "$endprotoent_r_proto" in
11814         ''|0)   d_endprotoent_r=undef
11815                 endprotoent_r_proto=0
11816                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11817         * )     case "$endprotoent_r_proto" in
11818                 REENTRANT_PROTO*) ;;
11819                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11820                 esac
11821                 echo "Prototype: $try" ;;
11822         esac
11823         ;;
11824         *)      case "$usethreads" in
11825                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11826                 esac
11827                 d_endprotoent_r=undef
11828                 endprotoent_r_proto=0
11829                 ;;
11830         esac
11831         ;;
11832 *)      endprotoent_r_proto=0
11833         ;;
11834 esac
11835
11836 : see if endpwent exists
11837 set endpwent d_endpwent
11838 eval $inlibc
11839
11840 : see if this is a pwd.h system
11841 set pwd.h i_pwd
11842 eval $inhdr
11843
11844 case "$i_pwd" in
11845 $define)
11846         xxx=`./findhdr pwd.h`
11847         $cppstdin $cppflags $cppminus < $xxx >$$.h
11848
11849         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11850                 val="$define"
11851         else
11852                 val="$undef"
11853         fi
11854         set d_pwquota
11855         eval $setvar
11856
11857         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11858                 val="$define"
11859         else
11860                 val="$undef"
11861         fi
11862         set d_pwage
11863         eval $setvar
11864
11865         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11866                 val="$define"
11867         else
11868                 val="$undef"
11869         fi
11870         set d_pwchange
11871         eval $setvar
11872
11873         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11874                 val="$define"
11875         else
11876                 val="$undef"
11877         fi
11878         set d_pwclass
11879         eval $setvar
11880
11881         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11882                 val="$define"
11883         else
11884                 val="$undef"
11885         fi
11886         set d_pwexpire
11887         eval $setvar
11888
11889         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11890                 val="$define"
11891         else
11892                 val="$undef"
11893         fi
11894         set d_pwcomment
11895         eval $setvar
11896
11897         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11898                 val="$define"
11899         else
11900                 val="$undef"
11901         fi
11902         set d_pwgecos
11903         eval $setvar
11904
11905         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11906                 val="$define"
11907         else
11908                 val="$undef"
11909         fi
11910         set d_pwpasswd
11911         eval $setvar
11912
11913         $rm -f $$.h
11914         ;;
11915 *)
11916         val="$undef"; 
11917         set d_pwquota; eval $setvar
11918         set d_pwage; eval $setvar
11919         set d_pwchange; eval $setvar
11920         set d_pwclass; eval $setvar
11921         set d_pwexpire; eval $setvar
11922         set d_pwcomment; eval $setvar
11923         set d_pwgecos; eval $setvar
11924         set d_pwpasswd; eval $setvar
11925         ;;
11926 esac
11927
11928 : see if endpwent_r exists
11929 set endpwent_r d_endpwent_r
11930 eval $inlibc
11931 case "$d_endpwent_r" in
11932 "$define")
11933         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11934         case "$d_endpwent_r_proto:$usethreads" in
11935         ":define")      d_endpwent_r_proto=define
11936                 set d_endpwent_r_proto endpwent_r $hdrs
11937                 eval $hasproto ;;
11938         *)      ;;
11939         esac
11940         case "$d_endpwent_r_proto" in
11941         define)
11942         case "$endpwent_r_proto" in
11943         ''|0) try='int endpwent_r(FILE**);'
11944         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11945         esac
11946         case "$endpwent_r_proto" in
11947         ''|0) try='void endpwent_r(FILE**);'
11948         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11949         esac
11950         case "$endpwent_r_proto" in
11951         ''|0)   d_endpwent_r=undef
11952                 endpwent_r_proto=0
11953                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11954         * )     case "$endpwent_r_proto" in
11955                 REENTRANT_PROTO*) ;;
11956                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11957                 esac
11958                 echo "Prototype: $try" ;;
11959         esac
11960         ;;
11961         *)      case "$usethreads" in
11962                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11963                 esac
11964                 d_endpwent_r=undef
11965                 endpwent_r_proto=0
11966                 ;;
11967         esac
11968         ;;
11969 *)      endpwent_r_proto=0
11970         ;;
11971 esac
11972
11973 : see if endservent exists
11974 set endservent d_endsent
11975 eval $inlibc
11976
11977 : see if endservent_r exists
11978 set endservent_r d_endservent_r
11979 eval $inlibc
11980 case "$d_endservent_r" in
11981 "$define")
11982         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11983         case "$d_endservent_r_proto:$usethreads" in
11984         ":define")      d_endservent_r_proto=define
11985                 set d_endservent_r_proto endservent_r $hdrs
11986                 eval $hasproto ;;
11987         *)      ;;
11988         esac
11989         case "$d_endservent_r_proto" in
11990         define)
11991         case "$endservent_r_proto" in
11992         ''|0) try='int endservent_r(struct servent_data*);'
11993         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11994         esac
11995         case "$endservent_r_proto" in
11996         ''|0) try='void endservent_r(struct servent_data*);'
11997         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11998         esac
11999         case "$endservent_r_proto" in
12000         ''|0)   d_endservent_r=undef
12001                 endservent_r_proto=0
12002                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12003         * )     case "$endservent_r_proto" in
12004                 REENTRANT_PROTO*) ;;
12005                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12006                 esac
12007                 echo "Prototype: $try" ;;
12008         esac
12009         ;;
12010         *)      case "$usethreads" in
12011                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12012                 esac
12013                 d_endservent_r=undef
12014                 endservent_r_proto=0
12015                 ;;
12016         esac
12017         ;;
12018 *)      endservent_r_proto=0
12019         ;;
12020 esac
12021
12022 : Locate the flags for 'open()'
12023 echo " "
12024 $cat >try.c <<EOCP
12025 #include <sys/types.h>
12026 #ifdef I_FCNTL
12027 #include <fcntl.h>
12028 #endif
12029 #ifdef I_SYS_FILE
12030 #include <sys/file.h>
12031 #endif
12032 #$i_stdlib I_STDLIB
12033 #ifdef I_STDLIB
12034 #include <stdlib.h>
12035 #endif
12036 int main() {
12037         if(O_RDONLY);
12038 #ifdef O_TRUNC
12039         exit(0);
12040 #else
12041         exit(1);
12042 #endif
12043 }
12044 EOCP
12045 : check sys/file.h first to get FREAD on Sun
12046 if $test `./findhdr sys/file.h` && \
12047                 set try -DI_SYS_FILE && eval $compile; then
12048         h_sysfile=true;
12049         echo "<sys/file.h> defines the O_* constants..." >&4
12050         if $run ./try; then
12051                 echo "and you have the 3 argument form of open()." >&4
12052                 val="$define"
12053         else
12054                 echo "but not the 3 argument form of open().  Oh, well." >&4
12055                 val="$undef"
12056         fi
12057 elif $test `./findhdr fcntl.h` && \
12058                 set try -DI_FCNTL && eval $compile; then
12059         h_fcntl=true;
12060         echo "<fcntl.h> defines the O_* constants..." >&4
12061         if $run ./try; then
12062                 echo "and you have the 3 argument form of open()." >&4
12063                 val="$define"
12064         else
12065                 echo "but not the 3 argument form of open().  Oh, well." >&4
12066                 val="$undef"
12067         fi
12068 else
12069         val="$undef"
12070         echo "I can't find the O_* constant definitions!  You got problems." >&4
12071 fi
12072 set d_open3
12073 eval $setvar
12074 $rm -f try try.*
12075
12076 : see which of string.h or strings.h is needed
12077 echo " "
12078 strings=`./findhdr string.h`
12079 if $test "$strings" && $test -r "$strings"; then
12080         echo "Using <string.h> instead of <strings.h>." >&4
12081         val="$define"
12082 else
12083         val="$undef"
12084         strings=`./findhdr strings.h`
12085         if $test "$strings" && $test -r "$strings"; then
12086                 echo "Using <strings.h> instead of <string.h>." >&4
12087         else
12088                 echo "No string header found -- You'll surely have problems." >&4
12089         fi
12090 fi
12091 set i_string
12092 eval $setvar
12093 case "$i_string" in
12094 "$undef") strings=`./findhdr strings.h`;;
12095 *)        strings=`./findhdr string.h`;;
12096 esac
12097
12098 : see if this is a sys/file.h system
12099 val=''
12100 set sys/file.h val
12101 eval $inhdr
12102
12103 : do we need to include sys/file.h ?
12104 case "$val" in
12105 "$define")
12106         echo " "
12107         if $h_sysfile; then
12108                 val="$define"
12109                 echo "We'll be including <sys/file.h>." >&4
12110         else
12111                 val="$undef"
12112                 echo "We won't be including <sys/file.h>." >&4
12113         fi
12114         ;;
12115 *)
12116         h_sysfile=false
12117         ;;
12118 esac
12119 set i_sysfile
12120 eval $setvar
12121
12122 : see if fcntl.h is there
12123 val=''
12124 set fcntl.h val
12125 eval $inhdr
12126
12127 : see if we can include fcntl.h
12128 case "$val" in
12129 "$define")
12130         echo " "
12131         if $h_fcntl; then
12132                 val="$define"
12133                 echo "We'll be including <fcntl.h>." >&4
12134         else
12135                 val="$undef"
12136                 if $h_sysfile; then
12137         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12138                 else
12139                         echo "We won't be including <fcntl.h>." >&4
12140                 fi
12141         fi
12142         ;;
12143 *)
12144         h_fcntl=false
12145         val="$undef"
12146         ;;
12147 esac
12148 set i_fcntl
12149 eval $setvar
12150
12151 : check for non-blocking I/O stuff
12152 case "$h_sysfile" in
12153 true) echo "#include <sys/file.h>" > head.c;;
12154 *)
12155        case "$h_fcntl" in
12156        true) echo "#include <fcntl.h>" > head.c;;
12157        *) echo "#include <sys/fcntl.h>" > head.c;;
12158        esac
12159        ;;
12160 esac
12161 echo " "
12162 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12163 case "$o_nonblock" in
12164 '')
12165         $cat head.c > try.c
12166         $cat >>try.c <<EOCP
12167 #include <stdio.h>
12168 #$i_stdlib I_STDLIB
12169 #ifdef I_STDLIB
12170 #include <stdlib.h>
12171 #endif
12172 #$i_fcntl I_FCNTL
12173 #ifdef I_FCNTL
12174 #include <fcntl.h>
12175 #endif
12176 int main() {
12177 #ifdef O_NONBLOCK
12178         printf("O_NONBLOCK\n");
12179         exit(0);
12180 #endif
12181 #ifdef O_NDELAY
12182         printf("O_NDELAY\n");
12183         exit(0);
12184 #endif
12185 #ifdef FNDELAY
12186         printf("FNDELAY\n");
12187         exit(0);
12188 #endif
12189         exit(0);
12190 }
12191 EOCP
12192         set try
12193         if eval $compile_ok; then
12194                 o_nonblock=`$run ./try`
12195                 case "$o_nonblock" in
12196                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12197                 *) echo "Seems like we can use $o_nonblock.";;
12198                 esac
12199         else
12200                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12201         fi
12202         ;;
12203 *) echo "Using $hint value $o_nonblock.";;
12204 esac
12205 $rm -f try try.* .out core
12206
12207 echo " "
12208 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12209 case "$eagain" in
12210 '')
12211         $cat head.c > try.c
12212         $cat >>try.c <<EOCP
12213 #include <errno.h>
12214 #include <sys/types.h>
12215 #include <signal.h>
12216 #include <stdio.h> 
12217 #$i_stdlib I_STDLIB
12218 #ifdef I_STDLIB
12219 #include <stdlib.h>
12220 #endif
12221 #$i_fcntl I_FCNTL
12222 #ifdef I_FCNTL
12223 #include <fcntl.h>
12224 #endif
12225 #define MY_O_NONBLOCK $o_nonblock
12226 #ifndef errno  /* XXX need better Configure test */
12227 extern int errno;
12228 #endif
12229 #$i_unistd I_UNISTD
12230 #ifdef I_UNISTD
12231 #include <unistd.h>
12232 #endif
12233 #$i_string I_STRING
12234 #ifdef I_STRING
12235 #include <string.h>
12236 #else
12237 #include <strings.h>
12238 #endif
12239 $signal_t blech(int x) { exit(3); }
12240 EOCP
12241         $cat >> try.c <<'EOCP'
12242 int main()
12243 {
12244         int pd[2];
12245         int pu[2];
12246         char buf[1];
12247         char string[100];
12248
12249         pipe(pd);       /* Down: child -> parent */
12250         pipe(pu);       /* Up: parent -> child */
12251         if (0 != fork()) {
12252                 int ret;
12253                 close(pd[1]);   /* Parent reads from pd[0] */
12254                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12255 #ifdef F_SETFL
12256                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12257                         exit(1);
12258 #else
12259                 exit(4);
12260 #endif
12261                 signal(SIGALRM, blech);
12262                 alarm(5);
12263                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12264                         exit(2);
12265                 sprintf(string, "%d\n", ret);
12266                 write(2, string, strlen(string));
12267                 alarm(0);
12268 #ifdef EAGAIN
12269                 if (errno == EAGAIN) {
12270                         printf("EAGAIN\n");
12271                         goto ok;
12272                 }
12273 #endif
12274 #ifdef EWOULDBLOCK
12275                 if (errno == EWOULDBLOCK)
12276                         printf("EWOULDBLOCK\n");
12277 #endif
12278         ok:
12279                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12280                 sleep(2);                               /* Give it time to close our pipe */
12281                 alarm(5);
12282                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12283                 alarm(0);
12284                 sprintf(string, "%d\n", ret);
12285                 write(4, string, strlen(string));
12286                 exit(0);
12287         }
12288
12289         close(pd[0]);                   /* We write to pd[1] */
12290         close(pu[1]);                   /* We read from pu[0] */
12291         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12292         close(pd[1]);                   /* Pipe pd is now fully closed! */
12293         exit(0);                                /* Bye bye, thank you for playing! */
12294 }
12295 EOCP
12296         set try
12297         if eval $compile_ok; then
12298                 echo "$startsh" >mtry
12299                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12300                 chmod +x mtry
12301                 ./mtry >/dev/null 2>&1
12302                 case $? in
12303                 0) eagain=`$cat try.out`;;
12304                 1) echo "Could not perform non-blocking setting!";;
12305                 2) echo "I did a successful read() for something that was not there!";;
12306                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12307                 4) echo "Could not find F_SETFL!";;
12308                 *) echo "Something terribly wrong happened during testing.";;
12309                 esac
12310                 rd_nodata=`$cat try.ret`
12311                 echo "A read() system call with no data present returns $rd_nodata."
12312                 case "$rd_nodata" in
12313                 0|-1) ;;
12314                 *)
12315                         echo "(That's peculiar, fixing that to be -1.)"
12316                         rd_nodata=-1
12317                         ;;
12318                 esac
12319                 case "$eagain" in
12320                 '')
12321                         echo "Forcing errno EAGAIN on read() with no data available."
12322                         eagain=EAGAIN
12323                         ;;
12324                 *)
12325                         echo "Your read() sets errno to $eagain when no data is available."
12326                         ;;
12327                 esac
12328                 status=`$cat try.err`
12329                 case "$status" in
12330                 0) echo "And it correctly returns 0 to signal EOF.";;
12331                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12332                 *) echo "However, your read() returns '$status' on EOF??";;
12333                 esac
12334                 val="$define"
12335                 if test "$status" = "$rd_nodata"; then
12336                         echo "WARNING: you can't distinguish between EOF and no data!"
12337                         val="$undef"
12338                 fi
12339         else
12340                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12341                 eagain=EAGAIN
12342         fi
12343         set d_eofnblk
12344         eval $setvar
12345         ;;
12346 *)
12347         echo "Using $hint value $eagain."
12348         echo "Your read() returns $rd_nodata when no data is present."
12349         case "$d_eofnblk" in
12350         "$define") echo "And you can see EOF because read() returns 0.";;
12351         "$undef") echo "But you can't see EOF status from read() returned value.";;
12352         *)
12353                 echo "(Assuming you can't see EOF status from read anyway.)"
12354                 d_eofnblk=$undef
12355                 ;;
12356         esac
12357         ;;
12358 esac
12359 $rm -f try try.* .out core head.c mtry
12360
12361 : see if _ptr and _cnt from stdio act std
12362 echo " "
12363
12364 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12365         echo "(Looks like you have stdio.h from BSD.)"
12366         case "$stdio_ptr" in
12367         '') stdio_ptr='((fp)->_p)'
12368                 ptr_lval=$define
12369                 ;;
12370         *)      ptr_lval=$d_stdio_ptr_lval;;
12371         esac
12372         case "$stdio_cnt" in
12373         '') stdio_cnt='((fp)->_r)'
12374                 cnt_lval=$define
12375                 ;;
12376         *)      cnt_lval=$d_stdio_cnt_lval;;
12377         esac
12378         case "$stdio_base" in
12379         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12380         esac
12381         case "$stdio_bufsiz" in
12382         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12383         esac
12384 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12385         echo "(Looks like you have stdio.h from Linux.)"
12386         case "$stdio_ptr" in
12387         '') stdio_ptr='((fp)->_IO_read_ptr)'
12388                 ptr_lval=$define
12389                 ;;
12390         *)      ptr_lval=$d_stdio_ptr_lval;;
12391         esac
12392         case "$stdio_cnt" in
12393         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12394                 cnt_lval=$undef
12395                 ;;
12396         *)      cnt_lval=$d_stdio_cnt_lval;;
12397         esac
12398         case "$stdio_base" in
12399         '') stdio_base='((fp)->_IO_read_base)';;
12400         esac
12401         case "$stdio_bufsiz" in
12402         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12403         esac
12404 else
12405         case "$stdio_ptr" in
12406         '') stdio_ptr='((fp)->_ptr)'
12407                 ptr_lval=$define
12408                 ;;
12409         *)      ptr_lval=$d_stdio_ptr_lval;;
12410         esac
12411         case "$stdio_cnt" in
12412         '') stdio_cnt='((fp)->_cnt)'
12413                 cnt_lval=$define
12414                 ;;
12415         *)      cnt_lval=$d_stdio_cnt_lval;;
12416         esac
12417         case "$stdio_base" in
12418         '') stdio_base='((fp)->_base)';;
12419         esac
12420         case "$stdio_bufsiz" in
12421         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12422         esac
12423 fi
12424
12425 : test whether _ptr and _cnt really work
12426 echo "Checking how std your stdio is..." >&4
12427 $cat >try.c <<EOP
12428 #include <stdio.h>
12429 #$i_stdlib I_STDLIB
12430 #ifdef I_STDLIB
12431 #include <stdlib.h>
12432 #endif
12433 #define FILE_ptr(fp)    $stdio_ptr
12434 #define FILE_cnt(fp)    $stdio_cnt
12435 int main() {
12436         FILE *fp = fopen("try.c", "r");
12437         char c = getc(fp);
12438         if (
12439                 18 <= FILE_cnt(fp) &&
12440                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12441         )
12442                 exit(0);
12443         exit(1);
12444 }
12445 EOP
12446 val="$undef"
12447 set try
12448 if eval $compile && $to try.c; then
12449         if $run ./try; then
12450                 echo "Your stdio acts pretty std."
12451                 val="$define"
12452         else
12453                 echo "Your stdio isn't very std."
12454         fi
12455 else
12456         echo "Your stdio doesn't appear very std."
12457 fi
12458 $rm -f try.c try
12459
12460 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12461 # direct buffer manipulation no longer works.  The Configure tests
12462 # should be changed to correctly detect this, but until then,
12463 # the following check should at least let perl compile and run.
12464 # (This quick fix should be updated before 5.8.1.)
12465 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12466 # A. Dougherty, June 3, 2002.
12467 case "$d_gnulibc" in
12468 $define)
12469         case "$gnulibc_version" in
12470         2.[01]*)  ;;
12471         2.2) ;;
12472         2.2.[0-9]) ;;
12473         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12474                 val="$undef"
12475                 ;;
12476         esac
12477         ;;
12478 esac
12479 set d_stdstdio
12480 eval $setvar
12481
12482 : Can _ptr be used as an lvalue?
12483 case "$d_stdstdio$ptr_lval" in
12484 $define$define) val=$define ;;
12485 *) val=$undef ;;
12486 esac
12487 set d_stdio_ptr_lval
12488 eval $setvar
12489
12490 : Can _cnt be used as an lvalue?
12491 case "$d_stdstdio$cnt_lval" in
12492 $define$define) val=$define ;;
12493 *) val=$undef ;;
12494 esac
12495 set d_stdio_cnt_lval
12496 eval $setvar
12497
12498
12499 : test whether setting _ptr sets _cnt as a side effect
12500 d_stdio_ptr_lval_sets_cnt="$undef"
12501 d_stdio_ptr_lval_nochange_cnt="$undef"
12502 case "$d_stdio_ptr_lval$d_stdstdio" in
12503 $define$define)
12504         echo "Checking to see what happens if we set the stdio ptr..." >&4
12505 $cat >try.c <<EOP
12506 #include <stdio.h>
12507 /* Can we scream? */
12508 /* Eat dust sed :-) */
12509 /* In the buffer space, no one can hear you scream. */
12510 #$i_stdlib I_STDLIB
12511 #ifdef I_STDLIB
12512 #include <stdlib.h>
12513 #endif
12514 #define FILE_ptr(fp)    $stdio_ptr
12515 #define FILE_cnt(fp)    $stdio_cnt
12516 #include <sys/types.h>
12517 int main() {
12518         FILE *fp = fopen("try.c", "r");
12519         int c;
12520         char *ptr;
12521         size_t cnt;
12522         if (!fp) {
12523             puts("Fail even to read");
12524             exit(1);
12525         }
12526         c = getc(fp); /* Read away the first # */
12527         if (c == EOF) {
12528             puts("Fail even to read");
12529             exit(1);
12530         }
12531         if (!(
12532                 18 <= FILE_cnt(fp) &&
12533                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12534         )) {
12535                 puts("Fail even to read");
12536                 exit (1);
12537         }
12538         ptr = (char*) FILE_ptr(fp);
12539         cnt = (size_t)FILE_cnt(fp);
12540
12541         FILE_ptr(fp) += 42;
12542
12543         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12544                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12545                 exit (1);
12546         }
12547         if (FILE_cnt(fp) <= 20) {
12548                 printf ("Fail (<20 chars to test)");
12549                 exit (1);
12550         }
12551         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12552                 puts("Fail compare");
12553                 exit (1);
12554         }
12555         if (cnt == FILE_cnt(fp)) {
12556                 puts("Pass_unchanged");
12557                 exit (0);
12558         }       
12559         if (FILE_cnt(fp) == (cnt - 42)) {
12560                 puts("Pass_changed");
12561                 exit (0);
12562         }
12563         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12564         return 1;
12565
12566 }
12567 EOP
12568         set try
12569         if eval $compile && $to try.c; then
12570                 case `$run ./try` in
12571                 Pass_changed)
12572                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12573                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12574                 Pass_unchanged)
12575                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12576                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12577                 Fail*)
12578                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12579                 *)
12580                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12581         esac
12582         else
12583                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12584         fi
12585         $rm -f try.c try
12586         ;;
12587 esac
12588
12589 : see if _base is also standard
12590 val="$undef"
12591 case "$d_stdstdio" in
12592 $define)
12593         $cat >try.c <<EOP
12594 #include <stdio.h>
12595 #$i_stdlib I_STDLIB
12596 #ifdef I_STDLIB
12597 #include <stdlib.h>
12598 #endif
12599 #define FILE_base(fp)   $stdio_base
12600 #define FILE_bufsiz(fp) $stdio_bufsiz
12601 int main() {
12602         FILE *fp = fopen("try.c", "r");
12603         char c = getc(fp);
12604         if (
12605                 19 <= FILE_bufsiz(fp) &&
12606                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12607         )
12608                 exit(0);
12609         exit(1);
12610 }
12611 EOP
12612         set try
12613         if eval $compile && $to try.c; then
12614                 if $run ./try; then
12615                         echo "And its _base field acts std."
12616                         val="$define"
12617                 else
12618                         echo "But its _base field isn't std."
12619                 fi
12620         else
12621                 echo "However, it seems to be lacking the _base field."
12622         fi
12623         $rm -f try.c try
12624         ;;
12625 esac
12626 set d_stdiobase
12627 eval $setvar
12628
12629 : see if fast_stdio exists
12630 val="$undef"
12631 case "$d_stdstdio:$d_stdio_ptr_lval" in
12632 "$define:$define")
12633         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12634         *$define*)
12635                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12636                 val="$define"
12637                 ;;
12638         esac
12639         ;;
12640 esac
12641 set d_faststdio
12642 eval $setvar
12643
12644
12645
12646 : see if fchdir exists
12647 set fchdir d_fchdir
12648 eval $inlibc
12649
12650 : see if fchmod exists
12651 set fchmod d_fchmod
12652 eval $inlibc
12653
12654 : see if fchown exists
12655 set fchown d_fchown
12656 eval $inlibc
12657
12658 : see if this is an fcntl system
12659 set fcntl d_fcntl
12660 eval $inlibc
12661
12662 echo " "
12663 : See if fcntl-based locking works.
12664 $cat >try.c <<EOCP
12665 #$i_stdlib I_STDLIB
12666 #ifdef I_STDLIB
12667 #include <stdlib.h>
12668 #endif
12669 #include <unistd.h>
12670 #include <fcntl.h>
12671 #include <signal.h>
12672 $signal_t blech(int x) { exit(3); }
12673 int main() {
12674 #if defined(F_SETLK) && defined(F_SETLKW)
12675      struct flock flock;
12676      int retval, fd;
12677      fd = open("try.c", O_RDONLY);
12678      flock.l_type = F_RDLCK;
12679      flock.l_whence = SEEK_SET;
12680      flock.l_start = flock.l_len = 0;
12681      signal(SIGALRM, blech);
12682      alarm(10);
12683      retval = fcntl(fd, F_SETLK, &flock);
12684      close(fd);
12685      (retval < 0 ? exit(2) : exit(0));
12686 #else
12687      exit(2);
12688 #endif
12689 }
12690 EOCP
12691 echo "Checking if fcntl-based file locking works... "
12692 case "$d_fcntl" in
12693 "$define")
12694         set try
12695         if eval $compile_ok; then
12696                 if $run ./try; then
12697                         echo "Yes, it seems to work."
12698                         val="$define"
12699                 else
12700                         echo "Nope, it didn't work."
12701                         val="$undef"
12702                         case "$?" in
12703                         3) $cat >&4 <<EOM
12704 ***
12705 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12706 *** This is (almost) impossible.
12707 *** If your NFS lock daemons are not feeling well, something like
12708 *** this may happen, please investigate.  Cannot continue, aborting.
12709 ***
12710 EOM
12711                                 exit 1
12712                                 ;;
12713                         esac
12714                 fi
12715         else
12716                 echo "I'm unable to compile the test program, so I'll assume not."
12717                 val="$undef"
12718         fi
12719         ;;
12720 *) val="$undef";
12721         echo "Nope, since you don't even have fcntl()."
12722         ;;
12723 esac
12724 set d_fcntl_can_lock
12725 eval $setvar
12726 $rm -f try*
12727
12728
12729 : check for fd_set items
12730 $cat <<EOM
12731
12732 Checking to see how well your C compiler handles fd_set and friends ...
12733 EOM
12734 $cat >try.c <<EOCP
12735 #$i_stdlib I_STDLIB
12736 #ifdef I_STDLIB
12737 #include <stdlib.h>
12738 #endif
12739 #$i_systime I_SYS_TIME
12740 #$i_sysselct I_SYS_SELECT
12741 #$d_socket HAS_SOCKET
12742 #include <sys/types.h>
12743 #ifdef HAS_SOCKET
12744 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12745 #endif
12746 #ifdef I_SYS_TIME
12747 #include <sys/time.h>
12748 #endif
12749 #ifdef I_SYS_SELECT
12750 #include <sys/select.h>
12751 #endif
12752 int main() {
12753         fd_set fds;
12754
12755 #ifdef TRYBITS
12756         if(fds.fds_bits);
12757 #endif
12758
12759 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12760         exit(0);
12761 #else
12762         exit(1);
12763 #endif
12764 }
12765 EOCP
12766 set try -DTRYBITS
12767 if eval $compile; then
12768         d_fds_bits="$define"
12769         d_fd_set="$define"
12770         echo "Well, your system knows about the normal fd_set typedef..." >&4
12771         if $run ./try; then
12772                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12773                 d_fd_macros="$define"
12774         else
12775                 $cat >&4 <<'EOM'
12776 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12777 EOM
12778                 d_fd_macros="$undef"
12779         fi
12780 else
12781         $cat <<'EOM'
12782 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12783 EOM
12784         set try
12785         if eval $compile; then
12786                 d_fds_bits="$undef"
12787                 d_fd_set="$define"
12788                 echo "Well, your system has some sort of fd_set available..." >&4
12789                 if $run ./try; then
12790                         echo "and you have the normal fd_set macros." >&4
12791                         d_fd_macros="$define"
12792                 else
12793                         $cat <<'EOM'
12794 but not the normal fd_set macros!  Gross!  More work for me...
12795 EOM
12796                         d_fd_macros="$undef"
12797                 fi
12798         else
12799         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12800                 d_fd_set="$undef"
12801                 d_fds_bits="$undef"
12802                 d_fd_macros="$undef"
12803         fi
12804 fi
12805 $rm -f try try.*
12806
12807 : see if fgetpos exists
12808 set fgetpos d_fgetpos
12809 eval $inlibc
12810
12811 : see if finite exists
12812 set finite d_finite
12813 eval $inlibc
12814
12815 : see if finitel exists
12816 set finitel d_finitel
12817 eval $inlibc
12818
12819 : see if flock exists
12820 set flock d_flock
12821 eval $inlibc
12822
12823 : see if prototype for flock is available
12824 echo " "
12825 set d_flockproto flock $i_sysfile sys/file.h
12826 eval $hasproto
12827
12828 : see if fork exists
12829 set fork d_fork
12830 eval $inlibc
12831
12832 : see if fp_class exists
12833 set fp_class d_fp_class
12834 eval $inlibc
12835
12836 : see if pathconf exists
12837 set pathconf d_pathconf
12838 eval $inlibc
12839
12840 : see if fpathconf exists
12841 set fpathconf d_fpathconf
12842 eval $inlibc
12843
12844 : see if fpclass exists
12845 set fpclass d_fpclass
12846 eval $inlibc
12847
12848 : see if fpclassify exists
12849 set fpclassify d_fpclassify
12850 eval $inlibc
12851
12852 : see if fpclassl exists
12853 set fpclassl d_fpclassl
12854 eval $inlibc
12855
12856
12857 : check for fpos64_t
12858 echo " "
12859 echo "Checking to see if you have fpos64_t..." >&4
12860 $cat >try.c <<EOCP
12861 #include <stdio.h>
12862 int main() { fpos64_t x = 7; }
12863 EOCP
12864 set try
12865 if eval $compile; then
12866         val="$define"
12867         echo "You have fpos64_t."
12868 else
12869         val="$undef"
12870         echo "You do not have fpos64_t."
12871         case "$fpossize" in
12872         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12873         esac
12874 fi
12875 $rm -f try.* try
12876 set d_fpos64_t
12877 eval $setvar
12878
12879 : see if frexpl exists
12880 set frexpl d_frexpl
12881 eval $inlibc
12882
12883 : see if this is a sys/param system
12884 set sys/param.h i_sysparam
12885 eval $inhdr
12886
12887 : see if this is a sys/mount.h system
12888 set sys/mount.h i_sysmount
12889 eval $inhdr
12890
12891
12892 echo " "
12893 echo "Checking to see if your system supports struct fs_data..." >&4
12894 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12895 eval $hasstruct
12896 case "$d_fs_data_s" in
12897 "$define")      echo "Yes, it does."   ;;
12898 *)              echo "No, it doesn't." ;;
12899 esac
12900
12901 : see if fseeko exists
12902 set fseeko d_fseeko
12903 eval $inlibc
12904 case "$longsize" in
12905 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12906 esac
12907
12908 : see if fsetpos exists
12909 set fsetpos d_fsetpos
12910 eval $inlibc
12911
12912
12913 : see if fstatfs exists
12914 set fstatfs d_fstatfs
12915 eval $inlibc
12916
12917
12918 : see if statvfs exists
12919 set statvfs d_statvfs
12920 eval $inlibc
12921
12922 : see if fstatvfs exists
12923 set fstatvfs d_fstatvfs
12924 eval $inlibc
12925
12926
12927 : see if fsync exists
12928 set fsync d_fsync
12929 eval $inlibc
12930
12931 : see if ftello exists
12932 set ftello d_ftello
12933 eval $inlibc
12934 case "$longsize" in
12935 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12936 esac
12937
12938 d_futimes="$undef"
12939 : check for a working futimes
12940 echo " "
12941 echo "Checking for a working futimes()" >&4
12942 $cat >try.c <<EOCP
12943 #include <stdio.h>
12944 #include <sys/time.h>
12945 #include <errno.h>
12946 #include <fcntl.h>
12947
12948 int main ()
12949 {
12950     int fd, rv;
12951     fd = open ("try.c", O_RDWR);
12952     if (-1 == fd) exit (1);
12953     rv = futimes (fd, NULL);
12954     exit (rv == -1 ? errno : 0);
12955 }
12956 EOCP
12957 set try
12958 if eval $compile; then
12959     `$run ./try`
12960     rc=$?
12961     case "$rc" in
12962         0)  echo "Yes, it does" >&4
12963             d_futimes="$define"
12964             ;;
12965         *)  echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4
12966             ;;
12967     esac
12968 else
12969     echo "No, it does not (probably harmless)\n" >&4
12970 fi
12971 $rm -f try.* try core core.try.*
12972
12973 : see if getcwd exists
12974 set getcwd d_getcwd
12975 eval $inlibc
12976
12977 : see if getespwnam exists
12978 set getespwnam d_getespwnam
12979 eval $inlibc
12980
12981
12982 : see if getfsstat exists
12983 set getfsstat d_getfsstat
12984 eval $inlibc
12985
12986 : see if getgrent exists
12987 set getgrent d_getgrent
12988 eval $inlibc
12989
12990 : see if getgrent_r exists
12991 set getgrent_r d_getgrent_r
12992 eval $inlibc
12993 case "$d_getgrent_r" in
12994 "$define")
12995         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12996         case "$d_getgrent_r_proto:$usethreads" in
12997         ":define")      d_getgrent_r_proto=define
12998                 set d_getgrent_r_proto getgrent_r $hdrs
12999                 eval $hasproto ;;
13000         *)      ;;
13001         esac
13002         case "$d_getgrent_r_proto" in
13003         define)
13004         case "$getgrent_r_proto" in
13005         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13006         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13007         esac
13008         case "$getgrent_r_proto" in
13009         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13010         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13011         esac
13012         case "$getgrent_r_proto" in
13013         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13014         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13015         esac
13016         case "$getgrent_r_proto" in
13017         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13018         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13019         esac
13020         case "$getgrent_r_proto" in
13021         ''|0) try='int getgrent_r(struct group*, char*, int);'
13022         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13023         esac
13024         case "$getgrent_r_proto" in
13025         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13026         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13027         esac
13028         case "$getgrent_r_proto" in
13029         ''|0)   d_getgrent_r=undef
13030                 getgrent_r_proto=0
13031                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13032         * )     case "$getgrent_r_proto" in
13033                 REENTRANT_PROTO*) ;;
13034                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13035                 esac
13036                 echo "Prototype: $try" ;;
13037         esac
13038         ;;
13039         *)      case "$usethreads" in
13040                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13041                 esac
13042                 d_getgrent_r=undef
13043                 getgrent_r_proto=0
13044                 ;;
13045         esac
13046         ;;
13047 *)      getgrent_r_proto=0
13048         ;;
13049 esac
13050
13051 : see if getgrgid_r exists
13052 set getgrgid_r d_getgrgid_r
13053 eval $inlibc
13054 case "$d_getgrgid_r" in
13055 "$define")
13056         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13057         case "$d_getgrgid_r_proto:$usethreads" in
13058         ":define")      d_getgrgid_r_proto=define
13059                 set d_getgrgid_r_proto getgrgid_r $hdrs
13060                 eval $hasproto ;;
13061         *)      ;;
13062         esac
13063         case "$d_getgrgid_r_proto" in
13064         define)
13065         case "$getgrgid_r_proto" in
13066         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13067         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13068         esac
13069         case "$getgrgid_r_proto" in
13070         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13071         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13072         esac
13073         case "$getgrgid_r_proto" in
13074         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13075         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13076         esac
13077         case "$getgrgid_r_proto" in
13078         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13079         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13080         esac
13081         case "$getgrgid_r_proto" in
13082         ''|0)   d_getgrgid_r=undef
13083                 getgrgid_r_proto=0
13084                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13085         * )     case "$getgrgid_r_proto" in
13086                 REENTRANT_PROTO*) ;;
13087                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13088                 esac
13089                 echo "Prototype: $try" ;;
13090         esac
13091         ;;
13092         *)      case "$usethreads" in
13093                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13094                 esac
13095                 d_getgrgid_r=undef
13096                 getgrgid_r_proto=0
13097                 ;;
13098         esac
13099         ;;
13100 *)      getgrgid_r_proto=0
13101         ;;
13102 esac
13103
13104 : see if getgrnam_r exists
13105 set getgrnam_r d_getgrnam_r
13106 eval $inlibc
13107 case "$d_getgrnam_r" in
13108 "$define")
13109         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13110         case "$d_getgrnam_r_proto:$usethreads" in
13111         ":define")      d_getgrnam_r_proto=define
13112                 set d_getgrnam_r_proto getgrnam_r $hdrs
13113                 eval $hasproto ;;
13114         *)      ;;
13115         esac
13116         case "$d_getgrnam_r_proto" in
13117         define)
13118         case "$getgrnam_r_proto" in
13119         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13120         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13121         esac
13122         case "$getgrnam_r_proto" in
13123         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13124         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13125         esac
13126         case "$getgrnam_r_proto" in
13127         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13128         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13129         esac
13130         case "$getgrnam_r_proto" in
13131         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13132         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13133         esac
13134         case "$getgrnam_r_proto" in
13135         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13136         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13137         esac
13138         case "$getgrnam_r_proto" in
13139         ''|0)   d_getgrnam_r=undef
13140                 getgrnam_r_proto=0
13141                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13142         * )     case "$getgrnam_r_proto" in
13143                 REENTRANT_PROTO*) ;;
13144                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13145                 esac
13146                 echo "Prototype: $try" ;;
13147         esac
13148         ;;
13149         *)      case "$usethreads" in
13150                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13151                 esac
13152                 d_getgrnam_r=undef
13153                 getgrnam_r_proto=0
13154                 ;;
13155         esac
13156         ;;
13157 *)      getgrnam_r_proto=0
13158         ;;
13159 esac
13160
13161 : see if gethostbyaddr exists
13162 set gethostbyaddr d_gethbyaddr
13163 eval $inlibc
13164
13165 : see if gethostbyname exists
13166 set gethostbyname d_gethbyname
13167 eval $inlibc
13168
13169 : see if gethostent exists
13170 set gethostent d_gethent
13171 eval $inlibc
13172
13173 : see how we will look up host name
13174 echo " "
13175 call=''
13176 if set gethostname val -f d_gethname; eval $csym; $val; then
13177         echo 'gethostname() found.' >&4
13178         d_gethname="$define"
13179         call=gethostname
13180 fi
13181 if set uname val -f d_uname; eval $csym; $val; then
13182         if ./xenix; then
13183                 $cat <<'EOM'
13184 uname() was found, but you're running xenix, and older versions of xenix
13185 have a broken uname(). If you don't really know whether your xenix is old
13186 enough to have a broken system call, use the default answer.
13187
13188 EOM
13189                 dflt=y
13190                 case "$d_uname" in
13191                 "$define") dflt=n;;
13192                 esac
13193                 rp='Is your uname() broken?'
13194                 . ./myread
13195                 case "$ans" in
13196                 n*) d_uname="$define"; call=uname;;
13197                 esac
13198         else
13199                 echo 'uname() found.' >&4
13200                 d_uname="$define"
13201                 case "$call" in
13202                 '') call=uname ;;
13203                 esac
13204         fi
13205 fi
13206 case "$d_gethname" in
13207 '') d_gethname="$undef";;
13208 esac
13209 case "$d_uname" in
13210 '') d_uname="$undef";;
13211 esac
13212 case "$d_uname$d_gethname" in
13213 *define*)
13214         dflt=n
13215         cat <<EOM
13216  
13217 Every now and then someone has a $call() that lies about the hostname
13218 but can't be fixed for political or economic reasons.  If you wish, I can
13219 pretend $call() isn't there and maybe compute hostname at run-time
13220 thanks to the '$phostname' command.
13221
13222 EOM
13223         rp="Shall I ignore $call() from now on?"
13224         . ./myread
13225         case "$ans" in
13226         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13227         esac;;
13228 esac
13229 case "$phostname" in
13230 '') aphostname='';;
13231 *) case "$aphostname" in
13232         /*) ;;
13233         *) set X $phostname
13234                 shift
13235                 file=$1
13236                 shift
13237                 file=`./loc $file $file $pth`
13238                 aphostname=`echo $file $*`
13239                 ;;
13240         esac
13241         ;;
13242 esac
13243 case "$d_uname$d_gethname" in
13244 *define*) ;;
13245 *)
13246         case "$phostname" in
13247         '')
13248                 echo "There will be no way for $package to get your hostname." >&4;;
13249         *)
13250         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13251                 ;;
13252         esac;;
13253 esac
13254 case "$d_phostname" in
13255 '') d_phostname="$undef";;
13256 esac
13257
13258 : see if gethostbyaddr_r exists
13259 set gethostbyaddr_r d_gethostbyaddr_r
13260 eval $inlibc
13261 case "$d_gethostbyaddr_r" in
13262 "$define")
13263         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13264         case "$d_gethostbyaddr_r_proto:$usethreads" in
13265         ":define")      d_gethostbyaddr_r_proto=define
13266                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13267                 eval $hasproto ;;
13268         *)      ;;
13269         esac
13270         case "$d_gethostbyaddr_r_proto" in
13271         define)
13272         case "$gethostbyaddr_r_proto" in
13273         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13274         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13275         esac
13276         case "$gethostbyaddr_r_proto" in
13277         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13278         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13279         esac
13280         case "$gethostbyaddr_r_proto" in
13281         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13282         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13283         esac
13284         case "$gethostbyaddr_r_proto" in
13285         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13286         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13287         esac
13288         case "$gethostbyaddr_r_proto" in
13289         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13290         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13291         esac
13292         case "$gethostbyaddr_r_proto" in
13293         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13294         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13295         esac
13296         case "$gethostbyaddr_r_proto" in
13297         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13298         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13299         esac
13300         case "$gethostbyaddr_r_proto" in
13301         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13302         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13303         esac
13304         case "$gethostbyaddr_r_proto" in
13305         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13306         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13307         esac
13308         case "$gethostbyaddr_r_proto" in
13309         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13310         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13311         esac
13312         case "$gethostbyaddr_r_proto" in
13313         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13314         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13315         esac
13316         case "$gethostbyaddr_r_proto" in
13317         ''|0)   d_gethostbyaddr_r=undef
13318                 gethostbyaddr_r_proto=0
13319                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13320         * )     case "$gethostbyaddr_r_proto" in
13321                 REENTRANT_PROTO*) ;;
13322                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13323                 esac
13324                 echo "Prototype: $try" ;;
13325         esac
13326         ;;
13327         *)      case "$usethreads" in
13328                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13329                 esac
13330                 d_gethostbyaddr_r=undef
13331                 gethostbyaddr_r_proto=0
13332                 ;;
13333         esac
13334         ;;
13335 *)      gethostbyaddr_r_proto=0
13336         ;;
13337 esac
13338
13339 : see if gethostbyname_r exists
13340 set gethostbyname_r d_gethostbyname_r
13341 eval $inlibc
13342 case "$d_gethostbyname_r" in
13343 "$define")
13344         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13345         case "$d_gethostbyname_r_proto:$usethreads" in
13346         ":define")      d_gethostbyname_r_proto=define
13347                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13348                 eval $hasproto ;;
13349         *)      ;;
13350         esac
13351         case "$d_gethostbyname_r_proto" in
13352         define)
13353         case "$gethostbyname_r_proto" in
13354         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13355         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13356         esac
13357         case "$gethostbyname_r_proto" in
13358         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13359         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13360         esac
13361         case "$gethostbyname_r_proto" in
13362         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13363         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13364         esac
13365         case "$gethostbyname_r_proto" in
13366         ''|0)   d_gethostbyname_r=undef
13367                 gethostbyname_r_proto=0
13368                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13369         * )     case "$gethostbyname_r_proto" in
13370                 REENTRANT_PROTO*) ;;
13371                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13372                 esac
13373                 echo "Prototype: $try" ;;
13374         esac
13375         ;;
13376         *)      case "$usethreads" in
13377                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13378                 esac
13379                 d_gethostbyname_r=undef
13380                 gethostbyname_r_proto=0
13381                 ;;
13382         esac
13383         ;;
13384 *)      gethostbyname_r_proto=0
13385         ;;
13386 esac
13387
13388 : see if gethostent_r exists
13389 set gethostent_r d_gethostent_r
13390 eval $inlibc
13391 case "$d_gethostent_r" in
13392 "$define")
13393         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13394         case "$d_gethostent_r_proto:$usethreads" in
13395         ":define")      d_gethostent_r_proto=define
13396                 set d_gethostent_r_proto gethostent_r $hdrs
13397                 eval $hasproto ;;
13398         *)      ;;
13399         esac
13400         case "$d_gethostent_r_proto" in
13401         define)
13402         case "$gethostent_r_proto" in
13403         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13404         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13405         esac
13406         case "$gethostent_r_proto" in
13407         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13408         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13409         esac
13410         case "$gethostent_r_proto" in
13411         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13412         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13413         esac
13414         case "$gethostent_r_proto" in
13415         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13416         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13417         esac
13418         case "$gethostent_r_proto" in
13419         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13420         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13421         esac
13422         case "$gethostent_r_proto" in
13423         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13424         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13425         esac
13426         case "$gethostent_r_proto" in
13427         ''|0)   d_gethostent_r=undef
13428                 gethostent_r_proto=0
13429                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13430         * )     case "$gethostent_r_proto" in
13431                 REENTRANT_PROTO*) ;;
13432                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13433                 esac
13434                 echo "Prototype: $try" ;;
13435         esac
13436         ;;
13437         *)      case "$usethreads" in
13438                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13439                 esac
13440                 d_gethostent_r=undef
13441                 gethostent_r_proto=0
13442                 ;;
13443         esac
13444         ;;
13445 *)      gethostent_r_proto=0
13446         ;;
13447 esac
13448
13449 : see if prototypes for various gethostxxx netdb.h functions are available
13450 echo " "
13451 set d_gethostprotos gethostent $i_netdb netdb.h
13452 eval $hasproto
13453
13454 : see if getitimer exists
13455 set getitimer d_getitimer
13456 eval $inlibc
13457
13458 : see if getlogin exists
13459 set getlogin d_getlogin
13460 eval $inlibc
13461
13462 : see if getlogin_r exists
13463 set getlogin_r d_getlogin_r
13464 eval $inlibc
13465 case "$d_getlogin_r" in
13466 "$define")
13467         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13468         case "$d_getlogin_r_proto:$usethreads" in
13469         ":define")      d_getlogin_r_proto=define
13470                 set d_getlogin_r_proto getlogin_r $hdrs
13471                 eval $hasproto ;;
13472         *)      ;;
13473         esac
13474         case "$d_getlogin_r_proto" in
13475         define)
13476         case "$getlogin_r_proto" in
13477         ''|0) try='int getlogin_r(char*, size_t);'
13478         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13479         esac
13480         case "$getlogin_r_proto" in
13481         ''|0) try='int getlogin_r(char*, int);'
13482         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13483         esac
13484         case "$getlogin_r_proto" in
13485         ''|0) try='char* getlogin_r(char*, size_t);'
13486         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13487         esac
13488         case "$getlogin_r_proto" in
13489         ''|0) try='char* getlogin_r(char*, int);'
13490         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13491         esac
13492         case "$getlogin_r_proto" in
13493         ''|0)   d_getlogin_r=undef
13494                 getlogin_r_proto=0
13495                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13496         * )     case "$getlogin_r_proto" in
13497                 REENTRANT_PROTO*) ;;
13498                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13499                 esac
13500                 echo "Prototype: $try" ;;
13501         esac
13502         ;;
13503         *)      case "$usethreads" in
13504                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13505                 esac
13506                 d_getlogin_r=undef
13507                 getlogin_r_proto=0
13508                 ;;
13509         esac
13510         ;;
13511 *)      getlogin_r_proto=0
13512         ;;
13513 esac
13514
13515 : see if getmnt exists
13516 set getmnt d_getmnt
13517 eval $inlibc
13518
13519 : see if getmntent exists
13520 set getmntent d_getmntent
13521 eval $inlibc
13522
13523 : see if getnetbyaddr exists
13524 set getnetbyaddr d_getnbyaddr
13525 eval $inlibc
13526
13527 : see if getnetbyname exists
13528 set getnetbyname d_getnbyname
13529 eval $inlibc
13530
13531 : see if getnetent exists
13532 set getnetent d_getnent
13533 eval $inlibc
13534
13535 : see if getnetbyaddr_r exists
13536 set getnetbyaddr_r d_getnetbyaddr_r
13537 eval $inlibc
13538 case "$d_getnetbyaddr_r" in
13539 "$define")
13540         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13541         case "$d_getnetbyaddr_r_proto:$usethreads" in
13542         ":define")      d_getnetbyaddr_r_proto=define
13543                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13544                 eval $hasproto ;;
13545         *)      ;;
13546         esac
13547         case "$d_getnetbyaddr_r_proto" in
13548         define)
13549         case "$getnetbyaddr_r_proto" in
13550         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13551         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13552         esac
13553         case "$getnetbyaddr_r_proto" in
13554         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13555         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13556         esac
13557         case "$getnetbyaddr_r_proto" in
13558         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13559         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13560         esac
13561         case "$getnetbyaddr_r_proto" in
13562         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13563         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13564         esac
13565         case "$getnetbyaddr_r_proto" in
13566         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13567         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13568         esac
13569         case "$getnetbyaddr_r_proto" in
13570         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13571         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13572         esac
13573         case "$getnetbyaddr_r_proto" in
13574         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13575         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13576         esac
13577         case "$getnetbyaddr_r_proto" in
13578         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13579         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13580         esac
13581         case "$getnetbyaddr_r_proto" in
13582         ''|0)   d_getnetbyaddr_r=undef
13583                 getnetbyaddr_r_proto=0
13584                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13585         * )     case "$getnetbyaddr_r_proto" in
13586                 REENTRANT_PROTO*) ;;
13587                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13588                 esac
13589                 echo "Prototype: $try" ;;
13590         esac
13591         ;;
13592         *)      case "$usethreads" in
13593                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13594                 esac
13595                 d_getnetbyaddr_r=undef
13596                 getnetbyaddr_r_proto=0
13597                 ;;
13598         esac
13599         ;;
13600 *)      getnetbyaddr_r_proto=0
13601         ;;
13602 esac
13603
13604 : see if getnetbyname_r exists
13605 set getnetbyname_r d_getnetbyname_r
13606 eval $inlibc
13607 case "$d_getnetbyname_r" in
13608 "$define")
13609         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13610         case "$d_getnetbyname_r_proto:$usethreads" in
13611         ":define")      d_getnetbyname_r_proto=define
13612                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13613                 eval $hasproto ;;
13614         *)      ;;
13615         esac
13616         case "$d_getnetbyname_r_proto" in
13617         define)
13618         case "$getnetbyname_r_proto" in
13619         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13620         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13621         esac
13622         case "$getnetbyname_r_proto" in
13623         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13624         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13625         esac
13626         case "$getnetbyname_r_proto" in
13627         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13628         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13629         esac
13630         case "$getnetbyname_r_proto" in
13631         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13632         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13633         esac
13634         case "$getnetbyname_r_proto" in
13635         ''|0)   d_getnetbyname_r=undef
13636                 getnetbyname_r_proto=0
13637                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13638         * )     case "$getnetbyname_r_proto" in
13639                 REENTRANT_PROTO*) ;;
13640                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13641                 esac
13642                 echo "Prototype: $try" ;;
13643         esac
13644         ;;
13645         *)      case "$usethreads" in
13646                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13647                 esac
13648                 d_getnetbyname_r=undef
13649                 getnetbyname_r_proto=0
13650                 ;;
13651         esac
13652         ;;
13653 *)      getnetbyname_r_proto=0
13654         ;;
13655 esac
13656
13657 : see if getnetent_r exists
13658 set getnetent_r d_getnetent_r
13659 eval $inlibc
13660 case "$d_getnetent_r" in
13661 "$define")
13662         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13663         case "$d_getnetent_r_proto:$usethreads" in
13664         ":define")      d_getnetent_r_proto=define
13665                 set d_getnetent_r_proto getnetent_r $hdrs
13666                 eval $hasproto ;;
13667         *)      ;;
13668         esac
13669         case "$d_getnetent_r_proto" in
13670         define)
13671         case "$getnetent_r_proto" in
13672         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13673         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13674         esac
13675         case "$getnetent_r_proto" in
13676         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13677         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13678         esac
13679         case "$getnetent_r_proto" in
13680         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13681         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13682         esac
13683         case "$getnetent_r_proto" in
13684         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13685         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13686         esac
13687         case "$getnetent_r_proto" in
13688         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13689         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13690         esac
13691         case "$getnetent_r_proto" in
13692         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13693         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13694         esac
13695         case "$getnetent_r_proto" in
13696         ''|0)   d_getnetent_r=undef
13697                 getnetent_r_proto=0
13698                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13699         * )     case "$getnetent_r_proto" in
13700                 REENTRANT_PROTO*) ;;
13701                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13702                 esac
13703                 echo "Prototype: $try" ;;
13704         esac
13705         ;;
13706         *)      case "$usethreads" in
13707                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13708                 esac
13709                 d_getnetent_r=undef
13710                 getnetent_r_proto=0
13711                 ;;
13712         esac
13713         ;;
13714 *)      getnetent_r_proto=0
13715         ;;
13716 esac
13717
13718 : see if prototypes for various getnetxxx netdb.h functions are available
13719 echo " "
13720 set d_getnetprotos getnetent $i_netdb netdb.h
13721 eval $hasproto
13722
13723 : see if getpagesize exists
13724 set getpagesize d_getpagsz
13725 eval $inlibc
13726
13727
13728 : see if getprotobyname exists
13729 set getprotobyname d_getpbyname
13730 eval $inlibc
13731
13732 : see if getprotobynumber exists
13733 set getprotobynumber d_getpbynumber
13734 eval $inlibc
13735
13736 : see if getprotoent exists
13737 set getprotoent d_getpent
13738 eval $inlibc
13739
13740 : see if getpgid exists
13741 set getpgid d_getpgid
13742 eval $inlibc
13743
13744 : see if getpgrp2 exists
13745 set getpgrp2 d_getpgrp2
13746 eval $inlibc
13747
13748 : see if getppid exists
13749 set getppid d_getppid
13750 eval $inlibc
13751
13752 : see if getpriority exists
13753 set getpriority d_getprior
13754 eval $inlibc
13755
13756 : see if getprotobyname_r exists
13757 set getprotobyname_r d_getprotobyname_r
13758 eval $inlibc
13759 case "$d_getprotobyname_r" in
13760 "$define")
13761         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13762         case "$d_getprotobyname_r_proto:$usethreads" in
13763         ":define")      d_getprotobyname_r_proto=define
13764                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13765                 eval $hasproto ;;
13766         *)      ;;
13767         esac
13768         case "$d_getprotobyname_r_proto" in
13769         define)
13770         case "$getprotobyname_r_proto" in
13771         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13772         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13773         esac
13774         case "$getprotobyname_r_proto" in
13775         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13776         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13777         esac
13778         case "$getprotobyname_r_proto" in
13779         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13780         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13781         esac
13782         case "$getprotobyname_r_proto" in
13783         ''|0)   d_getprotobyname_r=undef
13784                 getprotobyname_r_proto=0
13785                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13786         * )     case "$getprotobyname_r_proto" in
13787                 REENTRANT_PROTO*) ;;
13788                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13789                 esac
13790                 echo "Prototype: $try" ;;
13791         esac
13792         ;;
13793         *)      case "$usethreads" in
13794                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13795                 esac
13796                 d_getprotobyname_r=undef
13797                 getprotobyname_r_proto=0
13798                 ;;
13799         esac
13800         ;;
13801 *)      getprotobyname_r_proto=0
13802         ;;
13803 esac
13804
13805 : see if getprotobynumber_r exists
13806 set getprotobynumber_r d_getprotobynumber_r
13807 eval $inlibc
13808 case "$d_getprotobynumber_r" in
13809 "$define")
13810         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13811         case "$d_getprotobynumber_r_proto:$usethreads" in
13812         ":define")      d_getprotobynumber_r_proto=define
13813                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13814                 eval $hasproto ;;
13815         *)      ;;
13816         esac
13817         case "$d_getprotobynumber_r_proto" in
13818         define)
13819         case "$getprotobynumber_r_proto" in
13820         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13821         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13822         esac
13823         case "$getprotobynumber_r_proto" in
13824         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13825         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13826         esac
13827         case "$getprotobynumber_r_proto" in
13828         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13829         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13830         esac
13831         case "$getprotobynumber_r_proto" in
13832         ''|0)   d_getprotobynumber_r=undef
13833                 getprotobynumber_r_proto=0
13834                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13835         * )     case "$getprotobynumber_r_proto" in
13836                 REENTRANT_PROTO*) ;;
13837                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13838                 esac
13839                 echo "Prototype: $try" ;;
13840         esac
13841         ;;
13842         *)      case "$usethreads" in
13843                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13844                 esac
13845                 d_getprotobynumber_r=undef
13846                 getprotobynumber_r_proto=0
13847                 ;;
13848         esac
13849         ;;
13850 *)      getprotobynumber_r_proto=0
13851         ;;
13852 esac
13853
13854 : see if getprotoent_r exists
13855 set getprotoent_r d_getprotoent_r
13856 eval $inlibc
13857 case "$d_getprotoent_r" in
13858 "$define")
13859         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13860         case "$d_getprotoent_r_proto:$usethreads" in
13861         ":define")      d_getprotoent_r_proto=define
13862                 set d_getprotoent_r_proto getprotoent_r $hdrs
13863                 eval $hasproto ;;
13864         *)      ;;
13865         esac
13866         case "$d_getprotoent_r_proto" in
13867         define)
13868         case "$getprotoent_r_proto" in
13869         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13870         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13871         esac
13872         case "$getprotoent_r_proto" in
13873         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13874         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13875         esac
13876         case "$getprotoent_r_proto" in
13877         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13878         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13879         esac
13880         case "$getprotoent_r_proto" in
13881         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13882         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13883         esac
13884         case "$getprotoent_r_proto" in
13885         ''|0)   d_getprotoent_r=undef
13886                 getprotoent_r_proto=0
13887                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13888         * )     case "$getprotoent_r_proto" in
13889                 REENTRANT_PROTO*) ;;
13890                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13891                 esac
13892                 echo "Prototype: $try" ;;
13893         esac
13894         ;;
13895         *)      case "$usethreads" in
13896                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13897                 esac
13898                 d_getprotoent_r=undef
13899                 getprotoent_r_proto=0
13900                 ;;
13901         esac
13902         ;;
13903 *)      getprotoent_r_proto=0
13904         ;;
13905 esac
13906
13907 : see if prototypes for various getprotoxxx netdb.h functions are available
13908 echo " "
13909 set d_getprotoprotos getprotoent $i_netdb netdb.h
13910 eval $hasproto
13911
13912 : see if getprpwnam exists
13913 set getprpwnam d_getprpwnam
13914 eval $inlibc
13915
13916 : see if getpwent exists
13917 set getpwent d_getpwent
13918 eval $inlibc
13919
13920 : see if getpwent_r exists
13921 set getpwent_r d_getpwent_r
13922 eval $inlibc
13923 case "$d_getpwent_r" in
13924 "$define")
13925         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13926         case "$d_getpwent_r_proto:$usethreads" in
13927         ":define")      d_getpwent_r_proto=define
13928                 set d_getpwent_r_proto getpwent_r $hdrs
13929                 eval $hasproto ;;
13930         *)      ;;
13931         esac
13932         case "$d_getpwent_r_proto" in
13933         define)
13934         case "$getpwent_r_proto" in
13935         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13936         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13937         esac
13938         case "$getpwent_r_proto" in
13939         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13940         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13941         esac
13942         case "$getpwent_r_proto" in
13943         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13944         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13945         esac
13946         case "$getpwent_r_proto" in
13947         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13948         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13949         esac
13950         case "$getpwent_r_proto" in
13951         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13952         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13953         esac
13954         case "$getpwent_r_proto" in
13955         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13956         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13957         esac
13958         case "$getpwent_r_proto" in
13959         ''|0)   d_getpwent_r=undef
13960                 getpwent_r_proto=0
13961                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13962         * )     case "$getpwent_r_proto" in
13963                 REENTRANT_PROTO*) ;;
13964                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13965                 esac
13966                 echo "Prototype: $try" ;;
13967         esac
13968         ;;
13969         *)      case "$usethreads" in
13970                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13971                 esac
13972                 d_getpwent_r=undef
13973                 getpwent_r_proto=0
13974                 ;;
13975         esac
13976         ;;
13977 *)      getpwent_r_proto=0
13978         ;;
13979 esac
13980
13981 : see if getpwnam_r exists
13982 set getpwnam_r d_getpwnam_r
13983 eval $inlibc
13984 case "$d_getpwnam_r" in
13985 "$define")
13986         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13987         case "$d_getpwnam_r_proto:$usethreads" in
13988         ":define")      d_getpwnam_r_proto=define
13989                 set d_getpwnam_r_proto getpwnam_r $hdrs
13990                 eval $hasproto ;;
13991         *)      ;;
13992         esac
13993         case "$d_getpwnam_r_proto" in
13994         define)
13995         case "$getpwnam_r_proto" in
13996         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13997         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13998         esac
13999         case "$getpwnam_r_proto" in
14000         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14001         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14002         esac
14003         case "$getpwnam_r_proto" in
14004         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14005         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14006         esac
14007         case "$getpwnam_r_proto" in
14008         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14009         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14010         esac
14011         case "$getpwnam_r_proto" in
14012         ''|0)   d_getpwnam_r=undef
14013                 getpwnam_r_proto=0
14014                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14015         * )     case "$getpwnam_r_proto" in
14016                 REENTRANT_PROTO*) ;;
14017                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14018                 esac
14019                 echo "Prototype: $try" ;;
14020         esac
14021         ;;
14022         *)      case "$usethreads" in
14023                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14024                 esac
14025                 d_getpwnam_r=undef
14026                 getpwnam_r_proto=0
14027                 ;;
14028         esac
14029         ;;
14030 *)      getpwnam_r_proto=0
14031         ;;
14032 esac
14033
14034 : see if getpwuid_r exists
14035 set getpwuid_r d_getpwuid_r
14036 eval $inlibc
14037 case "$d_getpwuid_r" in
14038 "$define")
14039         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14040         case "$d_getpwuid_r_proto:$usethreads" in
14041         ":define")      d_getpwuid_r_proto=define
14042                 set d_getpwuid_r_proto getpwuid_r $hdrs
14043                 eval $hasproto ;;
14044         *)      ;;
14045         esac
14046         case "$d_getpwuid_r_proto" in
14047         define)
14048         case "$getpwuid_r_proto" in
14049         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14050         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14051         esac
14052         case "$getpwuid_r_proto" in
14053         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14054         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14055         esac
14056         case "$getpwuid_r_proto" in
14057         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14058         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14059         esac
14060         case "$getpwuid_r_proto" in
14061         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14062         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14063         esac
14064         case "$getpwuid_r_proto" in
14065         ''|0)   d_getpwuid_r=undef
14066                 getpwuid_r_proto=0
14067                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14068         * )     case "$getpwuid_r_proto" in
14069                 REENTRANT_PROTO*) ;;
14070                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14071                 esac
14072                 echo "Prototype: $try" ;;
14073         esac
14074         ;;
14075         *)      case "$usethreads" in
14076                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14077                 esac
14078                 d_getpwuid_r=undef
14079                 getpwuid_r_proto=0
14080                 ;;
14081         esac
14082         ;;
14083 *)      getpwuid_r_proto=0
14084         ;;
14085 esac
14086
14087
14088 : see if getservbyname exists
14089 set getservbyname d_getsbyname
14090 eval $inlibc
14091
14092 : see if getservbyport exists
14093 set getservbyport d_getsbyport
14094 eval $inlibc
14095
14096 : see if getservent exists
14097 set getservent d_getsent
14098 eval $inlibc
14099
14100 : see if getservbyname_r exists
14101 set getservbyname_r d_getservbyname_r
14102 eval $inlibc
14103 case "$d_getservbyname_r" in
14104 "$define")
14105         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14106         case "$d_getservbyname_r_proto:$usethreads" in
14107         ":define")      d_getservbyname_r_proto=define
14108                 set d_getservbyname_r_proto getservbyname_r $hdrs
14109                 eval $hasproto ;;
14110         *)      ;;
14111         esac
14112         case "$d_getservbyname_r_proto" in
14113         define)
14114         case "$getservbyname_r_proto" in
14115         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14116         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14117         esac
14118         case "$getservbyname_r_proto" in
14119         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14120         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14121         esac
14122         case "$getservbyname_r_proto" in
14123         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14124         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14125         esac
14126         case "$getservbyname_r_proto" in
14127         ''|0)   d_getservbyname_r=undef
14128                 getservbyname_r_proto=0
14129                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14130         * )     case "$getservbyname_r_proto" in
14131                 REENTRANT_PROTO*) ;;
14132                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14133                 esac
14134                 echo "Prototype: $try" ;;
14135         esac
14136         ;;
14137         *)      case "$usethreads" in
14138                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14139                 esac
14140                 d_getservbyname_r=undef
14141                 getservbyname_r_proto=0
14142                 ;;
14143         esac
14144         ;;
14145 *)      getservbyname_r_proto=0
14146         ;;
14147 esac
14148
14149 : see if getservbyport_r exists
14150 set getservbyport_r d_getservbyport_r
14151 eval $inlibc
14152 case "$d_getservbyport_r" in
14153 "$define")
14154         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14155         case "$d_getservbyport_r_proto:$usethreads" in
14156         ":define")      d_getservbyport_r_proto=define
14157                 set d_getservbyport_r_proto getservbyport_r $hdrs
14158                 eval $hasproto ;;
14159         *)      ;;
14160         esac
14161         case "$d_getservbyport_r_proto" in
14162         define)
14163         case "$getservbyport_r_proto" in
14164         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14165         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14166         esac
14167         case "$getservbyport_r_proto" in
14168         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14169         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14170         esac
14171         case "$getservbyport_r_proto" in
14172         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14173         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14174         esac
14175         case "$getservbyport_r_proto" in
14176         ''|0)   d_getservbyport_r=undef
14177                 getservbyport_r_proto=0
14178                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14179         * )     case "$getservbyport_r_proto" in
14180                 REENTRANT_PROTO*) ;;
14181                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14182                 esac
14183                 echo "Prototype: $try" ;;
14184         esac
14185         ;;
14186         *)      case "$usethreads" in
14187                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14188                 esac
14189                 d_getservbyport_r=undef
14190                 getservbyport_r_proto=0
14191                 ;;
14192         esac
14193         ;;
14194 *)      getservbyport_r_proto=0
14195         ;;
14196 esac
14197
14198 : see if getservent_r exists
14199 set getservent_r d_getservent_r
14200 eval $inlibc
14201 case "$d_getservent_r" in
14202 "$define")
14203         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14204         case "$d_getservent_r_proto:$usethreads" in
14205         ":define")      d_getservent_r_proto=define
14206                 set d_getservent_r_proto getservent_r $hdrs
14207                 eval $hasproto ;;
14208         *)      ;;
14209         esac
14210         case "$d_getservent_r_proto" in
14211         define)
14212         case "$getservent_r_proto" in
14213         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14214         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14215         esac
14216         case "$getservent_r_proto" in
14217         ''|0) try='int getservent_r(struct servent*, char*, int);'
14218         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14219         esac
14220         case "$getservent_r_proto" in
14221         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14222         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14223         esac
14224         case "$getservent_r_proto" in
14225         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14226         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14227         esac
14228         case "$getservent_r_proto" in
14229         ''|0)   d_getservent_r=undef
14230                 getservent_r_proto=0
14231                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14232         * )     case "$getservent_r_proto" in
14233                 REENTRANT_PROTO*) ;;
14234                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14235                 esac
14236                 echo "Prototype: $try" ;;
14237         esac
14238         ;;
14239         *)      case "$usethreads" in
14240                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14241                 esac
14242                 d_getservent_r=undef
14243                 getservent_r_proto=0
14244                 ;;
14245         esac
14246         ;;
14247 *)      getservent_r_proto=0
14248         ;;
14249 esac
14250
14251 : see if prototypes for various getservxxx netdb.h functions are available
14252 echo " "
14253 set d_getservprotos getservent $i_netdb netdb.h
14254 eval $hasproto
14255
14256 : see if getspnam exists
14257 set getspnam d_getspnam
14258 eval $inlibc
14259
14260 : see if this is a shadow.h system
14261 set shadow.h i_shadow
14262 eval $inhdr
14263
14264 : see if getspnam_r exists
14265 set getspnam_r d_getspnam_r
14266 eval $inlibc
14267 case "$d_getspnam_r" in
14268 "$define")
14269         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14270         case "$d_getspnam_r_proto:$usethreads" in
14271         ":define")      d_getspnam_r_proto=define
14272                 set d_getspnam_r_proto getspnam_r $hdrs
14273                 eval $hasproto ;;
14274         *)      ;;
14275         esac
14276         case "$d_getspnam_r_proto" in
14277         define)
14278         case "$getspnam_r_proto" in
14279         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14280         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14281         esac
14282         case "$getspnam_r_proto" in
14283         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14284         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14285         esac
14286         case "$getspnam_r_proto" in
14287         ''|0)   d_getspnam_r=undef
14288                 getspnam_r_proto=0
14289                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14290         * )     case "$getspnam_r_proto" in
14291                 REENTRANT_PROTO*) ;;
14292                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14293                 esac
14294                 echo "Prototype: $try" ;;
14295         esac
14296         ;;
14297         *)      case "$usethreads" in
14298                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14299                 esac
14300                 d_getspnam_r=undef
14301                 getspnam_r_proto=0
14302                 ;;
14303         esac
14304         ;;
14305 *)      getspnam_r_proto=0
14306         ;;
14307 esac
14308
14309 : see if gettimeofday or ftime exists
14310 set gettimeofday d_gettimeod
14311 eval $inlibc
14312 case "$d_gettimeod" in
14313 "$undef")
14314         set ftime d_ftime 
14315         eval $inlibc
14316         ;;
14317 *)
14318         val="$undef"; set d_ftime; eval $setvar
14319         ;;
14320 esac
14321 case "$d_gettimeod$d_ftime" in
14322 "$undef$undef")
14323         echo " "
14324         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14325         ;;
14326 esac
14327
14328 : see if gmtime_r exists
14329 set gmtime_r d_gmtime_r
14330 eval $inlibc
14331 case "$d_gmtime_r" in
14332 "$define")
14333         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14334         case "$d_gmtime_r_proto:$usethreads" in
14335         ":define")      d_gmtime_r_proto=define
14336                 set d_gmtime_r_proto gmtime_r $hdrs
14337                 eval $hasproto ;;
14338         *)      ;;
14339         esac
14340         case "$d_gmtime_r_proto" in
14341         define)
14342         case "$gmtime_r_proto" in
14343         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14344         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14345         esac
14346         case "$gmtime_r_proto" in
14347         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14348         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14349         esac
14350         case "$gmtime_r_proto" in
14351         ''|0)   d_gmtime_r=undef
14352                 gmtime_r_proto=0
14353                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14354         * )     case "$gmtime_r_proto" in
14355                 REENTRANT_PROTO*) ;;
14356                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14357                 esac
14358                 echo "Prototype: $try" ;;
14359         esac
14360         ;;
14361         *)      case "$usethreads" in
14362                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14363                 esac
14364                 d_gmtime_r=undef
14365                 gmtime_r_proto=0
14366                 ;;
14367         esac
14368         ;;
14369 *)      gmtime_r_proto=0
14370         ;;
14371 esac
14372
14373 : see if hasmntopt exists
14374 set hasmntopt d_hasmntopt
14375 eval $inlibc
14376
14377 : see if this is a netinet/in.h or sys/in.h system
14378 set netinet/in.h i_niin sys/in.h i_sysin
14379 eval $inhdr
14380
14381 : see if arpa/inet.h has to be included
14382 set arpa/inet.h i_arpainet
14383 eval $inhdr
14384
14385 : see if htonl --and friends-- exists
14386 val=''
14387 set htonl val
14388 eval $inlibc
14389
14390 : Maybe they are macros.
14391 case "$val" in
14392 $undef)
14393         $cat >htonl.c <<EOM
14394 #include <stdio.h>
14395 #include <sys/types.h>
14396 #$i_niin I_NETINET_IN
14397 #$i_sysin I_SYS_IN
14398 #$i_arpainet I_ARPA_INET
14399 #ifdef I_NETINET_IN
14400 #include <netinet/in.h>
14401 #endif
14402 #ifdef I_SYS_IN
14403 #include <sys/in.h>
14404 #endif
14405 #ifdef I_ARPA_INET
14406 #include <arpa/inet.h>
14407 #endif
14408 #ifdef htonl
14409 printf("Defined as a macro.");
14410 #endif
14411 EOM
14412         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14413         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14414                 val="$define"
14415                 echo "But it seems to be defined as a macro." >&4
14416         fi
14417         $rm -f htonl.?
14418         ;;
14419 esac
14420 set d_htonl
14421 eval $setvar
14422
14423 : see if ilogbl exists
14424 set ilogbl d_ilogbl
14425 eval $inlibc
14426
14427 : index or strchr
14428 echo " "
14429 if set index val -f; eval $csym; $val; then
14430         if set strchr val -f d_strchr; eval $csym; $val; then
14431                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14432                         val="$define"
14433                         vali="$undef"
14434                         echo "strchr() found." >&4
14435                 else
14436                         val="$undef"
14437                         vali="$define"
14438                         echo "index() found." >&4
14439                 fi
14440         else
14441                 val="$undef"
14442                 vali="$define"
14443                 echo "index() found." >&4
14444         fi
14445 else
14446         if set strchr val -f d_strchr; eval $csym; $val; then
14447                 val="$define"
14448                 vali="$undef"
14449                 echo "strchr() found." >&4
14450         else
14451                 echo "No index() or strchr() found!" >&4
14452                 val="$undef"
14453                 vali="$undef"
14454         fi
14455 fi
14456 set d_strchr; eval $setvar
14457 val="$vali"
14458 set d_index; eval $setvar
14459
14460 : check whether inet_aton exists
14461 set inet_aton d_inetaton
14462 eval $inlibc
14463
14464 : Look for isascii
14465 echo " "
14466 $cat >isascii.c <<EOCP
14467 #include <stdio.h>
14468 #include <ctype.h>
14469 #$i_stdlib I_STDLIB
14470 #ifdef I_STDLIB
14471 #include <stdlib.h>
14472 #endif
14473 int main() {
14474         int c = 'A';
14475         if (isascii(c))
14476                 exit(0);
14477         else
14478                 exit(1);
14479 }
14480 EOCP
14481 set isascii
14482 if eval $compile; then
14483         echo "isascii() found." >&4
14484         val="$define"
14485 else
14486         echo "isascii() NOT found." >&4
14487         val="$undef"
14488 fi
14489 set d_isascii
14490 eval $setvar
14491 $rm -f isascii*
14492
14493 : see if isfinite exists
14494 set isfinite d_isfinite
14495 eval $inlibc
14496
14497 : see if isinf exists
14498 set isinf d_isinf
14499 eval $inlibc
14500
14501 : see if isnan exists
14502 set isnan d_isnan
14503 eval $inlibc
14504
14505 : see if isnanl exists
14506 set isnanl d_isnanl
14507 eval $inlibc
14508
14509 : see if killpg exists
14510 set killpg d_killpg
14511 eval $inlibc
14512
14513 : see if lchown exists
14514 echo " "
14515 $cat > try.c <<'EOCP'
14516 /* System header to define __stub macros and hopefully few prototypes,
14517     which can conflict with char lchown(); below.  */
14518 #include <assert.h>
14519 /* Override any gcc2 internal prototype to avoid an error.  */
14520 /* We use char because int might match the return type of a gcc2
14521    builtin and then its argument prototype would still apply.  */
14522 char lchown();
14523 int main() {
14524     /*  The GNU C library defines this for functions which it implements
14525         to always fail with ENOSYS.  Some functions are actually named
14526         something starting with __ and the normal name is an alias.  */
14527 #if defined (__stub_lchown) || defined (__stub___lchown)
14528 choke me
14529 #else
14530 lchown();
14531 #endif
14532 ; return 0; }
14533 EOCP
14534 set try
14535 if eval $compile; then
14536     $echo "lchown() found." >&4
14537     val="$define"
14538 else
14539     $echo "lchown() NOT found." >&4
14540     val="$undef"
14541 fi
14542 set d_lchown
14543 eval $setvar
14544
14545 : See if number of significant digits in a double precision number is known
14546 echo " "
14547 $cat >ldbl_dig.c <<EOM
14548 #$i_limits I_LIMITS
14549 #$i_float I_FLOAT
14550 #ifdef I_LIMITS
14551 #include <limits.h>
14552 #endif
14553 #ifdef I_FLOAT
14554 #include <float.h>
14555 #endif
14556 #ifdef LDBL_DIG
14557 printf("Contains LDBL_DIG");
14558 #endif
14559 EOM
14560 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14561 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14562         echo "LDBL_DIG found." >&4
14563         val="$define"
14564 else
14565         echo "LDBL_DIG NOT found." >&4
14566         val="$undef"
14567 fi
14568 $rm -f ldbl_dig.?
14569 set d_ldbl_dig
14570 eval $setvar
14571
14572 : see if this is a math.h system
14573 set math.h i_math
14574 eval $inhdr
14575
14576 d_libm_lib_version="$undef"
14577 case $i_math in
14578     $define)
14579         : check to see if math.h defines _LIB_VERSION
14580         echo " "
14581         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14582         $cat >try.c <<EOCP
14583 #include <unistd.h>
14584 #include <math.h>
14585 int main (int argc, char *argv[])
14586 {
14587     printf ("%d\n", _LIB_VERSION);
14588     return (0);
14589     } /* main */
14590 EOCP
14591         set try
14592         if eval $compile; then
14593             foo=`$run ./try`
14594             echo "Yes, it does ($foo)" >&4
14595             d_libm_lib_version="$define"
14596         else
14597             echo "No, it does not (probably harmless)\n" >&4
14598             fi
14599         $rm -f try.* try core core.try.*
14600         ;;
14601
14602     esac
14603
14604 : see if link exists
14605 set link d_link
14606 eval $inlibc
14607
14608 : see if localtime_r exists
14609 set localtime_r d_localtime_r
14610 eval $inlibc
14611 case "$d_localtime_r" in
14612 "$define")
14613         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14614         case "$d_localtime_r_proto:$usethreads" in
14615         ":define")      d_localtime_r_proto=define
14616                 set d_localtime_r_proto localtime_r $hdrs
14617                 eval $hasproto ;;
14618         *)      ;;
14619         esac
14620         case "$d_localtime_r_proto" in
14621         define)
14622         case "$localtime_r_proto" in
14623         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14624         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14625         esac
14626         case "$localtime_r_proto" in
14627         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14628         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14629         esac
14630         case "$localtime_r_proto" in
14631         ''|0)   d_localtime_r=undef
14632                 localtime_r_proto=0
14633                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14634         * )     case "$localtime_r_proto" in
14635                 REENTRANT_PROTO*) ;;
14636                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14637                 esac
14638                 echo "Prototype: $try" ;;
14639         esac
14640         ;;
14641         *)      case "$usethreads" in
14642                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14643                 esac
14644                 d_localtime_r=undef
14645                 localtime_r_proto=0
14646                 ;;
14647         esac
14648         ;;
14649 *)      localtime_r_proto=0
14650         ;;
14651 esac
14652
14653 : see if localtime_r calls tzset
14654 case "$localtime_r_proto" in
14655 REENTRANT_PROTO*)
14656         $cat >try.c <<EOCP
14657 /*  Does our libc's localtime_r call tzset ?
14658  *  return 0 if so, 1 otherwise.
14659  */
14660 #include <sys/types.h>
14661 #include <unistd.h>
14662 #include <time.h>
14663 #include <string.h>
14664 #include <malloc.h>
14665 int main()
14666 {
14667     time_t t = time(0L);
14668     char w_tz[]="TZ" "=GMT+5",
14669          e_tz[]="TZ" "=GMT-5",
14670         *tz_e = (char*)malloc(16),
14671         *tz_w = (char*)malloc(16);
14672     struct tm tm_e, tm_w;
14673     memset(&tm_e,'\0',sizeof(struct tm));
14674     memset(&tm_w,'\0',sizeof(struct tm));
14675     strcpy(tz_e,e_tz);
14676     strcpy(tz_w,w_tz);
14677
14678     putenv(tz_e);
14679     localtime_r(&t, &tm_e);
14680
14681     putenv(tz_w);
14682     localtime_r(&t, &tm_w);
14683
14684     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14685         return 1;
14686     return 0;
14687 }
14688 EOCP
14689         set try
14690         if eval $compile; then
14691             if ./try; then
14692                 d_localtime_r_needs_tzset=undef;
14693             else
14694                 d_localtime_r_needs_tzset=define;
14695             fi;
14696         else
14697             d_localtime_r_needs_tzset=undef;
14698         fi;
14699      ;;
14700   *)
14701      d_localtime_r_needs_tzset=undef;
14702      ;;
14703 esac
14704 $rm -f try try.* core
14705
14706 : see if localeconv exists
14707 set localeconv d_locconv
14708 eval $inlibc
14709
14710 : see if lockf exists
14711 set lockf d_lockf
14712 eval $inlibc
14713
14714 : see if prototype for lseek is available
14715 echo " "
14716 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14717 eval $hasproto
14718
14719 : see if lstat exists
14720 set lstat d_lstat
14721 eval $inlibc
14722
14723 : see if madvise exists
14724 set madvise d_madvise
14725 eval $inlibc
14726
14727 : see if malloc_size exists
14728 set malloc_size d_malloc_size
14729 eval $inlibc
14730
14731 : see if malloc_size_good exists
14732 set malloc_good_size d_malloc_good_size
14733 eval $inlibc
14734
14735 : see if mblen exists
14736 set mblen d_mblen
14737 eval $inlibc
14738
14739 : see if mbstowcs exists
14740 set mbstowcs d_mbstowcs
14741 eval $inlibc
14742
14743 : see if mbtowc exists
14744 set mbtowc d_mbtowc
14745 eval $inlibc
14746
14747 : see if memchr exists
14748 set memchr d_memchr
14749 eval $inlibc
14750
14751 : see if memcmp exists
14752 set memcmp d_memcmp
14753 eval $inlibc
14754
14755 : see if memcpy exists
14756 set memcpy d_memcpy
14757 eval $inlibc
14758
14759 : see if memmove exists
14760 set memmove d_memmove
14761 eval $inlibc
14762
14763 : see if memset exists
14764 set memset d_memset
14765 eval $inlibc
14766
14767 : see if mkdir exists
14768 set mkdir d_mkdir
14769 eval $inlibc
14770
14771 : see if mkdtemp exists
14772 set mkdtemp d_mkdtemp
14773 eval $inlibc
14774
14775 : see if mkfifo exists
14776 set mkfifo d_mkfifo
14777 eval $inlibc
14778
14779 : see if mkstemp exists
14780 set mkstemp d_mkstemp
14781 eval $inlibc
14782
14783 : see if mkstemps exists
14784 set mkstemps d_mkstemps
14785 eval $inlibc
14786
14787 : see if mktime exists
14788 set mktime d_mktime
14789 eval $inlibc
14790
14791 : see if this is a sys/mman.h system
14792 set sys/mman.h i_sysmman
14793 eval $inhdr
14794
14795 : see if mmap exists
14796 set mmap d_mmap
14797 eval $inlibc
14798 : see what shmat returns
14799 : default to something harmless
14800 mmaptype='void *'
14801 case "$i_sysmman$d_mmap" in
14802 "$define$define")
14803         $cat >mmap.c <<'END'
14804 #include <sys/mman.h>
14805 void *mmap();
14806 END
14807         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14808                 mmaptype='void *'
14809         else
14810                 mmaptype='caddr_t'
14811         fi
14812         echo "and it returns ($mmaptype)." >&4
14813         ;;
14814 esac
14815
14816
14817
14818 : see if sqrtl exists
14819 set sqrtl d_sqrtl
14820 eval $inlibc
14821
14822 : see if scalbnl exists
14823 set scalbnl d_scalbnl
14824 eval $inlibc
14825
14826 : see if modfl exists
14827 set modfl d_modfl
14828 eval $inlibc
14829
14830 : see if prototype for modfl is available
14831 echo " "
14832 set d_modflproto modfl $i_math math.h
14833 eval $hasproto
14834
14835 d_modfl_pow32_bug="$undef"
14836
14837 case "$d_longdbl$d_modfl" in
14838 $define$define)
14839         $cat <<EOM
14840 Checking to see whether your modfl() is okay for large values...
14841 EOM
14842 $cat >try.c <<EOCP
14843 #include <math.h> 
14844 #include <stdio.h>
14845 EOCP
14846 if $test "X$d_modflproto" != "X$define"; then
14847         $cat >>try.c <<EOCP
14848 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14849 long double modfl (long double, long double *);
14850 EOCP
14851 fi
14852 $cat >>try.c <<EOCP
14853 int main() {
14854     long double nv = 4294967303.15;
14855     long double v, w;
14856     v = modfl(nv, &w);         
14857 #ifdef __GLIBC__
14858     printf("glibc");
14859 #endif
14860     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14861     return 0;
14862 }
14863 EOCP
14864         case "$osname:$gccversion" in
14865         aix:)   saveccflags="$ccflags"
14866                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14867         esac
14868         set try
14869         if eval $compile; then
14870                 foo=`$run ./try`
14871                 case "$foo" in
14872                 *" 4294967303.150000 1.150000 4294967302.000000")
14873                         echo >&4 "Your modfl() is broken for large values."
14874                         d_modfl_pow32_bug="$define"
14875                         case "$foo" in
14876                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14877                         ;;
14878                         esac
14879                         ;;
14880                 *" 4294967303.150000 0.150000 4294967303.000000")
14881                         echo >&4 "Your modfl() seems okay for large values."
14882                         ;;
14883                 *)      echo >&4 "I don't understand your modfl() at all."
14884                         d_modfl="$undef"
14885                         ;;
14886                 esac
14887                 $rm -f try.* try core core.try.*
14888         else
14889                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14890                 d_modfl="$undef"
14891         fi
14892         case "$osname:$gccversion" in
14893         aix:)   ccflags="$saveccflags" ;; # restore
14894         esac
14895         ;;
14896 esac
14897
14898 if $test "$uselongdouble" = "$define"; then
14899     message=""
14900     if $test "$d_sqrtl" != "$define"; then
14901         message="$message sqrtl"
14902     fi
14903     if $test "$d_modfl" != "$define"; then
14904         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14905             echo "You have both aintl and copysignl, so I can emulate modfl."
14906         else
14907             message="$message modfl"
14908         fi
14909     fi
14910     if $test "$d_frexpl" != "$define"; then
14911         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14912             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14913         else
14914             message="$message frexpl"
14915         fi
14916     fi
14917
14918     if $test "$message" != ""; then
14919         $cat <<EOM >&4
14920
14921 *** You requested the use of long doubles but you do not seem to have
14922 *** the following mathematical functions needed for long double support:
14923 ***    $message
14924 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14925 *** Cannot continue, aborting.
14926
14927 EOM
14928
14929         exit 1
14930     fi
14931 fi
14932
14933 : see if mprotect exists
14934 set mprotect d_mprotect
14935 eval $inlibc
14936
14937 : see if msgctl exists
14938 set msgctl d_msgctl
14939 eval $inlibc
14940
14941 : see if msgget exists
14942 set msgget d_msgget
14943 eval $inlibc
14944
14945 : see if msgsnd exists
14946 set msgsnd d_msgsnd
14947 eval $inlibc
14948
14949 : see if msgrcv exists
14950 set msgrcv d_msgrcv
14951 eval $inlibc
14952
14953 : see how much of the 'msg*(2)' library is present.
14954 h_msg=true
14955 echo " "
14956 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14957 *"$undef"*) h_msg=false;;
14958 esac
14959 case "$osname" in
14960 freebsd)
14961     case "`ipcs 2>&1`" in
14962     "SVID messages"*"not configured"*)
14963         echo "Your $osname does not have the msg*(2) configured." >&4
14964         h_msg=false
14965         val="$undef"
14966         set msgctl d_msgctl
14967         eval $setvar
14968         set msgget d_msgget
14969         eval $setvar
14970         set msgsnd d_msgsnd
14971         eval $setvar
14972         set msgrcv d_msgrcv
14973         eval $setvar
14974         ;;
14975     esac
14976     ;;
14977 esac
14978 : we could also check for sys/ipc.h ...
14979 if $h_msg && $test `./findhdr sys/msg.h`; then
14980         echo "You have the full msg*(2) library." >&4
14981         val="$define"
14982 else
14983         echo "You don't have the full msg*(2) library." >&4
14984         val="$undef"
14985 fi
14986 set d_msg
14987 eval $setvar
14988
14989
14990 echo " "
14991 echo "Checking to see if your system supports struct msghdr..." >&4
14992 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14993 eval $hasstruct
14994 case "$d_msghdr_s" in
14995 "$define")      echo "Yes, it does."   ;;
14996 *)              echo "No, it doesn't." ;;
14997 esac
14998
14999
15000 : see if msync exists
15001 set msync d_msync
15002 eval $inlibc
15003
15004 : see if munmap exists
15005 set munmap d_munmap
15006 eval $inlibc
15007
15008 : see if nice exists
15009 set nice d_nice
15010 eval $inlibc
15011
15012 : see if this is a langinfo.h system
15013 set langinfo.h i_langinfo
15014 eval $inhdr
15015
15016 : see if nl_langinfo exists
15017 set nl_langinfo d_nl_langinfo
15018 eval $inlibc
15019
15020 : check for length of character
15021 echo " "
15022 case "$charsize" in
15023 '')
15024         echo "Checking to see how big your characters are (hey, you never know)..." >&4
15025         $cat >try.c <<EOCP
15026 #include <stdio.h>
15027 #$i_stdlib I_STDLIB
15028 #ifdef I_STDLIB
15029 #include <stdlib.h>
15030 #endif
15031 int main()
15032 {
15033     printf("%d\n", (int)sizeof(char));
15034     exit(0);
15035 }
15036 EOCP
15037         set try
15038         if eval $compile_ok; then
15039                 dflt=`$run ./try`
15040         else
15041                 dflt='1'
15042                 echo "(I can't seem to compile the test program.  Guessing...)"
15043         fi
15044         ;;
15045 *)
15046         dflt="$charsize"
15047         ;;
15048 esac
15049 rp="What is the size of a character (in bytes)?"
15050 . ./myread
15051 charsize="$ans"
15052 $rm -f try.c try
15053
15054 : check for volatile keyword
15055 echo " "
15056 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15057 $cat >try.c <<'EOCP'
15058 int main()
15059 {
15060         typedef struct _goo_struct goo_struct;
15061         goo_struct * volatile goo = ((goo_struct *)0);
15062         struct _goo_struct {
15063                 long long_int;
15064                 int reg_int;
15065                 char char_var;
15066         };
15067         typedef unsigned short foo_t;
15068         char *volatile foo;
15069         volatile int bar;
15070         volatile foo_t blech;
15071         foo = foo;
15072 }
15073 EOCP
15074 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15075         val="$define"
15076         echo "Yup, it does."
15077 else
15078         val="$undef"
15079         echo "Nope, it doesn't."
15080 fi
15081 set d_volatile
15082 eval $setvar
15083 $rm -f try.*
15084
15085
15086 echo " "
15087 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15088
15089 case "$use64bitint:$d_quad:$quadtype" in
15090 define:define:?*)
15091         ivtype="$quadtype"
15092         uvtype="$uquadtype"
15093         ivsize=8
15094         uvsize=8
15095         ;;
15096 *)      ivtype="long"
15097         uvtype="unsigned long"
15098         ivsize=$longsize
15099         uvsize=$longsize
15100         ;;
15101 esac
15102
15103 case "$uselongdouble:$d_longdbl" in
15104 define:define)
15105         nvtype="long double"
15106         nvsize=$longdblsize
15107         ;;
15108 *)      nvtype=double
15109         nvsize=$doublesize
15110         ;;
15111 esac
15112
15113 $echo "(IV will be "$ivtype", $ivsize bytes)"
15114 $echo "(UV will be "$uvtype", $uvsize bytes)"
15115 $echo "(NV will be "$nvtype", $nvsize bytes)"
15116
15117 $cat >try.c <<EOCP
15118 #$i_inttypes I_INTTYPES
15119 #ifdef I_INTTYPES
15120 #include <inttypes.h>
15121 #endif
15122 #include <stdio.h>
15123 int main() {
15124 #ifdef INT8
15125    int8_t i =  INT8_MAX;
15126   uint8_t u = UINT8_MAX;
15127   printf("int8_t\n");
15128 #endif
15129 #ifdef INT16
15130    int16_t i =  INT16_MAX;
15131   uint16_t i = UINT16_MAX;
15132   printf("int16_t\n");
15133 #endif
15134 #ifdef INT32
15135    int32_t i =  INT32_MAX;
15136   uint32_t u = UINT32_MAX;
15137   printf("int32_t\n");
15138 #endif
15139 }
15140 EOCP
15141
15142 case "$i8type" in
15143 '')     case "$charsize" in
15144         1)      i8type=char
15145                 u8type="unsigned char"
15146                 i8size=$charsize
15147                 u8size=$charsize
15148                 ;;
15149         esac
15150         ;;
15151 esac
15152 case "$i8type" in
15153 '')     set try -DINT8
15154         if eval $compile; then
15155                 case "`$run ./try`" in
15156                 int8_t) i8type=int8_t
15157                         u8type=uint8_t
15158                         i8size=1
15159                         u8size=1
15160                         ;;
15161                 esac
15162         fi
15163         ;;
15164 esac
15165 case "$i8type" in
15166 '')     if $test $charsize -ge 1; then
15167                 i8type=char
15168                 u8type="unsigned char"
15169                 i8size=$charsize
15170                 u8size=$charsize
15171         fi
15172         ;;
15173 esac
15174
15175 case "$i16type" in
15176 '')     case "$shortsize" in
15177         2)      i16type=short
15178                 u16type="unsigned short"
15179                 i16size=$shortsize
15180                 u16size=$shortsize
15181                 ;;
15182         esac
15183         ;;
15184 esac
15185 case "$i16type" in
15186 '')     set try -DINT16
15187         if eval $compile; then
15188                 case "`$run ./try`" in
15189                 int16_t)
15190                         i16type=int16_t
15191                         u16type=uint16_t
15192                         i16size=2
15193                         u16size=2
15194                         ;;
15195                 esac
15196         fi
15197         ;;
15198 esac
15199 case "$i16type" in
15200 '')     if $test $shortsize -ge 2; then
15201                 i16type=short
15202                 u16type="unsigned short"
15203                 i16size=$shortsize
15204                 u16size=$shortsize
15205         fi
15206         ;;
15207 esac
15208
15209 case "$i32type" in
15210 '')     case "$longsize" in
15211         4)      i32type=long
15212                 u32type="unsigned long"
15213                 i32size=$longsize
15214                 u32size=$longsize
15215                 ;;
15216         *)      case "$intsize" in
15217                 4)      i32type=int
15218                         u32type="unsigned int"
15219                         i32size=$intsize
15220                         u32size=$intsize
15221                         ;;
15222                 esac
15223                 ;;
15224         esac
15225         ;;
15226 esac
15227 case "$i32type" in
15228 '')     set try -DINT32
15229         if eval $compile; then
15230                 case "`$run ./try`" in
15231                 int32_t)
15232                         i32type=int32_t
15233                         u32type=uint32_t
15234                         i32size=4
15235                         u32size=4
15236                         ;;
15237                 esac
15238         fi
15239         ;;
15240 esac
15241 case "$i32type" in
15242 '')     if $test $intsize -ge 4; then
15243                 i32type=int
15244                 u32type="unsigned int"
15245                 i32size=$intsize
15246                 u32size=$intsize
15247         fi
15248         ;;
15249 esac
15250
15251 case "$i64type" in
15252 '')     case "$d_quad:$quadtype" in
15253         define:?*)
15254                 i64type="$quadtype"
15255                 u64type="$uquadtype"
15256                 i64size=8
15257                 u64size=8
15258                 ;;
15259         esac
15260         ;;
15261 esac
15262
15263 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15264 : volatile so that the compiler has to store it out to memory.
15265 if test X"$d_volatile" = X"$define"; then
15266         volatile=volatile
15267 fi
15268 $cat <<EOP >try.c
15269 #include <stdio.h>
15270 #$i_stdlib I_STDLIB
15271 #ifdef I_STDLIB
15272 #include <stdlib.h>
15273 #endif
15274 #include <sys/types.h>
15275 #include <signal.h>
15276 #ifdef SIGFPE
15277 $volatile int bletched = 0;
15278 $signal_t blech(int s) { bletched = 1; }
15279 #endif
15280 int main() {
15281     $uvtype u = 0;
15282     $nvtype d;
15283     int     n = 8 * $uvsize;
15284     int     i;
15285 #ifdef SIGFPE
15286     signal(SIGFPE, blech);
15287 #endif
15288
15289     for (i = 0; i < n; i++) {
15290       u = u << 1 | ($uvtype)1;
15291       d = ($nvtype)u;
15292       if (($uvtype)d != u)
15293         break;
15294       if (d <= 0)
15295         break;
15296       d = ($nvtype)(u - 1);
15297       if (($uvtype)d != (u - 1))
15298         break;
15299 #ifdef SIGFPE
15300       if (bletched) {
15301         break;
15302 #endif
15303       } 
15304     }
15305     printf("%d\n", ((i == n) ? -n : i));
15306     exit(0);
15307 }
15308 EOP
15309 set try
15310
15311 d_nv_preserves_uv="$undef"
15312 if eval $compile; then
15313         nv_preserves_uv_bits="`$run ./try`"
15314 fi
15315 case "$nv_preserves_uv_bits" in
15316 \-[1-9]*)       
15317         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15318         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15319         d_nv_preserves_uv="$define"
15320         ;;
15321 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15322         d_nv_preserves_uv="$undef" ;;
15323 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15324         nv_preserves_uv_bits="$undef" ;;
15325 esac
15326
15327 $rm -f try.* try
15328
15329 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15330 : volatile so that the compiler has to store it out to memory.
15331 if test X"$d_volatile" = X"$define"; then
15332         volatile=volatile
15333 fi
15334 $cat <<EOP >try.c
15335 #include <stdio.h>
15336 #$i_stdlib I_STDLIB
15337 #ifdef I_STDLIB
15338 #include <stdlib.h>
15339 #endif
15340 #$i_string I_STRING
15341 #ifdef I_STRING
15342 #  include <string.h>
15343 #else
15344 #  include <strings.h>
15345 #endif
15346 #include <sys/types.h>
15347 #include <signal.h>
15348 #ifdef SIGFPE
15349 $volatile int bletched = 0;
15350 $signal_t blech(int s) { bletched = 1; }
15351 #endif
15352
15353 int checkit($nvtype d, char *where) {
15354     unsigned char *p = (char *)&d;
15355     unsigned char *end = p + sizeof(d);
15356     int fail = 0;
15357
15358     while (p < end)
15359         fail += *p++;
15360
15361     if (!fail)
15362         return 0;
15363
15364     p = (char *)&d;
15365     printf("No - %s: 0x", where);
15366     while (p < end)
15367         printf ("%02X", *p++);
15368     printf("\n");
15369     return 1;
15370 }
15371
15372 int main(int argc, char **argv) {
15373     $nvtype d = 0.0;
15374     int fail = 0;
15375     fail += checkit(d, "0.0");
15376
15377     /* The compiler shouldn't be assuming that bletched is 0  */
15378     d = bletched;
15379
15380     fail += checkit(d, "bleched");
15381
15382 #ifdef SIGFPE
15383     signal(SIGFPE, blech);
15384 #endif
15385
15386     /* Paranoia - the compiler should have no way of knowing that ANSI says
15387        that argv[argc] will always be NULL.  Actually, if it did assume this it
15388        would be buggy, as this is C and main() can be called from elsewhere in
15389        the program.  */
15390     d = argv[argc] ? 1 : 0;
15391
15392     if (d) {
15393         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15394     }
15395
15396     fail += checkit(d, "ternary");
15397
15398     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15399
15400     if (d != 0.0) {
15401         printf("No - memset doesn't give 0.0\n");
15402         /* This might just blow up:  */
15403         printf("(gives %g)\n", d);
15404         return 1;
15405     }
15406     
15407 #ifdef SIGFPE
15408     if (bletched) {
15409         printf("No - something bleched\n");
15410         return 1;
15411     }
15412 #endif
15413     if (fail) {
15414       printf("No - %d fail(s)\n", fail);
15415       return 1;
15416     }
15417     printf("Yes\n");
15418     return 0;
15419 }
15420 EOP
15421 set try
15422
15423 d_nv_zero_is_allbits_zero="$undef"
15424 if eval $compile; then
15425     xxx="`$run ./try`"
15426     case "$?" in
15427         0)
15428             case "$xxx" in
15429                 Yes)  cat >&4 <<EOM
15430 0.0 is represented as all bits zero in memory
15431 EOM
15432                     d_nv_zero_is_allbits_zero="$define"
15433                     ;;
15434                 *)  cat >&4 <<EOM
15435 0.0 is not represented as all bits zero in memory
15436 EOM
15437                     d_nv_zero_is_allbits_zero="$undef"
15438                     ;;
15439             esac
15440             ;;
15441         *)  cat >&4 <<EOM
15442 0.0 is not represented as all bits zero in memory
15443 EOM
15444             d_nv_zero_is_allbits_zero="$undef"
15445             ;;
15446     esac
15447 fi
15448
15449 $rm -f try.* try
15450
15451
15452 : check for off64_t
15453 echo " "
15454 echo "Checking to see if you have off64_t..." >&4
15455 $cat >try.c <<EOCP
15456 #include <sys/types.h>
15457 #include <unistd.h>
15458 int main() { off64_t x = 7; }
15459 EOCP
15460 set try
15461 if eval $compile; then
15462         val="$define"
15463         echo "You have off64_t."
15464 else
15465         val="$undef"
15466         echo "You do not have off64_t."
15467         case "$lseeksize" in
15468         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15469         esac
15470 fi
15471 $rm -f try.* try
15472 set d_off64_t
15473 eval $setvar
15474
15475 : how to create joinable pthreads
15476 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15477         echo " "
15478         echo "Checking what constant to use for creating joinable pthreads..." >&4 
15479         $cat >try.c <<'EOCP'
15480 #include <pthread.h>
15481 int main() {
15482     int detachstate = JOINABLE;
15483 }
15484 EOCP
15485         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15486         if eval $compile; then
15487                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15488                 val="$undef" # Yes, undef.
15489                 set d_old_pthread_create_joinable
15490                 eval $setvar
15491                 val=""
15492                 set old_pthread_create_joinable
15493                 eval $setvar
15494         else
15495                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15496                 if eval $compile; then
15497                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15498                         val="$define"
15499                         set d_old_pthread_create_joinable
15500                         eval $setvar
15501                         val=PTHREAD_CREATE_UNDETACHED
15502                         set old_pthread_create_joinable
15503                         eval $setvar
15504                 else            
15505                         set try -DJOINABLE=__UNDETACHED
15506                         if eval $compile; then
15507                                 echo "You seem to use __UNDETACHED." >&4
15508                                 val="$define"
15509                                 set d_old_pthread_create_joinable
15510                                 eval $setvar
15511                                 val=__UNDETACHED
15512                                 set old_pthread_create_joinable
15513                                 eval $setvar
15514                         else
15515                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15516                                 val="$define"
15517                                 set d_old_pthread_create_joinable
15518                                 eval $setvar
15519                                 val=0
15520                                 set old_pthread_create_joinable
15521                                 eval $setvar
15522                         fi
15523                 fi
15524         fi
15525         $rm -f try try.*
15526 else
15527     d_old_pthread_create_joinable="$undef"
15528     old_pthread_create_joinable=""
15529 fi
15530
15531 : see if pause exists
15532 set pause d_pause
15533 eval $inlibc
15534
15535 : see if pipe exists
15536 set pipe d_pipe
15537 eval $inlibc
15538
15539 : see if poll exists
15540 set poll d_poll
15541 eval $inlibc
15542
15543 : see if readlink exists
15544 set readlink d_readlink
15545 eval $inlibc
15546
15547 echo " "
15548 procselfexe=''
15549 val="$undef"
15550 case "$d_readlink" in
15551 "$define")
15552         if $issymlink /proc/self/exe ; then
15553                 $ls -l /proc/self/exe > reflect
15554                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15555                         echo "You have Linux-like /proc/self/exe."
15556                         procselfexe='"/proc/self/exe"'
15557                         val="$define"
15558                 fi
15559         fi
15560         if $issymlink /proc/curproc/file ; then
15561                 $ls -l /proc/curproc/file > reflect
15562                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15563                         echo "You have BSD-like /proc/curproc/file."
15564                         procselfexe='"/proc/curproc/file"'
15565                         val="$define"
15566                 fi
15567         fi
15568         ;;
15569 esac
15570 $rm -f reflect
15571 set d_procselfexe
15572 eval $setvar
15573
15574 : see whether the pthread_atfork exists
15575 $cat >try.c <<EOP
15576 #include <pthread.h>
15577 #include <stdio.h>
15578 int main() {
15579 #ifdef  PTHREAD_ATFORK
15580         pthread_atfork(NULL,NULL,NULL);
15581 #endif
15582 }
15583 EOP
15584
15585 : see if pthread_atfork exists
15586 set try -DPTHREAD_ATFORK
15587 if eval $compile; then
15588     val="$define"
15589 else
15590     val="$undef"
15591 fi
15592 case "$usethreads" in
15593 $define)
15594         case "$val" in
15595         $define) echo 'pthread_atfork found.' >&4        ;;
15596         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15597         esac
15598 esac
15599 set d_pthread_atfork
15600 eval $setvar
15601
15602 : see if pthread_attr_setscope exists
15603 set pthread_attr_setscope d_pthread_attr_setscope
15604 eval $inlibc
15605
15606
15607 : see whether the various POSIXish _yields exist
15608 $cat >try.c <<EOP
15609 #include <pthread.h>
15610 #include <stdio.h>
15611 int main() {
15612 #ifdef SCHED_YIELD
15613         sched_yield();
15614 #else
15615 #ifdef PTHREAD_YIELD
15616         pthread_yield();
15617 #else
15618 #ifdef PTHREAD_YIELD_NULL
15619         pthread_yield(NULL);
15620 #endif
15621 #endif
15622 #endif
15623 }
15624 EOP
15625 : see if sched_yield exists
15626 set try -DSCHED_YIELD
15627 if eval $compile; then
15628     val="$define"
15629     sched_yield='sched_yield()'
15630 else
15631     val="$undef"
15632 fi
15633 case "$usethreads" in
15634 $define)
15635         case "$val" in
15636         $define) echo 'sched_yield() found.' >&4        ;;
15637         *)       echo 'sched_yield() NOT found.' >&4    ;;
15638         esac
15639 esac
15640 set d_sched_yield
15641 eval $setvar
15642
15643 : see if pthread_yield exists
15644 set try -DPTHREAD_YIELD
15645 if eval $compile; then
15646     val="$define"
15647     case "$sched_yield" in
15648     '') sched_yield='pthread_yield()' ;;
15649     esac
15650 else
15651     set try -DPTHREAD_YIELD_NULL
15652     if eval $compile; then
15653         val="$define"
15654         case "$sched_yield" in
15655         '') sched_yield='pthread_yield(NULL)' ;;
15656         esac
15657     else
15658         val="$undef"
15659     fi
15660 fi
15661 case "$usethreads" in
15662 $define)
15663         case "$val" in
15664         $define) echo 'pthread_yield() found.' >&4      ;;
15665         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15666         esac
15667         ;;
15668 esac
15669 set d_pthread_yield
15670 eval $setvar
15671
15672 case "$sched_yield" in
15673 '') sched_yield=undef ;;
15674 esac
15675
15676 $rm -f try try.*
15677
15678 : see if random_r exists
15679 set random_r d_random_r
15680 eval $inlibc
15681 case "$d_random_r" in
15682 "$define")
15683         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15684         case "$d_random_r_proto:$usethreads" in
15685         ":define")      d_random_r_proto=define
15686                 set d_random_r_proto random_r $hdrs
15687                 eval $hasproto ;;
15688         *)      ;;
15689         esac
15690         case "$d_random_r_proto" in
15691         define)
15692         case "$random_r_proto" in
15693         ''|0) try='int random_r(int*, struct random_data*);'
15694         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15695         esac
15696         case "$random_r_proto" in
15697         ''|0) try='int random_r(long*, struct random_data*);'
15698         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15699         esac
15700         case "$random_r_proto" in
15701         ''|0) try='int random_r(struct random_data*, int32_t*);'
15702         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15703         esac
15704         case "$random_r_proto" in
15705         ''|0)   d_random_r=undef
15706                 random_r_proto=0
15707                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15708         * )     case "$random_r_proto" in
15709                 REENTRANT_PROTO*) ;;
15710                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15711                 esac
15712                 echo "Prototype: $try" ;;
15713         esac
15714         ;;
15715         *)      case "$usethreads" in
15716                 define) echo "random_r has no prototype, not using it." >&4 ;;
15717                 esac
15718                 d_random_r=undef
15719                 random_r_proto=0
15720                 ;;
15721         esac
15722         ;;
15723 *)      random_r_proto=0
15724         ;;
15725 esac
15726
15727 : see if readdir and friends exist
15728 set readdir d_readdir
15729 eval $inlibc
15730 set seekdir d_seekdir
15731 eval $inlibc
15732 set telldir d_telldir
15733 eval $inlibc
15734 set rewinddir d_rewinddir
15735 eval $inlibc
15736
15737 : see if readdir64_r exists
15738 set readdir64_r d_readdir64_r
15739 eval $inlibc
15740 case "$d_readdir64_r" in
15741 "$define")
15742         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15743         case "$d_readdir64_r_proto:$usethreads" in
15744         ":define")      d_readdir64_r_proto=define
15745                 set d_readdir64_r_proto readdir64_r $hdrs
15746                 eval $hasproto ;;
15747         *)      ;;
15748         esac
15749         case "$d_readdir64_r_proto" in
15750         define)
15751         case "$readdir64_r_proto" in
15752         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15753         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15754         esac
15755         case "$readdir64_r_proto" in
15756         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15757         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15758         esac
15759         case "$readdir64_r_proto" in
15760         ''|0)   d_readdir64_r=undef
15761                 readdir64_r_proto=0
15762                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15763         * )     case "$readdir64_r_proto" in
15764                 REENTRANT_PROTO*) ;;
15765                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15766                 esac
15767                 echo "Prototype: $try" ;;
15768         esac
15769         ;;
15770         *)      case "$usethreads" in
15771                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15772                 esac
15773                 d_readdir64_r=undef
15774                 readdir64_r_proto=0
15775                 ;;
15776         esac
15777         ;;
15778 *)      readdir64_r_proto=0
15779         ;;
15780 esac
15781
15782 : see if readdir_r exists
15783 set readdir_r d_readdir_r
15784 eval $inlibc
15785 case "$d_readdir_r" in
15786 "$define")
15787         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15788         case "$d_readdir_r_proto:$usethreads" in
15789         ":define")      d_readdir_r_proto=define
15790                 set d_readdir_r_proto readdir_r $hdrs
15791                 eval $hasproto ;;
15792         *)      ;;
15793         esac
15794         case "$d_readdir_r_proto" in
15795         define)
15796         case "$readdir_r_proto" in
15797         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15798         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15799         esac
15800         case "$readdir_r_proto" in
15801         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15802         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15803         esac
15804         case "$readdir_r_proto" in
15805         ''|0)   d_readdir_r=undef
15806                 readdir_r_proto=0
15807                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15808         * )     case "$readdir_r_proto" in
15809                 REENTRANT_PROTO*) ;;
15810                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15811                 esac
15812                 echo "Prototype: $try" ;;
15813         esac
15814         ;;
15815         *)      case "$usethreads" in
15816                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15817                 esac
15818                 d_readdir_r=undef
15819                 readdir_r_proto=0
15820                 ;;
15821         esac
15822         ;;
15823 *)      readdir_r_proto=0
15824         ;;
15825 esac
15826
15827 : see if readv exists
15828 set readv d_readv
15829 eval $inlibc
15830
15831 : see if recvmsg exists
15832 set recvmsg d_recvmsg
15833 eval $inlibc
15834
15835 : see if rename exists
15836 set rename d_rename
15837 eval $inlibc
15838
15839 : see if rmdir exists
15840 set rmdir d_rmdir
15841 eval $inlibc
15842
15843 : see if memory.h is available.
15844 val=''
15845 set memory.h val
15846 eval $inhdr
15847
15848 : See if it conflicts with string.h
15849 case "$val" in
15850 $define)
15851         case "$strings" in
15852         '') ;;
15853         *)
15854                 $cppstdin $cppflags $cppminus < $strings > mem.h
15855                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15856                         echo " "
15857                         echo "We won't be including <memory.h>."
15858                         val="$undef"
15859                 fi
15860                 $rm -f mem.h
15861                 ;;
15862         esac
15863 esac
15864 set i_memory
15865 eval $setvar
15866
15867 : can bcopy handle overlapping blocks?
15868 echo " "
15869 val="$undef"
15870 case "$d_memmove" in
15871 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15872 *)      case "$d_bcopy" in
15873         "$define")
15874                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15875                 $cat >try.c <<EOCP
15876 #$i_memory I_MEMORY
15877 #$i_stdlib I_STDLIB
15878 #$i_string I_STRING
15879 #$i_unistd I_UNISTD
15880 EOCP
15881         $cat >>try.c <<'EOCP'
15882 #include <stdio.h>
15883 #ifdef I_MEMORY
15884 #  include <memory.h>
15885 #endif
15886 #ifdef I_STDLIB
15887 #  include <stdlib.h>
15888 #endif
15889 #ifdef I_STRING
15890 #  include <string.h>
15891 #else
15892 #  include <strings.h>
15893 #endif
15894 #ifdef I_UNISTD
15895 #  include <unistd.h>  /* Needed for NetBSD */
15896 #endif
15897 int main()
15898 {
15899 char buf[128], abc[128];
15900 char *b;
15901 int len;
15902 int off;
15903 int align;
15904
15905 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15906    try to store the string in read-only memory. */
15907 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15908
15909 for (align = 7; align >= 0; align--) {
15910         for (len = 36; len; len--) {
15911                 b = buf+align;
15912                 bcopy(abc, b, len);
15913                 for (off = 1; off <= len; off++) {
15914                         bcopy(b, b+off, len);
15915                         bcopy(b+off, b, len);
15916                         if (bcmp(b, abc, len))
15917                                 exit(1);
15918                 }
15919         }
15920 }
15921 exit(0);
15922 }
15923 EOCP
15924                 set try
15925                 if eval $compile_ok; then
15926                         if ./try 2>/dev/null; then
15927                                 echo "Yes, it can."
15928                                 val="$define"
15929                         else
15930                                 echo "It can't, sorry."
15931                         fi
15932                 else
15933                         echo "(I can't compile the test program, so we'll assume not...)"
15934                 fi
15935                 ;;
15936         esac
15937         $rm -f try.* try core
15938         ;;
15939 esac
15940 set d_safebcpy
15941 eval $setvar
15942
15943 : can memcpy handle overlapping blocks?
15944 echo " "
15945 val="$undef"
15946 case "$d_memmove" in
15947 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15948 *)      case "$d_memcpy" in
15949         "$define")
15950                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15951                 $cat >try.c <<EOCP
15952 #$i_memory I_MEMORY
15953 #$i_stdlib I_STDLIB
15954 #$i_string I_STRING
15955 #$i_unistd I_UNISTD
15956 EOCP
15957         $cat >>try.c <<'EOCP'
15958 #include <stdio.h>
15959 #ifdef I_MEMORY
15960 #  include <memory.h>
15961 #endif
15962 #ifdef I_STDLIB
15963 #  include <stdlib.h>
15964 #endif
15965 #ifdef I_STRING
15966 #  include <string.h>
15967 #else
15968 #  include <strings.h>
15969 #endif
15970 #ifdef I_UNISTD
15971 #  include <unistd.h>  /* Needed for NetBSD */
15972 #endif
15973 int main()
15974 {
15975 char buf[128], abc[128];
15976 char *b;
15977 int len;
15978 int off;
15979 int align;
15980
15981 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15982    try to store the string in read-only memory. */
15983 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15984
15985 for (align = 7; align >= 0; align--) {
15986         for (len = 36; len; len--) {
15987                 b = buf+align;
15988                 memcpy(b, abc, len);
15989                 for (off = 1; off <= len; off++) {
15990                         memcpy(b+off, b, len);
15991                         memcpy(b, b+off, len);
15992                         if (memcmp(b, abc, len))
15993                                 exit(1);
15994                 }
15995         }
15996 }
15997 exit(0);
15998 }
15999 EOCP
16000                 set try
16001                 if eval $compile_ok; then
16002                         if ./try 2>/dev/null; then
16003                                 echo "Yes, it can."
16004                                 val="$define"
16005                         else
16006                                 echo "It can't, sorry."
16007                         fi
16008                 else
16009                         echo "(I can't compile the test program, so we'll assume not...)"
16010                 fi
16011                 ;;
16012         esac
16013         $rm -f try.* try core
16014         ;;
16015 esac
16016 set d_safemcpy
16017 eval $setvar
16018
16019 : can memcmp be trusted to compare relative magnitude?
16020 val="$undef"
16021 case "$d_memcmp" in
16022 "$define")
16023         echo " "
16024         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16025         $cat >try.c <<EOCP
16026 #$i_memory I_MEMORY
16027 #$i_stdlib I_STDLIB
16028 #$i_string I_STRING
16029 #$i_unistd I_UNISTD
16030 EOCP
16031         $cat >>try.c <<'EOCP'
16032 #include <stdio.h>
16033 #ifdef I_MEMORY
16034 #  include <memory.h>
16035 #endif
16036 #ifdef I_STDLIB
16037 #  include <stdlib.h>
16038 #endif
16039 #ifdef I_STRING
16040 #  include <string.h>
16041 #else
16042 #  include <strings.h>
16043 #endif
16044 #ifdef I_UNISTD
16045 #  include <unistd.h>  /* Needed for NetBSD */
16046 #endif
16047 int main()
16048 {
16049 char a = -1;
16050 char b = 0;
16051 if ((a < b) && memcmp(&a, &b, 1) < 0)
16052         exit(1);
16053 exit(0);
16054 }
16055 EOCP
16056         set try
16057         if eval $compile_ok; then
16058                 if $run ./try 2>/dev/null; then
16059                         echo "Yes, it can."
16060                         val="$define"
16061                 else
16062                         echo "No, it can't (it uses signed chars)."
16063                 fi
16064         else
16065                 echo "(I can't compile the test program, so we'll assume not...)"
16066         fi
16067         ;;
16068 esac
16069 $rm -f try.* try core
16070 set d_sanemcmp
16071 eval $setvar
16072
16073 : see if prototype for sbrk is available
16074 echo " "
16075 set d_sbrkproto sbrk $i_unistd unistd.h
16076 eval $hasproto
16077
16078 : see if select exists
16079 set select d_select
16080 eval $inlibc
16081
16082 : see if semctl exists
16083 set semctl d_semctl
16084 eval $inlibc
16085
16086 : see if semget exists
16087 set semget d_semget
16088 eval $inlibc
16089
16090 : see if semop exists
16091 set semop d_semop
16092 eval $inlibc
16093
16094 : see how much of the 'sem*(2)' library is present.
16095 h_sem=true
16096 echo " "
16097 case "$d_semctl$d_semget$d_semop" in
16098 *"$undef"*) h_sem=false;;
16099 esac
16100 case "$osname" in
16101 freebsd)
16102     case "`ipcs 2>&1`" in
16103     "SVID messages"*"not configured"*)
16104         echo "Your $osname does not have the sem*(2) configured." >&4
16105         h_sem=false
16106         val="$undef"
16107         set semctl d_semctl
16108         eval $setvar
16109         set semget d_semget
16110         eval $setvar
16111         set semop d_semop
16112         eval $setvar
16113         ;;
16114     esac
16115     ;;
16116 esac
16117 : we could also check for sys/ipc.h ...
16118 if $h_sem && $test `./findhdr sys/sem.h`; then
16119         echo "You have the full sem*(2) library." >&4
16120         val="$define"
16121 else
16122         echo "You don't have the full sem*(2) library." >&4
16123         val="$undef"
16124 fi
16125 set d_sem
16126 eval $setvar
16127
16128 : see whether sys/sem.h defines union semun
16129 echo " "
16130 $cat > try.c <<'END'
16131 #include <sys/types.h>
16132 #include <sys/ipc.h>
16133 #include <sys/sem.h>
16134 int main () { union semun semun; semun.buf = 0; }
16135 END
16136 set try
16137 if eval $compile; then
16138     echo "You have union semun in <sys/sem.h>." >&4
16139     val="$define"
16140 else
16141     echo "You do not have union semun in <sys/sem.h>." >&4
16142     val="$undef"
16143 fi
16144 $rm -f try try.c
16145 set d_union_semun
16146 eval $setvar
16147
16148 : see how to do semctl IPC_STAT
16149 case "$d_sem" in
16150 $define)
16151     echo " "
16152     $cat > try.h <<END
16153 #ifndef S_IRUSR
16154 #   ifdef S_IREAD
16155 #       define S_IRUSR S_IREAD
16156 #       define S_IWUSR S_IWRITE
16157 #       define S_IXUSR S_IEXEC
16158 #   else
16159 #       define S_IRUSR 0400
16160 #       define S_IWUSR 0200
16161 #       define S_IXUSR 0100
16162 #   endif
16163 #   define S_IRGRP (S_IRUSR>>3)
16164 #   define S_IWGRP (S_IWUSR>>3)
16165 #   define S_IXGRP (S_IXUSR>>3)
16166 #   define S_IROTH (S_IRUSR>>6)
16167 #   define S_IWOTH (S_IWUSR>>6)
16168 #   define S_IXOTH (S_IXUSR>>6)
16169 #endif
16170 #ifndef S_IRWXU
16171 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16172 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16173 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16174 #endif
16175 END
16176     : see whether semctl IPC_STAT can use union semun
16177     case "$d_semctl_semun" in
16178     '')
16179       val="$undef"
16180       $cat > try.c <<END
16181 #include <sys/types.h>
16182 #include <sys/ipc.h>
16183 #include <sys/sem.h>
16184 #include <sys/stat.h>
16185 #include <stdio.h>
16186 #include <errno.h>
16187 #include "try.h"
16188 #ifndef errno
16189 extern int errno;
16190 #endif
16191 #$d_union_semun HAS_UNION_SEMUN
16192 int main() {
16193     union semun
16194 #ifndef HAS_UNION_SEMUN
16195     {
16196         int val;
16197         struct semid_ds *buf;
16198         unsigned short *array;
16199     }
16200 #endif
16201     arg;
16202     int sem, st;
16203
16204 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16205     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16206     if (sem > -1) {
16207         struct semid_ds argbuf;
16208         arg.buf = &argbuf;
16209 #       ifdef IPC_STAT
16210         st = semctl(sem, 0, IPC_STAT, arg);
16211         if (st == 0)
16212             printf("semun\n");
16213         else
16214 #       endif /* IPC_STAT */
16215             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16216 #       ifdef IPC_RMID
16217         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16218 #       endif /* IPC_RMID */
16219             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16220     } else
16221 #endif /* IPC_PRIVATE && ... */
16222         printf("semget failed: errno = %d\n", errno);
16223   return 0;
16224 }
16225 END
16226       set try
16227       if eval $compile; then
16228           xxx=`$run ./try`
16229           case "$xxx" in
16230           semun) val="$define" ;;
16231           esac
16232       fi
16233       $rm -f try try.c
16234       set d_semctl_semun
16235       eval $setvar
16236       ;;
16237     esac
16238     case "$d_semctl_semun" in
16239     $define)
16240         echo "You can use union semun for semctl IPC_STAT." >&4
16241         also='also'
16242         ;;
16243     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16244         also=''
16245         ;;
16246     esac
16247
16248     : see whether semctl IPC_STAT can use struct semid_ds pointer
16249     case "$d_semctl_semid_ds" in
16250     '')
16251       val="$undef"
16252       $cat > try.c <<'END'
16253 #include <sys/types.h>
16254 #include <sys/ipc.h>
16255 #include <sys/sem.h>
16256 #include <sys/stat.h>
16257 #include "try.h"
16258 #include <stdio.h>
16259 #include <errno.h>
16260 #ifndef errno
16261 extern int errno;
16262 #endif
16263 int main() {
16264     struct semid_ds arg;
16265     int sem, st;
16266
16267 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16268     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16269     if (sem > -1) {
16270 #       ifdef IPC_STAT
16271         st = semctl(sem, 0, IPC_STAT, &arg);
16272         if (st == 0)
16273             printf("semid_ds\n");
16274         else
16275 #       endif /* IPC_STAT */
16276             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16277 #       ifdef IPC_RMID
16278         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16279 #       endif /* IPC_RMID */
16280             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16281     } else
16282 #endif /* IPC_PRIVATE && ... */
16283         printf("semget failed: errno = %d\n", errno);
16284
16285     return 0;
16286 }
16287 END
16288       set try
16289       if eval $compile; then
16290           xxx=`$run ./try`
16291           case "$xxx" in
16292           semid_ds) val="$define" ;;
16293           esac
16294       fi
16295       $rm -f try try.c
16296       set d_semctl_semid_ds
16297       eval $setvar
16298       ;;
16299     esac
16300     case "$d_semctl_semid_ds" in
16301     $define)
16302         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16303         ;;
16304     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16305         ;;
16306     esac
16307     $rm -f try.h
16308     ;;
16309 *)  val="$undef"
16310
16311     # We do not have the full sem*(2) library, so assume we can not
16312     # use either.
16313
16314     set d_semctl_semun
16315     eval $setvar
16316
16317     set d_semctl_semid_ds
16318     eval $setvar
16319     ;;
16320 esac
16321
16322 : see if sendmsg exists
16323 set sendmsg d_sendmsg
16324 eval $inlibc
16325
16326 : see if setegid exists
16327 set setegid d_setegid
16328 eval $inlibc
16329
16330 : see if seteuid exists
16331 set seteuid d_seteuid
16332 eval $inlibc
16333
16334 : see if setgrent exists
16335 set setgrent d_setgrent
16336 eval $inlibc
16337
16338 : see if setgrent_r exists
16339 set setgrent_r d_setgrent_r
16340 eval $inlibc
16341 case "$d_setgrent_r" in
16342 "$define")
16343         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16344         case "$d_setgrent_r_proto:$usethreads" in
16345         ":define")      d_setgrent_r_proto=define
16346                 set d_setgrent_r_proto setgrent_r $hdrs
16347                 eval $hasproto ;;
16348         *)      ;;
16349         esac
16350         case "$d_setgrent_r_proto" in
16351         define)
16352         case "$setgrent_r_proto" in
16353         ''|0) try='int setgrent_r(FILE**);'
16354         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16355         esac
16356         case "$setgrent_r_proto" in
16357         ''|0) try='void setgrent_r(FILE**);'
16358         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16359         esac
16360         case "$setgrent_r_proto" in
16361         ''|0)   d_setgrent_r=undef
16362                 setgrent_r_proto=0
16363                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16364         * )     case "$setgrent_r_proto" in
16365                 REENTRANT_PROTO*) ;;
16366                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16367                 esac
16368                 echo "Prototype: $try" ;;
16369         esac
16370         ;;
16371         *)      case "$usethreads" in
16372                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16373                 esac
16374                 d_setgrent_r=undef
16375                 setgrent_r_proto=0
16376                 ;;
16377         esac
16378         ;;
16379 *)      setgrent_r_proto=0
16380         ;;
16381 esac
16382
16383 : see if sethostent exists
16384 set sethostent d_sethent
16385 eval $inlibc
16386
16387 : see if sethostent_r exists
16388 set sethostent_r d_sethostent_r
16389 eval $inlibc
16390 case "$d_sethostent_r" in
16391 "$define")
16392         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16393         case "$d_sethostent_r_proto:$usethreads" in
16394         ":define")      d_sethostent_r_proto=define
16395                 set d_sethostent_r_proto sethostent_r $hdrs
16396                 eval $hasproto ;;
16397         *)      ;;
16398         esac
16399         case "$d_sethostent_r_proto" in
16400         define)
16401         case "$sethostent_r_proto" in
16402         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16403         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16404         esac
16405         case "$sethostent_r_proto" in
16406         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16407         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16408         esac
16409         case "$sethostent_r_proto" in
16410         ''|0)   d_sethostent_r=undef
16411                 sethostent_r_proto=0
16412                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16413         * )     case "$sethostent_r_proto" in
16414                 REENTRANT_PROTO*) ;;
16415                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16416                 esac
16417                 echo "Prototype: $try" ;;
16418         esac
16419         ;;
16420         *)      case "$usethreads" in
16421                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16422                 esac
16423                 d_sethostent_r=undef
16424                 sethostent_r_proto=0
16425                 ;;
16426         esac
16427         ;;
16428 *)      sethostent_r_proto=0
16429         ;;
16430 esac
16431
16432 : see if setitimer exists
16433 set setitimer d_setitimer
16434 eval $inlibc
16435
16436 : see if setlinebuf exists
16437 set setlinebuf d_setlinebuf
16438 eval $inlibc
16439
16440 : see if setlocale exists
16441 set setlocale d_setlocale
16442 eval $inlibc
16443
16444 : see if locale.h is available
16445 set locale.h i_locale
16446 eval $inhdr
16447
16448 : see if setlocale_r exists
16449 set setlocale_r d_setlocale_r
16450 eval $inlibc
16451 case "$d_setlocale_r" in
16452 "$define")
16453         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16454         case "$d_setlocale_r_proto:$usethreads" in
16455         ":define")      d_setlocale_r_proto=define
16456                 set d_setlocale_r_proto setlocale_r $hdrs
16457                 eval $hasproto ;;
16458         *)      ;;
16459         esac
16460         case "$d_setlocale_r_proto" in
16461         define)
16462         case "$setlocale_r_proto" in
16463         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16464         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16465         esac
16466         case "$setlocale_r_proto" in
16467         ''|0)   d_setlocale_r=undef
16468                 setlocale_r_proto=0
16469                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16470         * )     case "$setlocale_r_proto" in
16471                 REENTRANT_PROTO*) ;;
16472                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16473                 esac
16474                 echo "Prototype: $try" ;;
16475         esac
16476         ;;
16477         *)      case "$usethreads" in
16478                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16479                 esac
16480                 d_setlocale_r=undef
16481                 setlocale_r_proto=0
16482                 ;;
16483         esac
16484         ;;
16485 *)      setlocale_r_proto=0
16486         ;;
16487 esac
16488
16489 : see if setnetent exists
16490 set setnetent d_setnent
16491 eval $inlibc
16492
16493 : see if setnetent_r exists
16494 set setnetent_r d_setnetent_r
16495 eval $inlibc
16496 case "$d_setnetent_r" in
16497 "$define")
16498         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16499         case "$d_setnetent_r_proto:$usethreads" in
16500         ":define")      d_setnetent_r_proto=define
16501                 set d_setnetent_r_proto setnetent_r $hdrs
16502                 eval $hasproto ;;
16503         *)      ;;
16504         esac
16505         case "$d_setnetent_r_proto" in
16506         define)
16507         case "$setnetent_r_proto" in
16508         ''|0) try='int setnetent_r(int, struct netent_data*);'
16509         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16510         esac
16511         case "$setnetent_r_proto" in
16512         ''|0) try='void setnetent_r(int, struct netent_data*);'
16513         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16514         esac
16515         case "$setnetent_r_proto" in
16516         ''|0)   d_setnetent_r=undef
16517                 setnetent_r_proto=0
16518                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16519         * )     case "$setnetent_r_proto" in
16520                 REENTRANT_PROTO*) ;;
16521                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16522                 esac
16523                 echo "Prototype: $try" ;;
16524         esac
16525         ;;
16526         *)      case "$usethreads" in
16527                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16528                 esac
16529                 d_setnetent_r=undef
16530                 setnetent_r_proto=0
16531                 ;;
16532         esac
16533         ;;
16534 *)      setnetent_r_proto=0
16535         ;;
16536 esac
16537
16538 : see if setprotoent exists
16539 set setprotoent d_setpent
16540 eval $inlibc
16541
16542 : see if setpgid exists
16543 set setpgid d_setpgid
16544 eval $inlibc
16545
16546 : see if setpgrp2 exists
16547 set setpgrp2 d_setpgrp2
16548 eval $inlibc
16549
16550 : see if setpriority exists
16551 set setpriority d_setprior
16552 eval $inlibc
16553
16554 : see if setproctitle exists
16555 set setproctitle d_setproctitle
16556 eval $inlibc
16557
16558 : see if setprotoent_r exists
16559 set setprotoent_r d_setprotoent_r
16560 eval $inlibc
16561 case "$d_setprotoent_r" in
16562 "$define")
16563         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16564         case "$d_setprotoent_r_proto:$usethreads" in
16565         ":define")      d_setprotoent_r_proto=define
16566                 set d_setprotoent_r_proto setprotoent_r $hdrs
16567                 eval $hasproto ;;
16568         *)      ;;
16569         esac
16570         case "$d_setprotoent_r_proto" in
16571         define)
16572         case "$setprotoent_r_proto" in
16573         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16574         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16575         esac
16576         case "$setprotoent_r_proto" in
16577         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16578         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16579         esac
16580         case "$setprotoent_r_proto" in
16581         ''|0)   d_setprotoent_r=undef
16582                 setprotoent_r_proto=0
16583                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16584         * )     case "$setprotoent_r_proto" in
16585                 REENTRANT_PROTO*) ;;
16586                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16587                 esac
16588                 echo "Prototype: $try" ;;
16589         esac
16590         ;;
16591         *)      case "$usethreads" in
16592                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16593                 esac
16594                 d_setprotoent_r=undef
16595                 setprotoent_r_proto=0
16596                 ;;
16597         esac
16598         ;;
16599 *)      setprotoent_r_proto=0
16600         ;;
16601 esac
16602
16603 : see if setpwent exists
16604 set setpwent d_setpwent
16605 eval $inlibc
16606
16607 : see if setpwent_r exists
16608 set setpwent_r d_setpwent_r
16609 eval $inlibc
16610 case "$d_setpwent_r" in
16611 "$define")
16612         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16613         case "$d_setpwent_r_proto:$usethreads" in
16614         ":define")      d_setpwent_r_proto=define
16615                 set d_setpwent_r_proto setpwent_r $hdrs
16616                 eval $hasproto ;;
16617         *)      ;;
16618         esac
16619         case "$d_setpwent_r_proto" in
16620         define)
16621         case "$setpwent_r_proto" in
16622         ''|0) try='int setpwent_r(FILE**);'
16623         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16624         esac
16625         case "$setpwent_r_proto" in
16626         ''|0) try='void setpwent_r(FILE**);'
16627         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16628         esac
16629         case "$setpwent_r_proto" in
16630         ''|0)   d_setpwent_r=undef
16631                 setpwent_r_proto=0
16632                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16633         * )     case "$setpwent_r_proto" in
16634                 REENTRANT_PROTO*) ;;
16635                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16636                 esac
16637                 echo "Prototype: $try" ;;
16638         esac
16639         ;;
16640         *)      case "$usethreads" in
16641                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16642                 esac
16643                 d_setpwent_r=undef
16644                 setpwent_r_proto=0
16645                 ;;
16646         esac
16647         ;;
16648 *)      setpwent_r_proto=0
16649         ;;
16650 esac
16651
16652 : see if setregid exists
16653 set setregid d_setregid
16654 eval $inlibc
16655 set setresgid d_setresgid
16656 eval $inlibc
16657
16658 : see if setreuid exists
16659 set setreuid d_setreuid
16660 eval $inlibc
16661 set setresuid d_setresuid
16662 eval $inlibc
16663
16664 : see if setrgid exists
16665 set setrgid d_setrgid
16666 eval $inlibc
16667
16668 : see if setruid exists
16669 set setruid d_setruid
16670 eval $inlibc
16671
16672 : see if setservent exists
16673 set setservent d_setsent
16674 eval $inlibc
16675
16676 : see if setservent_r exists
16677 set setservent_r d_setservent_r
16678 eval $inlibc
16679 case "$d_setservent_r" in
16680 "$define")
16681         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16682         case "$d_setservent_r_proto:$usethreads" in
16683         ":define")      d_setservent_r_proto=define
16684                 set d_setservent_r_proto setservent_r $hdrs
16685                 eval $hasproto ;;
16686         *)      ;;
16687         esac
16688         case "$d_setservent_r_proto" in
16689         define)
16690         case "$setservent_r_proto" in
16691         ''|0) try='int setservent_r(int, struct servent_data*);'
16692         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16693         esac
16694         case "$setservent_r_proto" in
16695         ''|0) try='void setservent_r(int, struct servent_data*);'
16696         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16697         esac
16698         case "$setservent_r_proto" in
16699         ''|0)   d_setservent_r=undef
16700                 setservent_r_proto=0
16701                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16702         * )     case "$setservent_r_proto" in
16703                 REENTRANT_PROTO*) ;;
16704                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16705                 esac
16706                 echo "Prototype: $try" ;;
16707         esac
16708         ;;
16709         *)      case "$usethreads" in
16710                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16711                 esac
16712                 d_setservent_r=undef
16713                 setservent_r_proto=0
16714                 ;;
16715         esac
16716         ;;
16717 *)      setservent_r_proto=0
16718         ;;
16719 esac
16720
16721 : see if setsid exists
16722 set setsid d_setsid
16723 eval $inlibc
16724
16725 : see if setvbuf exists
16726 set setvbuf d_setvbuf
16727 eval $inlibc
16728
16729 : see if sfio.h is available
16730 set sfio.h i_sfio
16731 eval $inhdr
16732
16733
16734 : see if sfio library is available
16735 case "$i_sfio" in
16736 $define)
16737         val=''
16738         set sfreserve val
16739         eval $inlibc
16740         ;;
16741 *)
16742         val="$undef"
16743         ;;
16744 esac
16745 : Ok, but do we want to use it.
16746 case "$val" in
16747 $define)
16748         case "$usesfio" in
16749         true|$define|[yY]*) dflt='y';;
16750         *) dflt='n';;
16751         esac
16752         echo "$package can use the sfio library, but it is experimental."
16753         case "$useperlio" in
16754         "$undef")
16755             echo "For sfio also the PerlIO abstraction layer is needed."
16756             echo "Earlier you said you wouldn't want that."
16757             ;;
16758         esac
16759         rp="You seem to have sfio available, do you want to try using it?"
16760         . ./myread
16761         case "$ans" in
16762         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16763                 useperlio="$define"
16764                 val="$define"
16765                 ;;
16766         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16767                 val="$undef"
16768                 ;;
16769         esac
16770         ;;
16771 *)      case "$usesfio" in
16772         true|$define|[yY]*)
16773                 echo "Sorry, cannot find sfio on this machine." >&4
16774                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16775                 val="$undef"
16776                 ;;
16777         esac
16778         ;;
16779 esac
16780 set d_sfio
16781 eval $setvar
16782 case "$d_sfio" in
16783 $define) usesfio='true';;
16784 *) usesfio='false';;
16785 esac
16786 case "$d_sfio" in
16787 $define) ;;
16788 *)      : Remove sfio from list of libraries to use
16789         case "$libs" in
16790         *-lsfio*)
16791                 echo "Removing unneeded -lsfio from library list" >&4
16792                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16793                 shift
16794                 libs="$*"
16795                 echo "libs = $libs" >&4
16796                 ;;
16797         esac
16798 ;;
16799 esac
16800
16801
16802 : see if shmctl exists
16803 set shmctl d_shmctl
16804 eval $inlibc
16805
16806 : see if shmget exists
16807 set shmget d_shmget
16808 eval $inlibc
16809
16810 : see if shmat exists
16811 set shmat d_shmat
16812 eval $inlibc
16813 : see what shmat returns
16814 case "$d_shmat" in
16815 "$define")
16816         $cat >shmat.c <<'END'
16817 #include <sys/shm.h>
16818 void *shmat();
16819 END
16820         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16821                 shmattype='void *'
16822         else
16823                 shmattype='char *'
16824         fi
16825         echo "and it returns ($shmattype)." >&4
16826         : see if a prototype for shmat is available
16827         xxx=`./findhdr sys/shm.h`
16828         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16829         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16830                 val="$define"
16831         else
16832                 val="$undef"
16833         fi
16834         $rm -f shmat.[co]
16835         ;;
16836 *)
16837         val="$undef"
16838         ;;
16839 esac
16840 set d_shmatprototype
16841 eval $setvar
16842
16843 : see if shmdt exists
16844 set shmdt d_shmdt
16845 eval $inlibc
16846
16847 : see how much of the 'shm*(2)' library is present.
16848 h_shm=true
16849 echo " "
16850 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16851 *"$undef"*) h_shm=false;;
16852 esac
16853 case "$osname" in
16854 freebsd)
16855     case "`ipcs 2>&1`" in
16856     "SVID shared memory"*"not configured"*)
16857         echo "Your $osname does not have the shm*(2) configured." >&4
16858         h_shm=false
16859         val="$undef"
16860         set shmctl d_shmctl
16861         evat $setvar
16862         set shmget d_shmget
16863         evat $setvar
16864         set shmat d_shmat
16865         evat $setvar
16866         set shmdt d_shmdt
16867         evat $setvar
16868         ;;
16869     esac
16870     ;;
16871 esac
16872 : we could also check for sys/ipc.h ...
16873 if $h_shm && $test `./findhdr sys/shm.h`; then
16874         echo "You have the full shm*(2) library." >&4
16875         val="$define"
16876 else
16877         echo "You don't have the full shm*(2) library." >&4
16878         val="$undef"
16879 fi
16880 set d_shm
16881 eval $setvar
16882
16883 echo " "
16884 : see if we have sigaction
16885 if set sigaction val -f d_sigaction; eval $csym; $val; then
16886         echo 'sigaction() found.' >&4
16887         $cat > try.c <<EOP
16888 #include <stdio.h>
16889 #include <sys/types.h>
16890 #include <signal.h>
16891 #$i_stdlib I_STDLIB
16892 #ifdef I_STDLIB
16893 #include <stdlib.h>
16894 #endif
16895 int main()
16896 {
16897     struct sigaction act, oact;
16898     act.sa_flags = 0;
16899     oact.sa_handler = 0;
16900     /* so that act and oact are used */
16901     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16902 }
16903 EOP
16904         set try
16905         if eval $compile_ok; then
16906                 val="$define"
16907         else
16908                 echo "But you don't seem to have a useable struct sigaction." >&4
16909                 val="$undef"
16910         fi
16911 else
16912         echo 'sigaction NOT found.' >&4
16913         val="$undef"
16914 fi
16915 set d_sigaction; eval $setvar
16916 $rm -f try try$_o try.c
16917
16918 : see if sigprocmask exists
16919 set sigprocmask d_sigprocmask
16920 eval $inlibc
16921
16922 : see if sigsetjmp exists
16923 echo " "
16924 case "$d_sigsetjmp" in
16925 '')
16926         $cat >try.c <<EOP
16927 #include <setjmp.h>
16928 #$i_stdlib I_STDLIB
16929 #ifdef I_STDLIB
16930 #include <stdlib.h>
16931 #endif
16932 sigjmp_buf env;
16933 int set = 1;
16934 int main()
16935 {
16936         if (sigsetjmp(env,1))
16937                 exit(set);
16938         set = 0;
16939         siglongjmp(env, 1);
16940         exit(1);
16941 }
16942 EOP
16943         set try
16944         if eval $compile; then
16945                 if $run ./try >/dev/null 2>&1; then
16946                         echo "POSIX sigsetjmp found." >&4
16947                         val="$define"
16948                 else
16949                         $cat >&4 <<EOM
16950 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16951 I'll ignore them.
16952 EOM
16953                         val="$undef"
16954                 fi
16955         else
16956                 echo "sigsetjmp not found." >&4
16957                 val="$undef"
16958         fi
16959         ;;
16960 *) val="$d_sigsetjmp"
16961         case "$d_sigsetjmp" in
16962         $define) echo "POSIX sigsetjmp found." >&4;;
16963         $undef) echo "sigsetjmp not found." >&4;;
16964         esac
16965         ;;
16966 esac
16967 set d_sigsetjmp
16968 eval $setvar
16969 $rm -f try.c try
16970
16971 : see if snprintf exists
16972 set snprintf d_snprintf
16973 eval $inlibc
16974
16975 : see if vsnprintf exists
16976 set vsnprintf d_vsnprintf
16977 eval $inlibc
16978
16979 case "$d_snprintf-$d_vsnprintf" in
16980 "$define-$define")
16981     $cat <<EOM
16982 Checking whether your snprintf() and vsnprintf() work okay...
16983 EOM
16984     $cat >try.c <<'EOCP'
16985 /* v?snprintf testing logic courtesy of Russ Allbery.
16986  * According to C99:
16987  * - if the buffer is too short it still must be \0-terminated
16988  * - if the buffer is too short the potentially required length
16989  *   must be returned and not -1
16990  * - if the buffer is NULL the potentially required length
16991  *   must be returned and not -1 or core dump
16992  */
16993 #include <stdio.h>
16994 #include <stdarg.h>
16995
16996 char buf[2];
16997
16998 int test (char *format, ...)
16999 {
17000     va_list args;
17001     int count;
17002
17003     va_start (args, format);
17004     count = vsnprintf (buf, sizeof buf, format, args);
17005     va_end (args);
17006     return count;
17007 }
17008
17009 int main ()
17010 {
17011     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17012              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17013 }
17014 EOCP
17015     set try
17016     if eval $compile; then
17017         `$run ./try`
17018         case "$?" in
17019         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17020         *) cat <<EOM >&4
17021 Your snprintf() and snprintf() don't seem to be working okay.
17022 EOM
17023            d_snprintf="$undef"
17024            d_vsnprintf="$undef"
17025            ;;
17026         esac
17027     else
17028         echo "(I can't seem to compile the test program--assuming they don't)"
17029         d_snprintf="$undef"
17030         d_vsnprintf="$undef"
17031     fi
17032     $rm -f try.* try core core.try.*
17033     ;;
17034 esac
17035
17036 : see if sockatmark exists
17037 set sockatmark d_sockatmark
17038 eval $inlibc
17039
17040 : see if prototype for sockatmark is available
17041 echo " "
17042 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17043 eval $hasproto
17044
17045 : see if socks5_init exists
17046 set socks5_init d_socks5_init
17047 eval $inlibc
17048
17049 : see if sprintf returns the length of the string in the buffer as per ANSI
17050 $echo "Checking whether sprintf returns the length of the string..." >&4
17051 $cat <<EOP >try.c
17052 #include <stdio.h>
17053 #$i_stdlib I_STDLIB
17054 #ifdef I_STDLIB
17055 #include <stdlib.h>
17056 #endif
17057 #$i_string I_STRING
17058 #ifdef I_STRING
17059 #  include <string.h>
17060 #else
17061 #  include <strings.h>
17062 #endif
17063 #$i_math I_MATH
17064 #ifdef I_MATH
17065 #include <math.h>
17066 #endif
17067
17068 char buffer[256];
17069
17070 int check (size_t expect, int test) {
17071   size_t got = strlen(buffer);
17072   if (expect == got)
17073     return 0;
17074
17075   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17076        test, buffer);
17077   exit (test);
17078 }
17079
17080 int main(int argc, char **argv) {
17081   int test = 0;
17082
17083   check(sprintf(buffer, ""), ++test);
17084   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17085   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17086
17087   return 0;
17088 }
17089 EOP
17090 set try
17091
17092 d_sprintf_returns_strlen="$undef"
17093 if eval $compile; then
17094     xxx="`$run ./try`"
17095     case "$?" in
17096         0) cat >&4 <<EOM
17097 sprintf returns the length of the string (as ANSI says it should)
17098 EOM
17099         d_sprintf_returns_strlen="$define"
17100         ;;
17101         *) cat >&4 <<EOM
17102 sprintf does not return the length of the string (how old is this system?)
17103 EOM
17104         d_sprintf_returns_strlen="$undef"
17105         ;;
17106     esac
17107 fi
17108
17109 $rm -f try.* try
17110
17111 : see if srand48_r exists
17112 set srand48_r d_srand48_r
17113 eval $inlibc
17114 case "$d_srand48_r" in
17115 "$define")
17116         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17117         case "$d_srand48_r_proto:$usethreads" in
17118         ":define")      d_srand48_r_proto=define
17119                 set d_srand48_r_proto srand48_r $hdrs
17120                 eval $hasproto ;;
17121         *)      ;;
17122         esac
17123         case "$d_srand48_r_proto" in
17124         define)
17125         case "$srand48_r_proto" in
17126         ''|0) try='int srand48_r(long, struct drand48_data*);'
17127         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17128         esac
17129         case "$srand48_r_proto" in
17130         ''|0)   d_srand48_r=undef
17131                 srand48_r_proto=0
17132                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17133         * )     case "$srand48_r_proto" in
17134                 REENTRANT_PROTO*) ;;
17135                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17136                 esac
17137                 echo "Prototype: $try" ;;
17138         esac
17139         ;;
17140         *)      case "$usethreads" in
17141                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17142                 esac
17143                 d_srand48_r=undef
17144                 srand48_r_proto=0
17145                 ;;
17146         esac
17147         ;;
17148 *)      srand48_r_proto=0
17149         ;;
17150 esac
17151
17152 : see if srandom_r exists
17153 set srandom_r d_srandom_r
17154 eval $inlibc
17155 case "$d_srandom_r" in
17156 "$define")
17157         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17158         case "$d_srandom_r_proto:$usethreads" in
17159         ":define")      d_srandom_r_proto=define
17160                 set d_srandom_r_proto srandom_r $hdrs
17161                 eval $hasproto ;;
17162         *)      ;;
17163         esac
17164         case "$d_srandom_r_proto" in
17165         define)
17166         case "$srandom_r_proto" in
17167         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17168         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17169         esac
17170         case "$srandom_r_proto" in
17171         ''|0)   d_srandom_r=undef
17172                 srandom_r_proto=0
17173                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17174         * )     case "$srandom_r_proto" in
17175                 REENTRANT_PROTO*) ;;
17176                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17177                 esac
17178                 echo "Prototype: $try" ;;
17179         esac
17180         ;;
17181         *)      case "$usethreads" in
17182                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17183                 esac
17184                 d_srandom_r=undef
17185                 srandom_r_proto=0
17186                 ;;
17187         esac
17188         ;;
17189 *)      srandom_r_proto=0
17190         ;;
17191 esac
17192
17193 : see if prototype for setresgid is available
17194 echo " "
17195 set d_sresgproto setresgid $i_unistd unistd.h
17196 eval $hasproto
17197
17198 : see if prototype for setresuid is available
17199 echo " "
17200 set d_sresuproto setresuid $i_unistd unistd.h
17201 eval $hasproto
17202
17203 : see if sys/stat.h is available
17204 set sys/stat.h i_sysstat
17205 eval $inhdr
17206
17207
17208 : see if stat knows about block sizes
17209 echo " "
17210 echo "Checking to see if your struct stat has st_blocks field..." >&4
17211 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17212 eval $hasfield
17213
17214
17215 : see if this is a sys/vfs.h system
17216 set sys/vfs.h i_sysvfs
17217 eval $inhdr
17218
17219
17220 : see if this is a sys/statfs.h system
17221 set sys/statfs.h i_sysstatfs
17222 eval $inhdr
17223
17224
17225 echo " "
17226 echo "Checking to see if your system supports struct statfs..." >&4
17227 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
17228 eval $hasstruct
17229 case "$d_statfs_s" in
17230 "$define")      echo "Yes, it does."   ;;
17231 *)              echo "No, it doesn't." ;;
17232 esac
17233
17234
17235
17236 : see if struct statfs knows about f_flags
17237 case "$d_statfs_s" in
17238 define) 
17239         echo " "
17240         echo "Checking to see if your struct statfs has f_flags field..." >&4
17241         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
17242         eval $hasfield
17243         ;;
17244 *)      val="$undef"
17245         set d_statfs_f_flags
17246         eval $setvar
17247         ;;
17248 esac
17249 case "$d_statfs_f_flags" in
17250 "$define")      echo "Yes, it does."   ;;
17251 *)              echo "No, it doesn't." ;;
17252 esac
17253
17254 $cat >&4 <<EOM
17255 Checking how to access stdio streams by file descriptor number...
17256 EOM
17257 case "$stdio_stream_array" in
17258 '')     $cat >try.c <<EOCP
17259 #include <stdio.h>
17260 int main() {
17261   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17262     printf("yes\n");
17263 }
17264 EOCP
17265         for s in _iob __iob __sF
17266         do
17267                 set try -DSTDIO_STREAM_ARRAY=$s
17268                 if eval $compile; then
17269                         case "`$run ./try`" in
17270                         yes)    stdio_stream_array=$s; break ;;
17271                         esac
17272                 fi
17273         done
17274         $rm -f try.* try$exe_ext
17275 esac
17276 case "$stdio_stream_array" in
17277 '')     $cat >&4 <<EOM
17278 I can't figure out how to access stdio streams by file descriptor number.
17279 EOM
17280         d_stdio_stream_array="$undef"
17281         ;;
17282 *)      $cat >&4 <<EOM
17283 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17284 EOM
17285         d_stdio_stream_array="$define"
17286         ;;
17287 esac
17288
17289 : see if strcoll exists
17290 set strcoll d_strcoll
17291 eval $inlibc
17292
17293 : check for structure copying
17294 echo " "
17295 echo "Checking to see if your C compiler can copy structs..." >&4
17296 $cat >try.c <<'EOCP'
17297 int main()
17298 {
17299         struct blurfl {
17300                 int dyick;
17301         } foo, bar;
17302
17303         foo = bar;
17304 }
17305 EOCP
17306 if $cc -c try.c >/dev/null 2>&1 ; then
17307         val="$define"
17308         echo "Yup, it can."
17309 else
17310         val="$undef"
17311         echo "Nope, it can't."
17312 fi
17313 set d_strctcpy
17314 eval $setvar
17315 $rm -f try.*
17316
17317 : see if strerror and/or sys_errlist[] exist
17318 echo " "
17319 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17320     if set strerror val -f d_strerror; eval $csym; $val; then
17321                 echo 'strerror() found.' >&4
17322                 d_strerror="$define"
17323                 d_strerrm='strerror(e)'
17324                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17325                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17326                         d_syserrlst="$define"
17327                 else
17328                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17329                         d_syserrlst="$undef"
17330                 fi
17331     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17332                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17333                 echo 'strerror() found in string header.' >&4
17334                 d_strerror="$define"
17335                 d_strerrm='strerror(e)'
17336                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17337                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17338                                 d_syserrlst="$define"
17339                 else
17340                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17341                         d_syserrlst="$undef"
17342                 fi
17343     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17344                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17345                 d_strerror="$undef"
17346                 d_syserrlst="$define"
17347                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17348     else
17349                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17350                 d_strerror="$undef"
17351                 d_syserrlst="$undef"
17352                 d_strerrm='"unknown"'
17353     fi
17354 fi
17355
17356 : see if strerror_r exists
17357 set strerror_r d_strerror_r
17358 eval $inlibc
17359 case "$d_strerror_r" in
17360 "$define")
17361         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17362         case "$d_strerror_r_proto:$usethreads" in
17363         ":define")      d_strerror_r_proto=define
17364                 set d_strerror_r_proto strerror_r $hdrs
17365                 eval $hasproto ;;
17366         *)      ;;
17367         esac
17368         case "$d_strerror_r_proto" in
17369         define)
17370         case "$strerror_r_proto" in
17371         ''|0) try='int strerror_r(int, char*, size_t);'
17372         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17373         esac
17374         case "$strerror_r_proto" in
17375         ''|0) try='int strerror_r(int, char*, int);'
17376         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17377         esac
17378         case "$strerror_r_proto" in
17379         ''|0) try='char* strerror_r(int, char*, size_t);'
17380         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17381         esac
17382         case "$strerror_r_proto" in
17383         ''|0)   d_strerror_r=undef
17384                 strerror_r_proto=0
17385                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17386         * )     case "$strerror_r_proto" in
17387                 REENTRANT_PROTO*) ;;
17388                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17389                 esac
17390                 echo "Prototype: $try" ;;
17391         esac
17392         ;;
17393         *)      case "$usethreads" in
17394                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17395                 esac
17396                 d_strerror_r=undef
17397                 strerror_r_proto=0
17398                 ;;
17399         esac
17400         ;;
17401 *)      strerror_r_proto=0
17402         ;;
17403 esac
17404
17405 : see if strftime exists
17406 set strftime d_strftime
17407 eval $inlibc
17408
17409 : see if strlcat exists
17410 set strlcat d_strlcat
17411 eval $inlibc
17412
17413 : see if strlcpy exists
17414 set strlcpy d_strlcpy
17415 eval $inlibc
17416
17417 : see if strtod exists
17418 set strtod d_strtod
17419 eval $inlibc
17420
17421 : see if strtol exists
17422 set strtol d_strtol
17423 eval $inlibc
17424
17425 : see if strtold exists
17426 set strtold d_strtold
17427 eval $inlibc
17428
17429 : see if strtoll exists
17430 set strtoll d_strtoll
17431 eval $inlibc
17432
17433 case "$d_longlong-$d_strtoll" in
17434 "$define-$define")
17435         $cat <<EOM
17436 Checking whether your strtoll() works okay...
17437 EOM
17438         $cat >try.c <<'EOCP'
17439 #include <errno.h>
17440 #ifdef __hpux
17441 #define strtoll __strtoll
17442 #endif
17443 #ifdef __EMX__
17444 #define strtoll _strtoll
17445 #endif
17446 #include <stdio.h>
17447 extern long long int strtoll(char *s, char **, int); 
17448 static int bad = 0;
17449 int check(char *s, long long ell, int een) {
17450         long long gll;
17451         errno = 0;
17452         gll = strtoll(s, 0, 10);
17453         if (!((gll == ell) && (errno == een)))
17454                 bad++;
17455 }
17456 int main() {
17457         check(" 1",                                      1LL, 0);
17458         check(" 0",                                      0LL, 0);
17459         check("-1",                                     -1LL, 0);
17460         check("-9223372036854775808", -9223372036854775808LL, 0);
17461         check("-9223372036854775808", -9223372036854775808LL, 0);
17462         check(" 9223372036854775807",  9223372036854775807LL, 0);
17463         check("-9223372036854775808", -9223372036854775808LL, 0);
17464         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17465         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17466         if (!bad)
17467                 printf("ok\n");
17468 }
17469 EOCP
17470         set try
17471         if eval $compile; then
17472                 yyy=`$run ./try`
17473                 case "$yyy" in
17474                 ok) echo "Your strtoll() seems to be working okay." ;;
17475                 *) cat <<EOM >&4
17476 Your strtoll() doesn't seem to be working okay.
17477 EOM
17478                    d_strtoll="$undef"
17479                    ;;
17480                 esac
17481         else
17482                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17483                 d_strtoll="$undef"
17484         fi
17485         ;;
17486 esac
17487
17488 : see if strtoq exists
17489 set strtoq d_strtoq
17490 eval $inlibc
17491
17492 : see if strtoul exists
17493 set strtoul d_strtoul
17494 eval $inlibc
17495
17496 case "$d_strtoul" in
17497 "$define")
17498         $cat <<EOM
17499 Checking whether your strtoul() works okay...
17500 EOM
17501         $cat >try.c <<'EOCP'
17502 #include <errno.h>
17503 #include <stdio.h>
17504 extern unsigned long int strtoul(char *s, char **, int); 
17505 static int bad = 0;
17506 void check(char *s, unsigned long eul, int een) {
17507         unsigned long gul;
17508         errno = 0;
17509         gul = strtoul(s, 0, 10);
17510         if (!((gul == eul) && (errno == een)))
17511                 bad++;
17512 }
17513 int main() {
17514         check(" 1", 1L, 0);
17515         check(" 0", 0L, 0);
17516 EOCP
17517         case "$longsize" in
17518         8)
17519             $cat >>try.c <<'EOCP'
17520         check("18446744073709551615", 18446744073709551615UL, 0);
17521         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17522 #if 0 /* strtoul() for /^-/ strings is undefined. */
17523         check("-1", 18446744073709551615UL, 0);
17524         check("-18446744073709551614", 2, 0);
17525         check("-18446744073709551615", 1, 0);
17526         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17527         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17528 #endif
17529 EOCP
17530                 ;;
17531         4)
17532                     $cat >>try.c <<'EOCP'
17533         check("4294967295", 4294967295UL, 0);
17534         check("4294967296", 4294967295UL, ERANGE);
17535 #if 0 /* strtoul() for /^-/ strings is undefined. */
17536         check("-1", 4294967295UL, 0);
17537         check("-4294967294", 2, 0);
17538         check("-4294967295", 1, 0);
17539         check("-4294967296", 4294967295UL, ERANGE);
17540         check("-4294967297", 4294967295UL, ERANGE);
17541 #endif
17542 EOCP
17543                 ;;
17544         *)
17545 : Should we write these tests to be more portable by sprintf-ing
17546 : ~0 and then manipulating that char string as input for strtol?
17547                 ;;
17548         esac
17549         $cat >>try.c <<'EOCP'
17550         if (!bad)
17551                 printf("ok\n");
17552         return 0;
17553 }
17554 EOCP
17555         set try
17556         if eval $compile; then
17557                 case "`$run ./try`" in
17558                 ok) echo "Your strtoul() seems to be working okay." ;;
17559                 *) cat <<EOM >&4
17560 Your strtoul() doesn't seem to be working okay.
17561 EOM
17562                    d_strtoul="$undef"
17563                    ;;
17564                 esac
17565         fi
17566         ;;
17567 esac
17568
17569 : see if strtoull exists
17570 set strtoull d_strtoull
17571 eval $inlibc
17572
17573 case "$d_longlong-$d_strtoull" in
17574 "$define-$define")
17575         $cat <<EOM
17576 Checking whether your strtoull() works okay...
17577 EOM
17578         $cat >try.c <<'EOCP'
17579 #include <errno.h>
17580 #ifdef __hpux
17581 #define strtoull __strtoull
17582 #endif
17583 #include <stdio.h>
17584 extern unsigned long long int strtoull(char *s, char **, int); 
17585 static int bad = 0;
17586 int check(char *s, long long eull, int een) {
17587         long long gull;
17588         errno = 0;
17589         gull = strtoull(s, 0, 10);
17590         if (!((gull == eull) && (errno == een)))
17591                 bad++;
17592 }
17593 int main() {
17594         check(" 1",                                        1LL, 0);
17595         check(" 0",                                        0LL, 0);
17596         check("18446744073709551615",  18446744073709551615ULL, 0);
17597         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17598 #if 0 /* strtoull() for /^-/ strings is undefined. */
17599         check("-1",                    18446744073709551615ULL, 0);
17600         check("-18446744073709551614",                     2LL, 0);
17601         check("-18446744073709551615",                     1LL, 0);
17602         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17603         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17604 #endif
17605         if (!bad)
17606                 printf("ok\n");
17607 }
17608 EOCP
17609         set try
17610         if eval $compile; then
17611                 case "`$run ./try`" in
17612                 ok) echo "Your strtoull() seems to be working okay." ;;
17613                 *) cat <<EOM >&4
17614 Your strtoull() doesn't seem to be working okay.
17615 EOM
17616                    d_strtoull="$undef"
17617                    ;;
17618                 esac
17619         fi
17620         ;;
17621 esac
17622
17623 : see if strtouq exists
17624 set strtouq d_strtouq
17625 eval $inlibc
17626
17627 case "$d_strtouq" in
17628 "$define")
17629         $cat <<EOM
17630 Checking whether your strtouq() works okay...
17631 EOM
17632         $cat >try.c <<'EOCP'
17633 #include <errno.h>
17634 #include <stdio.h>
17635 extern unsigned long long int strtouq(char *s, char **, int); 
17636 static int bad = 0;
17637 void check(char *s, unsigned long long eull, int een) {
17638         unsigned long long gull;
17639         errno = 0;
17640         gull = strtouq(s, 0, 10);
17641         if (!((gull == eull) && (errno == een)))
17642                 bad++;
17643 }
17644 int main() {
17645         check(" 1",                                        1LL, 0);
17646         check(" 0",                                        0LL, 0);
17647         check("18446744073709551615",  18446744073709551615ULL, 0);
17648         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17649 #if 0 /* strtouq() for /^-/ strings is undefined. */
17650         check("-1",                    18446744073709551615ULL, 0);
17651         check("-18446744073709551614",                     2LL, 0);
17652         check("-18446744073709551615",                     1LL, 0);
17653         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17654         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17655 #endif
17656         if (!bad)
17657                 printf("ok\n");
17658         return 0;
17659 }
17660 EOCP
17661         set try
17662         if eval $compile; then
17663                 case "`$run ./try`" in
17664                 ok) echo "Your strtouq() seems to be working okay." ;;
17665                 *) cat <<EOM >&4
17666 Your strtouq() doesn't seem to be working okay.
17667 EOM
17668                    d_strtouq="$undef"
17669                    ;;
17670                 esac
17671         fi
17672         ;;
17673 esac
17674
17675 : see if strxfrm exists
17676 set strxfrm d_strxfrm
17677 eval $inlibc
17678
17679 : see if symlink exists
17680 set symlink d_symlink
17681 eval $inlibc
17682
17683 : see if syscall exists
17684 set syscall d_syscall
17685 eval $inlibc
17686
17687 : see if prototype for syscall is available
17688 echo " "
17689 set d_syscallproto syscall $i_unistd unistd.h
17690 eval $hasproto
17691
17692 : see if sysconf exists
17693 set sysconf d_sysconf
17694 eval $inlibc
17695
17696 : see if system exists
17697 set system d_system
17698 eval $inlibc
17699
17700 : see if tcgetpgrp exists
17701 set tcgetpgrp d_tcgetpgrp
17702 eval $inlibc
17703
17704 : see if tcsetpgrp exists
17705 set tcsetpgrp d_tcsetpgrp
17706 eval $inlibc
17707
17708 : see if prototype for telldir is available
17709 echo " "
17710 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17711 eval $hasproto
17712
17713 : see if time exists
17714 echo " "
17715 if test "X$d_time" = X -o X"$timetype" = X; then
17716     if set time val -f d_time; eval $csym; $val; then
17717                 echo 'time() found.' >&4
17718                 val="$define"
17719                 rp="What is the type returned by time() on this system?"
17720                 set time_t timetype long stdio.h sys/types.h
17721                 eval $typedef_ask
17722     else
17723                 echo 'time() not found, hope that will do.' >&4
17724                 val="$undef"
17725                 timetype='int';
17726     fi
17727     set d_time
17728     eval $setvar
17729 fi
17730
17731 : see if this is a sys/times.h system
17732 set sys/times.h i_systimes
17733 eval $inhdr
17734
17735 : see if times exists
17736 echo " "
17737 if set times val -f d_times; eval $csym; $val; then
17738         echo 'times() found.' >&4
17739         d_times="$define"
17740         inc=''
17741         case "$i_systimes" in
17742         "$define") inc='sys/times.h';;
17743         esac
17744         rp="What is the type returned by times() on this system?"
17745         set clock_t clocktype long stdio.h sys/types.h $inc
17746         eval $typedef_ask
17747 else
17748         echo 'times() NOT found, hope that will do.' >&4
17749         d_times="$undef"
17750         clocktype='int'
17751 fi
17752
17753 : see if tmpnam_r exists
17754 set tmpnam_r d_tmpnam_r
17755 eval $inlibc
17756 case "$d_tmpnam_r" in
17757 "$define")
17758         hdrs="$i_systypes sys/types.h define stdio.h "
17759         case "$d_tmpnam_r_proto:$usethreads" in
17760         ":define")      d_tmpnam_r_proto=define
17761                 set d_tmpnam_r_proto tmpnam_r $hdrs
17762                 eval $hasproto ;;
17763         *)      ;;
17764         esac
17765         case "$d_tmpnam_r_proto" in
17766         define)
17767         case "$tmpnam_r_proto" in
17768         ''|0) try='char* tmpnam_r(char*);'
17769         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17770         esac
17771         case "$tmpnam_r_proto" in
17772         ''|0)   d_tmpnam_r=undef
17773                 tmpnam_r_proto=0
17774                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17775         * )     case "$tmpnam_r_proto" in
17776                 REENTRANT_PROTO*) ;;
17777                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17778                 esac
17779                 echo "Prototype: $try" ;;
17780         esac
17781         ;;
17782         *)      case "$usethreads" in
17783                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17784                 esac
17785                 d_tmpnam_r=undef
17786                 tmpnam_r_proto=0
17787                 ;;
17788         esac
17789         ;;
17790 *)      tmpnam_r_proto=0
17791         ;;
17792 esac
17793
17794 : see if truncate exists
17795 set truncate d_truncate
17796 eval $inlibc
17797
17798 : see if ttyname_r exists
17799 set ttyname_r d_ttyname_r
17800 eval $inlibc
17801 case "$d_ttyname_r" in
17802 "$define")
17803         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17804         case "$d_ttyname_r_proto:$usethreads" in
17805         ":define")      d_ttyname_r_proto=define
17806                 set d_ttyname_r_proto ttyname_r $hdrs
17807                 eval $hasproto ;;
17808         *)      ;;
17809         esac
17810         case "$d_ttyname_r_proto" in
17811         define)
17812         case "$ttyname_r_proto" in
17813         ''|0) try='int ttyname_r(int, char*, size_t);'
17814         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17815         esac
17816         case "$ttyname_r_proto" in
17817         ''|0) try='int ttyname_r(int, char*, int);'
17818         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17819         esac
17820         case "$ttyname_r_proto" in
17821         ''|0) try='char* ttyname_r(int, char*, int);'
17822         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17823         esac
17824         case "$ttyname_r_proto" in
17825         ''|0)   d_ttyname_r=undef
17826                 ttyname_r_proto=0
17827                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17828         * )     case "$ttyname_r_proto" in
17829                 REENTRANT_PROTO*) ;;
17830                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17831                 esac
17832                 echo "Prototype: $try" ;;
17833         esac
17834         ;;
17835         *)      case "$usethreads" in
17836                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17837                 esac
17838                 d_ttyname_r=undef
17839                 ttyname_r_proto=0
17840                 ;;
17841         esac
17842         ;;
17843 *)      ttyname_r_proto=0
17844         ;;
17845 esac
17846
17847 : see if tzname[] exists
17848 echo " "
17849 if set tzname val -a d_tzname; eval $csym; $val; then
17850         val="$define"
17851         echo 'tzname[] found.' >&4
17852 else
17853         val="$undef"
17854         echo 'tzname[] NOT found.' >&4
17855 fi
17856 set d_tzname
17857 eval $setvar
17858
17859 case "$osname" in
17860 next|rhapsody|darwin) multiarch="$define" ;;
17861 esac
17862 case "$multiarch" in
17863 ''|[nN]*) multiarch="$undef" ;;
17864 esac
17865
17866 : check for ordering of bytes in a UV
17867 echo " "
17868 case "$usecrosscompile$multiarch" in
17869 *$define*)
17870         $cat <<EOM
17871 You seem to be either cross-compiling or doing a multiarchitecture build,
17872 skipping the byteorder check.
17873
17874 EOM
17875         byteorder='ffff'
17876         ;;
17877 *)
17878         case "$byteorder" in
17879         '')
17880                 $cat <<'EOM'
17881 In the following, larger digits indicate more significance.  A big-endian
17882 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17883 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17884 machines may have weird orders like 3412.  A Cray will report 87654321,
17885 an Alpha will report 12345678. If the test program works the default is
17886 probably right.
17887 I'm now running the test program...
17888 EOM
17889                 $cat >try.c <<EOCP
17890 #include <stdio.h>
17891 #$i_stdlib I_STDLIB
17892 #ifdef I_STDLIB
17893 #include <stdlib.h>
17894 #endif
17895 #include <sys/types.h>
17896 typedef $uvtype UV;
17897 int main()
17898 {
17899         int i;
17900         union {
17901                 UV l;
17902                 char c[$uvsize];
17903         } u;
17904
17905         if ($uvsize > 4)
17906                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
17907         else
17908                 u.l = (UV)0x04030201;
17909         for (i = 0; i < $uvsize; i++)
17910                 printf("%c", u.c[i]+'0');
17911         printf("\n");
17912         exit(0);
17913 }
17914 EOCP
17915                 xxx_prompt=y
17916                 set try
17917                 if eval $compile && ./try > /dev/null; then
17918                         dflt=`$run ./try`
17919                         case "$dflt" in
17920                         [1-4][1-4][1-4][1-4]|12345678|87654321)
17921                                 echo "(The test program ran ok.)"
17922                                 echo "byteorder=$dflt"
17923                                 xxx_prompt=n
17924                         ;;
17925                         ????|????????) echo "(The test program ran ok.)" ;;
17926                         *) echo "(The test program didn't run right for some reason.)" ;;
17927                         esac
17928                 else
17929                         dflt='4321'
17930                         cat <<'EOM'
17931 (I can't seem to compile the test program.  Guessing big-endian...)
17932 EOM
17933                 fi
17934                 case "$xxx_prompt" in
17935                 y)
17936                         rp="What is the order of bytes in $uvtype?"
17937                         . ./myread
17938                         byteorder="$ans"
17939                         ;;
17940                 *)      byteorder=$dflt
17941                         ;;
17942                 esac
17943                 ;;
17944         esac
17945         $rm -f try.c try
17946         ;;
17947 esac
17948
17949
17950 $cat <<EOM
17951
17952 Checking to see whether you can access character data unalignedly...
17953 EOM
17954 case "$d_u32align" in
17955 '')   $cat >try.c <<EOCP
17956 #include <stdio.h>
17957 #$i_stdlib I_STDLIB
17958 #ifdef I_STDLIB
17959 #include <stdlib.h>
17960 #endif
17961 #define U32 $u32type
17962 #define BYTEORDER 0x$byteorder
17963 #define U8 $u8type
17964 #include <signal.h>
17965 #ifdef SIGBUS
17966 $signal_t bletch(int s) { exit(4); }
17967 #endif
17968 int main() {
17969 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17970     U8 buf[8];
17971     U32 *up;
17972     int i;
17973
17974     if (sizeof(U32) != 4) {
17975         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17976         exit(1);
17977     }
17978
17979     fflush(stdout);
17980
17981 #ifdef SIGBUS
17982     signal(SIGBUS, bletch);
17983 #endif
17984
17985     buf[0] = 0;
17986     buf[1] = 0;
17987     buf[2] = 0;
17988     buf[3] = 1;
17989     buf[4] = 0;
17990     buf[5] = 0;
17991     buf[6] = 0;
17992     buf[7] = 1;
17993
17994     for (i = 0; i < 4; i++) {
17995         up = (U32*)(buf + i);
17996         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
17997                (*up == 1 << (8*(3-i)))  /* little-endian */
17998               )
17999            )
18000         {
18001             printf("read failed (%x)\n", *up);
18002             exit(2);
18003         }
18004     }
18005
18006     /* write test */
18007     for (i = 0; i < 4; i++) {
18008         up = (U32*)(buf + i);
18009         *up = 0xBeef;
18010         if (*up != 0xBeef) {
18011             printf("write failed (%x)\n", *up);
18012             exit(3);
18013         }
18014     }
18015
18016     exit(0);
18017 #else
18018     printf("1\n");
18019     exit(1);
18020 #endif
18021     return 0;
18022 }
18023 EOCP
18024 set try
18025 if eval $compile_ok; then
18026         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18027         $run ./try 2>&1 >/dev/null
18028         case "$?" in
18029         0)      cat >&4 <<EOM
18030 You can access character data pretty unalignedly.
18031 EOM
18032                 d_u32align="$undef"
18033                 ;;
18034         *)      cat >&4 <<EOM
18035 It seems that you must access character data in an aligned manner.
18036 EOM
18037                 d_u32align="$define"
18038                 ;;
18039         esac
18040 else
18041         rp='Can you access character data at unaligned addresses?'
18042         dflt='n'
18043         . ./myread
18044         case "$ans" in
18045         [yY]*)  d_u32align="$undef"  ;;
18046         *)      d_u32align="$define" ;;
18047         esac
18048 fi
18049 $rm -f core core.try.* try.core
18050 ;;
18051 esac
18052
18053 : see if ualarm exists
18054 set ualarm d_ualarm
18055 eval $inlibc
18056
18057 : see if umask exists
18058 set umask d_umask
18059 eval $inlibc
18060
18061 : see if unordered exists
18062 set unordered d_unordered
18063 eval $inlibc
18064
18065 : see if unsetenv exists
18066 set unsetenv d_unsetenv
18067 eval $inlibc
18068
18069 : see if usleep exists
18070 set usleep d_usleep
18071 eval $inlibc
18072
18073 : see if prototype for usleep is available
18074 echo " "
18075 set d_usleepproto usleep $i_unistd unistd.h
18076 eval $hasproto
18077
18078 : see if ustat exists
18079 set ustat d_ustat
18080 eval $inlibc
18081
18082 : backward compatibility for d_hvfork
18083 if test X$d_hvfork != X; then
18084         d_vfork="$d_hvfork"
18085         d_hvfork=''
18086 fi
18087 : see if there is a vfork
18088 val=''
18089 set vfork val
18090 eval $inlibc
18091
18092 : Ok, but do we want to use it. vfork is reportedly unreliable in 
18093 : perl on Solaris 2.x, and probably elsewhere.
18094 case "$val" in
18095 $define)
18096         echo " "
18097         case "$usevfork" in
18098         false) dflt='n';;
18099         *) dflt='y';;
18100         esac
18101         cat <<'EOM'
18102  
18103 Perl can only use a vfork() that doesn't suffer from strict
18104 restrictions on calling functions or modifying global data in
18105 the child.  For example, glibc-2.1 contains such a vfork()
18106 that is unsuitable.  If your system provides a proper fork()
18107 call, chances are that you do NOT want perl to use vfork().
18108
18109 EOM
18110         rp="Do you still want to use vfork()?"
18111         . ./myread
18112         case "$ans" in
18113         y|Y) ;;
18114         *)
18115                 echo "Ok, we won't use vfork()."
18116                 val="$undef"
18117                 ;;
18118         esac
18119         ;;
18120 esac
18121 set d_vfork
18122 eval $setvar
18123 case "$d_vfork" in
18124 $define) usevfork='true';;
18125 *) usevfork='false';;
18126 esac
18127
18128 : see if closedir exists
18129 set closedir d_closedir
18130 eval $inlibc
18131
18132 case "$d_closedir" in
18133 "$define")
18134         echo " "
18135         echo "Checking whether closedir() returns a status..." >&4
18136         cat > try.c <<EOM
18137 #$i_dirent I_DIRENT             /**/
18138 #$i_sysdir I_SYS_DIR            /**/
18139 #$i_sysndir I_SYS_NDIR          /**/
18140 #$i_systypes I_SYS_TYPES        /**/
18141
18142 #if defined(I_SYS_TYPES)
18143 #include <sys/types.h>
18144 #endif
18145 #if defined(I_DIRENT)
18146 #include <dirent.h>
18147 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18148 #include <sys/dir.h>
18149 #endif
18150 #else
18151 #ifdef I_SYS_NDIR
18152 #include <sys/ndir.h>
18153 #else
18154 #ifdef I_SYS_DIR
18155 #ifdef hp9000s500
18156 #include <ndir.h>       /* may be wrong in the future */
18157 #else
18158 #include <sys/dir.h>
18159 #endif
18160 #endif
18161 #endif
18162 #endif 
18163 int main() { return closedir(opendir(".")); }
18164 EOM
18165         set try
18166         if eval $compile_ok; then
18167                 if $run ./try > /dev/null 2>&1 ; then
18168                         echo "Yes, it does."
18169                         val="$undef"
18170                 else
18171                         echo "No, it doesn't."
18172                         val="$define"
18173                 fi
18174         else
18175                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18176                 val="$define"
18177         fi
18178         ;;
18179 *)
18180         val="$undef";
18181         ;;
18182 esac
18183 set d_void_closedir
18184 eval $setvar
18185 $rm -f try try.*
18186 : see if there is a wait4
18187 set wait4 d_wait4
18188 eval $inlibc
18189
18190 : see if waitpid exists
18191 set waitpid d_waitpid
18192 eval $inlibc
18193
18194 : see if wcstombs exists
18195 set wcstombs d_wcstombs
18196 eval $inlibc
18197
18198 : see if wctomb exists
18199 set wctomb d_wctomb
18200 eval $inlibc
18201
18202 : see if writev exists
18203 set writev d_writev
18204 eval $inlibc
18205
18206 : preserve RCS keywords in files with variable substitution, grrr
18207 Date='$Date'
18208 Id='$Id'
18209 Log='$Log'
18210 RCSfile='$RCSfile'
18211 Revision='$Revision'
18212
18213 : check for alignment requirements
18214 echo " "
18215 case "$usecrosscompile$multiarch" in
18216 *$define*)
18217         $cat <<EOM
18218 You seem to be either cross-compiling or doing a multiarchitecture build,
18219 skipping the memory alignment check.
18220
18221 EOM
18222         case "$alignbytes" in
18223         '') alignbytes=8 ;;
18224         esac
18225         ;;
18226 *)
18227         case "$alignbytes" in
18228         '') echo "Checking alignment constraints..." >&4
18229                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18230                         $cat >try.c <<'EOCP'
18231 typedef long double NV;
18232 EOCP
18233                 else
18234                         $cat >try.c <<'EOCP'
18235 typedef double NV;
18236 EOCP
18237                 fi
18238                 $cat >>try.c <<'EOCP'
18239 #include <stdio.h>
18240 struct foobar {
18241         char foo;
18242         NV bar;
18243 } try_algn;
18244 int main()
18245 {
18246     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18247     return(0);
18248 }
18249 EOCP
18250                 set try
18251                 if eval $compile_ok; then
18252                         dflt=`$run ./try`
18253                 else
18254                         dflt='8'
18255                         echo "(I can't seem to compile the test program...)"
18256                 fi
18257                 ;;
18258         *) dflt="$alignbytes"
18259                 ;;
18260         esac
18261         rp="Doubles must be aligned on a how-many-byte boundary?"
18262         . ./myread
18263         alignbytes="$ans"
18264         $rm -f try.c try
18265         ;;
18266 esac
18267
18268
18269 : set the base revision
18270 baserev=5.0
18271
18272 : how do we concatenate cpp tokens here?
18273 echo " "
18274 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18275 $cat >cpp_stuff.c <<'EOCP'
18276 #define RCAT(a,b)a/**/b
18277 #define ACAT(a,b)a ## b
18278 RCAT(Rei,ser)
18279 ACAT(Cir,cus)
18280 EOCP
18281 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18282 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18283         echo "Oh!  Smells like ANSI's been here." >&4
18284         echo "We can catify or stringify, separately or together!"
18285         cpp_stuff=42
18286 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18287         echo "Ah, yes!  The good old days!" >&4
18288         echo "However, in the good old days we don't know how to stringify and"
18289         echo "catify at the same time."
18290         cpp_stuff=1
18291 else
18292         $cat >&4 <<EOM
18293 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18294 You're going to have to edit the values of CAT[2-5] in config.h...
18295 EOM
18296         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18297 fi
18298 $rm -f cpp_stuff.*
18299
18300 : see if this is a db.h system
18301 set db.h i_db
18302 eval $inhdr
18303
18304 case "$i_db" in
18305 $define)
18306         : Check db version.
18307         echo " "
18308         echo "Checking Berkeley DB version ..." >&4
18309         $cat >try.c <<EOCP
18310 #$d_const HASCONST
18311 #ifndef HASCONST
18312 #define const
18313 #endif
18314 #include <sys/types.h>
18315 #include <stdio.h>
18316 #$i_stdlib I_STDLIB
18317 #ifdef I_STDLIB
18318 #include <stdlib.h>
18319 #endif
18320 #include <db.h>
18321 int main(int argc, char *argv[])
18322 {
18323 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18324     int Major, Minor, Patch ;
18325     unsigned long Version ;
18326     (void)db_version(&Major, &Minor, &Patch) ;
18327     if (argc == 2) {
18328         printf("%d %d %d %d %d %d\n",
18329                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18330                Major, Minor, Patch);
18331         exit(0);
18332     }
18333     printf("You have Berkeley DB Version 2 or greater.\n");
18334
18335     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18336                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18337     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18338                 Major, Minor, Patch) ;
18339
18340     /* check that db.h & libdb are compatible */
18341     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18342         printf("db.h and libdb are incompatible.\n") ;
18343         exit(3);        
18344     }
18345
18346     printf("db.h and libdb are compatible.\n") ;
18347
18348     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18349                 + DB_VERSION_PATCH ;
18350
18351     /* needs to be >= 2.3.4 */
18352     if (Version < 2003004) {
18353     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18354         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18355         exit(2);        
18356     }
18357
18358     exit(0);
18359 #else
18360 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18361     if (argc == 2) {
18362         printf("1 0 0\n");
18363         exit(0);
18364     }
18365     printf("You have Berkeley DB Version 1.\n");
18366     exit(0);    /* DB version < 2: the coast is clear. */
18367 #else
18368     exit(1);    /* <db.h> not Berkeley DB? */
18369 #endif
18370 #endif
18371 }
18372 EOCP
18373         set try
18374         if eval $compile_ok && $run ./try; then
18375                 echo 'Looks OK.' >&4
18376                 set `$run ./try 1`
18377                 db_version_major=$1
18378                 db_version_minor=$2
18379                 db_version_patch=$3
18380         else
18381                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18382                 i_db=$undef
18383                 case " $libs " in
18384                 *"-ldb "*)
18385                         : Remove db from list of libraries to use
18386                         echo "Removing unusable -ldb from library list" >&4
18387                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18388                         shift
18389                         libs="$*"
18390                         echo "libs = $libs" >&4
18391                         ;;
18392                 esac
18393         fi
18394         $rm -f try.*
18395         ;;
18396 esac
18397
18398 case "$i_db" in
18399 define)
18400         : Check the return type needed for hash 
18401         echo " "
18402         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18403         $cat >try.c <<EOCP
18404 #$d_const HASCONST
18405 #ifndef HASCONST
18406 #define const
18407 #endif
18408 #include <sys/types.h>
18409 #include <db.h>
18410
18411 #ifndef DB_VERSION_MAJOR
18412 u_int32_t hash_cb (ptr, size)
18413 const void *ptr;
18414 size_t size;
18415 {
18416 }
18417 HASHINFO info;
18418 int main()
18419 {
18420         info.hash = hash_cb;
18421 }
18422 #endif
18423 EOCP
18424         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18425                 if $contains warning try.out >>/dev/null 2>&1 ; then
18426                         db_hashtype='int'
18427                 else
18428                         db_hashtype='u_int32_t'
18429                 fi
18430         else
18431                 : XXX Maybe we should just give up here.
18432                 db_hashtype=u_int32_t
18433                 $cat try.out >&4
18434                 echo "Help:  I can't seem to compile the db test program." >&4
18435                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18436         fi
18437         $rm -f try.*
18438         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18439         ;;
18440 *)      db_hashtype=u_int32_t
18441         ;;
18442 esac
18443 case "$i_db" in
18444 define)
18445         : Check the return type needed for prefix 
18446         echo " "
18447         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18448         cat >try.c <<EOCP
18449 #$d_const HASCONST
18450 #ifndef HASCONST
18451 #define const
18452 #endif
18453 #include <sys/types.h>
18454 #include <db.h>
18455
18456 #ifndef DB_VERSION_MAJOR
18457 size_t prefix_cb (key1, key2)
18458 const DBT *key1;
18459 const DBT *key2;
18460 {
18461 }
18462 BTREEINFO info;
18463 int main()
18464 {
18465         info.prefix = prefix_cb;
18466 }
18467 #endif
18468 EOCP
18469         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18470                 if $contains warning try.out >>/dev/null 2>&1 ; then
18471                         db_prefixtype='int'
18472                 else
18473                         db_prefixtype='size_t'
18474                 fi
18475         else
18476                 db_prefixtype='size_t'
18477                 : XXX Maybe we should just give up here.
18478                 $cat try.out >&4
18479                 echo "Help:  I can't seem to compile the db test program." >&4
18480                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18481         fi
18482         $rm -f try.*
18483         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18484         ;;
18485 *)      db_prefixtype='size_t'
18486         ;;
18487 esac
18488
18489
18490 : How can we generate normalized random numbers ?
18491 echo " "
18492 echo "Looking for a random number function..." >&4
18493 case "$randfunc" in
18494 '')
18495         if set drand48 val -f; eval $csym; $val; then
18496                 dflt="drand48"
18497                 echo "Good, found drand48()." >&4
18498         elif set random val -f; eval $csym; $val; then
18499                 dflt="random"
18500                 echo "OK, found random()." >&4
18501         else
18502                 dflt="rand"
18503                 echo "Yick, looks like I have to use rand()." >&4
18504         fi
18505         echo " "
18506         ;;
18507 *)
18508         dflt="$randfunc"
18509         ;;
18510 esac
18511 cont=true
18512
18513 case "$ccflags" in
18514 *-Dmy_rand=*|*-Dmy_srand=*)
18515         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18516         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18517         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18518         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18519         ;;
18520 esac
18521
18522 while $test "$cont"; do
18523         rp="Use which function to generate random numbers?"
18524         . ./myread
18525         if $test "$ans" = "$dflt"; then
18526                 : null
18527         else
18528                 randbits=''
18529         fi
18530         randfunc="$ans"
18531         if set $ans val -f; eval $csym; $val; then
18532                 cont=''
18533         else
18534                 dflt=y
18535                 rp="I cannot find function $ans. Use that name anyway?"
18536                 . ./myread
18537                 dflt=rand
18538                 case "$ans" in
18539                         [yY]*) cont='';;
18540                 esac
18541         fi
18542         case "$cont" in
18543         '')
18544                 case "$randfunc" in
18545                 drand48)
18546                         drand01="drand48()"
18547                         seedfunc="srand48"
18548                         randbits=48
18549                         randseedtype=long
18550                         ;;
18551                 rand|random)
18552                         case "$randbits" in
18553                         '')
18554 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18555                                 $cat >try.c <<EOCP
18556 #$i_unistd I_UNISTD
18557 #$i_stdlib I_STDLIB
18558 #include <stdio.h>
18559 #ifdef I_UNISTD
18560 #  include <unistd.h>
18561 #endif
18562 #ifdef I_STDLIB
18563 #  include <stdlib.h>
18564 #endif
18565 int main()
18566 {
18567         register int i;
18568         register unsigned long tmp;
18569         register unsigned long max = 0L;
18570
18571         for (i = 1000; i; i--) {
18572                 tmp = (unsigned long) $randfunc();
18573                 if (tmp > max) max = tmp;
18574         }
18575         for (i = 0; max; i++)
18576                 max /= 2;
18577         printf("%d\n",i);
18578 }
18579 EOCP
18580                                 set try
18581                                 if eval $compile_ok; then
18582                                         dflt=`try`
18583                                 else
18584                                         dflt='?'
18585                                         echo "(I can't seem to compile the test program...)"
18586                                 fi
18587                                 ;;
18588                         *)
18589                                 dflt="$randbits"
18590                                 ;;
18591                         esac
18592                         rp="How many bits does your $randfunc() function produce?"
18593                         . ./myread
18594                         randbits="$ans"
18595                         $rm -f try.c try
18596                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18597                         seedfunc="s$randfunc"
18598                         randseedtype=unsigned
18599                         ;;
18600                 *)
18601                         dflt="31"
18602                         rp="How many bits does your $randfunc() function produce?"
18603                         . ./myread
18604                         randbits="$ans"
18605                         seedfunc="s$randfunc"
18606                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18607                         if set $seedfunc val -f; eval $csym; $val; then
18608                                 echo "(Using $seedfunc() to seed random generator)"
18609                         else
18610                                 echo "(Warning: no $seedfunc() to seed random generator)"
18611                                 seedfunc=rand
18612                         fi
18613                         randseedtype=unsigned
18614                         ;;
18615                 esac
18616                 ;;
18617         esac
18618 done
18619
18620 echo " "
18621 echo "Determining whether or not we are on an EBCDIC system..." >&4
18622 $cat >try.c <<'EOM'
18623 int main()
18624 {
18625   if ('M'==0xd4) return 0;
18626   return 1;
18627 }
18628 EOM
18629
18630 val=$undef
18631 set try
18632 if eval $compile_ok; then
18633         if $run ./try; then
18634                 echo "You seem to speak EBCDIC." >&4
18635                 val="$define"
18636         else
18637                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18638         fi
18639 else
18640         echo "I'm unable to compile the test program." >&4
18641         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18642 fi
18643 $rm -f try try.*
18644 set ebcdic
18645 eval $setvar
18646
18647 echo " "
18648 $cat >&4 <<EOM
18649 Checking how to flush all pending stdio output...
18650 EOM
18651 # I only know how to find the first 32 possibly open files on SunOS.
18652 # See also hints/sunos_4_1.sh and util.c  --AD
18653 case "$osname" in
18654 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18655 esac
18656 $cat >>try.c <<EOCP
18657 #include <stdio.h>
18658 #$i_stdlib I_STDLIB
18659 #ifdef I_STDLIB
18660 #include <stdlib.h>
18661 #endif
18662 #$i_unistd I_UNISTD
18663 #ifdef I_UNISTD
18664 # include <unistd.h>
18665 #endif
18666 #$d_sysconf HAS_SYSCONF
18667 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18668 #ifdef HAS_STDIO_STREAM_ARRAY
18669 # define STDIO_STREAM_ARRAY $stdio_stream_array
18670 #endif
18671 int main() {
18672   FILE* p;
18673   unlink("try.out");
18674   p = fopen("try.out", "w");
18675 #ifdef TRY_FPUTC
18676   fputc('x', p);
18677 #else
18678 # ifdef TRY_FPRINTF
18679   fprintf(p, "x");
18680 # endif
18681 #endif
18682 #ifdef TRY_FFLUSH_NULL
18683   fflush(NULL);
18684 #endif
18685 #ifdef TRY_FFLUSH_ALL
18686   {
18687     long open_max = -1;
18688 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18689     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18690 # else
18691 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18692     open_max = sysconf(_SC_OPEN_MAX);
18693 #  else
18694 #   ifdef FOPEN_MAX
18695     open_max = FOPEN_MAX;
18696 #   else
18697 #    ifdef OPEN_MAX
18698     open_max = OPEN_MAX;
18699 #    else
18700 #     ifdef _NFILE
18701     open_max = _NFILE;
18702 #     endif
18703 #    endif
18704 #   endif
18705 #  endif
18706 # endif 
18707 # ifdef HAS_STDIO_STREAM_ARRAY
18708     if (open_max > 0) {
18709       long i;
18710       for (i = 0; i < open_max; i++)
18711             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18712                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18713                 STDIO_STREAM_ARRAY[i]._flag)
18714                 fflush(&STDIO_STREAM_ARRAY[i]);
18715     }   
18716   }
18717 # endif
18718 #endif
18719   _exit(42);
18720 }
18721 EOCP
18722 : first we have to find out how _not_ to flush
18723 $to try.c
18724 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18725     output=''
18726     set try -DTRY_FPUTC
18727     if eval $compile; then
18728             $run ./try 2>/dev/null
18729             code="$?"
18730             $from try.out
18731             if $test ! -s try.out -a "X$code" = X42; then
18732                 output=-DTRY_FPUTC
18733             fi
18734     fi
18735     case "$output" in
18736     '')
18737             set try -DTRY_FPRINTF
18738             if eval $compile; then
18739                     $run ./try 2>/dev/null
18740                     code="$?"
18741                     $from try.out
18742                     if $test ! -s try.out -a "X$code" = X42; then
18743                         output=-DTRY_FPRINTF
18744                     fi
18745             fi
18746         ;;
18747     esac
18748 fi
18749 : check for fflush NULL behaviour
18750 case "$fflushNULL" in
18751 '')     set try -DTRY_FFLUSH_NULL $output
18752         if eval $compile; then
18753                 $run ./try 2>/dev/null
18754                 code="$?"
18755                 $from try.out
18756                 if $test -s try.out -a "X$code" = X42; then
18757                         fflushNULL="`$cat try.out`"
18758                 else
18759                         if $test "X$code" != X42; then
18760                                 $cat >&4 <<EOM
18761 (If this test failed, don't worry, we'll try another method shortly.)
18762 EOM
18763                         fi
18764                 fi
18765         fi
18766         $rm -f core try.core core.try.*
18767         case "$fflushNULL" in
18768         x)      $cat >&4 <<EOM
18769 Your fflush(NULL) works okay for output streams.
18770 Let's see if it clobbers input pipes...
18771 EOM
18772 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18773 # bug that improperly flushes the input end of pipes.  So we avoid the
18774 # autoflush on fork/system/exec support for now. :-(
18775 $cat >tryp.c <<EOCP
18776 #include <stdio.h>
18777 int
18778 main(int argc, char **argv)
18779 {
18780     char buf[1024];
18781     int i;
18782     char *bp = buf;
18783     while (1) {
18784         while ((i = getc(stdin)) != -1
18785                && (*bp++ = i) != '\n'
18786                && bp < &buf[1024])
18787         /* DO NOTHING */ ;
18788         *bp = '\0';
18789         fprintf(stdout, "%s", buf);
18790         fflush(NULL);
18791         if (i == -1)
18792             return 0;
18793         bp = buf;
18794     }
18795 }
18796 EOCP
18797                 fflushNULL="$define"
18798                 set tryp
18799                 if eval $compile; then
18800                     $rm -f tryp.out
18801                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18802                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18803                        $cat >&4 <<EOM
18804 fflush(NULL) seems to behave okay with input streams.
18805 EOM
18806                         fflushNULL="$define"
18807                     else
18808                         $cat >&4 <<EOM
18809 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18810 EOM
18811                         fflushNULL="$undef"
18812                     fi
18813                 fi
18814                 $rm -f core tryp.c tryp.core core.tryp.*
18815                 ;;
18816         '')     $cat >&4 <<EOM
18817 Your fflush(NULL) isn't working (contrary to ANSI C).
18818 EOM
18819                 fflushNULL="$undef"
18820                 ;;
18821         *)      $cat >&4 <<EOM
18822 Cannot figure out whether your fflush(NULL) works or not.
18823 I'm assuming it doesn't (contrary to ANSI C).
18824 EOM
18825                 fflushNULL="$undef"
18826                 ;;
18827         esac
18828         ;;
18829 $define|true|[yY]*)
18830         fflushNULL="$define"
18831         ;;
18832 *)
18833         fflushNULL="$undef"
18834         ;;
18835 esac
18836 : check explicit looping only if NULL did not work, and if the pipe
18837 : bug does not show up on an explicit flush too
18838 case "$fflushNULL" in
18839 "$undef")
18840         $cat >tryp.c <<EOCP
18841 #include <stdio.h>
18842 int
18843 main(int argc, char **argv)
18844 {
18845     char buf[1024];
18846     int i;
18847     char *bp = buf;
18848     while (1) {
18849         while ((i = getc(stdin)) != -1
18850                && (*bp++ = i) != '\n'
18851                && bp < &buf[1024])
18852         /* DO NOTHING */ ;
18853         *bp = '\0';
18854         fprintf(stdout, "%s", buf);
18855         fflush(stdin);
18856         if (i == -1)
18857             return 0;
18858         bp = buf;
18859     }
18860 }
18861 EOCP
18862         set tryp
18863         if eval $compile; then
18864             $rm -f tryp.out
18865             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18866             if cmp tryp.c tryp.out >/dev/null 2>&1; then
18867                $cat >&4 <<EOM
18868 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18869 EOM
18870                 : now check for fflushall behaviour
18871                 case "$fflushall" in
18872                 '')     set try -DTRY_FFLUSH_ALL $output
18873                         if eval $compile; then
18874                                 $cat >&4 <<EOM
18875 (Now testing the other method--but note that this also may fail.)
18876 EOM
18877                                 $run ./try 2>/dev/null
18878                                 code=$?
18879                                 $from try.out
18880                                 if $test -s try.out -a "X$code" = X42; then
18881                                         fflushall="`$cat try.out`"
18882                                 fi
18883                         fi
18884                         $rm -f core try.core core.try.*
18885                         case "$fflushall" in
18886                         x)      $cat >&4 <<EOM
18887 Whew. Flushing explicitly all the stdio streams works.
18888 EOM
18889                                 fflushall="$define"
18890                                 ;;
18891                         '')     $cat >&4 <<EOM
18892 Sigh. Flushing explicitly all the stdio streams doesn't work.
18893 EOM
18894                                 fflushall="$undef"
18895                                 ;;
18896                         *)      $cat >&4 <<EOM
18897 Cannot figure out whether flushing stdio streams explicitly works or not.
18898 I'm assuming it doesn't.
18899 EOM
18900                                 fflushall="$undef"
18901                                 ;;
18902                         esac
18903                         ;;
18904                 "$define"|true|[yY]*)
18905                         fflushall="$define"
18906                         ;;
18907                 *)
18908                         fflushall="$undef"
18909                         ;;
18910                 esac
18911             else
18912                 $cat >&4 <<EOM
18913 All is futile.  Even fflush(stdin) clobbers input pipes!
18914 EOM
18915                 fflushall="$undef"
18916             fi
18917         else
18918             fflushall="$undef"
18919         fi
18920         $rm -f core tryp.c tryp.core core.tryp.*
18921         ;;
18922 *)      fflushall="$undef"
18923         ;;
18924 esac
18925
18926 case "$fflushNULL$fflushall" in
18927 undefundef)
18928         $cat <<EOM
18929 OK, I give up.  I cannot figure out how to flush pending stdio output.
18930 We won't be flushing handles at all before fork/exec/popen.
18931 EOM
18932         ;;
18933 esac
18934 $rm -f try.* try$exe_ext
18935
18936 : Store the full pathname to the ar program for use in the C program
18937 : Respect a hint or command line value for full_ar.
18938 case "$full_ar" in
18939 '') full_ar=$ar ;;
18940 esac
18941
18942 : Store the full pathname to the sed program for use in the C program
18943 full_sed=$sed
18944
18945 : see what type gids are declared as in the kernel
18946 echo " "
18947 echo "Looking for the type for group ids returned by getgid()."
18948 set gid_t gidtype xxx stdio.h sys/types.h
18949 eval $typedef
18950 case "$gidtype" in
18951 xxx)
18952         xxx=`./findhdr sys/user.h`
18953         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18954         case $1 in
18955         unsigned) dflt="$1 $2" ;;
18956         *) dflt="$1" ;;
18957         esac
18958         ;;
18959 *) dflt="$gidtype";;
18960 esac
18961 case "$gidtype" in
18962 gid_t) echo "gid_t found." ;;
18963 *)      rp="What is the type for group ids returned by getgid()?"
18964         . ./myread
18965         gidtype="$ans"
18966         ;;
18967 esac
18968
18969 echo " "
18970 case "$gidtype" in
18971 *_t) zzz="$gidtype"     ;;
18972 *)   zzz="gid"          ;;
18973 esac
18974 echo "Checking the size of $zzz..." >&4 
18975 cat > try.c <<EOCP
18976 #include <sys/types.h>
18977 #include <stdio.h>
18978 #$i_stdlib I_STDLIB
18979 #ifdef I_STDLIB
18980 #include <stdlib.h>
18981 #endif
18982 int main() {
18983     printf("%d\n", (int)sizeof($gidtype));
18984     exit(0);
18985 }
18986 EOCP
18987 set try
18988 if eval $compile_ok; then
18989         yyy=`$run ./try`
18990         case "$yyy" in
18991         '')     gidsize=4
18992                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18993                 ;;
18994         *)      gidsize=$yyy
18995                 echo "Your $zzz is $gidsize bytes long."
18996                 ;;
18997         esac
18998 else
18999         gidsize=4
19000         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19001 fi
19002
19003
19004 echo " "
19005 case "$gidtype" in
19006 *_t) zzz="$gidtype"     ;;
19007 *)   zzz="gid"          ;;
19008 esac
19009 echo "Checking the sign of $zzz..." >&4 
19010 cat > try.c <<EOCP
19011 #include <sys/types.h>
19012 #include <stdio.h>
19013 int main() {
19014         $gidtype foo = -1;
19015         if (foo < 0)
19016                 printf("-1\n");
19017         else
19018                 printf("1\n");
19019 }
19020 EOCP
19021 set try
19022 if eval $compile; then
19023         yyy=`$run ./try`
19024         case "$yyy" in
19025         '')     gidsign=1
19026                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19027                 ;;
19028         *)      gidsign=$yyy
19029                 case "$gidsign" in
19030                  1) echo "Your $zzz is unsigned." ;;
19031                 -1) echo "Your $zzz is signed."   ;;
19032                 esac
19033                 ;;
19034         esac
19035 else
19036         gidsign=1
19037         echo "(I can't compile the test program--guessing unsigned.)" >&4
19038 fi
19039
19040
19041 echo " "
19042
19043 if $test X"$quadtype" != X; then
19044
19045 echo "Checking how to print 64-bit integers..." >&4
19046
19047 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19048         $cat >try.c <<'EOCP'
19049 #include <sys/types.h>
19050 #include <stdio.h>
19051 int main() {
19052   int q = 12345678901;
19053   printf("%ld\n", q);
19054 }
19055 EOCP
19056         set try
19057         if eval $compile; then
19058                 yyy=`$run ./try`
19059                 case "$yyy" in
19060                 12345678901)
19061                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19062                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19063                         echo "We will use %d."
19064                         ;;
19065                 esac
19066         fi
19067 fi
19068
19069 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19070         $cat >try.c <<'EOCP'
19071 #include <sys/types.h>
19072 #include <stdio.h>
19073 int main() {
19074   long q = 12345678901;
19075   printf("%ld\n", q);
19076 }
19077 EOCP
19078         set try
19079         if eval $compile; then
19080                 yyy=`$run ./try`
19081                 case "$yyy" in
19082                 12345678901)
19083                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19084                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19085                         echo "We will use %ld."
19086                         ;;
19087                 esac
19088         fi
19089 fi
19090
19091 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19092         $cat >try.c <<'EOCP'
19093 #include <sys/types.h>
19094 #include <inttypes.h>
19095 #include <stdio.h>
19096 int main() {
19097   int64_t q = 12345678901;
19098   printf("%" PRId64 "\n", q);
19099 }
19100 EOCP
19101         set try
19102         if eval $compile; then
19103                 yyy=`$run ./try`
19104                 case "$yyy" in
19105                 12345678901)
19106                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19107                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19108                         echo "We will use the C9X style."
19109                         ;;
19110                 esac
19111         fi
19112 fi
19113
19114 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19115         $cat >try.c <<EOCP
19116 #include <sys/types.h>
19117 #include <stdio.h>
19118 int main() {
19119   $quadtype q = 12345678901;
19120   printf("%Ld\n", q);
19121 }
19122 EOCP
19123         set try
19124         if eval $compile; then
19125                 yyy=`$run ./try`
19126                 case "$yyy" in
19127                 12345678901)
19128                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19129                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19130                         echo "We will use %Ld."
19131                         ;;
19132                 esac
19133         fi
19134 fi
19135
19136 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19137         $cat >try.c <<'EOCP'
19138 #include <sys/types.h>
19139 #include <stdio.h>
19140 int main() {
19141   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19142   printf("%lld\n", q);
19143 }
19144 EOCP
19145         set try
19146         if eval $compile; then
19147                 yyy=`$run ./try`
19148                 case "$yyy" in
19149                 12345678901)
19150                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19151                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19152                         echo "We will use the %lld style."
19153                         ;;
19154                 esac
19155         fi
19156 fi
19157
19158 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19159         $cat >try.c <<EOCP
19160 #include <sys/types.h>
19161 #include <stdio.h>
19162 int main() {
19163   $quadtype q = 12345678901;
19164   printf("%qd\n", q);
19165 }
19166 EOCP
19167         set try
19168         if eval $compile; then
19169                 yyy=`$run ./try`
19170                 case "$yyy" in
19171                 12345678901)
19172                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19173                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19174                         echo "We will use %qd."
19175                         ;;
19176                 esac
19177         fi
19178 fi
19179
19180 if $test X"$sPRId64" = X; then
19181         echo "Cannot figure out how to print 64-bit integers." >&4
19182 fi
19183
19184 $rm -f try try.*
19185
19186 fi
19187
19188 case "$sPRId64" in
19189 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
19190         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
19191         ;;
19192 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
19193         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
19194         ;;
19195 esac
19196
19197
19198 echo " "
19199 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19200
19201 if $test X"$ivsize" = X8; then
19202         ivdformat="$sPRId64"
19203         uvuformat="$sPRIu64"
19204         uvoformat="$sPRIo64"
19205         uvxformat="$sPRIx64"
19206         uvXUformat="$sPRIXU64"
19207 else
19208         if $test X"$ivsize" = X"$longsize"; then
19209                 ivdformat='"ld"'
19210                 uvuformat='"lu"'
19211                 uvoformat='"lo"'
19212                 uvxformat='"lx"'
19213                 uvXUformat='"lX"'
19214         else
19215                 if $test X"$ivsize" = X"$intsize"; then
19216                         ivdformat='"d"'
19217                         uvuformat='"u"'
19218                         uvoformat='"o"'
19219                         uvxformat='"x"'
19220                         uvXUformat='"X"'
19221                 else
19222                         : far out
19223                         if $test X"$ivsize" = X"$shortsize"; then
19224                                 ivdformat='"hd"'
19225                                 uvuformat='"hu"'
19226                                 uvoformat='"ho"'
19227                                 uvxformat='"hx"'
19228                                 uvXUformat='"hX"'
19229                         fi
19230                 fi
19231         fi
19232 fi
19233
19234 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19235         nveformat="$sPRIeldbl"
19236         nvfformat="$sPRIfldbl"
19237         nvgformat="$sPRIgldbl"
19238         nvEUformat="$sPRIEUldbl"
19239         nvFUformat="$sPRIFUldbl"
19240         nvGUformat="$sPRIGUldbl"
19241 else
19242         nveformat='"e"'
19243         nvfformat='"f"'
19244         nvgformat='"g"'
19245         nvEUformat='"E"'
19246         nvFUformat='"F"'
19247         nvGUformat='"G"'
19248 fi
19249
19250 case "$ivdformat" in
19251 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19252     exit 1
19253     ;;
19254 esac
19255
19256
19257 echo " "
19258 $echo "Checking the format string to be used for gids..." >&4
19259
19260 case "$gidsign" in
19261 -1)     if $test X"$gidsize" = X"$ivsize"; then
19262                 gidformat="$ivdformat"
19263         else
19264                 if $test X"$gidsize" = X"$longsize"; then
19265                         gidformat='"ld"'
19266                 else
19267                         if $test X"$gidsize" = X"$intsize"; then
19268                                 gidformat='"d"'
19269                         else
19270                                 if $test X"$gidsize" = X"$shortsize"; then
19271                                         gidformat='"hd"'
19272                                 fi
19273                         fi
19274                 fi
19275         fi
19276         ;;
19277 *)      if $test X"$gidsize" = X"$uvsize"; then
19278                 gidformat="$uvuformat"
19279         else
19280                 if $test X"$gidsize" = X"$longsize"; then
19281                         gidformat='"lu"'
19282                 else
19283                         if $test X"$gidsize" = X"$intsize"; then
19284                                 gidformat='"u"'
19285                         else
19286                                 if $test X"$gidsize" = X"$shortsize"; then
19287                                         gidformat='"hu"'
19288                                 fi
19289                         fi
19290                 fi
19291         fi
19292         ;;
19293 esac
19294
19295 : see if getgroups exists
19296 set getgroups d_getgrps
19297 eval $inlibc
19298
19299 : see if setgroups exists
19300 set setgroups d_setgrps
19301 eval $inlibc
19302
19303
19304 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19305 echo " "
19306 case "$d_getgrps$d_setgrps" in
19307 *define*)
19308         case "$groupstype" in
19309         '') dflt="$gidtype" ;;
19310         *)  dflt="$groupstype" ;;
19311         esac
19312         $cat <<EOM
19313 What type of pointer is the second argument to getgroups() and setgroups()?
19314 Usually this is the same as group ids, $gidtype, but not always.
19315
19316 EOM
19317         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19318         . ./myread
19319         groupstype="$ans"
19320         ;;
19321 *)  groupstype="$gidtype";;
19322 esac
19323
19324
19325 if $test $patchlevel -lt 9; then
19326 : MAD is not available in 5.8.x or earlier.
19327     ans=n;
19328 else
19329     case "$mad" in
19330     $define|true|[yY]*) dflt='y' ;;
19331     *)                  dflt='n' ;;
19332     esac
19333     cat <<EOM
19334
19335 Would you like to build with Misc Attribute Decoration? This is development
19336 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19337 overhead on the interpreter.
19338
19339 If this doesn't make any sense to you, just accept the default '$dflt'.
19340 EOM
19341     rp='Build Perl with MAD?'
19342     . ./myread
19343 fi
19344 case "$ans" in
19345 y|Y)    val="$define"
19346         madlyh='madly.h madly.act madly.tab'
19347         madlysrc='madly.c'
19348         madlyobj="madly$_o" ;;
19349 *)      val="$undef"
19350         madlyh=''
19351         madlysrc=''
19352         madlyobj='' ;;
19353 esac
19354 set mad
19355 eval $setvar
19356
19357 echo " "
19358 echo "Checking if your $make program sets \$(MAKE)..." >&4
19359 case "$make_set_make" in
19360 '')
19361         $sed 's/^X //' > testmake.mak << 'EOF'
19362 Xall:
19363 X       @echo 'maketemp="$(MAKE)"'
19364 EOF
19365         case "`$make -f testmake.mak 2>/dev/null`" in
19366         *maketemp=*) make_set_make='#' ;;
19367         *)      make_set_make="MAKE=$make" ;;
19368         esac
19369         $rm -f testmake.mak
19370         ;;
19371 esac
19372 case "$make_set_make" in
19373 '#') echo "Yup, it does.";;
19374 *) echo "Nope, it doesn't.";;
19375 esac
19376
19377 : see what type is used for mode_t
19378 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19379 set mode_t modetype int stdio.h sys/types.h
19380 eval $typedef_ask
19381
19382 : see if we need va_copy
19383 echo " "
19384 case "$i_stdarg" in
19385 "$define")
19386         $cat >try.c <<EOCP
19387 #include <stdarg.h>
19388 #include <stdio.h>
19389 #$i_stdlib I_STDLIB
19390 #ifdef I_STDLIB
19391 #include <stdlib.h>
19392 #endif
19393 #include <signal.h>
19394
19395 int
19396 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19397 {
19398   return vfprintf(f, fmt, *valp);
19399 }
19400  
19401 int    
19402 myvfprintf(FILE *f, const  char *fmt, va_list val)
19403 {
19404   return ivfprintf(f, fmt, &val);
19405 }
19406       
19407 int
19408 myprintf(char *fmt, ...) 
19409 {
19410   va_list val;
19411   va_start(val, fmt);
19412   return myvfprintf(stdout, fmt, val); 
19413 }         
19414
19415 int
19416 main(int ac, char **av)
19417 {
19418   signal(SIGSEGV, exit);
19419
19420   myprintf("%s%cs all right, then\n", "that", '\'');                            
19421   exit(0);      
19422 }
19423 EOCP
19424         set try
19425         if eval $compile && $run ./try 2>&1 >/dev/null; then
19426                 case "`$run ./try`" in
19427                 "that's all right, then")
19428                         okay=yes
19429                         ;;
19430                 esac
19431         fi
19432         case "$okay" in
19433         yes)    echo "It seems that you don't need va_copy()." >&4
19434                 need_va_copy="$undef"
19435                 ;;
19436         *)      echo "It seems that va_copy() or similar will be needed." >&4
19437                 need_va_copy="$define"
19438                 ;;
19439         esac
19440         $rm -f try.* core core.* *.core *.core.*
19441         ;;
19442 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19443         ;;
19444 esac
19445
19446 : see what type is used for size_t
19447 rp="What is the type used for the length parameter for string functions?"
19448 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19449 eval $typedef_ask
19450
19451 : check for type of arguments to gethostbyaddr. 
19452 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19453         case "$d_gethbyaddr" in
19454         $define)
19455                 $cat <<EOM
19456
19457 Checking to see what type of arguments are accepted by gethostbyaddr().
19458 EOM
19459                 hdrs="$define sys/types.h
19460                         $d_socket sys/socket.h 
19461                         $i_niin netinet/in.h 
19462                         $i_netdb netdb.h
19463                         $i_unistd unistd.h"
19464                 : The first arg can 'char *' or 'void *'
19465                 : The second arg is some of integral type
19466                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19467                         for yyy in size_t long int; do
19468                                 case "$netdb_host_type" in
19469                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19470                                         if ./protochk "$try" $hdrs; then
19471                                                 echo "Your system accepts $xxx for the first arg."
19472                                                 echo "...and $yyy for the second arg."
19473                                                 netdb_host_type="$xxx"
19474                                                 netdb_hlen_type="$yyy"
19475                                         fi
19476                                         ;;
19477                                 esac
19478                         done
19479                 done
19480                 : In case none of those worked, prompt the user.
19481                 case "$netdb_host_type" in
19482                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19483                         dflt='char *'
19484                         . ./myread
19485                         netdb_host_type=$ans
19486                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19487                         dflt="$sizetype"
19488                         . ./myread
19489                         netdb_hlen_type=$ans
19490                         ;;
19491                 esac
19492                 ;;
19493         *)      : no gethostbyaddr, so pick harmless defaults
19494                 netdb_host_type='char *'
19495                 netdb_hlen_type="$sizetype"
19496                 ;;
19497         esac
19498         # Remove the "const" if needed. -- but then we'll have a 
19499         # prototype clash!
19500         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19501 fi
19502
19503 : check for type of argument to gethostbyname. 
19504 if test "X$netdb_name_type" = X ; then
19505         case "$d_gethbyname" in
19506         $define)
19507                 $cat <<EOM
19508
19509 Checking to see what type of argument is accepted by gethostbyname().
19510 EOM
19511                 hdrs="$define sys/types.h
19512                         $d_socket sys/socket.h 
19513                         $i_niin netinet/in.h 
19514                         $i_netdb netdb.h
19515                         $i_unistd unistd.h"
19516                 for xxx in "const char *" "char *"; do
19517                         case "$netdb_name_type" in
19518                         '')     try="extern struct hostent *gethostbyname($xxx);"
19519                                 if ./protochk "$try" $hdrs; then
19520                                         echo "Your system accepts $xxx."
19521                                         netdb_name_type="$xxx"
19522                                 fi
19523                                 ;;
19524                         esac
19525                 done
19526                 : In case none of those worked, prompt the user.
19527                 case "$netdb_name_type" in
19528                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19529                         dflt='char *'
19530                         . ./myread
19531                         netdb_name_type=$ans
19532                         ;;
19533                 esac
19534                 ;;
19535         *)      : no gethostbyname, so pick harmless default
19536                 netdb_name_type='char *'
19537                 ;;
19538         esac
19539 fi
19540
19541 : check for type of 1st argument to getnetbyaddr. 
19542 if test "X$netdb_net_type" = X ; then
19543         case "$d_getnbyaddr" in
19544         $define)
19545                 $cat <<EOM
19546
19547 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19548 EOM
19549                 hdrs="$define sys/types.h
19550                         $d_socket sys/socket.h 
19551                         $i_niin netinet/in.h 
19552                         $i_netdb netdb.h
19553                         $i_unistd unistd.h"
19554                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19555                         case "$netdb_net_type" in
19556                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19557                                 if ./protochk "$try" $hdrs; then
19558                                         echo "Your system accepts $xxx."
19559                                         netdb_net_type="$xxx"
19560                                 fi
19561                                 ;;
19562                         esac
19563                 done
19564                 : In case none of those worked, prompt the user.
19565                 case "$netdb_net_type" in
19566                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19567                         dflt='long'
19568                         . ./myread
19569                         netdb_net_type=$ans
19570                         ;;
19571                 esac
19572                 ;;
19573         *)      : no getnetbyaddr, so pick harmless default
19574                 netdb_net_type='long'
19575                 ;;
19576         esac
19577 fi
19578 : locate the preferred pager for this system
19579 fn=f/
19580 case "$pager" in
19581 '')
19582         dflt=''
19583         case "$pg" in
19584         /*) dflt=$pg;;
19585         [a-zA-Z]:/*) dflt=$pg;;
19586         esac
19587         case "$more" in
19588         /*) dflt=$more;;
19589         [a-zA-Z]:/*) dflt=$more;;
19590         esac
19591         case "$less" in
19592         /*) dflt=$less;;
19593         [a-zA-Z]:/*) dflt=$less;;
19594         esac
19595         case "$dflt" in
19596         '') dflt=/usr/ucb/more;;
19597         esac
19598         ;;
19599 *)      dflt="$pager"
19600         : Instruct ./getfile to trust the hinted or previous pager value,
19601         : even if it does not begin with a slash.  For example, on os2,
19602         : pager might be cmd /c more.  See comments in UU/getfile.
19603         fn="f/($pager)"
19604         ;;
19605 esac
19606 echo " "
19607 rp='What pager is used on your system?'
19608 . ./getfile
19609 pager="$ans"
19610
19611 : see what type pids are declared as in the kernel
19612 rp="What is the type of process ids on this system?"
19613 set pid_t pidtype int stdio.h sys/types.h
19614 eval $typedef_ask
19615
19616 : see if ar generates random libraries by itself
19617 echo " "
19618 echo "Checking how to generate random libraries on your machine..." >&4
19619 echo 'int bar1() { return bar2(); }' > bar1.c
19620 echo 'int bar2() { return 2; }' > bar2.c
19621 $cat > foo.c <<EOP
19622 #$i_stdlib I_STDLIB
19623 #ifdef I_STDLIB
19624 #include <stdlib.h>
19625 #endif
19626 int main() { printf("%d\n", bar1()); exit(0); }
19627 EOP
19628 $cc $ccflags -c bar1.c >/dev/null 2>&1
19629 $cc $ccflags -c bar2.c >/dev/null 2>&1
19630 $cc $ccflags -c foo.c >/dev/null 2>&1
19631 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19632 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19633         $run ./foobar >/dev/null 2>&1; then
19634         echo "$ar appears to generate random libraries itself."
19635         orderlib=false
19636         if [ "X$ranlib" = "X" ]; then
19637             ranlib=":"
19638         fi
19639 elif $ar s bar$_a >/dev/null 2>&1 &&
19640         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19641         $run ./foobar >/dev/null 2>&1; then
19642                 echo "a table of contents needs to be added with '$ar s'."
19643                 orderlib=false
19644                 ranlib="$ar s"
19645 elif $ar ts bar$_a >/dev/null 2>&1 &&
19646         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19647         $run ./foobar >/dev/null 2>&1; then
19648                 echo "a table of contents needs to be added with '$ar ts'."
19649                 orderlib=false
19650                 ranlib="$ar ts"
19651 else
19652         case "$ranlib" in
19653         :) ranlib='';;
19654         '')
19655                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19656                 $test -f $ranlib || ranlib=''
19657                 ;;
19658         esac
19659         if $test -n "$ranlib"; then
19660                 echo "your system has '$ranlib'; we'll use that."
19661                 orderlib=false
19662         else
19663                 echo "your system doesn't seem to support random libraries"
19664                 echo "so we'll use lorder and tsort to order the libraries."
19665                 orderlib=true
19666                 ranlib=":"
19667         fi
19668 fi
19669 $rm -f foo* bar*
19670
19671 : check for type of arguments to select. 
19672 case "$selecttype" in
19673 '') case "$d_select" in
19674         $define)
19675                 echo " "
19676                 $cat <<EOM
19677 Checking to see what type of arguments are accepted by select().
19678 EOM
19679                 hdrs="$define sys/types.h
19680                         $i_systime sys/time.h 
19681                         $i_sysselct sys/select.h
19682                         $d_socket sys/socket.h"
19683                 : The first arg can be int, unsigned, or size_t
19684                 : The last arg may or may not be 'const'
19685                 val=''
19686                 : void pointer has been seen but using that
19687                 : breaks the selectminbits test
19688                 for xxx in 'fd_set *' 'int *'; do
19689                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19690                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19691                                         case "$val" in
19692                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19693                                                 if ./protochk "$try" $hdrs; then
19694                                                         echo "Your system accepts $xxx."
19695                                                         val="$xxx"
19696                                                 fi
19697                                                 ;;
19698                                         esac
19699                                 done
19700                         done
19701                 done
19702                 case "$val" in
19703                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19704                         case "$d_fd_set" in
19705                                 $define) dflt="fd_set *" ;;
19706                                 *)              dflt="int *" ;;
19707                         esac
19708                         . ./myread
19709                         val=$ans
19710                         ;;
19711                 esac
19712                 selecttype="$val"
19713                 ;;
19714         *)      : no select, so pick a harmless default
19715                 selecttype='int *'
19716                 ;;
19717         esac
19718         ;;
19719 esac
19720
19721 : check for the select 'width'
19722 case "$selectminbits" in
19723 '') safebits=`expr $ptrsize \* 8`
19724     case "$d_select" in
19725         $define)
19726                 $cat <<EOM
19727
19728 Checking to see on how many bits at a time your select() operates...
19729 EOM
19730                 $cat >try.c <<EOCP
19731 #include <sys/types.h>
19732 #$i_time I_TIME
19733 #$i_systime I_SYS_TIME
19734 #$i_systimek I_SYS_TIME_KERNEL
19735 #ifdef I_TIME
19736 #   include <time.h>
19737 #endif
19738 #ifdef I_SYS_TIME
19739 #   ifdef I_SYS_TIME_KERNEL
19740 #       define KERNEL
19741 #   endif
19742 #   include <sys/time.h>
19743 #   ifdef I_SYS_TIME_KERNEL
19744 #       undef KERNEL
19745 #   endif
19746 #endif
19747 #$i_sysselct I_SYS_SELECT
19748 #ifdef I_SYS_SELECT
19749 #include <sys/select.h>
19750 #endif
19751 #$d_socket HAS_SOCKET
19752 #ifdef HAS_SOCKET
19753 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19754 #endif
19755 #include <stdio.h>
19756 #$i_stdlib I_STDLIB
19757 #ifdef I_STDLIB
19758 #include <stdlib.h>
19759 #endif
19760 $selecttype b;
19761 #define S sizeof(*(b))
19762 #define MINBITS 64
19763 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19764 #define NBITS  (NBYTES * 8)
19765 int main() {
19766     char *s = (char *)malloc(NBYTES);
19767     struct timeval t;
19768     int i;
19769     FILE* fp;
19770     int fd;
19771
19772     if (!s)
19773         exit(1);
19774     fclose(stdin);
19775     fp = fopen("try.c", "r");
19776     if (fp == 0)
19777       exit(2);
19778     fd = fileno(fp);
19779     if (fd < 0)
19780       exit(3);
19781     b = ($selecttype)s;
19782     for (i = 0; i < NBITS; i++)
19783         FD_SET(i, b);
19784     t.tv_sec  = 0;
19785     t.tv_usec = 0;
19786     select(fd + 1, b, 0, 0, &t);
19787     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19788     free(s);
19789     printf("%d\n", i + 1);
19790     return 0;
19791 }
19792 EOCP
19793                 set try
19794                 if eval $compile_ok; then
19795                         selectminbits=`$run ./try`
19796                         case "$selectminbits" in
19797                         '')     cat >&4 <<EOM
19798 Cannot figure out on how many bits at a time your select() operates.
19799 I'll play safe and guess it is $safebits bits.
19800 EOM
19801                                 selectminbits=$safebits
19802                                 bits="$safebits bits"
19803                                 ;;
19804                         1)      bits="1 bit" ;;
19805                         *)      bits="$selectminbits bits" ;;
19806                         esac
19807                         echo "Your select() operates on $bits at a time." >&4
19808                 else
19809                         rp='What is the minimum number of bits your select() operates on?'
19810                         case "$byteorder" in
19811                         12345678)       dflt=64 ;;
19812                         1234)           dflt=32 ;;
19813                         *)              dflt=1  ;;
19814                         esac
19815                         . ./myread
19816                         val=$ans
19817                         selectminbits="$val"
19818                 fi
19819                 $rm -f try.* try
19820                 ;;
19821         *)      : no select, so pick a harmless default
19822                 selectminbits=$safebits
19823                 ;;
19824         esac
19825         ;;
19826 esac
19827
19828 : Trace out the files included by signal.h, then look for SIGxxx names.
19829 : Remove SIGARRAYSIZE used by HPUX.
19830 : Remove SIGSTKSIZE used by Linux.
19831 : Remove SIGSTKSZ used by Posix.
19832 : Remove SIGTYP void lines used by OS2.
19833 : Some cpps, like os390, dont give the file name anywhere
19834 if [ "X$fieldn" = X ]; then
19835         : Just make some guesses.  We check them later.
19836         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19837 else
19838         xxx=`echo '#include <signal.h>' |
19839         $cppstdin $cppminus $cppflags 2>/dev/null |
19840         $grep '^[       ]*#.*include' | 
19841         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19842 fi
19843 : Check this list of files to be sure we have parsed the cpp output ok.
19844 : This will also avoid potentially non-existent files, such 
19845 : as ../foo/bar.h
19846 xxxfiles=''
19847 for xx in $xxx /dev/null ; do
19848         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19849 done
19850 : If we have found no files, at least try signal.h
19851 case "$xxxfiles" in
19852 '')     xxxfiles=`./findhdr signal.h` ;;
19853 esac
19854 xxx=`awk '
19855 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19856         print substr($2, 4, 20)
19857 }
19858 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19859         print substr($3, 4, 20)
19860 }' $xxxfiles`
19861 : Append some common names just in case the awk scan failed.
19862 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19863 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19864 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19865 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19866 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19867
19868 : generate a few handy files for later
19869 $cat > signal.c <<EOCP
19870 #include <sys/types.h>
19871 #include <signal.h>
19872 #$i_stdlib I_STDLIB
19873 #ifdef I_STDLIB
19874 #include <stdlib.h>
19875 #endif
19876 #include <stdio.h>
19877 int main() {
19878
19879 /* Strange style to avoid deeply-nested #if/#else/#endif */
19880 #ifndef NSIG
19881 #  ifdef _NSIG
19882 #    define NSIG (_NSIG)
19883 #  endif
19884 #endif
19885
19886 #ifndef NSIG
19887 #  ifdef SIGMAX
19888 #    define NSIG (SIGMAX+1)
19889 #  endif
19890 #endif
19891
19892 #ifndef NSIG
19893 #  ifdef SIG_MAX
19894 #    define NSIG (SIG_MAX+1)
19895 #  endif
19896 #endif
19897
19898 #ifndef NSIG
19899 #  ifdef _SIG_MAX
19900 #    define NSIG (_SIG_MAX+1)
19901 #  endif
19902 #endif
19903
19904 #ifndef NSIG
19905 #  ifdef MAXSIG
19906 #    define NSIG (MAXSIG+1)
19907 #  endif
19908 #endif
19909
19910 #ifndef NSIG
19911 #  ifdef MAX_SIG
19912 #    define NSIG (MAX_SIG+1)
19913 #  endif
19914 #endif
19915
19916 #ifndef NSIG
19917 #  ifdef SIGARRAYSIZE
19918 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19919 #  endif
19920 #endif
19921
19922 #ifndef NSIG
19923 #  ifdef _sys_nsig
19924 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19925 #  endif
19926 #endif
19927
19928 /* Default to some arbitrary number that's big enough to get most
19929    of the common signals.
19930 */
19931 #ifndef NSIG
19932 #    define NSIG 50
19933 #endif
19934
19935 printf("NSIG %d\n", NSIG);
19936
19937 #ifndef JUST_NSIG
19938
19939 EOCP
19940
19941 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19942 {
19943         printf "#ifdef SIG"; printf $1; printf "\n"
19944         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19945         printf $1; printf ");\n"
19946         printf "#endif\n"
19947 }
19948 END {
19949         printf "#endif /* JUST_NSIG */\n";
19950         printf "exit(0);\n}\n";
19951 }
19952 ' >>signal.c
19953 $cat >signal.awk <<'EOP'
19954 BEGIN { ndups = 0 }
19955 $1 ~ /^NSIG$/ { nsig = $2 }
19956 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19957     if ($2 > maxsig) { maxsig = $2 }
19958     if (sig_name[$2]) {
19959         dup_name[ndups] = $1
19960         dup_num[ndups] = $2
19961         ndups++ 
19962     }
19963     else {
19964         sig_name[$2] = $1
19965         sig_num[$2] = $2
19966     }
19967 }
19968 END { 
19969     if (nsig == 0) {
19970         nsig = maxsig + 1
19971     }
19972     printf("NSIG %d\n", nsig);
19973     for (n = 1; n < nsig; n++) {
19974         if (sig_name[n]) {
19975             printf("%s %d\n", sig_name[n], sig_num[n])
19976         }
19977         else {
19978             printf("NUM%d %d\n", n, n) 
19979         }
19980     }
19981     for (n = 0; n < ndups; n++) {
19982         printf("%s %d\n", dup_name[n], dup_num[n])
19983     }
19984 }
19985 EOP
19986 $cat >signal_cmd <<EOS
19987 $startsh
19988 if $test -s signal.lst; then
19989     echo "Using your existing signal.lst file"
19990         exit 0
19991 fi
19992 xxx="$xxx"
19993 EOS
19994 $cat >>signal_cmd <<'EOS'
19995
19996 set signal
19997 if eval $compile_ok; then
19998         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19999 else
20000         echo "(I can't seem be able to compile the whole test program)" >&4
20001         echo "(I'll try it in little pieces.)" >&4
20002         set signal -DJUST_NSIG
20003         if eval $compile_ok; then
20004                 $run ./signal$_exe > signal.nsg
20005                 $cat signal.nsg
20006         else
20007                 echo "I can't seem to figure out how many signals you have." >&4
20008                 echo "Guessing 50." >&4
20009                 echo 'NSIG 50' > signal.nsg
20010         fi
20011         : Now look at all the signal names, one at a time.
20012         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20013                 $cat > signal.c <<EOCP
20014 #include <sys/types.h>
20015 #include <signal.h>
20016 #include <stdio.h>
20017 int main() {
20018 printf("$xx %d\n", SIG${xx});
20019 return 0;
20020 }
20021 EOCP
20022                 set signal
20023                 if eval $compile; then
20024                         echo "SIG${xx} found."
20025                         $run ./signal$_exe  >> signal.ls1
20026                 else
20027                         echo "SIG${xx} NOT found."
20028                 fi
20029         done
20030         if $test -s signal.ls1; then
20031                 $cat signal.nsg signal.ls1 |
20032                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20033         fi
20034
20035 fi
20036 if $test -s signal.lst; then
20037         :
20038 else
20039         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20040         echo 'kill -l' >signal
20041         set X `csh -f <signal`
20042         $rm -f signal
20043         shift
20044         case $# in
20045         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20046         esac
20047         echo $@ | $tr ' ' $trnl | \
20048             $awk '{ printf "%s %d\n", $1, ++s; }
20049                   END { printf "NSIG %d\n", ++s }' >signal.lst
20050 fi
20051 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20052 EOS
20053 chmod a+x signal_cmd
20054 $eunicefix signal_cmd
20055
20056 : generate list of signal names
20057 echo " "
20058 case "$sig_name_init" in
20059 '') doinit=yes ;;
20060 *)  case "$sig_num_init" in
20061     ''|*,*) doinit=yes ;;
20062     esac ;;
20063 esac
20064 case "$doinit" in
20065 yes)
20066         echo "Generating a list of signal names and numbers..." >&4
20067         . ./signal_cmd
20068         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20069         sig_name=`$awk 'BEGIN { printf "ZERO " }
20070                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20071         sig_num=`$awk  'BEGIN { printf "0 " }
20072                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20073         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20074                              !/^NSIG/   { printf "\"%s\", ", $1 }
20075                              END        { printf "0\n" }' signal.lst`
20076         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20077                              !/^NSIG/   { printf "%d, ", $2}
20078                              END        { printf "0\n"}' signal.lst`
20079         ;;
20080 esac
20081 echo "The following $sig_count signals are available:"
20082 echo " "
20083 echo $sig_name | $awk \
20084 'BEGIN { linelen = 0 }
20085 {
20086         for (i = 1; i <= NF; i++) {
20087                 name = "SIG" $i " "
20088                 linelen = linelen + length(name)
20089                 if (linelen > 70) {
20090                         printf "\n"
20091                         linelen = length(name)
20092                 }
20093                 printf "%s", name
20094         }
20095         printf "\n"
20096 }'
20097 sig_size=`echo $sig_name | awk '{print NF}'`
20098 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
20099
20100 echo " "
20101 case "$sizetype" in
20102 *_t) zzz="$sizetype"    ;;
20103 *)   zzz="filesize"     ;;
20104 esac
20105 echo "Checking the size of $zzz..." >&4 
20106 cat > try.c <<EOCP
20107 #include <sys/types.h>
20108 #include <stdio.h>
20109 #$i_stdlib I_STDLIB
20110 #ifdef I_STDLIB
20111 #include <stdlib.h>
20112 #endif
20113 int main() {
20114     printf("%d\n", (int)sizeof($sizetype));
20115     exit(0);
20116 }
20117 EOCP
20118 set try
20119 if eval $compile_ok; then
20120         yyy=`$run ./try`
20121         case "$yyy" in
20122         '')     sizesize=4
20123                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20124                 ;;
20125         *)      sizesize=$yyy
20126                 echo "Your $zzz size is $sizesize bytes."
20127                 ;;
20128         esac
20129 else
20130         sizesize=4
20131         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20132 fi
20133
20134
20135 : check for socklen_t
20136 echo " "
20137 echo "Checking to see if you have socklen_t..." >&4
20138 $cat >try.c <<EOCP
20139 #include <sys/types.h>
20140 #$d_socket HAS_SOCKET
20141 #ifdef HAS_SOCKET
20142 #include <sys/socket.h>
20143 #endif
20144 int main() { socklen_t x = 16; }
20145 EOCP
20146 set try
20147 if eval $compile; then
20148         val="$define"
20149         echo "You have socklen_t."
20150 else
20151         val="$undef"
20152         echo "You do not have socklen_t."
20153         case "$sizetype" in
20154         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20155         esac
20156 fi
20157 $rm -f try try.*
20158 set d_socklen_t
20159 eval $setvar
20160
20161 : see if this is a socks.h system
20162 set socks.h i_socks
20163 eval $inhdr
20164
20165 : check for type of the size argument to socket calls
20166 case "$d_socket" in
20167 "$define")
20168         $cat <<EOM
20169
20170 Checking to see what type is the last argument of accept().
20171 EOM
20172         yyy=''
20173         case "$d_socklen_t" in
20174         "$define") yyy="$yyy socklen_t"
20175         esac
20176         yyy="$yyy $sizetype int long unsigned"
20177         for xxx in $yyy; do
20178                 case "$socksizetype" in
20179                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20180                         case "$usesocks" in
20181                         "$define")
20182                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20183                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20184                                         socksizetype="$xxx"
20185                                 fi
20186                                 ;;
20187                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20188                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20189                                         socksizetype="$xxx"
20190                                 fi
20191                                 ;;
20192                         esac
20193                         ;;
20194                 esac
20195         done
20196 : In case none of those worked, prompt the user.
20197         case "$socksizetype" in
20198         '')     rp='What is the type for socket address structure sizes?'
20199                 dflt='int'
20200                 . ./myread
20201                 socksizetype=$ans
20202                 ;;
20203         esac
20204         ;;
20205 *)      : no sockets, so pick relatively harmless default
20206         socksizetype='int'
20207         ;;
20208 esac
20209
20210 : see what type is used for signed size_t
20211 set ssize_t ssizetype int stdio.h sys/types.h
20212 eval $typedef
20213 dflt="$ssizetype"
20214 $cat > try.c <<EOM
20215 #include <stdio.h>
20216 #$i_stdlib I_STDLIB
20217 #ifdef I_STDLIB
20218 #include <stdlib.h>
20219 #endif
20220 #include <sys/types.h>
20221 #define Size_t $sizetype
20222 #define SSize_t $dflt
20223 int main()
20224 {
20225         if (sizeof(Size_t) == sizeof(SSize_t))
20226                 printf("$dflt\n");
20227         else if (sizeof(Size_t) == sizeof(int))
20228                 printf("int\n");
20229         else 
20230                 printf("long\n");
20231         exit(0);
20232 }
20233 EOM
20234 echo " "
20235 set try
20236 if eval $compile_ok && $run ./try > /dev/null; then
20237         ssizetype=`$run ./try`
20238         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20239 else
20240         $cat >&4 <<EOM
20241 Help! I can't compile and run the ssize_t test program: please enlighten me!
20242 (This is probably a misconfiguration in your system or libraries, and
20243 you really ought to fix it.  Still, I'll try anyway.)
20244
20245 I need a type that is the same size as $sizetype, but is guaranteed to
20246 be signed.  Common values are ssize_t, int and long.
20247
20248 EOM
20249         rp="What signed type is the same size as $sizetype?"
20250         . ./myread
20251         ssizetype="$ans"
20252 fi
20253 $rm -f try try.*
20254
20255 : see what type of char stdio uses.
20256 echo " "
20257 echo '#include <stdio.h>' > stdio.c
20258 $cppstdin $cppminus < stdio.c > stdioh
20259 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20260         echo "Your stdio uses unsigned chars." >&4
20261         stdchar="unsigned char"
20262 else
20263         echo "Your stdio uses signed chars." >&4
20264         stdchar="char"
20265 fi
20266 $rm -f stdio.* stdioh
20267
20268 : see what type uids are declared as in the kernel
20269 echo " "
20270 echo "Looking for the type for user ids returned by getuid()."
20271 set uid_t uidtype xxx stdio.h sys/types.h
20272 eval $typedef
20273 case "$uidtype" in
20274 xxx)
20275         xxx=`./findhdr sys/user.h`
20276         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20277         case $1 in
20278         unsigned) dflt="$1 $2" ;;
20279         *) dflt="$1" ;;
20280         esac
20281         ;;
20282 *) dflt="$uidtype";;
20283 esac
20284 case "$uidtype" in
20285 uid_t)  echo "uid_t found." ;;
20286 *)      rp="What is the type for user ids returned by getuid()?"
20287         . ./myread
20288         uidtype="$ans"
20289         ;;
20290 esac
20291
20292 echo " "
20293 case "$uidtype" in
20294 *_t) zzz="$uidtype"     ;;
20295 *)   zzz="uid"          ;;
20296 esac
20297 echo "Checking the size of $zzz..." >&4 
20298 cat > try.c <<EOCP
20299 #include <sys/types.h>
20300 #include <stdio.h>
20301 #$i_stdlib I_STDLIB
20302 #ifdef I_STDLIB
20303 #include <stdlib.h>
20304 #endif
20305 int main() {
20306     printf("%d\n", (int)sizeof($uidtype));
20307     exit(0);
20308 }
20309 EOCP
20310 set try
20311 if eval $compile_ok; then
20312         yyy=`$run ./try`
20313         case "$yyy" in
20314         '')     uidsize=4
20315                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20316                 ;;
20317         *)      uidsize=$yyy
20318                 echo "Your $zzz is $uidsize bytes long."
20319                 ;;
20320         esac
20321 else
20322         uidsize=4
20323         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20324 fi
20325
20326 echo " "
20327 case "$uidtype" in
20328 *_t) zzz="$uidtype"     ;;
20329 *)   zzz="uid"          ;;
20330 esac
20331 echo "Checking the sign of $zzz..." >&4
20332 cat > try.c <<EOCP
20333 #include <sys/types.h>
20334 #include <stdio.h>
20335 int main() {
20336         $uidtype foo = -1;
20337         if (foo < 0)
20338                 printf("-1\n");
20339         else
20340                 printf("1\n");
20341 }
20342 EOCP
20343 set try
20344 if eval $compile; then
20345         yyy=`$run ./try`
20346         case "$yyy" in
20347         '')     uidsign=1
20348                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20349                 ;;
20350         *)      uidsign=$yyy
20351                 case "$uidsign" in
20352                  1) echo "Your $zzz is unsigned." ;;
20353                 -1) echo "Your $zzz is signed."   ;;
20354                 esac
20355                 ;;
20356         esac
20357 else
20358         uidsign=1
20359         echo "(I can't compile the test program--guessing unsigned.)" >&4
20360 fi
20361
20362
20363
20364 echo " "
20365 $echo "Checking the format string to be used for uids..." >&4
20366
20367 case "$uidsign" in
20368 -1)     if $test X"$uidsize" = X"$ivsize"; then
20369                 uidformat="$ivdformat"
20370         else
20371                 if $test X"$uidsize" = X"$longsize"; then
20372                         uidformat='"ld"'
20373                 else
20374                         if $test X"$uidsize" = X"$intsize"; then
20375                                 uidformat='"d"'
20376                         else
20377                                 if $test X"$uidsize" = X"$shortsize"; then
20378                                         uidformat='"hd"'
20379                                 fi
20380                         fi
20381                 fi
20382         fi
20383         ;;
20384 *)      if $test X"$uidsize" = X"$uvsize"; then
20385                 uidformat="$uvuformat"
20386         else
20387                 if $test X"$uidsize" = X"$longsize"; then
20388                         uidformat='"lu"'
20389                 else
20390                         if $test X"$uidsize" = X"$intsize"; then
20391                                 uidformat='"u"'
20392                         else
20393                                 if $test X"$uidsize" = X"$shortsize"; then
20394                                         uidformat='"hu"'
20395                                 fi
20396                         fi
20397                 fi
20398         fi
20399         ;;
20400 esac
20401
20402
20403 case "$usesitecustomize" in
20404     $define|true|[Yy]*)
20405         usesitecustomize="$define"
20406         ;;
20407     *)
20408         usesitecustomize="$undef"
20409         ;;
20410     esac
20411
20412 : determine compiler compiler
20413 case "$yacc" in
20414 '')
20415         dflt=yacc;;
20416 *)
20417         dflt="$yacc";;
20418 esac
20419 echo " "
20420 comp='yacc'
20421 if $test -f "$byacc$_exe"; then
20422         dflt="$byacc"
20423         comp="byacc or $comp"
20424 fi
20425 if $test -f "$bison$_exe"; then
20426         comp="$comp or bison -y"
20427 fi
20428 rp="Which compiler compiler ($comp) shall I use?"
20429 . ./myread
20430 yacc="$ans"
20431 case "$yacc" in
20432 *bis*)
20433         case "$yacc" in
20434         *-y*) ;;
20435         *)
20436                 yacc="$yacc -y"
20437                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20438                 ;;
20439         esac
20440         ;;
20441 esac
20442
20443 : see if this is a fp.h system
20444 set fp.h i_fp
20445 eval $inhdr
20446
20447 : see if this is a fp_class.h system
20448 set fp_class.h i_fp_class
20449 eval $inhdr
20450
20451 : see if gdbm.h is available
20452 set gdbm.h t_gdbm
20453 eval $inhdr
20454 case "$t_gdbm" in
20455 $define)
20456         : see if gdbm_open exists
20457         set gdbm_open d_gdbm_open
20458         eval $inlibc
20459         case "$d_gdbm_open" in
20460         $undef)
20461                 t_gdbm="$undef"
20462                 echo "We won't be including <gdbm.h>"
20463                 ;;
20464         esac
20465         ;;
20466 esac
20467 val="$t_gdbm"
20468 set i_gdbm
20469 eval $setvar
20470
20471 : see if this is a ieeefp.h system
20472 case "$i_ieeefp" in
20473 '' ) set ieeefp.h i_ieeefp
20474      eval $inhdr
20475      ;;
20476 esac
20477
20478 : see if this is a libutil.h system
20479 set libutil.h i_libutil
20480 eval $inhdr
20481
20482 : see if mach cthreads are available
20483 if test "X$usethreads" = "X$define"; then
20484         set mach/cthreads.h i_machcthr
20485         eval $inhdr
20486 else
20487         i_machcthr="$undef"
20488 fi
20489
20490
20491
20492 : see if this is a mntent.h system
20493 set mntent.h i_mntent
20494 eval $inhdr
20495
20496 : see if ndbm.h is available
20497 set ndbm.h t_ndbm
20498 eval $inhdr
20499
20500 case "$t_ndbm" in
20501 $undef)
20502     # Some Linux distributions such as RedHat 7.1 put the
20503     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20504     if $test -f /usr/include/gdbm/ndbm.h; then
20505         echo '<gdbm/ndbm.h> found.'
20506         ccflags="$ccflags -I/usr/include/gdbm"
20507         cppflags="$cppflags -I/usr/include/gdbm"
20508         t_ndbm=$define
20509     fi
20510     ;;
20511 esac
20512
20513 case "$t_ndbm" in
20514 $define)
20515         : see if dbm_open exists
20516         set dbm_open d_dbm_open
20517         eval $inlibc
20518         case "$d_dbm_open" in
20519         $undef)
20520                 t_ndbm="$undef"
20521                 echo "We won't be including <ndbm.h>"
20522                 ;;
20523         esac
20524         ;;
20525 esac
20526 val="$t_ndbm"
20527 set i_ndbm
20528 eval $setvar
20529
20530 : see if net/errno.h is available
20531 val=''
20532 set net/errno.h val
20533 eval $inhdr
20534
20535 : Unfortunately, it causes problems on some systems.  Arrgh.
20536 case "$val" in
20537 $define)
20538         cat > try.c <<'EOM'
20539 #include <stdio.h>
20540 #include <errno.h>
20541 #include <net/errno.h>
20542 int func()
20543 {
20544         return ENOTSOCK;
20545 }
20546 EOM
20547         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20548                 echo "We'll be including <net/errno.h>." >&4
20549         else
20550                 echo "We won't be including <net/errno.h>." >&4
20551                 val="$undef"
20552         fi
20553         $rm -f try.* try
20554         ;;
20555 esac
20556 set i_neterrno
20557 eval $setvar
20558
20559 : see if netinet/tcp.h is available
20560 set netinet/tcp.h i_netinettcp
20561 eval $inhdr
20562
20563 : see if this is a poll.h system
20564 set poll.h i_poll
20565 eval $inhdr
20566
20567 : see if this is a prot.h system
20568 set prot.h i_prot
20569 eval $inhdr
20570
20571 echo " "
20572 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20573 $cat <<'EOSH' > Cppsym.know
20574 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20575 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20576 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20577 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20578 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20579 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20580 bull c cadmus clipper CMU COFF COMPILER_VERSION
20581 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20582 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20583 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20584 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20585 GLIBC GLIBC_MINOR
20586 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20587 H3050R H3050RX hbullx20 hcx host_mips
20588 hp200 hp300 hp700 HP700 hp800 hp9000
20589 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20590 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20591 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20592 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20593 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20594 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20595 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20596 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20597 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20598 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20599 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20600 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20601 MATH_HAS_NO_SIDE_EFFECTS
20602 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20603 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20604 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20605 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20606 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20607 NetBSD news1500 news1700 news1800 news1900 news3700
20608 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20609 ns32016 ns32332 ns32k nsc32000
20610 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20611 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20612 pc532 pdp11 PGC PIC plexus PORTAR posix
20613 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20614 POSIX_C_SOURCE POSIX_SOURCE POWER
20615 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20616 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20617 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20618 sony sony_news sonyrisc sparc sparclite spectrum
20619 stardent stdc STDC_EXT stratos sun sun3 sun386
20620 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20621 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20622 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20623 sysV68 sysV88 Tek4132 Tek4300 titan
20624 TM3200 TM5400 TM5600
20625 tower tower32 tower32_200 tower32_600 tower32_700
20626 tower32_800 tower32_850 tss
20627 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20628 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20629 unix UNIX95 UNIX99 unixpc unos
20630 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20631 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20632 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20633 USGr4 USGr4_2
20634 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20635 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20636 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20637 z8000
20638 EOSH
20639 # Maybe put other stuff here too.
20640 cat <<EOSH >>Cppsym.know
20641 $osname
20642 EOSH
20643 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20644 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20645 $cat Cppsym.know > Cppsym.c
20646 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20647 $rm -f Cppsym.a Cppsym.b Cppsym.c
20648 cat <<EOSH > Cppsym
20649 $startsh
20650 if $test \$# -gt 0; then
20651     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20652     if $test -s Cppsym.got; then
20653         $rm -f Cppsym.got
20654         exit 0
20655     fi
20656     $rm -f Cppsym.got
20657     exit 1
20658 else
20659     $tr " " "$trnl" | ./Cppsym.try
20660     exit 0
20661 fi
20662 EOSH
20663 chmod +x Cppsym
20664 $eunicefix Cppsym
20665 cat <<EOSH > Cppsym.try
20666 $startsh
20667 cat <<'EOCP' > try.c
20668 #include <stdio.h>
20669 #if cpp_stuff == 1
20670 #define STRINGIFY(a)    "a"
20671 #endif
20672 #if cpp_stuff == 42
20673 #define StGiFy(a)  #a
20674 #define STRINGIFY(a)    StGiFy(a)
20675 #endif
20676 #if $cpp_stuff != 1 && $cpp_stuff != 42
20677 #   include "Bletch: How does this C preprocessor stringify macros?"
20678 #endif
20679 int main() {
20680 EOCP
20681 $awk \\
20682 EOSH
20683 cat <<'EOSH' >> Cppsym.try
20684 'length($1) > 0 {
20685     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20686     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20687     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20688     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20689 }'       >> try.c
20690 echo 'return 0;}' >> try.c
20691 EOSH
20692 cat <<EOSH >> Cppsym.try
20693 ccflags="$ccflags"
20694 case "$osname-$gccversion" in
20695 irix-) ccflags="\$ccflags -woff 1178" ;;
20696 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20697 esac
20698 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20699 EOSH
20700 chmod +x Cppsym.try
20701 $eunicefix Cppsym.try
20702 ./Cppsym < Cppsym.know > Cppsym.true
20703 : Add in any linux cpp "predefined macros":
20704 case "$osname::$gccversion" in
20705   *linux*::*.*)
20706     tHdrH=_tmpHdr
20707     rm -f $tHdrH'.h' $tHdrH
20708     touch $tHdrH'.h'
20709     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20710        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20711        if [ -s $tHdrH'_cppsym.real' ]; then
20712           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20713        fi
20714     fi
20715     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20716   ;;
20717 esac
20718 : now check the C compiler for additional symbols
20719 postprocess_cc_v=''
20720 case "$osname" in
20721 aix) postprocess_cc_v="|$tr , ' '" ;;
20722 esac
20723 $cat >ccsym <<EOS
20724 $startsh
20725 $cat >tmp.c <<EOF
20726 extern int foo;
20727 EOF
20728 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20729 do
20730         case "\$i" in
20731         -D*) echo "\$i" | $sed 's/^-D//';;
20732         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20733         esac
20734 done
20735 $rm -f try.c
20736 EOS
20737 postprocess_cc_v=''
20738 chmod +x ccsym
20739 $eunicefix ccsym
20740 ./ccsym > ccsym1.raw
20741 if $test -s ccsym1.raw; then
20742        $sort ccsym1.raw | $uniq >ccsym.raw
20743 else
20744        mv ccsym1.raw ccsym.raw
20745 fi
20746
20747 $awk '/\=/ { print $0; next }
20748         { print $0"=1" }' ccsym.raw >ccsym.list
20749 $comm -13 Cppsym.true ccsym.list >ccsym.own
20750 $comm -12 Cppsym.true ccsym.list >ccsym.com
20751 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20752 also=''
20753 if $test -z ccsym.raw; then
20754         echo "Your C compiler doesn't seem to define any symbols!" >&4
20755         echo " "
20756         echo "However, your C preprocessor defines the following symbols:"
20757         $cat Cppsym.true
20758         ccsymbols=''
20759         cppsymbols=`$cat Cppsym.true`
20760         cppsymbols=`echo $cppsymbols`
20761         cppccsymbols="$cppsymbols"
20762 else
20763         if $test -s ccsym.com; then
20764                 echo "Your C compiler and pre-processor define these symbols:"
20765                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20766                 also='also '
20767                 symbols='ones'
20768                 cppccsymbols=`$cat ccsym.com`
20769                 cppccsymbols=`echo $cppccsymbols`
20770                 $test "$silent" || sleep 1
20771         fi
20772         if $test -s ccsym.cpp; then
20773                 $test "$also" && echo " "
20774                 echo "Your C pre-processor ${also}defines the following symbols:"
20775                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20776                 also='further '
20777                 cppsymbols=`$cat ccsym.cpp`
20778                 cppsymbols=`echo $cppsymbols`
20779                 $test "$silent" || sleep 1
20780         fi
20781         if $test -s ccsym.own; then
20782                 $test "$also" && echo " "
20783                 echo "Your C compiler ${also}defines the following cpp symbols:"
20784                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20785                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20786                 ccsymbols=`$cat ccsym.own`
20787                 ccsymbols=`echo $ccsymbols`
20788                 $test "$silent" || sleep 1
20789         fi
20790 fi
20791
20792 : see if this is a termio system
20793 val="$undef"
20794 val2="$undef"
20795 val3="$undef"
20796 if $test `./findhdr termios.h`; then
20797         set tcsetattr i_termios
20798         eval $inlibc
20799         val3="$i_termios"
20800 fi
20801 echo " "
20802 case "$val3" in
20803 "$define") echo "You have POSIX termios.h... good!" >&4;;
20804 *) if ./Cppsym pyr; then
20805                 case "`/bin/universe`" in
20806                 ucb) if $test `./findhdr sgtty.h`; then
20807                                 val2="$define"
20808                                 echo "<sgtty.h> found." >&4
20809                         else
20810                                 echo "System is pyramid with BSD universe."
20811                                 echo "<sgtty.h> not found--you could have problems." >&4
20812                         fi;;
20813                 *) if $test `./findhdr termio.h`; then
20814                                 val="$define"
20815                                 echo "<termio.h> found." >&4
20816                         else
20817                                 echo "System is pyramid with USG universe."
20818                                 echo "<termio.h> not found--you could have problems." >&4
20819                         fi;;
20820                 esac
20821         elif ./usg; then
20822                 if $test `./findhdr termio.h`; then
20823                         echo "<termio.h> found." >&4
20824                         val="$define"
20825                 elif $test `./findhdr sgtty.h`; then
20826                         echo "<sgtty.h> found." >&4
20827                         val2="$define"
20828                 else
20829 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20830                 fi
20831         else
20832                 if $test `./findhdr sgtty.h`; then
20833                         echo "<sgtty.h> found." >&4
20834                         val2="$define"
20835                 elif $test `./findhdr termio.h`; then
20836                         echo "<termio.h> found." >&4
20837                         val="$define"
20838                 else
20839 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20840                 fi
20841         fi;;
20842 esac
20843 set i_termio; eval $setvar
20844 val=$val2; set i_sgtty; eval $setvar
20845 val=$val3; set i_termios; eval $setvar
20846
20847 : see if stddef is available
20848 set stddef.h i_stddef
20849 eval $inhdr
20850
20851 : see if this is a sunmath.h system
20852 set sunmath.h i_sunmath
20853 eval $inhdr
20854
20855 : see if sys/access.h is available
20856 set sys/access.h i_sysaccess
20857 eval $inhdr
20858
20859 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20860 set sys/filio.h i_sysfilio
20861 eval $inhdr
20862 echo " "
20863 if $test `./findhdr sys/ioctl.h`; then
20864         val="$define"
20865         echo '<sys/ioctl.h> found.' >&4
20866 else
20867         val="$undef"
20868         if $test $i_sysfilio = "$define"; then
20869             echo '<sys/ioctl.h> NOT found.' >&4
20870         else
20871                 $test $i_sgtty = "$define" && xxx="sgtty.h"
20872                 $test $i_termio = "$define" && xxx="termio.h"
20873                 $test $i_termios = "$define" && xxx="termios.h"
20874 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20875         fi
20876 fi
20877 set i_sysioctl
20878 eval $setvar
20879
20880 : see if socket ioctl defs are in sys/sockio.h
20881 echo " "
20882 xxx=`./findhdr sys/sockio.h`
20883 if $test "$xxx"; then
20884         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20885                 val="$define"
20886                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20887         else
20888                 val="$undef"
20889                 echo "No socket ioctls found in <sys/sockio.h>." >&4
20890         fi
20891 else
20892         val="$undef"
20893         $cat <<EOM
20894 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20895 EOM
20896 fi
20897 set i_syssockio
20898 eval $setvar
20899
20900
20901 : see if this is a syslog.h system
20902 set syslog.h i_syslog
20903 eval $inhdr
20904
20905
20906 : see if this is a sys/mode.h system
20907 set sys/mode.h i_sysmode
20908 eval $inhdr
20909
20910 : see if sys/resource.h has to be included
20911 set sys/resource.h i_sysresrc
20912 eval $inhdr
20913
20914 : see if sys/security.h is available
20915 set sys/security.h i_syssecrt
20916 eval $inhdr
20917
20918 : see if this is a sys/statvfs.h system
20919 set sys/statvfs.h i_sysstatvfs
20920 eval $inhdr
20921
20922 : see if this is a sys/un.h system
20923 set sys/un.h i_sysun
20924 eval $inhdr
20925
20926
20927 : see if this is a sys/utsname.h system
20928 set sys/utsname.h i_sysutsname
20929 eval $inhdr
20930
20931 : see if this is a syswait system
20932 set sys/wait.h i_syswait
20933 eval $inhdr
20934
20935 : see if this is a ustat.h system
20936 set ustat.h i_ustat
20937 eval $inhdr
20938
20939 : see if this is an utime system
20940 set utime.h i_utime
20941 eval $inhdr
20942
20943 : see if this is a values.h system
20944 set values.h i_values
20945 eval $inhdr
20946
20947 : see if this is a vfork system
20948 case "$d_vfork" in
20949 "$define")
20950         set vfork.h i_vfork
20951         eval $inhdr
20952         ;;
20953 *)
20954         i_vfork="$undef"
20955         ;;
20956 esac
20957
20958 echo " "
20959 echo "Looking for extensions..." >&4
20960 : If we are using the old config.sh, known_extensions may contain
20961 : old or inaccurate or duplicate values.
20962 known_extensions=''
20963 nonxs_extensions=''
20964 : We do not use find because it might not be available.
20965 : We do not just use MANIFEST because the user may have dropped
20966 : some additional extensions into the source tree and expect them
20967 : to be built.
20968
20969 : Function to recursively find available extensions, ignoring DynaLoader
20970 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20971 find_extensions='
20972     for xxx in *; do
20973        case "$xxx" in
20974            DynaLoader|dynaload) ;;
20975            *)
20976            if $test -f $xxx/$xxx.xs; then
20977                known_extensions="$known_extensions $1$xxx";
20978            elif $test -f $xxx/Makefile.PL; then
20979                nonxs_extensions="$nonxs_extensions $1$xxx";
20980            else
20981                if $test -d $xxx -a $# -lt 10; then
20982                    set $1$xxx/ $*;
20983                    cd "$xxx";
20984                    eval $find_extensions;
20985                    cd ..;
20986                    shift;
20987                fi;
20988            fi
20989            ;;
20990        esac;
20991     done'
20992 tdir=`pwd`
20993 cd "$rsrc/ext"
20994 set X
20995 shift
20996 eval $find_extensions
20997 # Special case:  Add in threads/shared since it is not picked up by the
20998 # recursive find above (and adding in general recursive finding breaks
20999 # SDBM_File/sdbm).  A.D.  10/25/2001.
21000 known_extensions="$known_extensions threads/shared"
21001 set X $nonxs_extensions
21002 shift
21003 nonxs_extensions="$*"
21004 set X $known_extensions
21005 shift
21006 known_extensions="$*"
21007 cd "$tdir"
21008
21009 : Now see which are supported on this system.
21010 avail_ext=''
21011 for xxx in $known_extensions ; do
21012         case "$xxx" in
21013         DB_File|db_file)
21014                 case "$i_db" in
21015                 $define) avail_ext="$avail_ext $xxx" ;;
21016                 esac
21017                 ;;
21018         GDBM_File|gdbm_fil)
21019                 case "$i_gdbm" in 
21020                 $define) avail_ext="$avail_ext $xxx" ;;
21021                 esac
21022                 ;;
21023         I18N/Langinfo|i18n_lan)
21024                 case "$i_langinfo$d_nl_langinfo" in 
21025                 $define$define) avail_ext="$avail_ext $xxx" ;;
21026                 esac
21027                 ;;
21028         NDBM_File|ndbm_fil)
21029                 case "$i_ndbm" in
21030                 $define)
21031                     case "$osname-$use64bitint" in
21032                     hpux-define)
21033                         case "$libs" in
21034                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21035                         esac
21036                         ;;
21037                     *) avail_ext="$avail_ext $xxx" ;;
21038                     esac
21039                     ;;
21040                 esac
21041                 ;;
21042         ODBM_File|odbm_fil) 
21043                 case "${i_dbm}${i_rpcsvcdbm}" in
21044                 *"${define}"*)
21045                     case "$osname-$use64bitint" in
21046                     hpux-define)
21047                         case "$libs" in
21048                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21049                         esac
21050                         ;;
21051                     *) avail_ext="$avail_ext $xxx" ;;
21052                     esac
21053                     ;;
21054                 esac
21055                 ;;
21056         POSIX|posix)
21057                 case "$useposix" in
21058                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21059                 esac
21060                 ;;
21061         Opcode|opcode)
21062                 case "$useopcode" in
21063                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21064                 esac
21065                 ;;
21066         Socket|socket)
21067                 case "$d_socket" in 
21068                 true|$define|y)
21069                     case "$osname" in
21070                     beos) ;; # not unless BONE
21071                     *) avail_ext="$avail_ext $xxx" ;;
21072                     esac
21073                     ;;
21074                 esac
21075                 ;;
21076         Sys/Syslog|sys/syslog)
21077                 : XXX syslog requires socket
21078                 case "$d_socket" in 
21079                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21080                 esac
21081                 ;;
21082         Thread|thread)
21083                 case "$usethreads" in
21084                 true|$define|y)
21085                         case "$useithreads" in
21086                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
21087                         esac
21088                 esac
21089                 ;;
21090         XS/APItest|xs/apitest)
21091                 # This is just for testing.  Skip it unless we have dynamic loading.
21092
21093                 case "$usedl" in
21094                 $define) avail_ext="$avail_ext $xxx" ;;
21095                 esac
21096                 ;;
21097         XS/Typemap|xs/typemap)
21098                 # This is just for testing.  Skip it unless we have dynamic loading.
21099                 case "$usedl" in
21100                 $define) avail_ext="$avail_ext $xxx" ;;
21101                 esac
21102                 ;;
21103         threads|threads/shared)
21104                 # threads and threads::shared are special cases.
21105                 # To stop people from asking "Perl 5.8.0 was supposed
21106                 # to have this new fancy threads implementation but my
21107                 # perl doesn't have it" and from people trying to
21108                 # (re)install the threads module using CPAN.pm and
21109                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21110                 # the threads.pm and threads/shared.pm will always be
21111                 # there, croaking informatively ("you need to rebuild
21112                 # all of Perl with threads, sorry") when threads haven't
21113                 # been compiled in.
21114                 # --jhi
21115                 avail_ext="$avail_ext $xxx"
21116                 ;;
21117         IPC/SysV|ipc/sysv)
21118                 : XXX Do we need a useipcsysv variable here
21119                 case "${d_msg}${d_sem}${d_shm}" in 
21120                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21121                 esac
21122                 ;;
21123         *)      avail_ext="$avail_ext $xxx"
21124                 ;;
21125         esac
21126 done
21127
21128 set X $avail_ext
21129 shift
21130 avail_ext="$*"
21131
21132 case "$onlyextensions" in
21133 '') ;;
21134 *)  keepextensions=''
21135     echo "You have requested that only certains extensions be included..." >&4
21136     for i in $onlyextensions; do
21137         case " $avail_ext " in
21138         *" $i "*)
21139             echo "Keeping extension $i."
21140             keepextensions="$keepextensions $i"
21141             ;;
21142         *) echo "Ignoring extension $i." ;;
21143         esac
21144     done
21145     avail_ext="$keepextensions"
21146     ;;
21147 esac
21148
21149 case "$noextensions" in
21150 '') ;;
21151 *)  keepextensions=''
21152     echo "You have requested that certain extensions be ignored..." >&4
21153     for i in $avail_ext; do
21154         case " $noextensions " in
21155         *" $i "*) echo "Ignoring extension $i." ;;
21156         *) echo "Keeping extension $i.";
21157            keepextensions="$keepextensions $i"
21158            ;;
21159         esac
21160     done
21161     avail_ext="$keepextensions"
21162     ;;
21163 esac
21164
21165 : Now see which nonxs extensions are supported on this system.
21166 : For now assume all are.
21167 nonxs_ext=''
21168 for xxx in $nonxs_extensions ; do
21169         case "$xxx" in
21170         *)      nonxs_ext="$nonxs_ext $xxx"
21171                 ;;
21172         esac
21173 done
21174
21175 set X $nonxs_ext
21176 shift
21177 nonxs_ext="$*"
21178
21179 case $usedl in
21180 $define)
21181         $cat <<EOM
21182 A number of extensions are supplied with $package.  You may choose to
21183 compile these extensions for dynamic loading (the default), compile
21184 them into the $package executable (static loading), or not include
21185 them at all.  Answer "none" to include no extensions.
21186 Note that DynaLoader is always built and need not be mentioned here.
21187
21188 EOM
21189         case "$dynamic_ext" in
21190         '')
21191                 : Exclude those listed in static_ext
21192                 dflt=''
21193                 for xxx in $avail_ext; do
21194                         case " $static_ext " in
21195                         *" $xxx "*) ;;
21196                         *) dflt="$dflt $xxx" ;;
21197                         esac
21198                 done
21199                 set X $dflt
21200                 shift
21201                 dflt="$*"
21202                 ;;
21203         *)      dflt="$dynamic_ext"
21204                 # Perhaps we are reusing an old out-of-date config.sh.
21205                 case "$hint" in
21206                 previous)
21207                         if test X"$dynamic_ext" != X"$avail_ext"; then
21208                                 $cat <<EOM
21209 NOTICE:  Your previous config.sh list may be incorrect. 
21210 The extensions now available to you are 
21211         ${avail_ext}
21212 but the default list from your previous config.sh is
21213         ${dynamic_ext} 
21214
21215 EOM
21216                         fi
21217                         ;;
21218                 esac
21219                 ;;
21220         esac
21221         case "$dflt" in
21222         '')     dflt=none;;
21223         esac
21224         rp="What extensions do you wish to load dynamically?"
21225         . ./myread
21226         case "$ans" in
21227         none) dynamic_ext=' ' ;;
21228         *) dynamic_ext="$ans" ;;
21229         esac
21230
21231         case "$static_ext" in
21232         '')
21233                 : Exclude those already listed in dynamic linking
21234                 dflt=''
21235                 for xxx in $avail_ext; do
21236                         case " $dynamic_ext " in
21237                         *" $xxx "*) ;;
21238                         *) dflt="$dflt $xxx" ;;
21239                         esac
21240                 done
21241                 set X $dflt
21242                 shift
21243                 dflt="$*"
21244                 ;;
21245         *)  dflt="$static_ext" 
21246                 ;;
21247         esac
21248
21249         case "$dflt" in
21250         '')     dflt=none;;
21251         esac
21252         rp="What extensions do you wish to load statically?"
21253         . ./myread
21254         case "$ans" in
21255         none) static_ext=' ' ;;
21256         *) static_ext="$ans" ;;
21257         esac
21258         ;;
21259 *)
21260         $cat <<EOM
21261 A number of extensions are supplied with $package.  Answer "none" 
21262 to include no extensions. 
21263 Note that DynaLoader is always built and need not be mentioned here.
21264
21265 EOM
21266         case "$static_ext" in
21267         '') dflt="$avail_ext" ;;
21268         *)      dflt="$static_ext"
21269                 # Perhaps we are reusing an old out-of-date config.sh.
21270                 case "$hint" in
21271                 previous)
21272                         if test X"$static_ext" != X"$avail_ext"; then
21273                                 $cat <<EOM
21274 NOTICE:  Your previous config.sh list may be incorrect. 
21275 The extensions now available to you are 
21276         ${avail_ext}
21277 but the default list from your previous config.sh is
21278         ${static_ext} 
21279
21280 EOM
21281                         fi
21282                         ;;
21283                 esac
21284                 ;;
21285         esac
21286         : Exclude those that are not xs extensions
21287         case "$dflt" in
21288         '')     dflt=none;;
21289         esac
21290         rp="What extensions do you wish to include?"
21291         . ./myread
21292         case "$ans" in
21293         none) static_ext=' ' ;;
21294         *) static_ext="$ans" ;;
21295         esac
21296         ;;
21297 esac
21298 #        
21299 # Encode is a special case.  If we are building Encode as a static
21300 # extension, we need to explicitly list its subextensions as well.
21301 # For other nested extensions, this is handled automatically by
21302 # the appropriate Makefile.PL.
21303 case " $static_ext " in
21304         *" Encode "*) # Add the subextensions of Encode
21305         cd "$rsrc/ext"
21306         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21307                 static_ext="$static_ext Encode/$xxx"
21308         done
21309         cd "$tdir"
21310         ;;
21311 esac
21312
21313 set X $dynamic_ext $static_ext $nonxs_ext
21314 shift
21315 extensions="$*"
21316
21317 # Sanity check:  We require an extension suitable for use with
21318 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21319 # should show up as failures in the test suite, but it's helpful to
21320 # catch them now.) The 'extensions' list is normally sorted
21321 # alphabetically, so we need to accept either
21322 #    DB_File ... Fcntl ... IO  ....
21323 # or something like
21324 #    Fcntl ... NDBM_File ... IO  ....
21325 case " $extensions"  in
21326 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21327 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21328 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21329 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21330    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21331    ;;
21332 esac
21333
21334 : Remove libraries needed only for extensions
21335 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21336 : The exception is SunOS 4.x, which needs them.
21337 case "${osname}X${osvers}" in
21338 sunos*X4*)
21339     perllibs="$libs"
21340     ;;
21341 *) case "$usedl" in
21342     $define|true|[yY]*)
21343             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21344             shift
21345             perllibs="$*"
21346             ;;
21347     *)  perllibs="$libs"
21348             ;;
21349     esac
21350     ;;
21351 esac
21352
21353 : Remove build directory name from cppstdin so it can be used from
21354 : either the present location or the final installed location.
21355 echo " "
21356 : Get out of the UU directory to get correct path name.
21357 cd ..
21358 case "$cppstdin" in
21359 `pwd`/cppstdin)
21360         echo "Stripping down cppstdin path name"
21361         cppstdin=cppstdin
21362         ;;
21363 esac
21364 cd UU
21365
21366 : end of configuration questions
21367 echo " "
21368 echo "End of configuration questions."
21369 echo " "
21370
21371 : back to where it started
21372 if test -d ../UU; then
21373         cd ..
21374 fi
21375
21376 : configuration may be patched via a 'config.arch' file
21377 if $test -f config.arch; then
21378         echo "I see a config.arch file, loading it."
21379         . ./config.arch
21380 fi
21381
21382 : configuration may be patched via a 'config.over' file
21383 if $test -f config.over; then
21384         echo " "
21385         dflt=y
21386         rp='I see a config.over file.  Do you wish to load it?'
21387         . UU/myread
21388         case "$ans" in
21389         n*) echo "OK, I'll ignore it.";;
21390         *)      . ./config.over
21391                 echo "Configuration override changes have been loaded."
21392                 ;;
21393         esac
21394 fi
21395
21396 : in case they want portability, strip down executable paths
21397 case "$d_portable" in
21398 "$define")
21399         echo " "
21400         echo "Stripping down executable paths..." >&4
21401         for file in $loclist $trylist; do
21402                 eval temp=\$$file
21403                 eval $file=`basename $temp`
21404         done
21405         ;;
21406 esac
21407
21408 : create config.sh file
21409 echo " "
21410 echo "Creating config.sh..." >&4
21411 $spitshell <<EOT >config.sh
21412 $startsh
21413 #
21414 # This file was produced by running the Configure script. It holds all the
21415 # definitions figured out by Configure. Should you modify one of these values,
21416 # do not forget to propagate your changes by running "Configure -der". You may
21417 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21418 #
21419
21420 # Package name      : $package
21421 # Source directory  : $src
21422 # Configuration time: $cf_time
21423 # Configured by     : $cf_by
21424 # Target system     : $myuname
21425
21426 Author='$Author'
21427 Date='$Date'
21428 Header='$Header'
21429 Id='$Id'
21430 Locker='$Locker'
21431 Log='$Log'
21432 Mcc='$Mcc'
21433 RCSfile='$RCSfile'
21434 Revision='$Revision'
21435 Source='$Source'
21436 State='$State'
21437 _a='$_a'
21438 _exe='$_exe'
21439 _o='$_o'
21440 afs='$afs'
21441 afsroot='$afsroot'
21442 alignbytes='$alignbytes'
21443 ansi2knr='$ansi2knr'
21444 aphostname='$aphostname'
21445 api_revision='$api_revision'
21446 api_subversion='$api_subversion'
21447 api_version='$api_version'
21448 api_versionstring='$api_versionstring'
21449 ar='$ar'
21450 archlib='$archlib'
21451 archlibexp='$archlibexp'
21452 archname64='$archname64'
21453 archname='$archname'
21454 archobjs='$archobjs'
21455 asctime_r_proto='$asctime_r_proto'
21456 awk='$awk'
21457 baserev='$baserev'
21458 bash='$bash'
21459 bin='$bin'
21460 binexp='$binexp'
21461 bison='$bison'
21462 byacc='$byacc'
21463 byteorder='$byteorder'
21464 c='$c'
21465 castflags='$castflags'
21466 cat='$cat'
21467 cc='$cc'
21468 cccdlflags='$cccdlflags'
21469 ccdlflags='$ccdlflags'
21470 ccflags='$ccflags'
21471 ccflags_uselargefiles='$ccflags_uselargefiles'
21472 ccname='$ccname'
21473 ccsymbols='$ccsymbols'
21474 ccversion='$ccversion'
21475 cf_by='$cf_by'
21476 cf_email='$cf_email'
21477 cf_time='$cf_time'
21478 charsize='$charsize'
21479 chgrp='$chgrp'
21480 chmod='$chmod'
21481 chown='$chown'
21482 clocktype='$clocktype'
21483 comm='$comm'
21484 compress='$compress'
21485 contains='$contains'
21486 cp='$cp'
21487 cpio='$cpio'
21488 cpp='$cpp'
21489 cpp_stuff='$cpp_stuff'
21490 cppccsymbols='$cppccsymbols'
21491 cppflags='$cppflags'
21492 cpplast='$cpplast'
21493 cppminus='$cppminus'
21494 cpprun='$cpprun'
21495 cppstdin='$cppstdin'
21496 cppsymbols='$cppsymbols'
21497 crypt_r_proto='$crypt_r_proto'
21498 cryptlib='$cryptlib'
21499 csh='$csh'
21500 ctermid_r_proto='$ctermid_r_proto'
21501 ctime_r_proto='$ctime_r_proto'
21502 d_Gconvert='$d_Gconvert'
21503 d_PRIEUldbl='$d_PRIEUldbl'
21504 d_PRIFUldbl='$d_PRIFUldbl'
21505 d_PRIGUldbl='$d_PRIGUldbl'
21506 d_PRIXU64='$d_PRIXU64'
21507 d_PRId64='$d_PRId64'
21508 d_PRIeldbl='$d_PRIeldbl'
21509 d_PRIfldbl='$d_PRIfldbl'
21510 d_PRIgldbl='$d_PRIgldbl'
21511 d_PRIi64='$d_PRIi64'
21512 d_PRIo64='$d_PRIo64'
21513 d_PRIu64='$d_PRIu64'
21514 d_PRIx64='$d_PRIx64'
21515 d_SCNfldbl='$d_SCNfldbl'
21516 d__fwalk='$d__fwalk'
21517 d_access='$d_access'
21518 d_accessx='$d_accessx'
21519 d_aintl='$d_aintl'
21520 d_alarm='$d_alarm'
21521 d_archlib='$d_archlib'
21522 d_asctime_r='$d_asctime_r'
21523 d_atolf='$d_atolf'
21524 d_atoll='$d_atoll'
21525 d_attribute_format='$d_attribute_format'
21526 d_attribute_malloc='$d_attribute_malloc'
21527 d_attribute_nonnull='$d_attribute_nonnull'
21528 d_attribute_noreturn='$d_attribute_noreturn'
21529 d_attribute_pure='$d_attribute_pure'
21530 d_attribute_unused='$d_attribute_unused'
21531 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21532 d_bcmp='$d_bcmp'
21533 d_bcopy='$d_bcopy'
21534 d_bsd='$d_bsd'
21535 d_bsdgetpgrp='$d_bsdgetpgrp'
21536 d_bsdsetpgrp='$d_bsdsetpgrp'
21537 d_builtin_choose_expr='$d_builtin_choose_expr'
21538 d_builtin_expect='$d_builtin_expect'
21539 d_bzero='$d_bzero'
21540 d_c99_variadic_macros='$d_c99_variadic_macros'
21541 d_casti32='$d_casti32'
21542 d_castneg='$d_castneg'
21543 d_charvspr='$d_charvspr'
21544 d_chown='$d_chown'
21545 d_chroot='$d_chroot'
21546 d_chsize='$d_chsize'
21547 d_class='$d_class'
21548 d_clearenv='$d_clearenv'
21549 d_closedir='$d_closedir'
21550 d_cmsghdr_s='$d_cmsghdr_s'
21551 d_const='$d_const'
21552 d_copysignl='$d_copysignl'
21553 d_cplusplus='$d_cplusplus'
21554 d_crypt='$d_crypt'
21555 d_crypt_r='$d_crypt_r'
21556 d_csh='$d_csh'
21557 d_ctermid='$d_ctermid'
21558 d_ctermid_r='$d_ctermid_r'
21559 d_ctime_r='$d_ctime_r'
21560 d_cuserid='$d_cuserid'
21561 d_dbl_dig='$d_dbl_dig'
21562 d_dbminitproto='$d_dbminitproto'
21563 d_difftime='$d_difftime'
21564 d_dir_dd_fd='$d_dir_dd_fd'
21565 d_dirfd='$d_dirfd'
21566 d_dirnamlen='$d_dirnamlen'
21567 d_dlerror='$d_dlerror'
21568 d_dlopen='$d_dlopen'
21569 d_dlsymun='$d_dlsymun'
21570 d_dosuid='$d_dosuid'
21571 d_drand48_r='$d_drand48_r'
21572 d_drand48proto='$d_drand48proto'
21573 d_dup2='$d_dup2'
21574 d_eaccess='$d_eaccess'
21575 d_endgrent='$d_endgrent'
21576 d_endgrent_r='$d_endgrent_r'
21577 d_endhent='$d_endhent'
21578 d_endhostent_r='$d_endhostent_r'
21579 d_endnent='$d_endnent'
21580 d_endnetent_r='$d_endnetent_r'
21581 d_endpent='$d_endpent'
21582 d_endprotoent_r='$d_endprotoent_r'
21583 d_endpwent='$d_endpwent'
21584 d_endpwent_r='$d_endpwent_r'
21585 d_endsent='$d_endsent'
21586 d_endservent_r='$d_endservent_r'
21587 d_eofnblk='$d_eofnblk'
21588 d_eunice='$d_eunice'
21589 d_faststdio='$d_faststdio'
21590 d_fchdir='$d_fchdir'
21591 d_fchmod='$d_fchmod'
21592 d_fchown='$d_fchown'
21593 d_fcntl='$d_fcntl'
21594 d_fcntl_can_lock='$d_fcntl_can_lock'
21595 d_fd_macros='$d_fd_macros'
21596 d_fd_set='$d_fd_set'
21597 d_fds_bits='$d_fds_bits'
21598 d_fgetpos='$d_fgetpos'
21599 d_finite='$d_finite'
21600 d_finitel='$d_finitel'
21601 d_flexfnam='$d_flexfnam'
21602 d_flock='$d_flock'
21603 d_flockproto='$d_flockproto'
21604 d_fork='$d_fork'
21605 d_fp_class='$d_fp_class'
21606 d_fpathconf='$d_fpathconf'
21607 d_fpclass='$d_fpclass'
21608 d_fpclassify='$d_fpclassify'
21609 d_fpclassl='$d_fpclassl'
21610 d_fpos64_t='$d_fpos64_t'
21611 d_frexpl='$d_frexpl'
21612 d_fs_data_s='$d_fs_data_s'
21613 d_fseeko='$d_fseeko'
21614 d_fsetpos='$d_fsetpos'
21615 d_fstatfs='$d_fstatfs'
21616 d_fstatvfs='$d_fstatvfs'
21617 d_fsync='$d_fsync'
21618 d_ftello='$d_ftello'
21619 d_ftime='$d_ftime'
21620 d_futimes='$d_futimes'
21621 d_getcwd='$d_getcwd'
21622 d_getespwnam='$d_getespwnam'
21623 d_getfsstat='$d_getfsstat'
21624 d_getgrent='$d_getgrent'
21625 d_getgrent_r='$d_getgrent_r'
21626 d_getgrgid_r='$d_getgrgid_r'
21627 d_getgrnam_r='$d_getgrnam_r'
21628 d_getgrps='$d_getgrps'
21629 d_gethbyaddr='$d_gethbyaddr'
21630 d_gethbyname='$d_gethbyname'
21631 d_gethent='$d_gethent'
21632 d_gethname='$d_gethname'
21633 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21634 d_gethostbyname_r='$d_gethostbyname_r'
21635 d_gethostent_r='$d_gethostent_r'
21636 d_gethostprotos='$d_gethostprotos'
21637 d_getitimer='$d_getitimer'
21638 d_getlogin='$d_getlogin'
21639 d_getlogin_r='$d_getlogin_r'
21640 d_getmnt='$d_getmnt'
21641 d_getmntent='$d_getmntent'
21642 d_getnbyaddr='$d_getnbyaddr'
21643 d_getnbyname='$d_getnbyname'
21644 d_getnent='$d_getnent'
21645 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21646 d_getnetbyname_r='$d_getnetbyname_r'
21647 d_getnetent_r='$d_getnetent_r'
21648 d_getnetprotos='$d_getnetprotos'
21649 d_getpagsz='$d_getpagsz'
21650 d_getpbyname='$d_getpbyname'
21651 d_getpbynumber='$d_getpbynumber'
21652 d_getpent='$d_getpent'
21653 d_getpgid='$d_getpgid'
21654 d_getpgrp2='$d_getpgrp2'
21655 d_getpgrp='$d_getpgrp'
21656 d_getppid='$d_getppid'
21657 d_getprior='$d_getprior'
21658 d_getprotobyname_r='$d_getprotobyname_r'
21659 d_getprotobynumber_r='$d_getprotobynumber_r'
21660 d_getprotoent_r='$d_getprotoent_r'
21661 d_getprotoprotos='$d_getprotoprotos'
21662 d_getprpwnam='$d_getprpwnam'
21663 d_getpwent='$d_getpwent'
21664 d_getpwent_r='$d_getpwent_r'
21665 d_getpwnam_r='$d_getpwnam_r'
21666 d_getpwuid_r='$d_getpwuid_r'
21667 d_getsbyname='$d_getsbyname'
21668 d_getsbyport='$d_getsbyport'
21669 d_getsent='$d_getsent'
21670 d_getservbyname_r='$d_getservbyname_r'
21671 d_getservbyport_r='$d_getservbyport_r'
21672 d_getservent_r='$d_getservent_r'
21673 d_getservprotos='$d_getservprotos'
21674 d_getspnam='$d_getspnam'
21675 d_getspnam_r='$d_getspnam_r'
21676 d_gettimeod='$d_gettimeod'
21677 d_gmtime_r='$d_gmtime_r'
21678 d_gnulibc='$d_gnulibc'
21679 d_grpasswd='$d_grpasswd'
21680 d_hasmntopt='$d_hasmntopt'
21681 d_htonl='$d_htonl'
21682 d_ilogbl='$d_ilogbl'
21683 d_inc_version_list='$d_inc_version_list'
21684 d_index='$d_index'
21685 d_inetaton='$d_inetaton'
21686 d_int64_t='$d_int64_t'
21687 d_isascii='$d_isascii'
21688 d_isfinite='$d_isfinite'
21689 d_isinf='$d_isinf'
21690 d_isnan='$d_isnan'
21691 d_isnanl='$d_isnanl'
21692 d_killpg='$d_killpg'
21693 d_lchown='$d_lchown'
21694 d_ldbl_dig='$d_ldbl_dig'
21695 d_libm_lib_version='$d_libm_lib_version'
21696 d_link='$d_link'
21697 d_localtime_r='$d_localtime_r'
21698 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21699 d_locconv='$d_locconv'
21700 d_lockf='$d_lockf'
21701 d_longdbl='$d_longdbl'
21702 d_longlong='$d_longlong'
21703 d_lseekproto='$d_lseekproto'
21704 d_lstat='$d_lstat'
21705 d_madvise='$d_madvise'
21706 d_malloc_good_size='$d_malloc_good_size'
21707 d_malloc_size='$d_malloc_size'
21708 d_mblen='$d_mblen'
21709 d_mbstowcs='$d_mbstowcs'
21710 d_mbtowc='$d_mbtowc'
21711 d_memchr='$d_memchr'
21712 d_memcmp='$d_memcmp'
21713 d_memcpy='$d_memcpy'
21714 d_memmove='$d_memmove'
21715 d_memset='$d_memset'
21716 d_mkdir='$d_mkdir'
21717 d_mkdtemp='$d_mkdtemp'
21718 d_mkfifo='$d_mkfifo'
21719 d_mkstemp='$d_mkstemp'
21720 d_mkstemps='$d_mkstemps'
21721 d_mktime='$d_mktime'
21722 d_mmap='$d_mmap'
21723 d_modfl='$d_modfl'
21724 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21725 d_modflproto='$d_modflproto'
21726 d_mprotect='$d_mprotect'
21727 d_msg='$d_msg'
21728 d_msg_ctrunc='$d_msg_ctrunc'
21729 d_msg_dontroute='$d_msg_dontroute'
21730 d_msg_oob='$d_msg_oob'
21731 d_msg_peek='$d_msg_peek'
21732 d_msg_proxy='$d_msg_proxy'
21733 d_msgctl='$d_msgctl'
21734 d_msgget='$d_msgget'
21735 d_msghdr_s='$d_msghdr_s'
21736 d_msgrcv='$d_msgrcv'
21737 d_msgsnd='$d_msgsnd'
21738 d_msync='$d_msync'
21739 d_munmap='$d_munmap'
21740 d_mymalloc='$d_mymalloc'
21741 d_nice='$d_nice'
21742 d_nl_langinfo='$d_nl_langinfo'
21743 d_nv_preserves_uv='$d_nv_preserves_uv'
21744 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21745 d_off64_t='$d_off64_t'
21746 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21747 d_oldpthreads='$d_oldpthreads'
21748 d_oldsock='$d_oldsock'
21749 d_open3='$d_open3'
21750 d_pathconf='$d_pathconf'
21751 d_pause='$d_pause'
21752 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21753 d_phostname='$d_phostname'
21754 d_pipe='$d_pipe'
21755 d_poll='$d_poll'
21756 d_portable='$d_portable'
21757 d_printf_format_null='$d_printf_format_null'
21758 d_procselfexe='$d_procselfexe'
21759 d_pthread_atfork='$d_pthread_atfork'
21760 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21761 d_pthread_yield='$d_pthread_yield'
21762 d_pwage='$d_pwage'
21763 d_pwchange='$d_pwchange'
21764 d_pwclass='$d_pwclass'
21765 d_pwcomment='$d_pwcomment'
21766 d_pwexpire='$d_pwexpire'
21767 d_pwgecos='$d_pwgecos'
21768 d_pwpasswd='$d_pwpasswd'
21769 d_pwquota='$d_pwquota'
21770 d_qgcvt='$d_qgcvt'
21771 d_quad='$d_quad'
21772 d_random_r='$d_random_r'
21773 d_readdir64_r='$d_readdir64_r'
21774 d_readdir='$d_readdir'
21775 d_readdir_r='$d_readdir_r'
21776 d_readlink='$d_readlink'
21777 d_readv='$d_readv'
21778 d_recvmsg='$d_recvmsg'
21779 d_rename='$d_rename'
21780 d_rewinddir='$d_rewinddir'
21781 d_rmdir='$d_rmdir'
21782 d_safebcpy='$d_safebcpy'
21783 d_safemcpy='$d_safemcpy'
21784 d_sanemcmp='$d_sanemcmp'
21785 d_sbrkproto='$d_sbrkproto'
21786 d_scalbnl='$d_scalbnl'
21787 d_sched_yield='$d_sched_yield'
21788 d_scm_rights='$d_scm_rights'
21789 d_seekdir='$d_seekdir'
21790 d_select='$d_select'
21791 d_sem='$d_sem'
21792 d_semctl='$d_semctl'
21793 d_semctl_semid_ds='$d_semctl_semid_ds'
21794 d_semctl_semun='$d_semctl_semun'
21795 d_semget='$d_semget'
21796 d_semop='$d_semop'
21797 d_sendmsg='$d_sendmsg'
21798 d_setegid='$d_setegid'
21799 d_seteuid='$d_seteuid'
21800 d_setgrent='$d_setgrent'
21801 d_setgrent_r='$d_setgrent_r'
21802 d_setgrps='$d_setgrps'
21803 d_sethent='$d_sethent'
21804 d_sethostent_r='$d_sethostent_r'
21805 d_setitimer='$d_setitimer'
21806 d_setlinebuf='$d_setlinebuf'
21807 d_setlocale='$d_setlocale'
21808 d_setlocale_r='$d_setlocale_r'
21809 d_setnent='$d_setnent'
21810 d_setnetent_r='$d_setnetent_r'
21811 d_setpent='$d_setpent'
21812 d_setpgid='$d_setpgid'
21813 d_setpgrp2='$d_setpgrp2'
21814 d_setpgrp='$d_setpgrp'
21815 d_setprior='$d_setprior'
21816 d_setproctitle='$d_setproctitle'
21817 d_setprotoent_r='$d_setprotoent_r'
21818 d_setpwent='$d_setpwent'
21819 d_setpwent_r='$d_setpwent_r'
21820 d_setregid='$d_setregid'
21821 d_setresgid='$d_setresgid'
21822 d_setresuid='$d_setresuid'
21823 d_setreuid='$d_setreuid'
21824 d_setrgid='$d_setrgid'
21825 d_setruid='$d_setruid'
21826 d_setsent='$d_setsent'
21827 d_setservent_r='$d_setservent_r'
21828 d_setsid='$d_setsid'
21829 d_setvbuf='$d_setvbuf'
21830 d_sfio='$d_sfio'
21831 d_shm='$d_shm'
21832 d_shmat='$d_shmat'
21833 d_shmatprototype='$d_shmatprototype'
21834 d_shmctl='$d_shmctl'
21835 d_shmdt='$d_shmdt'
21836 d_shmget='$d_shmget'
21837 d_sigaction='$d_sigaction'
21838 d_sigprocmask='$d_sigprocmask'
21839 d_sigsetjmp='$d_sigsetjmp'
21840 d_sitearch='$d_sitearch'
21841 d_snprintf='$d_snprintf'
21842 d_sockatmark='$d_sockatmark'
21843 d_sockatmarkproto='$d_sockatmarkproto'
21844 d_socket='$d_socket'
21845 d_socklen_t='$d_socklen_t'
21846 d_sockpair='$d_sockpair'
21847 d_socks5_init='$d_socks5_init'
21848 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21849 d_sqrtl='$d_sqrtl'
21850 d_srand48_r='$d_srand48_r'
21851 d_srandom_r='$d_srandom_r'
21852 d_sresgproto='$d_sresgproto'
21853 d_sresuproto='$d_sresuproto'
21854 d_statblks='$d_statblks'
21855 d_statfs_f_flags='$d_statfs_f_flags'
21856 d_statfs_s='$d_statfs_s'
21857 d_statvfs='$d_statvfs'
21858 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21859 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21860 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21861 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21862 d_stdio_stream_array='$d_stdio_stream_array'
21863 d_stdiobase='$d_stdiobase'
21864 d_stdstdio='$d_stdstdio'
21865 d_strchr='$d_strchr'
21866 d_strcoll='$d_strcoll'
21867 d_strctcpy='$d_strctcpy'
21868 d_strerrm='$d_strerrm'
21869 d_strerror='$d_strerror'
21870 d_strerror_r='$d_strerror_r'
21871 d_strftime='$d_strftime'
21872 d_strlcat='$d_strlcat'
21873 d_strlcpy='$d_strlcpy'
21874 d_strtod='$d_strtod'
21875 d_strtol='$d_strtol'
21876 d_strtold='$d_strtold'
21877 d_strtoll='$d_strtoll'
21878 d_strtoq='$d_strtoq'
21879 d_strtoul='$d_strtoul'
21880 d_strtoull='$d_strtoull'
21881 d_strtouq='$d_strtouq'
21882 d_strxfrm='$d_strxfrm'
21883 d_suidsafe='$d_suidsafe'
21884 d_symlink='$d_symlink'
21885 d_syscall='$d_syscall'
21886 d_syscallproto='$d_syscallproto'
21887 d_sysconf='$d_sysconf'
21888 d_sysernlst='$d_sysernlst'
21889 d_syserrlst='$d_syserrlst'
21890 d_system='$d_system'
21891 d_tcgetpgrp='$d_tcgetpgrp'
21892 d_tcsetpgrp='$d_tcsetpgrp'
21893 d_telldir='$d_telldir'
21894 d_telldirproto='$d_telldirproto'
21895 d_time='$d_time'
21896 d_times='$d_times'
21897 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21898 d_tm_tm_zone='$d_tm_tm_zone'
21899 d_tmpnam_r='$d_tmpnam_r'
21900 d_truncate='$d_truncate'
21901 d_ttyname_r='$d_ttyname_r'
21902 d_tzname='$d_tzname'
21903 d_u32align='$d_u32align'
21904 d_ualarm='$d_ualarm'
21905 d_umask='$d_umask'
21906 d_uname='$d_uname'
21907 d_union_semun='$d_union_semun'
21908 d_unordered='$d_unordered'
21909 d_unsetenv='$d_unsetenv'
21910 d_usleep='$d_usleep'
21911 d_usleepproto='$d_usleepproto'
21912 d_ustat='$d_ustat'
21913 d_vendorarch='$d_vendorarch'
21914 d_vendorbin='$d_vendorbin'
21915 d_vendorlib='$d_vendorlib'
21916 d_vendorscript='$d_vendorscript'
21917 d_vfork='$d_vfork'
21918 d_void_closedir='$d_void_closedir'
21919 d_voidsig='$d_voidsig'
21920 d_voidtty='$d_voidtty'
21921 d_volatile='$d_volatile'
21922 d_vprintf='$d_vprintf'
21923 d_vsnprintf='$d_vsnprintf'
21924 d_wait4='$d_wait4'
21925 d_waitpid='$d_waitpid'
21926 d_wcstombs='$d_wcstombs'
21927 d_wctomb='$d_wctomb'
21928 d_writev='$d_writev'
21929 d_xenix='$d_xenix'
21930 date='$date'
21931 db_hashtype='$db_hashtype'
21932 db_prefixtype='$db_prefixtype'
21933 db_version_major='$db_version_major'
21934 db_version_minor='$db_version_minor'
21935 db_version_patch='$db_version_patch'
21936 defvoidused='$defvoidused'
21937 direntrytype='$direntrytype'
21938 dlext='$dlext'
21939 dlsrc='$dlsrc'
21940 doublesize='$doublesize'
21941 drand01='$drand01'
21942 drand48_r_proto='$drand48_r_proto'
21943 dynamic_ext='$dynamic_ext'
21944 eagain='$eagain'
21945 ebcdic='$ebcdic'
21946 echo='$echo'
21947 egrep='$egrep'
21948 emacs='$emacs'
21949 endgrent_r_proto='$endgrent_r_proto'
21950 endhostent_r_proto='$endhostent_r_proto'
21951 endnetent_r_proto='$endnetent_r_proto'
21952 endprotoent_r_proto='$endprotoent_r_proto'
21953 endpwent_r_proto='$endpwent_r_proto'
21954 endservent_r_proto='$endservent_r_proto'
21955 eunicefix='$eunicefix'
21956 exe_ext='$exe_ext'
21957 expr='$expr'
21958 extensions='$extensions'
21959 extras='$extras'
21960 fflushNULL='$fflushNULL'
21961 fflushall='$fflushall'
21962 find='$find'
21963 firstmakefile='$firstmakefile'
21964 flex='$flex'
21965 fpossize='$fpossize'
21966 fpostype='$fpostype'
21967 freetype='$freetype'
21968 from='$from'
21969 full_ar='$full_ar'
21970 full_csh='$full_csh'
21971 full_sed='$full_sed'
21972 gccansipedantic='$gccansipedantic'
21973 gccosandvers='$gccosandvers'
21974 gccversion='$gccversion'
21975 getgrent_r_proto='$getgrent_r_proto'
21976 getgrgid_r_proto='$getgrgid_r_proto'
21977 getgrnam_r_proto='$getgrnam_r_proto'
21978 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21979 gethostbyname_r_proto='$gethostbyname_r_proto'
21980 gethostent_r_proto='$gethostent_r_proto'
21981 getlogin_r_proto='$getlogin_r_proto'
21982 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21983 getnetbyname_r_proto='$getnetbyname_r_proto'
21984 getnetent_r_proto='$getnetent_r_proto'
21985 getprotobyname_r_proto='$getprotobyname_r_proto'
21986 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21987 getprotoent_r_proto='$getprotoent_r_proto'
21988 getpwent_r_proto='$getpwent_r_proto'
21989 getpwnam_r_proto='$getpwnam_r_proto'
21990 getpwuid_r_proto='$getpwuid_r_proto'
21991 getservbyname_r_proto='$getservbyname_r_proto'
21992 getservbyport_r_proto='$getservbyport_r_proto'
21993 getservent_r_proto='$getservent_r_proto'
21994 getspnam_r_proto='$getspnam_r_proto'
21995 gidformat='$gidformat'
21996 gidsign='$gidsign'
21997 gidsize='$gidsize'
21998 gidtype='$gidtype'
21999 glibpth='$glibpth'
22000 gmake='$gmake'
22001 gmtime_r_proto='$gmtime_r_proto'
22002 gnulibc_version='$gnulibc_version'
22003 grep='$grep'
22004 groupcat='$groupcat'
22005 groupstype='$groupstype'
22006 gzip='$gzip'
22007 h_fcntl='$h_fcntl'
22008 h_sysfile='$h_sysfile'
22009 hint='$hint'
22010 hostcat='$hostcat'
22011 html1dir='$html1dir'
22012 html1direxp='$html1direxp'
22013 html3dir='$html3dir'
22014 html3direxp='$html3direxp'
22015 i16size='$i16size'
22016 i16type='$i16type'
22017 i32size='$i32size'
22018 i32type='$i32type'
22019 i64size='$i64size'
22020 i64type='$i64type'
22021 i8size='$i8size'
22022 i8type='$i8type'
22023 i_arpainet='$i_arpainet'
22024 i_bsdioctl='$i_bsdioctl'
22025 i_crypt='$i_crypt'
22026 i_db='$i_db'
22027 i_dbm='$i_dbm'
22028 i_dirent='$i_dirent'
22029 i_dld='$i_dld'
22030 i_dlfcn='$i_dlfcn'
22031 i_fcntl='$i_fcntl'
22032 i_float='$i_float'
22033 i_fp='$i_fp'
22034 i_fp_class='$i_fp_class'
22035 i_gdbm='$i_gdbm'
22036 i_grp='$i_grp'
22037 i_ieeefp='$i_ieeefp'
22038 i_inttypes='$i_inttypes'
22039 i_langinfo='$i_langinfo'
22040 i_libutil='$i_libutil'
22041 i_limits='$i_limits'
22042 i_locale='$i_locale'
22043 i_machcthr='$i_machcthr'
22044 i_malloc='$i_malloc'
22045 i_math='$i_math'
22046 i_memory='$i_memory'
22047 i_mntent='$i_mntent'
22048 i_ndbm='$i_ndbm'
22049 i_netdb='$i_netdb'
22050 i_neterrno='$i_neterrno'
22051 i_netinettcp='$i_netinettcp'
22052 i_niin='$i_niin'
22053 i_poll='$i_poll'
22054 i_prot='$i_prot'
22055 i_pthread='$i_pthread'
22056 i_pwd='$i_pwd'
22057 i_rpcsvcdbm='$i_rpcsvcdbm'
22058 i_sfio='$i_sfio'
22059 i_sgtty='$i_sgtty'
22060 i_shadow='$i_shadow'
22061 i_socks='$i_socks'
22062 i_stdarg='$i_stdarg'
22063 i_stddef='$i_stddef'
22064 i_stdlib='$i_stdlib'
22065 i_string='$i_string'
22066 i_sunmath='$i_sunmath'
22067 i_sysaccess='$i_sysaccess'
22068 i_sysdir='$i_sysdir'
22069 i_sysfile='$i_sysfile'
22070 i_sysfilio='$i_sysfilio'
22071 i_sysin='$i_sysin'
22072 i_sysioctl='$i_sysioctl'
22073 i_syslog='$i_syslog'
22074 i_sysmman='$i_sysmman'
22075 i_sysmode='$i_sysmode'
22076 i_sysmount='$i_sysmount'
22077 i_sysndir='$i_sysndir'
22078 i_sysparam='$i_sysparam'
22079 i_sysresrc='$i_sysresrc'
22080 i_syssecrt='$i_syssecrt'
22081 i_sysselct='$i_sysselct'
22082 i_syssockio='$i_syssockio'
22083 i_sysstat='$i_sysstat'
22084 i_sysstatfs='$i_sysstatfs'
22085 i_sysstatvfs='$i_sysstatvfs'
22086 i_systime='$i_systime'
22087 i_systimek='$i_systimek'
22088 i_systimes='$i_systimes'
22089 i_systypes='$i_systypes'
22090 i_sysuio='$i_sysuio'
22091 i_sysun='$i_sysun'
22092 i_sysutsname='$i_sysutsname'
22093 i_sysvfs='$i_sysvfs'
22094 i_syswait='$i_syswait'
22095 i_termio='$i_termio'
22096 i_termios='$i_termios'
22097 i_time='$i_time'
22098 i_unistd='$i_unistd'
22099 i_ustat='$i_ustat'
22100 i_utime='$i_utime'
22101 i_values='$i_values'
22102 i_varargs='$i_varargs'
22103 i_varhdr='$i_varhdr'
22104 i_vfork='$i_vfork'
22105 ignore_versioned_solibs='$ignore_versioned_solibs'
22106 inc_version_list='$inc_version_list'
22107 inc_version_list_init='$inc_version_list_init'
22108 incpath='$incpath'
22109 inews='$inews'
22110 initialinstalllocation='$initialinstalllocation'
22111 installarchlib='$installarchlib'
22112 installbin='$installbin'
22113 installhtml1dir='$installhtml1dir'
22114 installhtml3dir='$installhtml3dir'
22115 installman1dir='$installman1dir'
22116 installman3dir='$installman3dir'
22117 installprefix='$installprefix'
22118 installprefixexp='$installprefixexp'
22119 installprivlib='$installprivlib'
22120 installscript='$installscript'
22121 installsitearch='$installsitearch'
22122 installsitebin='$installsitebin'
22123 installsitehtml1dir='$installsitehtml1dir'
22124 installsitehtml3dir='$installsitehtml3dir'
22125 installsitelib='$installsitelib'
22126 installsiteman1dir='$installsiteman1dir'
22127 installsiteman3dir='$installsiteman3dir'
22128 installsitescript='$installsitescript'
22129 installstyle='$installstyle'
22130 installusrbinperl='$installusrbinperl'
22131 installvendorarch='$installvendorarch'
22132 installvendorbin='$installvendorbin'
22133 installvendorhtml1dir='$installvendorhtml1dir'
22134 installvendorhtml3dir='$installvendorhtml3dir'
22135 installvendorlib='$installvendorlib'
22136 installvendorman1dir='$installvendorman1dir'
22137 installvendorman3dir='$installvendorman3dir'
22138 installvendorscript='$installvendorscript'
22139 intsize='$intsize'
22140 issymlink='$issymlink'
22141 ivdformat='$ivdformat'
22142 ivsize='$ivsize'
22143 ivtype='$ivtype'
22144 known_extensions='$known_extensions'
22145 ksh='$ksh'
22146 ld='$ld'
22147 lddlflags='$lddlflags'
22148 ldflags='$ldflags'
22149 ldflags_uselargefiles='$ldflags_uselargefiles'
22150 ldlibpthname='$ldlibpthname'
22151 less='$less'
22152 lib_ext='$lib_ext'
22153 libc='$libc'
22154 libperl='$libperl'
22155 libpth='$libpth'
22156 libs='$libs'
22157 libsdirs='$libsdirs'
22158 libsfiles='$libsfiles'
22159 libsfound='$libsfound'
22160 libspath='$libspath'
22161 libswanted='$libswanted'
22162 libswanted_uselargefiles='$libswanted_uselargefiles'
22163 line='$line'
22164 lint='$lint'
22165 lkflags='$lkflags'
22166 ln='$ln'
22167 lns='$lns'
22168 localtime_r_proto='$localtime_r_proto'
22169 locincpth='$locincpth'
22170 loclibpth='$loclibpth'
22171 longdblsize='$longdblsize'
22172 longlongsize='$longlongsize'
22173 longsize='$longsize'
22174 lp='$lp'
22175 lpr='$lpr'
22176 ls='$ls'
22177 lseeksize='$lseeksize'
22178 lseektype='$lseektype'
22179 mad='$mad'
22180 madlyh='$madlyh'
22181 madlyobj='$madlyobj'
22182 madlysrc='$madlysrc'
22183 mail='$mail'
22184 mailx='$mailx'
22185 make='$make'
22186 make_set_make='$make_set_make'
22187 mallocobj='$mallocobj'
22188 mallocsrc='$mallocsrc'
22189 malloctype='$malloctype'
22190 man1dir='$man1dir'
22191 man1direxp='$man1direxp'
22192 man1ext='$man1ext'
22193 man3dir='$man3dir'
22194 man3direxp='$man3direxp'
22195 man3ext='$man3ext'
22196 mips_type='$mips_type'
22197 mistrustnm='$mistrustnm'
22198 mkdir='$mkdir'
22199 mmaptype='$mmaptype'
22200 modetype='$modetype'
22201 more='$more'
22202 multiarch='$multiarch'
22203 mv='$mv'
22204 myarchname='$myarchname'
22205 mydomain='$mydomain'
22206 myhostname='$myhostname'
22207 myuname='$myuname'
22208 n='$n'
22209 need_va_copy='$need_va_copy'
22210 netdb_hlen_type='$netdb_hlen_type'
22211 netdb_host_type='$netdb_host_type'
22212 netdb_name_type='$netdb_name_type'
22213 netdb_net_type='$netdb_net_type'
22214 nm='$nm'
22215 nm_opt='$nm_opt'
22216 nm_so_opt='$nm_so_opt'
22217 nonxs_ext='$nonxs_ext'
22218 nroff='$nroff'
22219 nvEUformat='$nvEUformat'
22220 nvFUformat='$nvFUformat'
22221 nvGUformat='$nvGUformat'
22222 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22223 nveformat='$nveformat'
22224 nvfformat='$nvfformat'
22225 nvgformat='$nvgformat'
22226 nvsize='$nvsize'
22227 nvtype='$nvtype'
22228 o_nonblock='$o_nonblock'
22229 obj_ext='$obj_ext'
22230 old_pthread_create_joinable='$old_pthread_create_joinable'
22231 optimize='$optimize'
22232 orderlib='$orderlib'
22233 osname='$osname'
22234 osvers='$osvers'
22235 otherlibdirs='$otherlibdirs'
22236 package='$package'
22237 pager='$pager'
22238 passcat='$passcat'
22239 patchlevel='$patchlevel'
22240 path_sep='$path_sep'
22241 perl5='$perl5'
22242 perl='$perl'
22243 perl_patchlevel='$perl_patchlevel'
22244 perladmin='$perladmin'
22245 perllibs='$perllibs'
22246 perlpath='$perlpath'
22247 pg='$pg'
22248 phostname='$phostname'
22249 pidtype='$pidtype'
22250 plibpth='$plibpth'
22251 pmake='$pmake'
22252 pr='$pr'
22253 prefix='$prefix'
22254 prefixexp='$prefixexp'
22255 privlib='$privlib'
22256 privlibexp='$privlibexp'
22257 procselfexe='$procselfexe'
22258 prototype='$prototype'
22259 ptrsize='$ptrsize'
22260 quadkind='$quadkind'
22261 quadtype='$quadtype'
22262 randbits='$randbits'
22263 randfunc='$randfunc'
22264 random_r_proto='$random_r_proto'
22265 randseedtype='$randseedtype'
22266 ranlib='$ranlib'
22267 rd_nodata='$rd_nodata'
22268 readdir64_r_proto='$readdir64_r_proto'
22269 readdir_r_proto='$readdir_r_proto'
22270 revision='$revision'
22271 rm='$rm'
22272 rmail='$rmail'
22273 run='$run'
22274 runnm='$runnm'
22275 sPRIEUldbl='$sPRIEUldbl'
22276 sPRIFUldbl='$sPRIFUldbl'
22277 sPRIGUldbl='$sPRIGUldbl'
22278 sPRIXU64='$sPRIXU64'
22279 sPRId64='$sPRId64'
22280 sPRIeldbl='$sPRIeldbl'
22281 sPRIfldbl='$sPRIfldbl'
22282 sPRIgldbl='$sPRIgldbl'
22283 sPRIi64='$sPRIi64'
22284 sPRIo64='$sPRIo64'
22285 sPRIu64='$sPRIu64'
22286 sPRIx64='$sPRIx64'
22287 sSCNfldbl='$sSCNfldbl'
22288 sched_yield='$sched_yield'
22289 scriptdir='$scriptdir'
22290 scriptdirexp='$scriptdirexp'
22291 sed='$sed'
22292 seedfunc='$seedfunc'
22293 selectminbits='$selectminbits'
22294 selecttype='$selecttype'
22295 sendmail='$sendmail'
22296 setgrent_r_proto='$setgrent_r_proto'
22297 sethostent_r_proto='$sethostent_r_proto'
22298 setlocale_r_proto='$setlocale_r_proto'
22299 setnetent_r_proto='$setnetent_r_proto'
22300 setprotoent_r_proto='$setprotoent_r_proto'
22301 setpwent_r_proto='$setpwent_r_proto'
22302 setservent_r_proto='$setservent_r_proto'
22303 sh='$sh'
22304 shar='$shar'
22305 sharpbang='$sharpbang'
22306 shmattype='$shmattype'
22307 shortsize='$shortsize'
22308 shrpenv='$shrpenv'
22309 shsharp='$shsharp'
22310 sig_count='$sig_count'
22311 sig_name='$sig_name'
22312 sig_name_init='$sig_name_init'
22313 sig_num='$sig_num'
22314 sig_num_init='$sig_num_init'
22315 sig_size='$sig_size'
22316 signal_t='$signal_t'
22317 sitearch='$sitearch'
22318 sitearchexp='$sitearchexp'
22319 sitebin='$sitebin'
22320 sitebinexp='$sitebinexp'
22321 sitehtml1dir='$sitehtml1dir'
22322 sitehtml1direxp='$sitehtml1direxp'
22323 sitehtml3dir='$sitehtml3dir'
22324 sitehtml3direxp='$sitehtml3direxp'
22325 sitelib='$sitelib'
22326 sitelib_stem='$sitelib_stem'
22327 sitelibexp='$sitelibexp'
22328 siteman1dir='$siteman1dir'
22329 siteman1direxp='$siteman1direxp'
22330 siteman3dir='$siteman3dir'
22331 siteman3direxp='$siteman3direxp'
22332 siteprefix='$siteprefix'
22333 siteprefixexp='$siteprefixexp'
22334 sitescript='$sitescript'
22335 sitescriptexp='$sitescriptexp'
22336 sizesize='$sizesize'
22337 sizetype='$sizetype'
22338 sleep='$sleep'
22339 smail='$smail'
22340 so='$so'
22341 sockethdr='$sockethdr'
22342 socketlib='$socketlib'
22343 socksizetype='$socksizetype'
22344 sort='$sort'
22345 spackage='$spackage'
22346 spitshell='$spitshell'
22347 srand48_r_proto='$srand48_r_proto'
22348 srandom_r_proto='$srandom_r_proto'
22349 src='$src'
22350 ssizetype='$ssizetype'
22351 startperl='$startperl'
22352 startsh='$startsh'
22353 static_ext='$static_ext'
22354 stdchar='$stdchar'
22355 stdio_base='$stdio_base'
22356 stdio_bufsiz='$stdio_bufsiz'
22357 stdio_cnt='$stdio_cnt'
22358 stdio_filbuf='$stdio_filbuf'
22359 stdio_ptr='$stdio_ptr'
22360 stdio_stream_array='$stdio_stream_array'
22361 strerror_r_proto='$strerror_r_proto'
22362 strings='$strings'
22363 submit='$submit'
22364 subversion='$subversion'
22365 sysman='$sysman'
22366 tail='$tail'
22367 tar='$tar'
22368 targetarch='$targetarch'
22369 tbl='$tbl'
22370 tee='$tee'
22371 test='$test'
22372 timeincl='$timeincl'
22373 timetype='$timetype'
22374 tmpnam_r_proto='$tmpnam_r_proto'
22375 to='$to'
22376 touch='$touch'
22377 tr='$tr'
22378 trnl='$trnl'
22379 troff='$troff'
22380 ttyname_r_proto='$ttyname_r_proto'
22381 u16size='$u16size'
22382 u16type='$u16type'
22383 u32size='$u32size'
22384 u32type='$u32type'
22385 u64size='$u64size'
22386 u64type='$u64type'
22387 u8size='$u8size'
22388 u8type='$u8type'
22389 uidformat='$uidformat'
22390 uidsign='$uidsign'
22391 uidsize='$uidsize'
22392 uidtype='$uidtype'
22393 uname='$uname'
22394 uniq='$uniq'
22395 uquadtype='$uquadtype'
22396 use5005threads='$use5005threads'
22397 use64bitall='$use64bitall'
22398 use64bitint='$use64bitint'
22399 usecrosscompile='$usecrosscompile'
22400 usedl='$usedl'
22401 usefaststdio='$usefaststdio'
22402 useithreads='$useithreads'
22403 uselargefiles='$uselargefiles'
22404 uselongdouble='$uselongdouble'
22405 usemallocwrap='$usemallocwrap'
22406 usemorebits='$usemorebits'
22407 usemultiplicity='$usemultiplicity'
22408 usemymalloc='$usemymalloc'
22409 usenm='$usenm'
22410 useopcode='$useopcode'
22411 useperlio='$useperlio'
22412 useposix='$useposix'
22413 usereentrant='$usereentrant'
22414 userelocatableinc='$userelocatableinc'
22415 usesfio='$usesfio'
22416 useshrplib='$useshrplib'
22417 usesitecustomize='$usesitecustomize'
22418 usesocks='$usesocks'
22419 usethreads='$usethreads'
22420 usevendorprefix='$usevendorprefix'
22421 usevfork='$usevfork'
22422 usrinc='$usrinc'
22423 uuname='$uuname'
22424 uvXUformat='$uvXUformat'
22425 uvoformat='$uvoformat'
22426 uvsize='$uvsize'
22427 uvtype='$uvtype'
22428 uvuformat='$uvuformat'
22429 uvxformat='$uvxformat'
22430 vendorarch='$vendorarch'
22431 vendorarchexp='$vendorarchexp'
22432 vendorbin='$vendorbin'
22433 vendorbinexp='$vendorbinexp'
22434 vendorhtml1dir='$vendorhtml1dir'
22435 vendorhtml1direxp='$vendorhtml1direxp'
22436 vendorhtml3dir='$vendorhtml3dir'
22437 vendorhtml3direxp='$vendorhtml3direxp'
22438 vendorlib='$vendorlib'
22439 vendorlib_stem='$vendorlib_stem'
22440 vendorlibexp='$vendorlibexp'
22441 vendorman1dir='$vendorman1dir'
22442 vendorman1direxp='$vendorman1direxp'
22443 vendorman3dir='$vendorman3dir'
22444 vendorman3direxp='$vendorman3direxp'
22445 vendorprefix='$vendorprefix'
22446 vendorprefixexp='$vendorprefixexp'
22447 vendorscript='$vendorscript'
22448 vendorscriptexp='$vendorscriptexp'
22449 version='$version'
22450 version_patchlevel_string='$version_patchlevel_string'
22451 versiononly='$versiononly'
22452 vi='$vi'
22453 voidflags='$voidflags'
22454 xlibpth='$xlibpth'
22455 yacc='$yacc'
22456 yaccflags='$yaccflags'
22457 zcat='$zcat'
22458 zip='$zip'
22459 EOT
22460
22461 : Add in command line options if available
22462 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22463
22464 : add special variables
22465 $test -f $src/patchlevel.h && \
22466 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22467 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22468 echo "PERL_CONFIG_SH=true" >>config.sh
22469
22470 : propagate old symbols
22471 if $test -f UU/config.sh; then
22472         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22473         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22474         $sort | $uniq -u >UU/oldsyms
22475         set X `cat UU/oldsyms`
22476         shift
22477         case $# in
22478         0) ;;
22479         *)
22480                 cat <<EOM
22481 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22482 EOM
22483                 echo "# Variables propagated from previous config.sh file." >>config.sh
22484                 for sym in `cat UU/oldsyms`; do
22485                         echo "    Propagating $hint variable "'$'"$sym..."
22486                         eval 'tmp="$'"${sym}"'"'
22487                         echo "$tmp" | \
22488                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22489                 done
22490                 ;;
22491         esac
22492 fi
22493
22494 : Finish up by extracting the .SH files
22495 case "$alldone" in
22496 exit)
22497         $rm -rf UU
22498         echo "Extraction done."
22499         exit 0
22500         ;;
22501 cont)
22502         ;;
22503 '')
22504         dflt=''
22505         nostick=true
22506         $cat <<EOM
22507
22508 If you'd like to make any changes to the config.sh file before I begin
22509 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22510
22511 EOM
22512         rp="Press return or use a shell escape to edit config.sh:"
22513         . UU/myread
22514         nostick=''
22515         case "$ans" in
22516         '') ;;
22517         *) : in case they cannot read
22518                 sh 1>&4 -c "$ans";;
22519         esac
22520         ;;
22521 esac
22522
22523 : if this fails, just run all the .SH files by hand
22524 . ./config.sh
22525
22526 echo " "
22527 exec 1>&4
22528 pwd=`pwd`
22529 . ./UU/extract
22530 cd "$pwd"
22531
22532 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22533         dflt=y
22534         case "$silent" in
22535         true) ;;
22536         *)
22537                 $cat <<EOM
22538
22539 Now you need to generate make dependencies by running "$make depend".
22540 You might prefer to run it in background: "$make depend > makedepend.out &"
22541 It can take a while, so you might not want to run it right now.
22542
22543 EOM
22544                 ;;
22545         esac
22546         rp="Run $make depend now?"
22547         . UU/myread
22548         case "$ans" in
22549         y*)
22550                 $make depend && echo "Now you must run '$make'."
22551                 ;;
22552         *)
22553                 echo "You must run '$make depend' then '$make'."
22554                 ;;
22555         esac
22556 elif test -f [Mm]akefile; then
22557         echo " "
22558         echo "Now you must run a $make."
22559 else
22560         echo "Configure done."
22561 fi
22562
22563 if $test -f Policy.sh; then
22564     $cat <<EOM
22565
22566 If you compile $package on a different machine or from a different object
22567 directory, copy the Policy.sh file from this object directory to the
22568 new one before you run Configure -- this will help you with most of
22569 the policy defaults.
22570
22571 EOM
22572 fi
22573 if $test -f config.msg; then
22574     echo "Hmm.  I also noted the following information while running:"
22575     echo " "
22576     $cat config.msg >&4
22577     $rm -f config.msg
22578 fi
22579 $rm -f kit*isdone ark*isdone
22580 $rm -rf UU
22581
22582 : End of Configure
22583